tensorflow_serving_client/
op_def.rs

1// This file is generated by rust-protobuf 2.14.0. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![cfg_attr(rustfmt, rustfmt_skip)]
9
10#![allow(box_pointers)]
11#![allow(dead_code)]
12#![allow(missing_docs)]
13#![allow(non_camel_case_types)]
14#![allow(non_snake_case)]
15#![allow(non_upper_case_globals)]
16#![allow(trivial_casts)]
17#![allow(unsafe_code)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `tensorflow/core/framework/op_def.proto`
21
22use protobuf::Message as Message_imported_for_functions;
23use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
24
25/// Generated files are compatible only with the same version
26/// of protobuf runtime.
27// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_14_0;
28
29#[derive(PartialEq,Clone,Default)]
30pub struct OpDef {
31    // message fields
32    pub name: ::std::string::String,
33    pub input_arg: ::protobuf::RepeatedField<OpDef_ArgDef>,
34    pub output_arg: ::protobuf::RepeatedField<OpDef_ArgDef>,
35    pub control_output: ::protobuf::RepeatedField<::std::string::String>,
36    pub attr: ::protobuf::RepeatedField<OpDef_AttrDef>,
37    pub deprecation: ::protobuf::SingularPtrField<OpDeprecation>,
38    pub summary: ::std::string::String,
39    pub description: ::std::string::String,
40    pub is_commutative: bool,
41    pub is_aggregate: bool,
42    pub is_stateful: bool,
43    pub allows_uninitialized_input: bool,
44    // special fields
45    pub unknown_fields: ::protobuf::UnknownFields,
46    pub cached_size: ::protobuf::CachedSize,
47}
48
49impl<'a> ::std::default::Default for &'a OpDef {
50    fn default() -> &'a OpDef {
51        <OpDef as ::protobuf::Message>::default_instance()
52    }
53}
54
55impl OpDef {
56    pub fn new() -> OpDef {
57        ::std::default::Default::default()
58    }
59
60    // string name = 1;
61
62
63    pub fn get_name(&self) -> &str {
64        &self.name
65    }
66    pub fn clear_name(&mut self) {
67        self.name.clear();
68    }
69
70    // Param is passed by value, moved
71    pub fn set_name(&mut self, v: ::std::string::String) {
72        self.name = v;
73    }
74
75    // Mutable pointer to the field.
76    // If field is not initialized, it is initialized with default value first.
77    pub fn mut_name(&mut self) -> &mut ::std::string::String {
78        &mut self.name
79    }
80
81    // Take field
82    pub fn take_name(&mut self) -> ::std::string::String {
83        ::std::mem::replace(&mut self.name, ::std::string::String::new())
84    }
85
86    // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
87
88
89    pub fn get_input_arg(&self) -> &[OpDef_ArgDef] {
90        &self.input_arg
91    }
92    pub fn clear_input_arg(&mut self) {
93        self.input_arg.clear();
94    }
95
96    // Param is passed by value, moved
97    pub fn set_input_arg(&mut self, v: ::protobuf::RepeatedField<OpDef_ArgDef>) {
98        self.input_arg = v;
99    }
100
101    // Mutable pointer to the field.
102    pub fn mut_input_arg(&mut self) -> &mut ::protobuf::RepeatedField<OpDef_ArgDef> {
103        &mut self.input_arg
104    }
105
106    // Take field
107    pub fn take_input_arg(&mut self) -> ::protobuf::RepeatedField<OpDef_ArgDef> {
108        ::std::mem::replace(&mut self.input_arg, ::protobuf::RepeatedField::new())
109    }
110
111    // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
112
113
114    pub fn get_output_arg(&self) -> &[OpDef_ArgDef] {
115        &self.output_arg
116    }
117    pub fn clear_output_arg(&mut self) {
118        self.output_arg.clear();
119    }
120
121    // Param is passed by value, moved
122    pub fn set_output_arg(&mut self, v: ::protobuf::RepeatedField<OpDef_ArgDef>) {
123        self.output_arg = v;
124    }
125
126    // Mutable pointer to the field.
127    pub fn mut_output_arg(&mut self) -> &mut ::protobuf::RepeatedField<OpDef_ArgDef> {
128        &mut self.output_arg
129    }
130
131    // Take field
132    pub fn take_output_arg(&mut self) -> ::protobuf::RepeatedField<OpDef_ArgDef> {
133        ::std::mem::replace(&mut self.output_arg, ::protobuf::RepeatedField::new())
134    }
135
136    // repeated string control_output = 20;
137
138
139    pub fn get_control_output(&self) -> &[::std::string::String] {
140        &self.control_output
141    }
142    pub fn clear_control_output(&mut self) {
143        self.control_output.clear();
144    }
145
146    // Param is passed by value, moved
147    pub fn set_control_output(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
148        self.control_output = v;
149    }
150
151    // Mutable pointer to the field.
152    pub fn mut_control_output(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
153        &mut self.control_output
154    }
155
156    // Take field
157    pub fn take_control_output(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
158        ::std::mem::replace(&mut self.control_output, ::protobuf::RepeatedField::new())
159    }
160
161    // repeated .tensorflow.OpDef.AttrDef attr = 4;
162
163
164    pub fn get_attr(&self) -> &[OpDef_AttrDef] {
165        &self.attr
166    }
167    pub fn clear_attr(&mut self) {
168        self.attr.clear();
169    }
170
171    // Param is passed by value, moved
172    pub fn set_attr(&mut self, v: ::protobuf::RepeatedField<OpDef_AttrDef>) {
173        self.attr = v;
174    }
175
176    // Mutable pointer to the field.
177    pub fn mut_attr(&mut self) -> &mut ::protobuf::RepeatedField<OpDef_AttrDef> {
178        &mut self.attr
179    }
180
181    // Take field
182    pub fn take_attr(&mut self) -> ::protobuf::RepeatedField<OpDef_AttrDef> {
183        ::std::mem::replace(&mut self.attr, ::protobuf::RepeatedField::new())
184    }
185
186    // .tensorflow.OpDeprecation deprecation = 8;
187
188
189    pub fn get_deprecation(&self) -> &OpDeprecation {
190        self.deprecation.as_ref().unwrap_or_else(|| OpDeprecation::default_instance())
191    }
192    pub fn clear_deprecation(&mut self) {
193        self.deprecation.clear();
194    }
195
196    pub fn has_deprecation(&self) -> bool {
197        self.deprecation.is_some()
198    }
199
200    // Param is passed by value, moved
201    pub fn set_deprecation(&mut self, v: OpDeprecation) {
202        self.deprecation = ::protobuf::SingularPtrField::some(v);
203    }
204
205    // Mutable pointer to the field.
206    // If field is not initialized, it is initialized with default value first.
207    pub fn mut_deprecation(&mut self) -> &mut OpDeprecation {
208        if self.deprecation.is_none() {
209            self.deprecation.set_default();
210        }
211        self.deprecation.as_mut().unwrap()
212    }
213
214    // Take field
215    pub fn take_deprecation(&mut self) -> OpDeprecation {
216        self.deprecation.take().unwrap_or_else(|| OpDeprecation::new())
217    }
218
219    // string summary = 5;
220
221
222    pub fn get_summary(&self) -> &str {
223        &self.summary
224    }
225    pub fn clear_summary(&mut self) {
226        self.summary.clear();
227    }
228
229    // Param is passed by value, moved
230    pub fn set_summary(&mut self, v: ::std::string::String) {
231        self.summary = v;
232    }
233
234    // Mutable pointer to the field.
235    // If field is not initialized, it is initialized with default value first.
236    pub fn mut_summary(&mut self) -> &mut ::std::string::String {
237        &mut self.summary
238    }
239
240    // Take field
241    pub fn take_summary(&mut self) -> ::std::string::String {
242        ::std::mem::replace(&mut self.summary, ::std::string::String::new())
243    }
244
245    // string description = 6;
246
247
248    pub fn get_description(&self) -> &str {
249        &self.description
250    }
251    pub fn clear_description(&mut self) {
252        self.description.clear();
253    }
254
255    // Param is passed by value, moved
256    pub fn set_description(&mut self, v: ::std::string::String) {
257        self.description = v;
258    }
259
260    // Mutable pointer to the field.
261    // If field is not initialized, it is initialized with default value first.
262    pub fn mut_description(&mut self) -> &mut ::std::string::String {
263        &mut self.description
264    }
265
266    // Take field
267    pub fn take_description(&mut self) -> ::std::string::String {
268        ::std::mem::replace(&mut self.description, ::std::string::String::new())
269    }
270
271    // bool is_commutative = 18;
272
273
274    pub fn get_is_commutative(&self) -> bool {
275        self.is_commutative
276    }
277    pub fn clear_is_commutative(&mut self) {
278        self.is_commutative = false;
279    }
280
281    // Param is passed by value, moved
282    pub fn set_is_commutative(&mut self, v: bool) {
283        self.is_commutative = v;
284    }
285
286    // bool is_aggregate = 16;
287
288
289    pub fn get_is_aggregate(&self) -> bool {
290        self.is_aggregate
291    }
292    pub fn clear_is_aggregate(&mut self) {
293        self.is_aggregate = false;
294    }
295
296    // Param is passed by value, moved
297    pub fn set_is_aggregate(&mut self, v: bool) {
298        self.is_aggregate = v;
299    }
300
301    // bool is_stateful = 17;
302
303
304    pub fn get_is_stateful(&self) -> bool {
305        self.is_stateful
306    }
307    pub fn clear_is_stateful(&mut self) {
308        self.is_stateful = false;
309    }
310
311    // Param is passed by value, moved
312    pub fn set_is_stateful(&mut self, v: bool) {
313        self.is_stateful = v;
314    }
315
316    // bool allows_uninitialized_input = 19;
317
318
319    pub fn get_allows_uninitialized_input(&self) -> bool {
320        self.allows_uninitialized_input
321    }
322    pub fn clear_allows_uninitialized_input(&mut self) {
323        self.allows_uninitialized_input = false;
324    }
325
326    // Param is passed by value, moved
327    pub fn set_allows_uninitialized_input(&mut self, v: bool) {
328        self.allows_uninitialized_input = v;
329    }
330}
331
332impl ::protobuf::Message for OpDef {
333    fn is_initialized(&self) -> bool {
334        for v in &self.input_arg {
335            if !v.is_initialized() {
336                return false;
337            }
338        };
339        for v in &self.output_arg {
340            if !v.is_initialized() {
341                return false;
342            }
343        };
344        for v in &self.attr {
345            if !v.is_initialized() {
346                return false;
347            }
348        };
349        for v in &self.deprecation {
350            if !v.is_initialized() {
351                return false;
352            }
353        };
354        true
355    }
356
357    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
358        while !is.eof()? {
359            let (field_number, wire_type) = is.read_tag_unpack()?;
360            match field_number {
361                1 => {
362                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
363                },
364                2 => {
365                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.input_arg)?;
366                },
367                3 => {
368                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.output_arg)?;
369                },
370                20 => {
371                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.control_output)?;
372                },
373                4 => {
374                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.attr)?;
375                },
376                8 => {
377                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.deprecation)?;
378                },
379                5 => {
380                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.summary)?;
381                },
382                6 => {
383                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
384                },
385                18 => {
386                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
387                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
388                    }
389                    let tmp = is.read_bool()?;
390                    self.is_commutative = tmp;
391                },
392                16 => {
393                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
394                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
395                    }
396                    let tmp = is.read_bool()?;
397                    self.is_aggregate = tmp;
398                },
399                17 => {
400                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
401                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
402                    }
403                    let tmp = is.read_bool()?;
404                    self.is_stateful = tmp;
405                },
406                19 => {
407                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
408                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
409                    }
410                    let tmp = is.read_bool()?;
411                    self.allows_uninitialized_input = tmp;
412                },
413                _ => {
414                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
415                },
416            };
417        }
418        ::std::result::Result::Ok(())
419    }
420
421    // Compute sizes of nested messages
422    #[allow(unused_variables)]
423    fn compute_size(&self) -> u32 {
424        let mut my_size = 0;
425        if !self.name.is_empty() {
426            my_size += ::protobuf::rt::string_size(1, &self.name);
427        }
428        for value in &self.input_arg {
429            let len = value.compute_size();
430            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
431        };
432        for value in &self.output_arg {
433            let len = value.compute_size();
434            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
435        };
436        for value in &self.control_output {
437            my_size += ::protobuf::rt::string_size(20, &value);
438        };
439        for value in &self.attr {
440            let len = value.compute_size();
441            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
442        };
443        if let Some(ref v) = self.deprecation.as_ref() {
444            let len = v.compute_size();
445            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
446        }
447        if !self.summary.is_empty() {
448            my_size += ::protobuf::rt::string_size(5, &self.summary);
449        }
450        if !self.description.is_empty() {
451            my_size += ::protobuf::rt::string_size(6, &self.description);
452        }
453        if self.is_commutative != false {
454            my_size += 3;
455        }
456        if self.is_aggregate != false {
457            my_size += 3;
458        }
459        if self.is_stateful != false {
460            my_size += 3;
461        }
462        if self.allows_uninitialized_input != false {
463            my_size += 3;
464        }
465        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
466        self.cached_size.set(my_size);
467        my_size
468    }
469
470    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
471        if !self.name.is_empty() {
472            os.write_string(1, &self.name)?;
473        }
474        for v in &self.input_arg {
475            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
476            os.write_raw_varint32(v.get_cached_size())?;
477            v.write_to_with_cached_sizes(os)?;
478        };
479        for v in &self.output_arg {
480            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
481            os.write_raw_varint32(v.get_cached_size())?;
482            v.write_to_with_cached_sizes(os)?;
483        };
484        for v in &self.control_output {
485            os.write_string(20, &v)?;
486        };
487        for v in &self.attr {
488            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
489            os.write_raw_varint32(v.get_cached_size())?;
490            v.write_to_with_cached_sizes(os)?;
491        };
492        if let Some(ref v) = self.deprecation.as_ref() {
493            os.write_tag(8, ::protobuf::wire_format::WireTypeLengthDelimited)?;
494            os.write_raw_varint32(v.get_cached_size())?;
495            v.write_to_with_cached_sizes(os)?;
496        }
497        if !self.summary.is_empty() {
498            os.write_string(5, &self.summary)?;
499        }
500        if !self.description.is_empty() {
501            os.write_string(6, &self.description)?;
502        }
503        if self.is_commutative != false {
504            os.write_bool(18, self.is_commutative)?;
505        }
506        if self.is_aggregate != false {
507            os.write_bool(16, self.is_aggregate)?;
508        }
509        if self.is_stateful != false {
510            os.write_bool(17, self.is_stateful)?;
511        }
512        if self.allows_uninitialized_input != false {
513            os.write_bool(19, self.allows_uninitialized_input)?;
514        }
515        os.write_unknown_fields(self.get_unknown_fields())?;
516        ::std::result::Result::Ok(())
517    }
518
519    fn get_cached_size(&self) -> u32 {
520        self.cached_size.get()
521    }
522
523    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
524        &self.unknown_fields
525    }
526
527    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
528        &mut self.unknown_fields
529    }
530
531    fn as_any(&self) -> &dyn (::std::any::Any) {
532        self as &dyn (::std::any::Any)
533    }
534    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
535        self as &mut dyn (::std::any::Any)
536    }
537    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
538        self
539    }
540
541    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
542        Self::descriptor_static()
543    }
544
545    fn new() -> OpDef {
546        OpDef::new()
547    }
548
549    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
550        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
551        unsafe {
552            descriptor.get(|| {
553                let mut fields = ::std::vec::Vec::new();
554                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
555                    "name",
556                    |m: &OpDef| { &m.name },
557                    |m: &mut OpDef| { &mut m.name },
558                ));
559                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OpDef_ArgDef>>(
560                    "input_arg",
561                    |m: &OpDef| { &m.input_arg },
562                    |m: &mut OpDef| { &mut m.input_arg },
563                ));
564                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OpDef_ArgDef>>(
565                    "output_arg",
566                    |m: &OpDef| { &m.output_arg },
567                    |m: &mut OpDef| { &mut m.output_arg },
568                ));
569                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
570                    "control_output",
571                    |m: &OpDef| { &m.control_output },
572                    |m: &mut OpDef| { &mut m.control_output },
573                ));
574                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OpDef_AttrDef>>(
575                    "attr",
576                    |m: &OpDef| { &m.attr },
577                    |m: &mut OpDef| { &mut m.attr },
578                ));
579                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OpDeprecation>>(
580                    "deprecation",
581                    |m: &OpDef| { &m.deprecation },
582                    |m: &mut OpDef| { &mut m.deprecation },
583                ));
584                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
585                    "summary",
586                    |m: &OpDef| { &m.summary },
587                    |m: &mut OpDef| { &mut m.summary },
588                ));
589                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
590                    "description",
591                    |m: &OpDef| { &m.description },
592                    |m: &mut OpDef| { &mut m.description },
593                ));
594                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
595                    "is_commutative",
596                    |m: &OpDef| { &m.is_commutative },
597                    |m: &mut OpDef| { &mut m.is_commutative },
598                ));
599                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
600                    "is_aggregate",
601                    |m: &OpDef| { &m.is_aggregate },
602                    |m: &mut OpDef| { &mut m.is_aggregate },
603                ));
604                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
605                    "is_stateful",
606                    |m: &OpDef| { &m.is_stateful },
607                    |m: &mut OpDef| { &mut m.is_stateful },
608                ));
609                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
610                    "allows_uninitialized_input",
611                    |m: &OpDef| { &m.allows_uninitialized_input },
612                    |m: &mut OpDef| { &mut m.allows_uninitialized_input },
613                ));
614                ::protobuf::reflect::MessageDescriptor::new_pb_name::<OpDef>(
615                    "OpDef",
616                    fields,
617                    file_descriptor_proto()
618                )
619            })
620        }
621    }
622
623    fn default_instance() -> &'static OpDef {
624        static mut instance: ::protobuf::lazy::Lazy<OpDef> = ::protobuf::lazy::Lazy::INIT;
625        unsafe {
626            instance.get(OpDef::new)
627        }
628    }
629}
630
631impl ::protobuf::Clear for OpDef {
632    fn clear(&mut self) {
633        self.name.clear();
634        self.input_arg.clear();
635        self.output_arg.clear();
636        self.control_output.clear();
637        self.attr.clear();
638        self.deprecation.clear();
639        self.summary.clear();
640        self.description.clear();
641        self.is_commutative = false;
642        self.is_aggregate = false;
643        self.is_stateful = false;
644        self.allows_uninitialized_input = false;
645        self.unknown_fields.clear();
646    }
647}
648
649impl ::std::fmt::Debug for OpDef {
650    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
651        ::protobuf::text_format::fmt(self, f)
652    }
653}
654
655impl ::protobuf::reflect::ProtobufValue for OpDef {
656    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
657        ::protobuf::reflect::ReflectValueRef::Message(self)
658    }
659}
660
661#[derive(PartialEq,Clone,Default)]
662pub struct OpDef_ArgDef {
663    // message fields
664    pub name: ::std::string::String,
665    pub description: ::std::string::String,
666    pub field_type: super::types::DataType,
667    pub type_attr: ::std::string::String,
668    pub number_attr: ::std::string::String,
669    pub type_list_attr: ::std::string::String,
670    pub is_ref: bool,
671    // special fields
672    pub unknown_fields: ::protobuf::UnknownFields,
673    pub cached_size: ::protobuf::CachedSize,
674}
675
676impl<'a> ::std::default::Default for &'a OpDef_ArgDef {
677    fn default() -> &'a OpDef_ArgDef {
678        <OpDef_ArgDef as ::protobuf::Message>::default_instance()
679    }
680}
681
682impl OpDef_ArgDef {
683    pub fn new() -> OpDef_ArgDef {
684        ::std::default::Default::default()
685    }
686
687    // string name = 1;
688
689
690    pub fn get_name(&self) -> &str {
691        &self.name
692    }
693    pub fn clear_name(&mut self) {
694        self.name.clear();
695    }
696
697    // Param is passed by value, moved
698    pub fn set_name(&mut self, v: ::std::string::String) {
699        self.name = v;
700    }
701
702    // Mutable pointer to the field.
703    // If field is not initialized, it is initialized with default value first.
704    pub fn mut_name(&mut self) -> &mut ::std::string::String {
705        &mut self.name
706    }
707
708    // Take field
709    pub fn take_name(&mut self) -> ::std::string::String {
710        ::std::mem::replace(&mut self.name, ::std::string::String::new())
711    }
712
713    // string description = 2;
714
715
716    pub fn get_description(&self) -> &str {
717        &self.description
718    }
719    pub fn clear_description(&mut self) {
720        self.description.clear();
721    }
722
723    // Param is passed by value, moved
724    pub fn set_description(&mut self, v: ::std::string::String) {
725        self.description = v;
726    }
727
728    // Mutable pointer to the field.
729    // If field is not initialized, it is initialized with default value first.
730    pub fn mut_description(&mut self) -> &mut ::std::string::String {
731        &mut self.description
732    }
733
734    // Take field
735    pub fn take_description(&mut self) -> ::std::string::String {
736        ::std::mem::replace(&mut self.description, ::std::string::String::new())
737    }
738
739    // .tensorflow.DataType type = 3;
740
741
742    pub fn get_field_type(&self) -> super::types::DataType {
743        self.field_type
744    }
745    pub fn clear_field_type(&mut self) {
746        self.field_type = super::types::DataType::DT_INVALID;
747    }
748
749    // Param is passed by value, moved
750    pub fn set_field_type(&mut self, v: super::types::DataType) {
751        self.field_type = v;
752    }
753
754    // string type_attr = 4;
755
756
757    pub fn get_type_attr(&self) -> &str {
758        &self.type_attr
759    }
760    pub fn clear_type_attr(&mut self) {
761        self.type_attr.clear();
762    }
763
764    // Param is passed by value, moved
765    pub fn set_type_attr(&mut self, v: ::std::string::String) {
766        self.type_attr = v;
767    }
768
769    // Mutable pointer to the field.
770    // If field is not initialized, it is initialized with default value first.
771    pub fn mut_type_attr(&mut self) -> &mut ::std::string::String {
772        &mut self.type_attr
773    }
774
775    // Take field
776    pub fn take_type_attr(&mut self) -> ::std::string::String {
777        ::std::mem::replace(&mut self.type_attr, ::std::string::String::new())
778    }
779
780    // string number_attr = 5;
781
782
783    pub fn get_number_attr(&self) -> &str {
784        &self.number_attr
785    }
786    pub fn clear_number_attr(&mut self) {
787        self.number_attr.clear();
788    }
789
790    // Param is passed by value, moved
791    pub fn set_number_attr(&mut self, v: ::std::string::String) {
792        self.number_attr = v;
793    }
794
795    // Mutable pointer to the field.
796    // If field is not initialized, it is initialized with default value first.
797    pub fn mut_number_attr(&mut self) -> &mut ::std::string::String {
798        &mut self.number_attr
799    }
800
801    // Take field
802    pub fn take_number_attr(&mut self) -> ::std::string::String {
803        ::std::mem::replace(&mut self.number_attr, ::std::string::String::new())
804    }
805
806    // string type_list_attr = 6;
807
808
809    pub fn get_type_list_attr(&self) -> &str {
810        &self.type_list_attr
811    }
812    pub fn clear_type_list_attr(&mut self) {
813        self.type_list_attr.clear();
814    }
815
816    // Param is passed by value, moved
817    pub fn set_type_list_attr(&mut self, v: ::std::string::String) {
818        self.type_list_attr = v;
819    }
820
821    // Mutable pointer to the field.
822    // If field is not initialized, it is initialized with default value first.
823    pub fn mut_type_list_attr(&mut self) -> &mut ::std::string::String {
824        &mut self.type_list_attr
825    }
826
827    // Take field
828    pub fn take_type_list_attr(&mut self) -> ::std::string::String {
829        ::std::mem::replace(&mut self.type_list_attr, ::std::string::String::new())
830    }
831
832    // bool is_ref = 16;
833
834
835    pub fn get_is_ref(&self) -> bool {
836        self.is_ref
837    }
838    pub fn clear_is_ref(&mut self) {
839        self.is_ref = false;
840    }
841
842    // Param is passed by value, moved
843    pub fn set_is_ref(&mut self, v: bool) {
844        self.is_ref = v;
845    }
846}
847
848impl ::protobuf::Message for OpDef_ArgDef {
849    fn is_initialized(&self) -> bool {
850        true
851    }
852
853    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
854        while !is.eof()? {
855            let (field_number, wire_type) = is.read_tag_unpack()?;
856            match field_number {
857                1 => {
858                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
859                },
860                2 => {
861                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
862                },
863                3 => {
864                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.field_type, 3, &mut self.unknown_fields)?
865                },
866                4 => {
867                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.type_attr)?;
868                },
869                5 => {
870                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.number_attr)?;
871                },
872                6 => {
873                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.type_list_attr)?;
874                },
875                16 => {
876                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
877                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
878                    }
879                    let tmp = is.read_bool()?;
880                    self.is_ref = tmp;
881                },
882                _ => {
883                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
884                },
885            };
886        }
887        ::std::result::Result::Ok(())
888    }
889
890    // Compute sizes of nested messages
891    #[allow(unused_variables)]
892    fn compute_size(&self) -> u32 {
893        let mut my_size = 0;
894        if !self.name.is_empty() {
895            my_size += ::protobuf::rt::string_size(1, &self.name);
896        }
897        if !self.description.is_empty() {
898            my_size += ::protobuf::rt::string_size(2, &self.description);
899        }
900        if self.field_type != super::types::DataType::DT_INVALID {
901            my_size += ::protobuf::rt::enum_size(3, self.field_type);
902        }
903        if !self.type_attr.is_empty() {
904            my_size += ::protobuf::rt::string_size(4, &self.type_attr);
905        }
906        if !self.number_attr.is_empty() {
907            my_size += ::protobuf::rt::string_size(5, &self.number_attr);
908        }
909        if !self.type_list_attr.is_empty() {
910            my_size += ::protobuf::rt::string_size(6, &self.type_list_attr);
911        }
912        if self.is_ref != false {
913            my_size += 3;
914        }
915        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
916        self.cached_size.set(my_size);
917        my_size
918    }
919
920    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
921        if !self.name.is_empty() {
922            os.write_string(1, &self.name)?;
923        }
924        if !self.description.is_empty() {
925            os.write_string(2, &self.description)?;
926        }
927        if self.field_type != super::types::DataType::DT_INVALID {
928            os.write_enum(3, self.field_type.value())?;
929        }
930        if !self.type_attr.is_empty() {
931            os.write_string(4, &self.type_attr)?;
932        }
933        if !self.number_attr.is_empty() {
934            os.write_string(5, &self.number_attr)?;
935        }
936        if !self.type_list_attr.is_empty() {
937            os.write_string(6, &self.type_list_attr)?;
938        }
939        if self.is_ref != false {
940            os.write_bool(16, self.is_ref)?;
941        }
942        os.write_unknown_fields(self.get_unknown_fields())?;
943        ::std::result::Result::Ok(())
944    }
945
946    fn get_cached_size(&self) -> u32 {
947        self.cached_size.get()
948    }
949
950    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
951        &self.unknown_fields
952    }
953
954    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
955        &mut self.unknown_fields
956    }
957
958    fn as_any(&self) -> &dyn (::std::any::Any) {
959        self as &dyn (::std::any::Any)
960    }
961    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
962        self as &mut dyn (::std::any::Any)
963    }
964    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
965        self
966    }
967
968    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
969        Self::descriptor_static()
970    }
971
972    fn new() -> OpDef_ArgDef {
973        OpDef_ArgDef::new()
974    }
975
976    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
977        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
978        unsafe {
979            descriptor.get(|| {
980                let mut fields = ::std::vec::Vec::new();
981                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
982                    "name",
983                    |m: &OpDef_ArgDef| { &m.name },
984                    |m: &mut OpDef_ArgDef| { &mut m.name },
985                ));
986                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
987                    "description",
988                    |m: &OpDef_ArgDef| { &m.description },
989                    |m: &mut OpDef_ArgDef| { &mut m.description },
990                ));
991                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<super::types::DataType>>(
992                    "type",
993                    |m: &OpDef_ArgDef| { &m.field_type },
994                    |m: &mut OpDef_ArgDef| { &mut m.field_type },
995                ));
996                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
997                    "type_attr",
998                    |m: &OpDef_ArgDef| { &m.type_attr },
999                    |m: &mut OpDef_ArgDef| { &mut m.type_attr },
1000                ));
1001                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1002                    "number_attr",
1003                    |m: &OpDef_ArgDef| { &m.number_attr },
1004                    |m: &mut OpDef_ArgDef| { &mut m.number_attr },
1005                ));
1006                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1007                    "type_list_attr",
1008                    |m: &OpDef_ArgDef| { &m.type_list_attr },
1009                    |m: &mut OpDef_ArgDef| { &mut m.type_list_attr },
1010                ));
1011                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1012                    "is_ref",
1013                    |m: &OpDef_ArgDef| { &m.is_ref },
1014                    |m: &mut OpDef_ArgDef| { &mut m.is_ref },
1015                ));
1016                ::protobuf::reflect::MessageDescriptor::new_pb_name::<OpDef_ArgDef>(
1017                    "OpDef.ArgDef",
1018                    fields,
1019                    file_descriptor_proto()
1020                )
1021            })
1022        }
1023    }
1024
1025    fn default_instance() -> &'static OpDef_ArgDef {
1026        static mut instance: ::protobuf::lazy::Lazy<OpDef_ArgDef> = ::protobuf::lazy::Lazy::INIT;
1027        unsafe {
1028            instance.get(OpDef_ArgDef::new)
1029        }
1030    }
1031}
1032
1033impl ::protobuf::Clear for OpDef_ArgDef {
1034    fn clear(&mut self) {
1035        self.name.clear();
1036        self.description.clear();
1037        self.field_type = super::types::DataType::DT_INVALID;
1038        self.type_attr.clear();
1039        self.number_attr.clear();
1040        self.type_list_attr.clear();
1041        self.is_ref = false;
1042        self.unknown_fields.clear();
1043    }
1044}
1045
1046impl ::std::fmt::Debug for OpDef_ArgDef {
1047    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1048        ::protobuf::text_format::fmt(self, f)
1049    }
1050}
1051
1052impl ::protobuf::reflect::ProtobufValue for OpDef_ArgDef {
1053    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1054        ::protobuf::reflect::ReflectValueRef::Message(self)
1055    }
1056}
1057
1058#[derive(PartialEq,Clone,Default)]
1059pub struct OpDef_AttrDef {
1060    // message fields
1061    pub name: ::std::string::String,
1062    pub field_type: ::std::string::String,
1063    pub default_value: ::protobuf::SingularPtrField<super::attr_value::AttrValue>,
1064    pub description: ::std::string::String,
1065    pub has_minimum: bool,
1066    pub minimum: i64,
1067    pub allowed_values: ::protobuf::SingularPtrField<super::attr_value::AttrValue>,
1068    // special fields
1069    pub unknown_fields: ::protobuf::UnknownFields,
1070    pub cached_size: ::protobuf::CachedSize,
1071}
1072
1073impl<'a> ::std::default::Default for &'a OpDef_AttrDef {
1074    fn default() -> &'a OpDef_AttrDef {
1075        <OpDef_AttrDef as ::protobuf::Message>::default_instance()
1076    }
1077}
1078
1079impl OpDef_AttrDef {
1080    pub fn new() -> OpDef_AttrDef {
1081        ::std::default::Default::default()
1082    }
1083
1084    // string name = 1;
1085
1086
1087    pub fn get_name(&self) -> &str {
1088        &self.name
1089    }
1090    pub fn clear_name(&mut self) {
1091        self.name.clear();
1092    }
1093
1094    // Param is passed by value, moved
1095    pub fn set_name(&mut self, v: ::std::string::String) {
1096        self.name = v;
1097    }
1098
1099    // Mutable pointer to the field.
1100    // If field is not initialized, it is initialized with default value first.
1101    pub fn mut_name(&mut self) -> &mut ::std::string::String {
1102        &mut self.name
1103    }
1104
1105    // Take field
1106    pub fn take_name(&mut self) -> ::std::string::String {
1107        ::std::mem::replace(&mut self.name, ::std::string::String::new())
1108    }
1109
1110    // string type = 2;
1111
1112
1113    pub fn get_field_type(&self) -> &str {
1114        &self.field_type
1115    }
1116    pub fn clear_field_type(&mut self) {
1117        self.field_type.clear();
1118    }
1119
1120    // Param is passed by value, moved
1121    pub fn set_field_type(&mut self, v: ::std::string::String) {
1122        self.field_type = v;
1123    }
1124
1125    // Mutable pointer to the field.
1126    // If field is not initialized, it is initialized with default value first.
1127    pub fn mut_field_type(&mut self) -> &mut ::std::string::String {
1128        &mut self.field_type
1129    }
1130
1131    // Take field
1132    pub fn take_field_type(&mut self) -> ::std::string::String {
1133        ::std::mem::replace(&mut self.field_type, ::std::string::String::new())
1134    }
1135
1136    // .tensorflow.AttrValue default_value = 3;
1137
1138
1139    pub fn get_default_value(&self) -> &super::attr_value::AttrValue {
1140        self.default_value.as_ref().unwrap_or_else(|| super::attr_value::AttrValue::default_instance())
1141    }
1142    pub fn clear_default_value(&mut self) {
1143        self.default_value.clear();
1144    }
1145
1146    pub fn has_default_value(&self) -> bool {
1147        self.default_value.is_some()
1148    }
1149
1150    // Param is passed by value, moved
1151    pub fn set_default_value(&mut self, v: super::attr_value::AttrValue) {
1152        self.default_value = ::protobuf::SingularPtrField::some(v);
1153    }
1154
1155    // Mutable pointer to the field.
1156    // If field is not initialized, it is initialized with default value first.
1157    pub fn mut_default_value(&mut self) -> &mut super::attr_value::AttrValue {
1158        if self.default_value.is_none() {
1159            self.default_value.set_default();
1160        }
1161        self.default_value.as_mut().unwrap()
1162    }
1163
1164    // Take field
1165    pub fn take_default_value(&mut self) -> super::attr_value::AttrValue {
1166        self.default_value.take().unwrap_or_else(|| super::attr_value::AttrValue::new())
1167    }
1168
1169    // string description = 4;
1170
1171
1172    pub fn get_description(&self) -> &str {
1173        &self.description
1174    }
1175    pub fn clear_description(&mut self) {
1176        self.description.clear();
1177    }
1178
1179    // Param is passed by value, moved
1180    pub fn set_description(&mut self, v: ::std::string::String) {
1181        self.description = v;
1182    }
1183
1184    // Mutable pointer to the field.
1185    // If field is not initialized, it is initialized with default value first.
1186    pub fn mut_description(&mut self) -> &mut ::std::string::String {
1187        &mut self.description
1188    }
1189
1190    // Take field
1191    pub fn take_description(&mut self) -> ::std::string::String {
1192        ::std::mem::replace(&mut self.description, ::std::string::String::new())
1193    }
1194
1195    // bool has_minimum = 5;
1196
1197
1198    pub fn get_has_minimum(&self) -> bool {
1199        self.has_minimum
1200    }
1201    pub fn clear_has_minimum(&mut self) {
1202        self.has_minimum = false;
1203    }
1204
1205    // Param is passed by value, moved
1206    pub fn set_has_minimum(&mut self, v: bool) {
1207        self.has_minimum = v;
1208    }
1209
1210    // int64 minimum = 6;
1211
1212
1213    pub fn get_minimum(&self) -> i64 {
1214        self.minimum
1215    }
1216    pub fn clear_minimum(&mut self) {
1217        self.minimum = 0;
1218    }
1219
1220    // Param is passed by value, moved
1221    pub fn set_minimum(&mut self, v: i64) {
1222        self.minimum = v;
1223    }
1224
1225    // .tensorflow.AttrValue allowed_values = 7;
1226
1227
1228    pub fn get_allowed_values(&self) -> &super::attr_value::AttrValue {
1229        self.allowed_values.as_ref().unwrap_or_else(|| super::attr_value::AttrValue::default_instance())
1230    }
1231    pub fn clear_allowed_values(&mut self) {
1232        self.allowed_values.clear();
1233    }
1234
1235    pub fn has_allowed_values(&self) -> bool {
1236        self.allowed_values.is_some()
1237    }
1238
1239    // Param is passed by value, moved
1240    pub fn set_allowed_values(&mut self, v: super::attr_value::AttrValue) {
1241        self.allowed_values = ::protobuf::SingularPtrField::some(v);
1242    }
1243
1244    // Mutable pointer to the field.
1245    // If field is not initialized, it is initialized with default value first.
1246    pub fn mut_allowed_values(&mut self) -> &mut super::attr_value::AttrValue {
1247        if self.allowed_values.is_none() {
1248            self.allowed_values.set_default();
1249        }
1250        self.allowed_values.as_mut().unwrap()
1251    }
1252
1253    // Take field
1254    pub fn take_allowed_values(&mut self) -> super::attr_value::AttrValue {
1255        self.allowed_values.take().unwrap_or_else(|| super::attr_value::AttrValue::new())
1256    }
1257}
1258
1259impl ::protobuf::Message for OpDef_AttrDef {
1260    fn is_initialized(&self) -> bool {
1261        for v in &self.default_value {
1262            if !v.is_initialized() {
1263                return false;
1264            }
1265        };
1266        for v in &self.allowed_values {
1267            if !v.is_initialized() {
1268                return false;
1269            }
1270        };
1271        true
1272    }
1273
1274    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1275        while !is.eof()? {
1276            let (field_number, wire_type) = is.read_tag_unpack()?;
1277            match field_number {
1278                1 => {
1279                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
1280                },
1281                2 => {
1282                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.field_type)?;
1283                },
1284                3 => {
1285                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.default_value)?;
1286                },
1287                4 => {
1288                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
1289                },
1290                5 => {
1291                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1292                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1293                    }
1294                    let tmp = is.read_bool()?;
1295                    self.has_minimum = tmp;
1296                },
1297                6 => {
1298                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1299                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1300                    }
1301                    let tmp = is.read_int64()?;
1302                    self.minimum = tmp;
1303                },
1304                7 => {
1305                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.allowed_values)?;
1306                },
1307                _ => {
1308                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1309                },
1310            };
1311        }
1312        ::std::result::Result::Ok(())
1313    }
1314
1315    // Compute sizes of nested messages
1316    #[allow(unused_variables)]
1317    fn compute_size(&self) -> u32 {
1318        let mut my_size = 0;
1319        if !self.name.is_empty() {
1320            my_size += ::protobuf::rt::string_size(1, &self.name);
1321        }
1322        if !self.field_type.is_empty() {
1323            my_size += ::protobuf::rt::string_size(2, &self.field_type);
1324        }
1325        if let Some(ref v) = self.default_value.as_ref() {
1326            let len = v.compute_size();
1327            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1328        }
1329        if !self.description.is_empty() {
1330            my_size += ::protobuf::rt::string_size(4, &self.description);
1331        }
1332        if self.has_minimum != false {
1333            my_size += 2;
1334        }
1335        if self.minimum != 0 {
1336            my_size += ::protobuf::rt::value_size(6, self.minimum, ::protobuf::wire_format::WireTypeVarint);
1337        }
1338        if let Some(ref v) = self.allowed_values.as_ref() {
1339            let len = v.compute_size();
1340            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1341        }
1342        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1343        self.cached_size.set(my_size);
1344        my_size
1345    }
1346
1347    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1348        if !self.name.is_empty() {
1349            os.write_string(1, &self.name)?;
1350        }
1351        if !self.field_type.is_empty() {
1352            os.write_string(2, &self.field_type)?;
1353        }
1354        if let Some(ref v) = self.default_value.as_ref() {
1355            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1356            os.write_raw_varint32(v.get_cached_size())?;
1357            v.write_to_with_cached_sizes(os)?;
1358        }
1359        if !self.description.is_empty() {
1360            os.write_string(4, &self.description)?;
1361        }
1362        if self.has_minimum != false {
1363            os.write_bool(5, self.has_minimum)?;
1364        }
1365        if self.minimum != 0 {
1366            os.write_int64(6, self.minimum)?;
1367        }
1368        if let Some(ref v) = self.allowed_values.as_ref() {
1369            os.write_tag(7, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1370            os.write_raw_varint32(v.get_cached_size())?;
1371            v.write_to_with_cached_sizes(os)?;
1372        }
1373        os.write_unknown_fields(self.get_unknown_fields())?;
1374        ::std::result::Result::Ok(())
1375    }
1376
1377    fn get_cached_size(&self) -> u32 {
1378        self.cached_size.get()
1379    }
1380
1381    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1382        &self.unknown_fields
1383    }
1384
1385    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1386        &mut self.unknown_fields
1387    }
1388
1389    fn as_any(&self) -> &dyn (::std::any::Any) {
1390        self as &dyn (::std::any::Any)
1391    }
1392    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1393        self as &mut dyn (::std::any::Any)
1394    }
1395    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1396        self
1397    }
1398
1399    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1400        Self::descriptor_static()
1401    }
1402
1403    fn new() -> OpDef_AttrDef {
1404        OpDef_AttrDef::new()
1405    }
1406
1407    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1408        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1409        unsafe {
1410            descriptor.get(|| {
1411                let mut fields = ::std::vec::Vec::new();
1412                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1413                    "name",
1414                    |m: &OpDef_AttrDef| { &m.name },
1415                    |m: &mut OpDef_AttrDef| { &mut m.name },
1416                ));
1417                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1418                    "type",
1419                    |m: &OpDef_AttrDef| { &m.field_type },
1420                    |m: &mut OpDef_AttrDef| { &mut m.field_type },
1421                ));
1422                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(
1423                    "default_value",
1424                    |m: &OpDef_AttrDef| { &m.default_value },
1425                    |m: &mut OpDef_AttrDef| { &mut m.default_value },
1426                ));
1427                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1428                    "description",
1429                    |m: &OpDef_AttrDef| { &m.description },
1430                    |m: &mut OpDef_AttrDef| { &mut m.description },
1431                ));
1432                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1433                    "has_minimum",
1434                    |m: &OpDef_AttrDef| { &m.has_minimum },
1435                    |m: &mut OpDef_AttrDef| { &mut m.has_minimum },
1436                ));
1437                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1438                    "minimum",
1439                    |m: &OpDef_AttrDef| { &m.minimum },
1440                    |m: &mut OpDef_AttrDef| { &mut m.minimum },
1441                ));
1442                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(
1443                    "allowed_values",
1444                    |m: &OpDef_AttrDef| { &m.allowed_values },
1445                    |m: &mut OpDef_AttrDef| { &mut m.allowed_values },
1446                ));
1447                ::protobuf::reflect::MessageDescriptor::new_pb_name::<OpDef_AttrDef>(
1448                    "OpDef.AttrDef",
1449                    fields,
1450                    file_descriptor_proto()
1451                )
1452            })
1453        }
1454    }
1455
1456    fn default_instance() -> &'static OpDef_AttrDef {
1457        static mut instance: ::protobuf::lazy::Lazy<OpDef_AttrDef> = ::protobuf::lazy::Lazy::INIT;
1458        unsafe {
1459            instance.get(OpDef_AttrDef::new)
1460        }
1461    }
1462}
1463
1464impl ::protobuf::Clear for OpDef_AttrDef {
1465    fn clear(&mut self) {
1466        self.name.clear();
1467        self.field_type.clear();
1468        self.default_value.clear();
1469        self.description.clear();
1470        self.has_minimum = false;
1471        self.minimum = 0;
1472        self.allowed_values.clear();
1473        self.unknown_fields.clear();
1474    }
1475}
1476
1477impl ::std::fmt::Debug for OpDef_AttrDef {
1478    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1479        ::protobuf::text_format::fmt(self, f)
1480    }
1481}
1482
1483impl ::protobuf::reflect::ProtobufValue for OpDef_AttrDef {
1484    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1485        ::protobuf::reflect::ReflectValueRef::Message(self)
1486    }
1487}
1488
1489#[derive(PartialEq,Clone,Default)]
1490pub struct OpDeprecation {
1491    // message fields
1492    pub version: i32,
1493    pub explanation: ::std::string::String,
1494    // special fields
1495    pub unknown_fields: ::protobuf::UnknownFields,
1496    pub cached_size: ::protobuf::CachedSize,
1497}
1498
1499impl<'a> ::std::default::Default for &'a OpDeprecation {
1500    fn default() -> &'a OpDeprecation {
1501        <OpDeprecation as ::protobuf::Message>::default_instance()
1502    }
1503}
1504
1505impl OpDeprecation {
1506    pub fn new() -> OpDeprecation {
1507        ::std::default::Default::default()
1508    }
1509
1510    // int32 version = 1;
1511
1512
1513    pub fn get_version(&self) -> i32 {
1514        self.version
1515    }
1516    pub fn clear_version(&mut self) {
1517        self.version = 0;
1518    }
1519
1520    // Param is passed by value, moved
1521    pub fn set_version(&mut self, v: i32) {
1522        self.version = v;
1523    }
1524
1525    // string explanation = 2;
1526
1527
1528    pub fn get_explanation(&self) -> &str {
1529        &self.explanation
1530    }
1531    pub fn clear_explanation(&mut self) {
1532        self.explanation.clear();
1533    }
1534
1535    // Param is passed by value, moved
1536    pub fn set_explanation(&mut self, v: ::std::string::String) {
1537        self.explanation = v;
1538    }
1539
1540    // Mutable pointer to the field.
1541    // If field is not initialized, it is initialized with default value first.
1542    pub fn mut_explanation(&mut self) -> &mut ::std::string::String {
1543        &mut self.explanation
1544    }
1545
1546    // Take field
1547    pub fn take_explanation(&mut self) -> ::std::string::String {
1548        ::std::mem::replace(&mut self.explanation, ::std::string::String::new())
1549    }
1550}
1551
1552impl ::protobuf::Message for OpDeprecation {
1553    fn is_initialized(&self) -> bool {
1554        true
1555    }
1556
1557    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1558        while !is.eof()? {
1559            let (field_number, wire_type) = is.read_tag_unpack()?;
1560            match field_number {
1561                1 => {
1562                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1563                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1564                    }
1565                    let tmp = is.read_int32()?;
1566                    self.version = tmp;
1567                },
1568                2 => {
1569                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.explanation)?;
1570                },
1571                _ => {
1572                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1573                },
1574            };
1575        }
1576        ::std::result::Result::Ok(())
1577    }
1578
1579    // Compute sizes of nested messages
1580    #[allow(unused_variables)]
1581    fn compute_size(&self) -> u32 {
1582        let mut my_size = 0;
1583        if self.version != 0 {
1584            my_size += ::protobuf::rt::value_size(1, self.version, ::protobuf::wire_format::WireTypeVarint);
1585        }
1586        if !self.explanation.is_empty() {
1587            my_size += ::protobuf::rt::string_size(2, &self.explanation);
1588        }
1589        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1590        self.cached_size.set(my_size);
1591        my_size
1592    }
1593
1594    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1595        if self.version != 0 {
1596            os.write_int32(1, self.version)?;
1597        }
1598        if !self.explanation.is_empty() {
1599            os.write_string(2, &self.explanation)?;
1600        }
1601        os.write_unknown_fields(self.get_unknown_fields())?;
1602        ::std::result::Result::Ok(())
1603    }
1604
1605    fn get_cached_size(&self) -> u32 {
1606        self.cached_size.get()
1607    }
1608
1609    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1610        &self.unknown_fields
1611    }
1612
1613    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1614        &mut self.unknown_fields
1615    }
1616
1617    fn as_any(&self) -> &dyn (::std::any::Any) {
1618        self as &dyn (::std::any::Any)
1619    }
1620    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1621        self as &mut dyn (::std::any::Any)
1622    }
1623    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1624        self
1625    }
1626
1627    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1628        Self::descriptor_static()
1629    }
1630
1631    fn new() -> OpDeprecation {
1632        OpDeprecation::new()
1633    }
1634
1635    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1636        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1637        unsafe {
1638            descriptor.get(|| {
1639                let mut fields = ::std::vec::Vec::new();
1640                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1641                    "version",
1642                    |m: &OpDeprecation| { &m.version },
1643                    |m: &mut OpDeprecation| { &mut m.version },
1644                ));
1645                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1646                    "explanation",
1647                    |m: &OpDeprecation| { &m.explanation },
1648                    |m: &mut OpDeprecation| { &mut m.explanation },
1649                ));
1650                ::protobuf::reflect::MessageDescriptor::new_pb_name::<OpDeprecation>(
1651                    "OpDeprecation",
1652                    fields,
1653                    file_descriptor_proto()
1654                )
1655            })
1656        }
1657    }
1658
1659    fn default_instance() -> &'static OpDeprecation {
1660        static mut instance: ::protobuf::lazy::Lazy<OpDeprecation> = ::protobuf::lazy::Lazy::INIT;
1661        unsafe {
1662            instance.get(OpDeprecation::new)
1663        }
1664    }
1665}
1666
1667impl ::protobuf::Clear for OpDeprecation {
1668    fn clear(&mut self) {
1669        self.version = 0;
1670        self.explanation.clear();
1671        self.unknown_fields.clear();
1672    }
1673}
1674
1675impl ::std::fmt::Debug for OpDeprecation {
1676    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1677        ::protobuf::text_format::fmt(self, f)
1678    }
1679}
1680
1681impl ::protobuf::reflect::ProtobufValue for OpDeprecation {
1682    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1683        ::protobuf::reflect::ReflectValueRef::Message(self)
1684    }
1685}
1686
1687#[derive(PartialEq,Clone,Default)]
1688pub struct OpList {
1689    // message fields
1690    pub op: ::protobuf::RepeatedField<OpDef>,
1691    // special fields
1692    pub unknown_fields: ::protobuf::UnknownFields,
1693    pub cached_size: ::protobuf::CachedSize,
1694}
1695
1696impl<'a> ::std::default::Default for &'a OpList {
1697    fn default() -> &'a OpList {
1698        <OpList as ::protobuf::Message>::default_instance()
1699    }
1700}
1701
1702impl OpList {
1703    pub fn new() -> OpList {
1704        ::std::default::Default::default()
1705    }
1706
1707    // repeated .tensorflow.OpDef op = 1;
1708
1709
1710    pub fn get_op(&self) -> &[OpDef] {
1711        &self.op
1712    }
1713    pub fn clear_op(&mut self) {
1714        self.op.clear();
1715    }
1716
1717    // Param is passed by value, moved
1718    pub fn set_op(&mut self, v: ::protobuf::RepeatedField<OpDef>) {
1719        self.op = v;
1720    }
1721
1722    // Mutable pointer to the field.
1723    pub fn mut_op(&mut self) -> &mut ::protobuf::RepeatedField<OpDef> {
1724        &mut self.op
1725    }
1726
1727    // Take field
1728    pub fn take_op(&mut self) -> ::protobuf::RepeatedField<OpDef> {
1729        ::std::mem::replace(&mut self.op, ::protobuf::RepeatedField::new())
1730    }
1731}
1732
1733impl ::protobuf::Message for OpList {
1734    fn is_initialized(&self) -> bool {
1735        for v in &self.op {
1736            if !v.is_initialized() {
1737                return false;
1738            }
1739        };
1740        true
1741    }
1742
1743    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1744        while !is.eof()? {
1745            let (field_number, wire_type) = is.read_tag_unpack()?;
1746            match field_number {
1747                1 => {
1748                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.op)?;
1749                },
1750                _ => {
1751                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1752                },
1753            };
1754        }
1755        ::std::result::Result::Ok(())
1756    }
1757
1758    // Compute sizes of nested messages
1759    #[allow(unused_variables)]
1760    fn compute_size(&self) -> u32 {
1761        let mut my_size = 0;
1762        for value in &self.op {
1763            let len = value.compute_size();
1764            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1765        };
1766        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1767        self.cached_size.set(my_size);
1768        my_size
1769    }
1770
1771    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1772        for v in &self.op {
1773            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1774            os.write_raw_varint32(v.get_cached_size())?;
1775            v.write_to_with_cached_sizes(os)?;
1776        };
1777        os.write_unknown_fields(self.get_unknown_fields())?;
1778        ::std::result::Result::Ok(())
1779    }
1780
1781    fn get_cached_size(&self) -> u32 {
1782        self.cached_size.get()
1783    }
1784
1785    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1786        &self.unknown_fields
1787    }
1788
1789    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1790        &mut self.unknown_fields
1791    }
1792
1793    fn as_any(&self) -> &dyn (::std::any::Any) {
1794        self as &dyn (::std::any::Any)
1795    }
1796    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1797        self as &mut dyn (::std::any::Any)
1798    }
1799    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1800        self
1801    }
1802
1803    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1804        Self::descriptor_static()
1805    }
1806
1807    fn new() -> OpList {
1808        OpList::new()
1809    }
1810
1811    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1812        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1813        unsafe {
1814            descriptor.get(|| {
1815                let mut fields = ::std::vec::Vec::new();
1816                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OpDef>>(
1817                    "op",
1818                    |m: &OpList| { &m.op },
1819                    |m: &mut OpList| { &mut m.op },
1820                ));
1821                ::protobuf::reflect::MessageDescriptor::new_pb_name::<OpList>(
1822                    "OpList",
1823                    fields,
1824                    file_descriptor_proto()
1825                )
1826            })
1827        }
1828    }
1829
1830    fn default_instance() -> &'static OpList {
1831        static mut instance: ::protobuf::lazy::Lazy<OpList> = ::protobuf::lazy::Lazy::INIT;
1832        unsafe {
1833            instance.get(OpList::new)
1834        }
1835    }
1836}
1837
1838impl ::protobuf::Clear for OpList {
1839    fn clear(&mut self) {
1840        self.op.clear();
1841        self.unknown_fields.clear();
1842    }
1843}
1844
1845impl ::std::fmt::Debug for OpList {
1846    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1847        ::protobuf::text_format::fmt(self, f)
1848    }
1849}
1850
1851impl ::protobuf::reflect::ProtobufValue for OpList {
1852    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1853        ::protobuf::reflect::ReflectValueRef::Message(self)
1854    }
1855}
1856
1857static file_descriptor_proto_data: &'static [u8] = b"\
1858    \n&tensorflow/core/framework/op_def.proto\x12\ntensorflow\x1a*tensorflow\
1859    /core/framework/attr_value.proto\x1a%tensorflow/core/framework/types.pro\
1860    to\"\xf4\x07\n\x05OpDef\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\
1861    \x125\n\tinput_arg\x18\x02\x20\x03(\x0b2\x18.tensorflow.OpDef.ArgDefR\
1862    \x08inputArg\x127\n\noutput_arg\x18\x03\x20\x03(\x0b2\x18.tensorflow.OpD\
1863    ef.ArgDefR\toutputArg\x12%\n\x0econtrol_output\x18\x14\x20\x03(\tR\rcont\
1864    rolOutput\x12-\n\x04attr\x18\x04\x20\x03(\x0b2\x19.tensorflow.OpDef.Attr\
1865    DefR\x04attr\x12;\n\x0bdeprecation\x18\x08\x20\x01(\x0b2\x19.tensorflow.\
1866    OpDeprecationR\x0bdeprecation\x12\x18\n\x07summary\x18\x05\x20\x01(\tR\
1867    \x07summary\x12\x20\n\x0bdescription\x18\x06\x20\x01(\tR\x0bdescription\
1868    \x12%\n\x0eis_commutative\x18\x12\x20\x01(\x08R\risCommutative\x12!\n\
1869    \x0cis_aggregate\x18\x10\x20\x01(\x08R\x0bisAggregate\x12\x1f\n\x0bis_st\
1870    ateful\x18\x11\x20\x01(\x08R\nisStateful\x12<\n\x1aallows_uninitialized_\
1871    input\x18\x13\x20\x01(\x08R\x18allowsUninitializedInput\x1a\xe3\x01\n\
1872    \x06ArgDef\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x20\n\x0bde\
1873    scription\x18\x02\x20\x01(\tR\x0bdescription\x12(\n\x04type\x18\x03\x20\
1874    \x01(\x0e2\x14.tensorflow.DataTypeR\x04type\x12\x1b\n\ttype_attr\x18\x04\
1875    \x20\x01(\tR\x08typeAttr\x12\x1f\n\x0bnumber_attr\x18\x05\x20\x01(\tR\nn\
1876    umberAttr\x12$\n\x0etype_list_attr\x18\x06\x20\x01(\tR\x0ctypeListAttr\
1877    \x12\x15\n\x06is_ref\x18\x10\x20\x01(\x08R\x05isRef\x1a\x88\x02\n\x07Att\
1878    rDef\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x12\n\x04type\x18\
1879    \x02\x20\x01(\tR\x04type\x12:\n\rdefault_value\x18\x03\x20\x01(\x0b2\x15\
1880    .tensorflow.AttrValueR\x0cdefaultValue\x12\x20\n\x0bdescription\x18\x04\
1881    \x20\x01(\tR\x0bdescription\x12\x1f\n\x0bhas_minimum\x18\x05\x20\x01(\
1882    \x08R\nhasMinimum\x12\x18\n\x07minimum\x18\x06\x20\x01(\x03R\x07minimum\
1883    \x12<\n\x0eallowed_values\x18\x07\x20\x01(\x0b2\x15.tensorflow.AttrValue\
1884    R\rallowedValues\"K\n\rOpDeprecation\x12\x18\n\x07version\x18\x01\x20\
1885    \x01(\x05R\x07version\x12\x20\n\x0bexplanation\x18\x02\x20\x01(\tR\x0bex\
1886    planation\"+\n\x06OpList\x12!\n\x02op\x18\x01\x20\x03(\x0b2\x11.tensorfl\
1887    ow.OpDefR\x02opB{\n\x18org.tensorflow.frameworkB\x0bOpDefProtosP\x01ZMgi\
1888    thub.com/tensorflow/tensorflow/tensorflow/go/core/framework/op_def_go_pr\
1889    oto\xf8\x01\x01J\x948\n\x07\x12\x05\0\0\xa9\x01\x02\n\x08\n\x01\x0c\x12\
1890    \x03\0\0\x12\n\x08\n\x01\x02\x12\x03\x02\0\x13\n\x08\n\x01\x08\x12\x03\
1891    \x03\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x03\0\x1f\n\x08\n\x01\x08\x12\x03\
1892    \x04\0,\n\t\n\x02\x08\x08\x12\x03\x04\0,\n\x08\n\x01\x08\x12\x03\x05\0\"\
1893    \n\t\n\x02\x08\n\x12\x03\x05\0\"\n\x08\n\x01\x08\x12\x03\x06\01\n\t\n\
1894    \x02\x08\x01\x12\x03\x06\01\n\x08\n\x01\x08\x12\x03\x07\0d\n\t\n\x02\x08\
1895    \x0b\x12\x03\x07\0d\n\t\n\x02\x03\0\x12\x03\x08\04\n\t\n\x02\x03\x01\x12\
1896    \x03\t\0/\n\x9d\x01\n\x02\x04\0\x12\x05\x0e\0\x99\x01\x01\x1a\x8f\x01\
1897    \x20Defines\x20an\x20operation.\x20A\x20NodeDef\x20in\x20a\x20GraphDef\
1898    \x20specifies\x20an\x20Op\x20by\n\x20using\x20the\x20\"op\"\x20field\x20\
1899    which\x20should\x20match\x20the\x20name\x20of\x20a\x20OpDef.\n\x20LINT.I\
1900    fChange\n\n\n\n\x03\x04\0\x01\x12\x03\x0e\x08\r\n\x9a\x01\n\x04\x04\0\
1901    \x02\0\x12\x03\x11\x02\x12\x1a\x8c\x01\x20Op\x20names\x20starting\x20wit\
1902    h\x20an\x20underscore\x20are\x20reserved\x20for\x20internal\x20use.\n\
1903    \x20Names\x20should\x20be\x20CamelCase\x20and\x20match\x20the\x20regexp\
1904    \x20\"[A-Z][a-zA-Z0-9>_]*\".\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x11\
1905    \x02\x08\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x11\t\r\n\x0c\n\x05\x04\0\
1906    \x02\0\x03\x12\x03\x11\x10\x11\n2\n\x04\x04\0\x03\0\x12\x04\x14\x020\x03\
1907    \x1a$\x20For\x20describing\x20inputs\x20and\x20outputs.\n\n\x0c\n\x05\
1908    \x04\0\x03\0\x01\x12\x03\x14\n\x10\nW\n\x06\x04\0\x03\0\x02\0\x12\x03\
1909    \x16\x04\x14\x1aH\x20Name\x20for\x20the\x20input/output.\x20\x20Should\
1910    \x20match\x20the\x20regexp\x20\"[a-z][a-z0-9_]*\".\n\n\x0e\n\x07\x04\0\
1911    \x03\0\x02\0\x05\x12\x03\x16\x04\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x01\x12\
1912    \x03\x16\x0b\x0f\n\x0e\n\x07\x04\0\x03\0\x02\0\x03\x12\x03\x16\x12\x13\n\
1913    ,\n\x06\x04\0\x03\0\x02\x01\x12\x03\x19\x04\x1b\x1a\x1d\x20Human\x20read\
1914    able\x20description.\n\n\x0e\n\x07\x04\0\x03\0\x02\x01\x05\x12\x03\x19\
1915    \x04\n\n\x0e\n\x07\x04\0\x03\0\x02\x01\x01\x12\x03\x19\x0b\x16\n\x0e\n\
1916    \x07\x04\0\x03\0\x02\x01\x03\x12\x03\x19\x19\x1a\n\xe1\x04\n\x06\x04\0\
1917    \x03\0\x02\x02\x12\x03%\x04\x16\x1a\xd1\x04\x20Describes\x20the\x20type\
1918    \x20of\x20one\x20or\x20more\x20tensors\x20that\x20are\x20accepted/produc\
1919    ed\n\x20by\x20this\x20input/output\x20arg.\x20\x20The\x20only\x20legal\
1920    \x20combinations\x20are:\n\x20*\x20For\x20a\x20single\x20tensor:\x20eith\
1921    er\x20the\x20\"type\"\x20field\x20is\x20set\x20or\x20the\n\x20\x20\x20\"\
1922    type_attr\"\x20field\x20is\x20set\x20to\x20the\x20name\x20of\x20an\x20at\
1923    tr\x20with\x20type\x20\"type\".\n\x20*\x20For\x20a\x20sequence\x20of\x20\
1924    tensors\x20with\x20the\x20same\x20type:\x20the\x20\"number_attr\"\n\x20\
1925    \x20\x20field\x20will\x20be\x20set\x20to\x20the\x20name\x20of\x20an\x20a\
1926    ttr\x20with\x20type\x20\"int\",\x20and\n\x20\x20\x20either\x20the\x20\"t\
1927    ype\"\x20or\x20\"type_attr\"\x20field\x20will\x20be\x20set\x20as\x20for\
1928    \n\x20\x20\x20single\x20tensors.\n\x20*\x20For\x20a\x20sequence\x20of\
1929    \x20tensors,\x20the\x20\"type_list_attr\"\x20field\x20will\x20be\x20set\
1930    \n\x20\x20\x20to\x20the\x20name\x20of\x20an\x20attr\x20with\x20type\x20\
1931    \"list(type)\".\n\n\x0e\n\x07\x04\0\x03\0\x02\x02\x06\x12\x03%\x04\x0c\n\
1932    \x0e\n\x07\x04\0\x03\0\x02\x02\x01\x12\x03%\r\x11\n\x0e\n\x07\x04\0\x03\
1933    \0\x02\x02\x03\x12\x03%\x14\x15\n9\n\x06\x04\0\x03\0\x02\x03\x12\x03&\
1934    \x04\x19\"*\x20if\x20specified,\x20attr\x20must\x20have\x20type\x20\"typ\
1935    e\"\n\n\x0e\n\x07\x04\0\x03\0\x02\x03\x05\x12\x03&\x04\n\n\x0e\n\x07\x04\
1936    \0\x03\0\x02\x03\x01\x12\x03&\x0b\x14\n\x0e\n\x07\x04\0\x03\0\x02\x03\
1937    \x03\x12\x03&\x17\x18\n8\n\x06\x04\0\x03\0\x02\x04\x12\x03'\x04\x1b\")\
1938    \x20if\x20specified,\x20attr\x20must\x20have\x20type\x20\"int\"\n\n\x0e\
1939    \n\x07\x04\0\x03\0\x02\x04\x05\x12\x03'\x04\n\n\x0e\n\x07\x04\0\x03\0\
1940    \x02\x04\x01\x12\x03'\x0b\x16\n\x0e\n\x07\x04\0\x03\0\x02\x04\x03\x12\
1941    \x03'\x19\x1a\n\x80\x01\n\x06\x04\0\x03\0\x02\x05\x12\x03*\x04\x1e\x1aq\
1942    \x20If\x20specified,\x20attr\x20must\x20have\x20type\x20\"list(type)\",\
1943    \x20and\x20none\x20of\n\x20type,\x20type_attr,\x20and\x20number_attr\x20\
1944    may\x20be\x20specified.\n\n\x0e\n\x07\x04\0\x03\0\x02\x05\x05\x12\x03*\
1945    \x04\n\n\x0e\n\x07\x04\0\x03\0\x02\x05\x01\x12\x03*\x0b\x19\n\x0e\n\x07\
1946    \x04\0\x03\0\x02\x05\x03\x12\x03*\x1c\x1d\n\xc1\x01\n\x06\x04\0\x03\0\
1947    \x02\x06\x12\x03/\x04\x15\x1a\xb1\x01\x20For\x20inputs:\x20if\x20true,\
1948    \x20the\x20inputs\x20are\x20required\x20to\x20be\x20refs.\n\x20\x20\x20B\
1949    y\x20default,\x20inputs\x20can\x20be\x20either\x20refs\x20or\x20non-refs\
1950    .\n\x20For\x20outputs:\x20if\x20true,\x20outputs\x20are\x20refs,\x20othe\
1951    rwise\x20they\x20are\x20not.\n\n\x0e\n\x07\x04\0\x03\0\x02\x06\x05\x12\
1952    \x03/\x04\x08\n\x0e\n\x07\x04\0\x03\0\x02\x06\x01\x12\x03/\t\x0f\n\x0e\n\
1953    \x07\x04\0\x03\0\x02\x06\x03\x12\x03/\x12\x14\n+\n\x04\x04\0\x02\x01\x12\
1954    \x033\x02\x20\x1a\x1e\x20Description\x20of\x20the\x20input(s).\n\n\x0c\n\
1955    \x05\x04\0\x02\x01\x04\x12\x033\x02\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\
1956    \x033\x0b\x11\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x033\x12\x1b\n\x0c\n\x05\
1957    \x04\0\x02\x01\x03\x12\x033\x1e\x1f\n,\n\x04\x04\0\x02\x02\x12\x036\x02!\
1958    \x1a\x1f\x20Description\x20of\x20the\x20output(s).\n\n\x0c\n\x05\x04\0\
1959    \x02\x02\x04\x12\x036\x02\n\n\x0c\n\x05\x04\0\x02\x02\x06\x12\x036\x0b\
1960    \x11\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x036\x12\x1c\n\x0c\n\x05\x04\0\
1961    \x02\x02\x03\x12\x036\x1f\x20\n\x9e\x01\n\x04\x04\0\x02\x03\x12\x03:\x02\
1962    &\x1a\x90\x01\x20Named\x20control\x20outputs\x20for\x20this\x20operation\
1963    .\x20Useful\x20only\x20for\x20composite\n\x20operations\x20(i.e.\x20func\
1964    tions)\x20which\x20want\x20to\x20name\x20different\x20control\x20outputs\
1965    .\n\n\x0c\n\x05\x04\0\x02\x03\x04\x12\x03:\x02\n\n\x0c\n\x05\x04\0\x02\
1966    \x03\x05\x12\x03:\x0b\x11\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03:\x12\x20\
1967    \n\x0c\n\x05\x04\0\x02\x03\x03\x12\x03:#%\n\xae\x01\n\x04\x04\0\x03\x01\
1968    \x12\x04?\x02b\x03\x1a\x9f\x01\x20Description\x20of\x20the\x20graph-cons\
1969    truction-time\x20configuration\x20of\x20this\n\x20Op.\x20\x20That\x20is\
1970    \x20to\x20say,\x20this\x20describes\x20the\x20attr\x20fields\x20that\x20\
1971    will\n\x20be\x20specified\x20in\x20the\x20NodeDef.\n\n\x0c\n\x05\x04\0\
1972    \x03\x01\x01\x12\x03?\n\x11\n\xaf\x01\n\x06\x04\0\x03\x01\x02\0\x12\x03C\
1973    \x04\x14\x1a\x9f\x01\x20A\x20descriptive\x20name\x20for\x20the\x20argume\
1974    nt.\x20\x20May\x20be\x20used,\x20e.g.\x20by\x20the\n\x20Python\x20client\
1975    ,\x20as\x20a\x20keyword\x20argument\x20name,\x20and\x20so\x20should\x20m\
1976    atch\n\x20the\x20regexp\x20\"[a-z][a-z0-9_]+\".\n\n\x0e\n\x07\x04\0\x03\
1977    \x01\x02\0\x05\x12\x03C\x04\n\n\x0e\n\x07\x04\0\x03\x01\x02\0\x01\x12\
1978    \x03C\x0b\x0f\n\x0e\n\x07\x04\0\x03\x01\x02\0\x03\x12\x03C\x12\x13\nf\n\
1979    \x06\x04\0\x03\x01\x02\x01\x12\x03G\x04\x14\x1aW\x20One\x20of\x20the\x20\
1980    type\x20names\x20from\x20attr_value.proto\x20(\"string\",\x20\"list(stri\
1981    ng)\",\n\x20\"int\",\x20etc.).\n\n\x0e\n\x07\x04\0\x03\x01\x02\x01\x05\
1982    \x12\x03G\x04\n\n\x0e\n\x07\x04\0\x03\x01\x02\x01\x01\x12\x03G\x0b\x0f\n\
1983    \x0e\n\x07\x04\0\x03\x01\x02\x01\x03\x12\x03G\x12\x13\n\x90\x01\n\x06\
1984    \x04\0\x03\x01\x02\x02\x12\x03K\x04\x20\x1a\x80\x01\x20A\x20reasonable\
1985    \x20default\x20for\x20this\x20attribute\x20if\x20the\x20user\x20does\x20\
1986    not\x20supply\n\x20a\x20value.\x20\x20If\x20not\x20specified,\x20the\x20\
1987    user\x20must\x20supply\x20a\x20value.\n\n\x0e\n\x07\x04\0\x03\x01\x02\
1988    \x02\x06\x12\x03K\x04\r\n\x0e\n\x07\x04\0\x03\x01\x02\x02\x01\x12\x03K\
1989    \x0e\x1b\n\x0e\n\x07\x04\0\x03\x01\x02\x02\x03\x12\x03K\x1e\x1f\n,\n\x06\
1990    \x04\0\x03\x01\x02\x03\x12\x03N\x04\x1b\x1a\x1d\x20Human-readable\x20des\
1991    cription.\n\n\x0e\n\x07\x04\0\x03\x01\x02\x03\x05\x12\x03N\x04\n\n\x0e\n\
1992    \x07\x04\0\x03\x01\x02\x03\x01\x12\x03N\x0b\x16\n\x0e\n\x07\x04\0\x03\
1993    \x01\x02\x03\x03\x12\x03N\x19\x1a\n\xfd\x01\n\x06\x04\0\x03\x01\x02\x04\
1994    \x12\x03X\x04\x19\x1ab\x20For\x20type\x20==\x20\"int\",\x20this\x20is\
1995    \x20a\x20minimum\x20value.\x20\x20For\x20\"list(___)\"\n\x20types,\x20th\
1996    is\x20is\x20the\x20minimum\x20length.\n2\"\x20TODO(josh11b):\x20bool\x20\
1997    is_optional?\n2f\x20---\x20Constraints\x20---\n\x20These\x20constraints\
1998    \x20are\x20only\x20in\x20effect\x20if\x20specified.\x20\x20Default\x20is\
1999    \x20no\n\x20constraints.\n\n\x0e\n\x07\x04\0\x03\x01\x02\x04\x05\x12\x03\
2000    X\x04\x08\n\x0e\n\x07\x04\0\x03\x01\x02\x04\x01\x12\x03X\t\x14\n\x0e\n\
2001    \x07\x04\0\x03\x01\x02\x04\x03\x12\x03X\x17\x18\n\r\n\x06\x04\0\x03\x01\
2002    \x02\x05\x12\x03Y\x04\x16\n\x0e\n\x07\x04\0\x03\x01\x02\x05\x05\x12\x03Y\
2003    \x04\t\n\x0e\n\x07\x04\0\x03\x01\x02\x05\x01\x12\x03Y\n\x11\n\x0e\n\x07\
2004    \x04\0\x03\x01\x02\x05\x03\x12\x03Y\x14\x15\n\x83\x03\n\x06\x04\0\x03\
2005    \x01\x02\x06\x12\x03a\x04!\x1a\xf3\x02\x20The\x20set\x20of\x20allowed\
2006    \x20values.\x20\x20Has\x20type\x20that\x20is\x20the\x20\"list\"\x20versi\
2007    on\n\x20of\x20the\x20\"type\"\x20field\x20above\x20(uses\x20the\x20\"lis\
2008    t\"\x20field\x20of\x20AttrValue).\n\x20If\x20type\x20==\x20\"type\"\x20o\
2009    r\x20\"list(type)\"\x20above,\x20then\x20the\x20\"type\"\x20field\n\x20o\
2010    f\x20\"allowed_values.list\"\x20has\x20the\x20set\x20of\x20allowed\x20Da\
2011    taTypes.\n\x20If\x20type\x20==\x20\"string\"\x20or\x20\"list(string)\",\
2012    \x20then\x20the\x20\"s\"\x20field\x20of\n\x20\"allowed_values.list\"\x20\
2013    has\x20the\x20set\x20of\x20allowed\x20strings.\n\n\x0e\n\x07\x04\0\x03\
2014    \x01\x02\x06\x06\x12\x03a\x04\r\n\x0e\n\x07\x04\0\x03\x01\x02\x06\x01\
2015    \x12\x03a\x0e\x1c\n\x0e\n\x07\x04\0\x03\x01\x02\x06\x03\x12\x03a\x1f\x20\
2016    \n\x0b\n\x04\x04\0\x02\x04\x12\x03c\x02\x1c\n\x0c\n\x05\x04\0\x02\x04\
2017    \x04\x12\x03c\x02\n\n\x0c\n\x05\x04\0\x02\x04\x06\x12\x03c\x0b\x12\n\x0c\
2018    \n\x05\x04\0\x02\x04\x01\x12\x03c\x13\x17\n\x0c\n\x05\x04\0\x02\x04\x03\
2019    \x12\x03c\x1a\x1b\n?\n\x04\x04\0\x02\x05\x12\x03f\x02\x20\x1a2\x20Option\
2020    al\x20deprecation\x20based\x20on\x20GraphDef\x20versions.\n\n\x0c\n\x05\
2021    \x04\0\x02\x05\x06\x12\x03f\x02\x0f\n\x0c\n\x05\x04\0\x02\x05\x01\x12\
2022    \x03f\x10\x1b\n\x0c\n\x05\x04\0\x02\x05\x03\x12\x03f\x1e\x1f\nG\n\x04\
2023    \x04\0\x02\x06\x12\x03i\x02\x15\x1a:\x20One-line\x20human-readable\x20de\
2024    scription\x20of\x20what\x20the\x20Op\x20does.\n\n\x0c\n\x05\x04\0\x02\
2025    \x06\x05\x12\x03i\x02\x08\n\x0c\n\x05\x04\0\x02\x06\x01\x12\x03i\t\x10\n\
2026    \x0c\n\x05\x04\0\x02\x06\x03\x12\x03i\x13\x14\nQ\n\x04\x04\0\x02\x07\x12\
2027    \x03l\x02\x19\x1aD\x20Additional,\x20longer\x20human-readable\x20descrip\
2028    tion\x20of\x20what\x20the\x20Op\x20does.\n\n\x0c\n\x05\x04\0\x02\x07\x05\
2029    \x12\x03l\x02\x08\n\x0c\n\x05\x04\0\x02\x07\x01\x12\x03l\t\x14\n\x0c\n\
2030    \x05\x04\0\x02\x07\x03\x12\x03l\x17\x18\n\xdf\x01\n\x04\x04\0\x02\x08\
2031    \x12\x03r\x02\x1b\x1aL\x20True\x20if\x20the\x20operation\x20is\x20commut\
2032    ative\x20(\"op(a,b)\x20==\x20op(b,a)\"\x20for\x20all\x20inputs)\n2\x83\
2033    \x01\x20----------------------------------------------------------------\
2034    ---------\n\x20Which\x20optimizations\x20this\x20operation\x20can\x20par\
2035    ticipate\x20in.\n\n\x0c\n\x05\x04\0\x02\x08\x05\x12\x03r\x02\x06\n\x0c\n\
2036    \x05\x04\0\x02\x08\x01\x12\x03r\x07\x15\n\x0c\n\x05\x04\0\x02\x08\x03\
2037    \x12\x03r\x18\x1a\n\xff\x03\n\x04\x04\0\x02\t\x12\x03|\x02\x19\x1a\xda\
2038    \x03\x20If\x20is_aggregate\x20is\x20true,\x20then\x20this\x20operation\
2039    \x20accepts\x20N\x20>=\x202\n\x20inputs\x20and\x20produces\x201\x20outpu\
2040    t\x20all\x20of\x20the\x20same\x20type.\x20\x20Should\x20be\n\x20associat\
2041    ive\x20and\x20commutative,\x20and\x20produce\x20output\x20with\x20the\
2042    \x20same\n\x20shape\x20as\x20the\x20input.\x20\x20The\x20optimizer\x20ma\
2043    y\x20replace\x20an\x20aggregate\x20op\n\x20taking\x20input\x20from\x20mu\
2044    ltiple\x20devices\x20with\x20a\x20tree\x20of\x20aggregate\x20ops\n\x20th\
2045    at\x20aggregate\x20locally\x20within\x20each\x20device\x20(and\x20possib\
2046    ly\x20within\n\x20groups\x20of\x20nearby\x20devices)\x20before\x20commun\
2047    icating.\n\x20TODO(josh11b):\x20Implement\x20that\x20optimization.\n\"\
2048    \x15\x20for\x20things\x20like\x20add\n\n\x0c\n\x05\x04\0\x02\t\x05\x12\
2049    \x03|\x02\x06\n\x0c\n\x05\x04\0\x02\t\x01\x12\x03|\x07\x13\n\x0c\n\x05\
2050    \x04\0\x02\t\x03\x12\x03|\x16\x18\n\xd6\x06\n\x04\x04\0\x02\n\x12\x04\
2051    \x8f\x01\x02\x18\x1a\xca\x04\x20Ops\x20are\x20marked\x20as\x20stateful\
2052    \x20if\x20their\x20behavior\x20depends\x20on\x20some\x20state\x20beyond\
2053    \n\x20their\x20input\x20tensors\x20(e.g.\x20variable\x20reading\x20op)\
2054    \x20or\x20if\x20they\x20have\n\x20a\x20side-effect\x20(e.g.\x20printing\
2055    \x20or\x20asserting\x20ops).\x20Equivalently,\x20stateless\x20ops\n\x20m\
2056    ust\x20always\x20produce\x20the\x20same\x20output\x20for\x20the\x20same\
2057    \x20input\x20and\x20have\n\x20no\x20side-effects.\n\n\x20By\x20default\
2058    \x20Ops\x20may\x20be\x20moved\x20between\x20devices.\x20\x20Stateful\x20\
2059    ops\x20should\n\x20either\x20not\x20be\x20moved,\x20or\x20should\x20only\
2060    \x20be\x20moved\x20if\x20that\x20state\x20can\x20also\n\x20be\x20moved\
2061    \x20(e.g.\x20via\x20some\x20sort\x20of\x20save\x20/\x20restore).\n\x20St\
2062    ateful\x20ops\x20are\x20guaranteed\x20to\x20never\x20be\x20optimized\x20\
2063    away\x20by\x20Common\n\x20Subexpression\x20Elimination\x20(CSE).\n\"\"\
2064    \x20for\x20things\x20like\x20variables,\x20queue\n2o\x20Other\x20optimiz\
2065    ations\x20go\x20here,\x20like\n\x20\x20\x20can_alias_input,\x20rewrite_w\
2066    hen_output_unused,\x20partitioning_strategy,\x20etc.\n2f\x20------------\
2067    -------------------------------------------------------------\n\x20Optim\
2068    ization\x20constraints.\n\n\r\n\x05\x04\0\x02\n\x05\x12\x04\x8f\x01\x02\
2069    \x06\n\r\n\x05\x04\0\x02\n\x01\x12\x04\x8f\x01\x07\x12\n\r\n\x05\x04\0\
2070    \x02\n\x03\x12\x04\x8f\x01\x15\x17\n\xd5\x02\n\x04\x04\0\x02\x0b\x12\x04\
2071    \x98\x01\x02'\x1a\xce\x01\x20By\x20default,\x20all\x20inputs\x20to\x20an\
2072    \x20Op\x20must\x20be\x20initialized\x20Tensors.\x20\x20Ops\n\x20that\x20\
2073    may\x20initialize\x20tensors\x20for\x20the\x20first\x20time\x20should\
2074    \x20set\x20this\n\x20field\x20to\x20true,\x20to\x20allow\x20the\x20Op\
2075    \x20to\x20take\x20an\x20uninitialized\x20Tensor\x20as\n\x20input.\n\"\
2076    \x12\x20for\x20Assign,\x20etc.\n2b\x20----------------------------------\
2077    ---------------------------------------\n\x20Non-standard\x20options.\n\
2078    \n\r\n\x05\x04\0\x02\x0b\x05\x12\x04\x98\x01\x02\x06\n\r\n\x05\x04\0\x02\
2079    \x0b\x01\x12\x04\x98\x01\x07!\n\r\n\x05\x04\0\x02\x0b\x03\x12\x04\x98\
2080    \x01$&\nH\n\x02\x04\x01\x12\x06\x9e\x01\0\xa4\x01\x01\x1a:\x20Informatio\
2081    n\x20about\x20version-dependent\x20deprecation\x20of\x20an\x20op\n\n\x0b\
2082    \n\x03\x04\x01\x01\x12\x04\x9e\x01\x08\x15\nE\n\x04\x04\x01\x02\0\x12\
2083    \x04\xa0\x01\x02\x14\x1a7\x20First\x20GraphDef\x20version\x20at\x20which\
2084    \x20the\x20op\x20is\x20disallowed.\n\n\r\n\x05\x04\x01\x02\0\x05\x12\x04\
2085    \xa0\x01\x02\x07\n\r\n\x05\x04\x01\x02\0\x01\x12\x04\xa0\x01\x08\x0f\n\r\
2086    \n\x05\x04\x01\x02\0\x03\x12\x04\xa0\x01\x12\x13\nM\n\x04\x04\x01\x02\
2087    \x01\x12\x04\xa3\x01\x02\x19\x1a?\x20Explanation\x20of\x20why\x20it\x20w\
2088    as\x20deprecated\x20and\x20what\x20to\x20use\x20instead.\n\n\r\n\x05\x04\
2089    \x01\x02\x01\x05\x12\x04\xa3\x01\x02\x08\n\r\n\x05\x04\x01\x02\x01\x01\
2090    \x12\x04\xa3\x01\t\x14\n\r\n\x05\x04\x01\x02\x01\x03\x12\x04\xa3\x01\x17\
2091    \x18\n&\n\x02\x04\x02\x12\x06\xa7\x01\0\xa9\x01\x01\x1a\x18\x20A\x20coll\
2092    ection\x20of\x20OpDefs\n\n\x0b\n\x03\x04\x02\x01\x12\x04\xa7\x01\x08\x0e\
2093    \n\x0c\n\x04\x04\x02\x02\0\x12\x04\xa8\x01\x02\x18\n\r\n\x05\x04\x02\x02\
2094    \0\x04\x12\x04\xa8\x01\x02\n\n\r\n\x05\x04\x02\x02\0\x06\x12\x04\xa8\x01\
2095    \x0b\x10\n\r\n\x05\x04\x02\x02\0\x01\x12\x04\xa8\x01\x11\x13\n\r\n\x05\
2096    \x04\x02\x02\0\x03\x12\x04\xa8\x01\x16\x17b\x06proto3\
2097";
2098
2099static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy::INIT;
2100
2101fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
2102    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
2103}
2104
2105pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
2106    unsafe {
2107        file_descriptor_proto_lazy.get(|| {
2108            parse_descriptor_proto()
2109        })
2110    }
2111}