1 // automatically generated by the FlatBuffers compiler, do not modify
2 
3 
4 #ifndef FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
5 #define FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
6 
7 #include "flatbuffers/flatbuffers.h"
8 
9 // Ensure the included flatbuffers.h is the same version as when this file was
10 // generated, otherwise it may not be compatible.
11 static_assert(FLATBUFFERS_VERSION_MAJOR == 2 &&
12               FLATBUFFERS_VERSION_MINOR == 0 &&
13               FLATBUFFERS_VERSION_REVISION == 7,
14              "Non-compatible flatbuffers version included");
15 
16 namespace tflite {
17 
18 struct CustomQuantization;
19 struct CustomQuantizationBuilder;
20 struct CustomQuantizationT;
21 
22 struct QuantizationParameters;
23 struct QuantizationParametersBuilder;
24 struct QuantizationParametersT;
25 
26 struct Int32Vector;
27 struct Int32VectorBuilder;
28 struct Int32VectorT;
29 
30 struct Uint16Vector;
31 struct Uint16VectorBuilder;
32 struct Uint16VectorT;
33 
34 struct Uint8Vector;
35 struct Uint8VectorBuilder;
36 struct Uint8VectorT;
37 
38 struct DimensionMetadata;
39 struct DimensionMetadataBuilder;
40 struct DimensionMetadataT;
41 
42 struct SparsityParameters;
43 struct SparsityParametersBuilder;
44 struct SparsityParametersT;
45 
46 struct VariantSubType;
47 struct VariantSubTypeBuilder;
48 struct VariantSubTypeT;
49 
50 struct Tensor;
51 struct TensorBuilder;
52 struct TensorT;
53 
54 struct Conv2DOptions;
55 struct Conv2DOptionsBuilder;
56 struct Conv2DOptionsT;
57 
58 struct Conv3DOptions;
59 struct Conv3DOptionsBuilder;
60 struct Conv3DOptionsT;
61 
62 struct Pool2DOptions;
63 struct Pool2DOptionsBuilder;
64 struct Pool2DOptionsT;
65 
66 struct DepthwiseConv2DOptions;
67 struct DepthwiseConv2DOptionsBuilder;
68 struct DepthwiseConv2DOptionsT;
69 
70 struct ConcatEmbeddingsOptions;
71 struct ConcatEmbeddingsOptionsBuilder;
72 struct ConcatEmbeddingsOptionsT;
73 
74 struct LSHProjectionOptions;
75 struct LSHProjectionOptionsBuilder;
76 struct LSHProjectionOptionsT;
77 
78 struct SVDFOptions;
79 struct SVDFOptionsBuilder;
80 struct SVDFOptionsT;
81 
82 struct RNNOptions;
83 struct RNNOptionsBuilder;
84 struct RNNOptionsT;
85 
86 struct SequenceRNNOptions;
87 struct SequenceRNNOptionsBuilder;
88 struct SequenceRNNOptionsT;
89 
90 struct BidirectionalSequenceRNNOptions;
91 struct BidirectionalSequenceRNNOptionsBuilder;
92 struct BidirectionalSequenceRNNOptionsT;
93 
94 struct FullyConnectedOptions;
95 struct FullyConnectedOptionsBuilder;
96 struct FullyConnectedOptionsT;
97 
98 struct SoftmaxOptions;
99 struct SoftmaxOptionsBuilder;
100 struct SoftmaxOptionsT;
101 
102 struct ConcatenationOptions;
103 struct ConcatenationOptionsBuilder;
104 struct ConcatenationOptionsT;
105 
106 struct AddOptions;
107 struct AddOptionsBuilder;
108 struct AddOptionsT;
109 
110 struct MulOptions;
111 struct MulOptionsBuilder;
112 struct MulOptionsT;
113 
114 struct L2NormOptions;
115 struct L2NormOptionsBuilder;
116 struct L2NormOptionsT;
117 
118 struct LocalResponseNormalizationOptions;
119 struct LocalResponseNormalizationOptionsBuilder;
120 struct LocalResponseNormalizationOptionsT;
121 
122 struct LSTMOptions;
123 struct LSTMOptionsBuilder;
124 struct LSTMOptionsT;
125 
126 struct UnidirectionalSequenceLSTMOptions;
127 struct UnidirectionalSequenceLSTMOptionsBuilder;
128 struct UnidirectionalSequenceLSTMOptionsT;
129 
130 struct BidirectionalSequenceLSTMOptions;
131 struct BidirectionalSequenceLSTMOptionsBuilder;
132 struct BidirectionalSequenceLSTMOptionsT;
133 
134 struct ResizeBilinearOptions;
135 struct ResizeBilinearOptionsBuilder;
136 struct ResizeBilinearOptionsT;
137 
138 struct ResizeNearestNeighborOptions;
139 struct ResizeNearestNeighborOptionsBuilder;
140 struct ResizeNearestNeighborOptionsT;
141 
142 struct CallOptions;
143 struct CallOptionsBuilder;
144 struct CallOptionsT;
145 
146 struct PadOptions;
147 struct PadOptionsBuilder;
148 struct PadOptionsT;
149 
150 struct PadV2Options;
151 struct PadV2OptionsBuilder;
152 struct PadV2OptionsT;
153 
154 struct ReshapeOptions;
155 struct ReshapeOptionsBuilder;
156 struct ReshapeOptionsT;
157 
158 struct SpaceToBatchNDOptions;
159 struct SpaceToBatchNDOptionsBuilder;
160 struct SpaceToBatchNDOptionsT;
161 
162 struct BatchToSpaceNDOptions;
163 struct BatchToSpaceNDOptionsBuilder;
164 struct BatchToSpaceNDOptionsT;
165 
166 struct SkipGramOptions;
167 struct SkipGramOptionsBuilder;
168 struct SkipGramOptionsT;
169 
170 struct SpaceToDepthOptions;
171 struct SpaceToDepthOptionsBuilder;
172 struct SpaceToDepthOptionsT;
173 
174 struct DepthToSpaceOptions;
175 struct DepthToSpaceOptionsBuilder;
176 struct DepthToSpaceOptionsT;
177 
178 struct SubOptions;
179 struct SubOptionsBuilder;
180 struct SubOptionsT;
181 
182 struct DivOptions;
183 struct DivOptionsBuilder;
184 struct DivOptionsT;
185 
186 struct TopKV2Options;
187 struct TopKV2OptionsBuilder;
188 struct TopKV2OptionsT;
189 
190 struct EmbeddingLookupSparseOptions;
191 struct EmbeddingLookupSparseOptionsBuilder;
192 struct EmbeddingLookupSparseOptionsT;
193 
194 struct GatherOptions;
195 struct GatherOptionsBuilder;
196 struct GatherOptionsT;
197 
198 struct TransposeOptions;
199 struct TransposeOptionsBuilder;
200 struct TransposeOptionsT;
201 
202 struct ExpOptions;
203 struct ExpOptionsBuilder;
204 struct ExpOptionsT;
205 
206 struct CosOptions;
207 struct CosOptionsBuilder;
208 struct CosOptionsT;
209 
210 struct ReducerOptions;
211 struct ReducerOptionsBuilder;
212 struct ReducerOptionsT;
213 
214 struct SqueezeOptions;
215 struct SqueezeOptionsBuilder;
216 struct SqueezeOptionsT;
217 
218 struct SplitOptions;
219 struct SplitOptionsBuilder;
220 struct SplitOptionsT;
221 
222 struct SplitVOptions;
223 struct SplitVOptionsBuilder;
224 struct SplitVOptionsT;
225 
226 struct StridedSliceOptions;
227 struct StridedSliceOptionsBuilder;
228 struct StridedSliceOptionsT;
229 
230 struct LogSoftmaxOptions;
231 struct LogSoftmaxOptionsBuilder;
232 struct LogSoftmaxOptionsT;
233 
234 struct CastOptions;
235 struct CastOptionsBuilder;
236 struct CastOptionsT;
237 
238 struct DequantizeOptions;
239 struct DequantizeOptionsBuilder;
240 struct DequantizeOptionsT;
241 
242 struct MaximumMinimumOptions;
243 struct MaximumMinimumOptionsBuilder;
244 struct MaximumMinimumOptionsT;
245 
246 struct TileOptions;
247 struct TileOptionsBuilder;
248 struct TileOptionsT;
249 
250 struct ArgMaxOptions;
251 struct ArgMaxOptionsBuilder;
252 struct ArgMaxOptionsT;
253 
254 struct ArgMinOptions;
255 struct ArgMinOptionsBuilder;
256 struct ArgMinOptionsT;
257 
258 struct GreaterOptions;
259 struct GreaterOptionsBuilder;
260 struct GreaterOptionsT;
261 
262 struct GreaterEqualOptions;
263 struct GreaterEqualOptionsBuilder;
264 struct GreaterEqualOptionsT;
265 
266 struct LessOptions;
267 struct LessOptionsBuilder;
268 struct LessOptionsT;
269 
270 struct LessEqualOptions;
271 struct LessEqualOptionsBuilder;
272 struct LessEqualOptionsT;
273 
274 struct NegOptions;
275 struct NegOptionsBuilder;
276 struct NegOptionsT;
277 
278 struct SelectOptions;
279 struct SelectOptionsBuilder;
280 struct SelectOptionsT;
281 
282 struct SliceOptions;
283 struct SliceOptionsBuilder;
284 struct SliceOptionsT;
285 
286 struct TransposeConvOptions;
287 struct TransposeConvOptionsBuilder;
288 struct TransposeConvOptionsT;
289 
290 struct ExpandDimsOptions;
291 struct ExpandDimsOptionsBuilder;
292 struct ExpandDimsOptionsT;
293 
294 struct SparseToDenseOptions;
295 struct SparseToDenseOptionsBuilder;
296 struct SparseToDenseOptionsT;
297 
298 struct EqualOptions;
299 struct EqualOptionsBuilder;
300 struct EqualOptionsT;
301 
302 struct NotEqualOptions;
303 struct NotEqualOptionsBuilder;
304 struct NotEqualOptionsT;
305 
306 struct ShapeOptions;
307 struct ShapeOptionsBuilder;
308 struct ShapeOptionsT;
309 
310 struct RankOptions;
311 struct RankOptionsBuilder;
312 struct RankOptionsT;
313 
314 struct PowOptions;
315 struct PowOptionsBuilder;
316 struct PowOptionsT;
317 
318 struct FakeQuantOptions;
319 struct FakeQuantOptionsBuilder;
320 struct FakeQuantOptionsT;
321 
322 struct PackOptions;
323 struct PackOptionsBuilder;
324 struct PackOptionsT;
325 
326 struct LogicalOrOptions;
327 struct LogicalOrOptionsBuilder;
328 struct LogicalOrOptionsT;
329 
330 struct OneHotOptions;
331 struct OneHotOptionsBuilder;
332 struct OneHotOptionsT;
333 
334 struct AbsOptions;
335 struct AbsOptionsBuilder;
336 struct AbsOptionsT;
337 
338 struct HardSwishOptions;
339 struct HardSwishOptionsBuilder;
340 struct HardSwishOptionsT;
341 
342 struct LogicalAndOptions;
343 struct LogicalAndOptionsBuilder;
344 struct LogicalAndOptionsT;
345 
346 struct LogicalNotOptions;
347 struct LogicalNotOptionsBuilder;
348 struct LogicalNotOptionsT;
349 
350 struct UnpackOptions;
351 struct UnpackOptionsBuilder;
352 struct UnpackOptionsT;
353 
354 struct FloorDivOptions;
355 struct FloorDivOptionsBuilder;
356 struct FloorDivOptionsT;
357 
358 struct SquareOptions;
359 struct SquareOptionsBuilder;
360 struct SquareOptionsT;
361 
362 struct ZerosLikeOptions;
363 struct ZerosLikeOptionsBuilder;
364 struct ZerosLikeOptionsT;
365 
366 struct FillOptions;
367 struct FillOptionsBuilder;
368 struct FillOptionsT;
369 
370 struct FloorModOptions;
371 struct FloorModOptionsBuilder;
372 struct FloorModOptionsT;
373 
374 struct RangeOptions;
375 struct RangeOptionsBuilder;
376 struct RangeOptionsT;
377 
378 struct LeakyReluOptions;
379 struct LeakyReluOptionsBuilder;
380 struct LeakyReluOptionsT;
381 
382 struct SquaredDifferenceOptions;
383 struct SquaredDifferenceOptionsBuilder;
384 struct SquaredDifferenceOptionsT;
385 
386 struct MirrorPadOptions;
387 struct MirrorPadOptionsBuilder;
388 struct MirrorPadOptionsT;
389 
390 struct UniqueOptions;
391 struct UniqueOptionsBuilder;
392 struct UniqueOptionsT;
393 
394 struct ReverseV2Options;
395 struct ReverseV2OptionsBuilder;
396 struct ReverseV2OptionsT;
397 
398 struct AddNOptions;
399 struct AddNOptionsBuilder;
400 struct AddNOptionsT;
401 
402 struct GatherNdOptions;
403 struct GatherNdOptionsBuilder;
404 struct GatherNdOptionsT;
405 
406 struct WhereOptions;
407 struct WhereOptionsBuilder;
408 struct WhereOptionsT;
409 
410 struct ReverseSequenceOptions;
411 struct ReverseSequenceOptionsBuilder;
412 struct ReverseSequenceOptionsT;
413 
414 struct MatrixDiagOptions;
415 struct MatrixDiagOptionsBuilder;
416 struct MatrixDiagOptionsT;
417 
418 struct QuantizeOptions;
419 struct QuantizeOptionsBuilder;
420 struct QuantizeOptionsT;
421 
422 struct MatrixSetDiagOptions;
423 struct MatrixSetDiagOptionsBuilder;
424 struct MatrixSetDiagOptionsT;
425 
426 struct IfOptions;
427 struct IfOptionsBuilder;
428 struct IfOptionsT;
429 
430 struct CallOnceOptions;
431 struct CallOnceOptionsBuilder;
432 struct CallOnceOptionsT;
433 
434 struct WhileOptions;
435 struct WhileOptionsBuilder;
436 struct WhileOptionsT;
437 
438 struct NonMaxSuppressionV4Options;
439 struct NonMaxSuppressionV4OptionsBuilder;
440 struct NonMaxSuppressionV4OptionsT;
441 
442 struct NonMaxSuppressionV5Options;
443 struct NonMaxSuppressionV5OptionsBuilder;
444 struct NonMaxSuppressionV5OptionsT;
445 
446 struct ScatterNdOptions;
447 struct ScatterNdOptionsBuilder;
448 struct ScatterNdOptionsT;
449 
450 struct SelectV2Options;
451 struct SelectV2OptionsBuilder;
452 struct SelectV2OptionsT;
453 
454 struct DensifyOptions;
455 struct DensifyOptionsBuilder;
456 struct DensifyOptionsT;
457 
458 struct SegmentSumOptions;
459 struct SegmentSumOptionsBuilder;
460 struct SegmentSumOptionsT;
461 
462 struct BatchMatMulOptions;
463 struct BatchMatMulOptionsBuilder;
464 struct BatchMatMulOptionsT;
465 
466 struct CumsumOptions;
467 struct CumsumOptionsBuilder;
468 struct CumsumOptionsT;
469 
470 struct BroadcastToOptions;
471 struct BroadcastToOptionsBuilder;
472 struct BroadcastToOptionsT;
473 
474 struct Rfft2dOptions;
475 struct Rfft2dOptionsBuilder;
476 struct Rfft2dOptionsT;
477 
478 struct HashtableOptions;
479 struct HashtableOptionsBuilder;
480 struct HashtableOptionsT;
481 
482 struct HashtableFindOptions;
483 struct HashtableFindOptionsBuilder;
484 struct HashtableFindOptionsT;
485 
486 struct HashtableImportOptions;
487 struct HashtableImportOptionsBuilder;
488 struct HashtableImportOptionsT;
489 
490 struct HashtableSizeOptions;
491 struct HashtableSizeOptionsBuilder;
492 struct HashtableSizeOptionsT;
493 
494 struct VarHandleOptions;
495 struct VarHandleOptionsBuilder;
496 struct VarHandleOptionsT;
497 
498 struct ReadVariableOptions;
499 struct ReadVariableOptionsBuilder;
500 struct ReadVariableOptionsT;
501 
502 struct AssignVariableOptions;
503 struct AssignVariableOptionsBuilder;
504 struct AssignVariableOptionsT;
505 
506 struct RandomOptions;
507 struct RandomOptionsBuilder;
508 struct RandomOptionsT;
509 
510 struct BucketizeOptions;
511 struct BucketizeOptionsBuilder;
512 struct BucketizeOptionsT;
513 
514 struct GeluOptions;
515 struct GeluOptionsBuilder;
516 struct GeluOptionsT;
517 
518 struct DynamicUpdateSliceOptions;
519 struct DynamicUpdateSliceOptionsBuilder;
520 struct DynamicUpdateSliceOptionsT;
521 
522 struct UnsortedSegmentProdOptions;
523 struct UnsortedSegmentProdOptionsBuilder;
524 struct UnsortedSegmentProdOptionsT;
525 
526 struct UnsortedSegmentMaxOptions;
527 struct UnsortedSegmentMaxOptionsBuilder;
528 struct UnsortedSegmentMaxOptionsT;
529 
530 struct UnsortedSegmentSumOptions;
531 struct UnsortedSegmentSumOptionsBuilder;
532 struct UnsortedSegmentSumOptionsT;
533 
534 struct ATan2Options;
535 struct ATan2OptionsBuilder;
536 struct ATan2OptionsT;
537 
538 struct UnsortedSegmentMinOptions;
539 struct UnsortedSegmentMinOptionsBuilder;
540 struct UnsortedSegmentMinOptionsT;
541 
542 struct SignOptions;
543 struct SignOptionsBuilder;
544 struct SignOptionsT;
545 
546 struct OperatorCode;
547 struct OperatorCodeBuilder;
548 struct OperatorCodeT;
549 
550 struct Operator;
551 struct OperatorBuilder;
552 struct OperatorT;
553 
554 struct SubGraph;
555 struct SubGraphBuilder;
556 struct SubGraphT;
557 
558 struct Buffer;
559 struct BufferBuilder;
560 struct BufferT;
561 
562 struct Metadata;
563 struct MetadataBuilder;
564 struct MetadataT;
565 
566 struct TensorMap;
567 struct TensorMapBuilder;
568 struct TensorMapT;
569 
570 struct SignatureDef;
571 struct SignatureDefBuilder;
572 struct SignatureDefT;
573 
574 struct Model;
575 struct ModelBuilder;
576 struct ModelT;
577 
578 enum TensorType : int8_t {
579   TensorType_FLOAT32 = 0,
580   TensorType_FLOAT16 = 1,
581   TensorType_INT32 = 2,
582   TensorType_UINT8 = 3,
583   TensorType_INT64 = 4,
584   TensorType_STRING = 5,
585   TensorType_BOOL = 6,
586   TensorType_INT16 = 7,
587   TensorType_COMPLEX64 = 8,
588   TensorType_INT8 = 9,
589   TensorType_FLOAT64 = 10,
590   TensorType_COMPLEX128 = 11,
591   TensorType_UINT64 = 12,
592   TensorType_RESOURCE = 13,
593   TensorType_VARIANT = 14,
594   TensorType_UINT32 = 15,
595   TensorType_UINT16 = 16,
596   TensorType_MIN = TensorType_FLOAT32,
597   TensorType_MAX = TensorType_UINT16
598 };
599 
EnumValuesTensorType()600 inline const TensorType (&EnumValuesTensorType())[17] {
601   static const TensorType values[] = {
602     TensorType_FLOAT32,
603     TensorType_FLOAT16,
604     TensorType_INT32,
605     TensorType_UINT8,
606     TensorType_INT64,
607     TensorType_STRING,
608     TensorType_BOOL,
609     TensorType_INT16,
610     TensorType_COMPLEX64,
611     TensorType_INT8,
612     TensorType_FLOAT64,
613     TensorType_COMPLEX128,
614     TensorType_UINT64,
615     TensorType_RESOURCE,
616     TensorType_VARIANT,
617     TensorType_UINT32,
618     TensorType_UINT16
619   };
620   return values;
621 }
622 
EnumNamesTensorType()623 inline const char * const *EnumNamesTensorType() {
624   static const char * const names[18] = {
625     "FLOAT32",
626     "FLOAT16",
627     "INT32",
628     "UINT8",
629     "INT64",
630     "STRING",
631     "BOOL",
632     "INT16",
633     "COMPLEX64",
634     "INT8",
635     "FLOAT64",
636     "COMPLEX128",
637     "UINT64",
638     "RESOURCE",
639     "VARIANT",
640     "UINT32",
641     "UINT16",
642     nullptr
643   };
644   return names;
645 }
646 
EnumNameTensorType(TensorType e)647 inline const char *EnumNameTensorType(TensorType e) {
648   if (flatbuffers::IsOutRange(e, TensorType_FLOAT32, TensorType_UINT16)) return "";
649   const size_t index = static_cast<size_t>(e);
650   return EnumNamesTensorType()[index];
651 }
652 
653 enum QuantizationDetails : uint8_t {
654   QuantizationDetails_NONE = 0,
655   QuantizationDetails_CustomQuantization = 1,
656   QuantizationDetails_MIN = QuantizationDetails_NONE,
657   QuantizationDetails_MAX = QuantizationDetails_CustomQuantization
658 };
659 
EnumValuesQuantizationDetails()660 inline const QuantizationDetails (&EnumValuesQuantizationDetails())[2] {
661   static const QuantizationDetails values[] = {
662     QuantizationDetails_NONE,
663     QuantizationDetails_CustomQuantization
664   };
665   return values;
666 }
667 
EnumNamesQuantizationDetails()668 inline const char * const *EnumNamesQuantizationDetails() {
669   static const char * const names[3] = {
670     "NONE",
671     "CustomQuantization",
672     nullptr
673   };
674   return names;
675 }
676 
EnumNameQuantizationDetails(QuantizationDetails e)677 inline const char *EnumNameQuantizationDetails(QuantizationDetails e) {
678   if (flatbuffers::IsOutRange(e, QuantizationDetails_NONE, QuantizationDetails_CustomQuantization)) return "";
679   const size_t index = static_cast<size_t>(e);
680   return EnumNamesQuantizationDetails()[index];
681 }
682 
683 template<typename T> struct QuantizationDetailsTraits {
684   static const QuantizationDetails enum_value = QuantizationDetails_NONE;
685 };
686 
687 template<> struct QuantizationDetailsTraits<tflite::CustomQuantization> {
688   static const QuantizationDetails enum_value = QuantizationDetails_CustomQuantization;
689 };
690 
691 template<typename T> struct QuantizationDetailsUnionTraits {
692   static const QuantizationDetails enum_value = QuantizationDetails_NONE;
693 };
694 
695 template<> struct QuantizationDetailsUnionTraits<tflite::CustomQuantizationT> {
696   static const QuantizationDetails enum_value = QuantizationDetails_CustomQuantization;
697 };
698 
699 struct QuantizationDetailsUnion {
700   QuantizationDetails type;
701   void *value;
702 
703   QuantizationDetailsUnion() : type(QuantizationDetails_NONE), value(nullptr) {}
704   QuantizationDetailsUnion(QuantizationDetailsUnion&& u) FLATBUFFERS_NOEXCEPT :
705     type(QuantizationDetails_NONE), value(nullptr)
706     { std::swap(type, u.type); std::swap(value, u.value); }
707   QuantizationDetailsUnion(const QuantizationDetailsUnion &);
708   QuantizationDetailsUnion &operator=(const QuantizationDetailsUnion &u)
709     { QuantizationDetailsUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
710   QuantizationDetailsUnion &operator=(QuantizationDetailsUnion &&u) FLATBUFFERS_NOEXCEPT
711     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
712   ~QuantizationDetailsUnion() { Reset(); }
713 
714   void Reset();
715 
716   template <typename T>
717   void Set(T&& val) {
718     typedef typename std::remove_reference<T>::type RT;
719     Reset();
720     type = QuantizationDetailsUnionTraits<RT>::enum_value;
721     if (type != QuantizationDetails_NONE) {
722       value = new RT(std::forward<T>(val));
723     }
724   }
725 
726   static void *UnPack(const void *obj, QuantizationDetails type, const flatbuffers::resolver_function_t *resolver);
727   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
728 
729   tflite::CustomQuantizationT *AsCustomQuantization() {
730     return type == QuantizationDetails_CustomQuantization ?
731       reinterpret_cast<tflite::CustomQuantizationT *>(value) : nullptr;
732   }
733   const tflite::CustomQuantizationT *AsCustomQuantization() const {
734     return type == QuantizationDetails_CustomQuantization ?
735       reinterpret_cast<const tflite::CustomQuantizationT *>(value) : nullptr;
736   }
737 };
738 
739 bool VerifyQuantizationDetails(flatbuffers::Verifier &verifier, const void *obj, QuantizationDetails type);
740 bool VerifyQuantizationDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
741 
742 enum DimensionType : int8_t {
743   DimensionType_DENSE = 0,
744   DimensionType_SPARSE_CSR = 1,
745   DimensionType_MIN = DimensionType_DENSE,
746   DimensionType_MAX = DimensionType_SPARSE_CSR
747 };
748 
749 inline const DimensionType (&EnumValuesDimensionType())[2] {
750   static const DimensionType values[] = {
751     DimensionType_DENSE,
752     DimensionType_SPARSE_CSR
753   };
754   return values;
755 }
756 
757 inline const char * const *EnumNamesDimensionType() {
758   static const char * const names[3] = {
759     "DENSE",
760     "SPARSE_CSR",
761     nullptr
762   };
763   return names;
764 }
765 
766 inline const char *EnumNameDimensionType(DimensionType e) {
767   if (flatbuffers::IsOutRange(e, DimensionType_DENSE, DimensionType_SPARSE_CSR)) return "";
768   const size_t index = static_cast<size_t>(e);
769   return EnumNamesDimensionType()[index];
770 }
771 
772 enum SparseIndexVector : uint8_t {
773   SparseIndexVector_NONE = 0,
774   SparseIndexVector_Int32Vector = 1,
775   SparseIndexVector_Uint16Vector = 2,
776   SparseIndexVector_Uint8Vector = 3,
777   SparseIndexVector_MIN = SparseIndexVector_NONE,
778   SparseIndexVector_MAX = SparseIndexVector_Uint8Vector
779 };
780 
781 inline const SparseIndexVector (&EnumValuesSparseIndexVector())[4] {
782   static const SparseIndexVector values[] = {
783     SparseIndexVector_NONE,
784     SparseIndexVector_Int32Vector,
785     SparseIndexVector_Uint16Vector,
786     SparseIndexVector_Uint8Vector
787   };
788   return values;
789 }
790 
791 inline const char * const *EnumNamesSparseIndexVector() {
792   static const char * const names[5] = {
793     "NONE",
794     "Int32Vector",
795     "Uint16Vector",
796     "Uint8Vector",
797     nullptr
798   };
799   return names;
800 }
801 
802 inline const char *EnumNameSparseIndexVector(SparseIndexVector e) {
803   if (flatbuffers::IsOutRange(e, SparseIndexVector_NONE, SparseIndexVector_Uint8Vector)) return "";
804   const size_t index = static_cast<size_t>(e);
805   return EnumNamesSparseIndexVector()[index];
806 }
807 
808 template<typename T> struct SparseIndexVectorTraits {
809   static const SparseIndexVector enum_value = SparseIndexVector_NONE;
810 };
811 
812 template<> struct SparseIndexVectorTraits<tflite::Int32Vector> {
813   static const SparseIndexVector enum_value = SparseIndexVector_Int32Vector;
814 };
815 
816 template<> struct SparseIndexVectorTraits<tflite::Uint16Vector> {
817   static const SparseIndexVector enum_value = SparseIndexVector_Uint16Vector;
818 };
819 
820 template<> struct SparseIndexVectorTraits<tflite::Uint8Vector> {
821   static const SparseIndexVector enum_value = SparseIndexVector_Uint8Vector;
822 };
823 
824 template<typename T> struct SparseIndexVectorUnionTraits {
825   static const SparseIndexVector enum_value = SparseIndexVector_NONE;
826 };
827 
828 template<> struct SparseIndexVectorUnionTraits<tflite::Int32VectorT> {
829   static const SparseIndexVector enum_value = SparseIndexVector_Int32Vector;
830 };
831 
832 template<> struct SparseIndexVectorUnionTraits<tflite::Uint16VectorT> {
833   static const SparseIndexVector enum_value = SparseIndexVector_Uint16Vector;
834 };
835 
836 template<> struct SparseIndexVectorUnionTraits<tflite::Uint8VectorT> {
837   static const SparseIndexVector enum_value = SparseIndexVector_Uint8Vector;
838 };
839 
840 struct SparseIndexVectorUnion {
841   SparseIndexVector type;
842   void *value;
843 
844   SparseIndexVectorUnion() : type(SparseIndexVector_NONE), value(nullptr) {}
845   SparseIndexVectorUnion(SparseIndexVectorUnion&& u) FLATBUFFERS_NOEXCEPT :
846     type(SparseIndexVector_NONE), value(nullptr)
847     { std::swap(type, u.type); std::swap(value, u.value); }
848   SparseIndexVectorUnion(const SparseIndexVectorUnion &);
849   SparseIndexVectorUnion &operator=(const SparseIndexVectorUnion &u)
850     { SparseIndexVectorUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
851   SparseIndexVectorUnion &operator=(SparseIndexVectorUnion &&u) FLATBUFFERS_NOEXCEPT
852     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
853   ~SparseIndexVectorUnion() { Reset(); }
854 
855   void Reset();
856 
857   template <typename T>
858   void Set(T&& val) {
859     typedef typename std::remove_reference<T>::type RT;
860     Reset();
861     type = SparseIndexVectorUnionTraits<RT>::enum_value;
862     if (type != SparseIndexVector_NONE) {
863       value = new RT(std::forward<T>(val));
864     }
865   }
866 
867   static void *UnPack(const void *obj, SparseIndexVector type, const flatbuffers::resolver_function_t *resolver);
868   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
869 
870   tflite::Int32VectorT *AsInt32Vector() {
871     return type == SparseIndexVector_Int32Vector ?
872       reinterpret_cast<tflite::Int32VectorT *>(value) : nullptr;
873   }
874   const tflite::Int32VectorT *AsInt32Vector() const {
875     return type == SparseIndexVector_Int32Vector ?
876       reinterpret_cast<const tflite::Int32VectorT *>(value) : nullptr;
877   }
878   tflite::Uint16VectorT *AsUint16Vector() {
879     return type == SparseIndexVector_Uint16Vector ?
880       reinterpret_cast<tflite::Uint16VectorT *>(value) : nullptr;
881   }
882   const tflite::Uint16VectorT *AsUint16Vector() const {
883     return type == SparseIndexVector_Uint16Vector ?
884       reinterpret_cast<const tflite::Uint16VectorT *>(value) : nullptr;
885   }
886   tflite::Uint8VectorT *AsUint8Vector() {
887     return type == SparseIndexVector_Uint8Vector ?
888       reinterpret_cast<tflite::Uint8VectorT *>(value) : nullptr;
889   }
890   const tflite::Uint8VectorT *AsUint8Vector() const {
891     return type == SparseIndexVector_Uint8Vector ?
892       reinterpret_cast<const tflite::Uint8VectorT *>(value) : nullptr;
893   }
894 };
895 
896 bool VerifySparseIndexVector(flatbuffers::Verifier &verifier, const void *obj, SparseIndexVector type);
897 bool VerifySparseIndexVectorVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
898 
899 enum BuiltinOperator : int32_t {
900   BuiltinOperator_ADD = 0,
901   BuiltinOperator_AVERAGE_POOL_2D = 1,
902   BuiltinOperator_CONCATENATION = 2,
903   BuiltinOperator_CONV_2D = 3,
904   BuiltinOperator_DEPTHWISE_CONV_2D = 4,
905   BuiltinOperator_DEPTH_TO_SPACE = 5,
906   BuiltinOperator_DEQUANTIZE = 6,
907   BuiltinOperator_EMBEDDING_LOOKUP = 7,
908   BuiltinOperator_FLOOR = 8,
909   BuiltinOperator_FULLY_CONNECTED = 9,
910   BuiltinOperator_HASHTABLE_LOOKUP = 10,
911   BuiltinOperator_L2_NORMALIZATION = 11,
912   BuiltinOperator_L2_POOL_2D = 12,
913   BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION = 13,
914   BuiltinOperator_LOGISTIC = 14,
915   BuiltinOperator_LSH_PROJECTION = 15,
916   BuiltinOperator_LSTM = 16,
917   BuiltinOperator_MAX_POOL_2D = 17,
918   BuiltinOperator_MUL = 18,
919   BuiltinOperator_RELU = 19,
920   BuiltinOperator_RELU_N1_TO_1 = 20,
921   BuiltinOperator_RELU6 = 21,
922   BuiltinOperator_RESHAPE = 22,
923   BuiltinOperator_RESIZE_BILINEAR = 23,
924   BuiltinOperator_RNN = 24,
925   BuiltinOperator_SOFTMAX = 25,
926   BuiltinOperator_SPACE_TO_DEPTH = 26,
927   BuiltinOperator_SVDF = 27,
928   BuiltinOperator_TANH = 28,
929   BuiltinOperator_CONCAT_EMBEDDINGS = 29,
930   BuiltinOperator_SKIP_GRAM = 30,
931   BuiltinOperator_CALL = 31,
932   BuiltinOperator_CUSTOM = 32,
933   BuiltinOperator_EMBEDDING_LOOKUP_SPARSE = 33,
934   BuiltinOperator_PAD = 34,
935   BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN = 35,
936   BuiltinOperator_GATHER = 36,
937   BuiltinOperator_BATCH_TO_SPACE_ND = 37,
938   BuiltinOperator_SPACE_TO_BATCH_ND = 38,
939   BuiltinOperator_TRANSPOSE = 39,
940   BuiltinOperator_MEAN = 40,
941   BuiltinOperator_SUB = 41,
942   BuiltinOperator_DIV = 42,
943   BuiltinOperator_SQUEEZE = 43,
944   BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM = 44,
945   BuiltinOperator_STRIDED_SLICE = 45,
946   BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN = 46,
947   BuiltinOperator_EXP = 47,
948   BuiltinOperator_TOPK_V2 = 48,
949   BuiltinOperator_SPLIT = 49,
950   BuiltinOperator_LOG_SOFTMAX = 50,
951   BuiltinOperator_DELEGATE = 51,
952   BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM = 52,
953   BuiltinOperator_CAST = 53,
954   BuiltinOperator_PRELU = 54,
955   BuiltinOperator_MAXIMUM = 55,
956   BuiltinOperator_ARG_MAX = 56,
957   BuiltinOperator_MINIMUM = 57,
958   BuiltinOperator_LESS = 58,
959   BuiltinOperator_NEG = 59,
960   BuiltinOperator_PADV2 = 60,
961   BuiltinOperator_GREATER = 61,
962   BuiltinOperator_GREATER_EQUAL = 62,
963   BuiltinOperator_LESS_EQUAL = 63,
964   BuiltinOperator_SELECT = 64,
965   BuiltinOperator_SLICE = 65,
966   BuiltinOperator_SIN = 66,
967   BuiltinOperator_TRANSPOSE_CONV = 67,
968   BuiltinOperator_SPARSE_TO_DENSE = 68,
969   BuiltinOperator_TILE = 69,
970   BuiltinOperator_EXPAND_DIMS = 70,
971   BuiltinOperator_EQUAL = 71,
972   BuiltinOperator_NOT_EQUAL = 72,
973   BuiltinOperator_LOG = 73,
974   BuiltinOperator_SUM = 74,
975   BuiltinOperator_SQRT = 75,
976   BuiltinOperator_RSQRT = 76,
977   BuiltinOperator_SHAPE = 77,
978   BuiltinOperator_POW = 78,
979   BuiltinOperator_ARG_MIN = 79,
980   BuiltinOperator_FAKE_QUANT = 80,
981   BuiltinOperator_REDUCE_PROD = 81,
982   BuiltinOperator_REDUCE_MAX = 82,
983   BuiltinOperator_PACK = 83,
984   BuiltinOperator_LOGICAL_OR = 84,
985   BuiltinOperator_ONE_HOT = 85,
986   BuiltinOperator_LOGICAL_AND = 86,
987   BuiltinOperator_LOGICAL_NOT = 87,
988   BuiltinOperator_UNPACK = 88,
989   BuiltinOperator_REDUCE_MIN = 89,
990   BuiltinOperator_FLOOR_DIV = 90,
991   BuiltinOperator_REDUCE_ANY = 91,
992   BuiltinOperator_SQUARE = 92,
993   BuiltinOperator_ZEROS_LIKE = 93,
994   BuiltinOperator_FILL = 94,
995   BuiltinOperator_FLOOR_MOD = 95,
996   BuiltinOperator_RANGE = 96,
997   BuiltinOperator_RESIZE_NEAREST_NEIGHBOR = 97,
998   BuiltinOperator_LEAKY_RELU = 98,
999   BuiltinOperator_SQUARED_DIFFERENCE = 99,
1000   BuiltinOperator_MIRROR_PAD = 100,
1001   BuiltinOperator_ABS = 101,
1002   BuiltinOperator_SPLIT_V = 102,
1003   BuiltinOperator_UNIQUE = 103,
1004   BuiltinOperator_CEIL = 104,
1005   BuiltinOperator_REVERSE_V2 = 105,
1006   BuiltinOperator_ADD_N = 106,
1007   BuiltinOperator_GATHER_ND = 107,
1008   BuiltinOperator_COS = 108,
1009   BuiltinOperator_WHERE = 109,
1010   BuiltinOperator_RANK = 110,
1011   BuiltinOperator_ELU = 111,
1012   BuiltinOperator_REVERSE_SEQUENCE = 112,
1013   BuiltinOperator_MATRIX_DIAG = 113,
1014   BuiltinOperator_QUANTIZE = 114,
1015   BuiltinOperator_MATRIX_SET_DIAG = 115,
1016   BuiltinOperator_ROUND = 116,
1017   BuiltinOperator_HARD_SWISH = 117,
1018   BuiltinOperator_IF = 118,
1019   BuiltinOperator_WHILE = 119,
1020   BuiltinOperator_NON_MAX_SUPPRESSION_V4 = 120,
1021   BuiltinOperator_NON_MAX_SUPPRESSION_V5 = 121,
1022   BuiltinOperator_SCATTER_ND = 122,
1023   BuiltinOperator_SELECT_V2 = 123,
1024   BuiltinOperator_DENSIFY = 124,
1025   BuiltinOperator_SEGMENT_SUM = 125,
1026   BuiltinOperator_BATCH_MATMUL = 126,
1027   BuiltinOperator_PLACEHOLDER_FOR_GREATER_OP_CODES = 127,
1028   BuiltinOperator_CUMSUM = 128,
1029   BuiltinOperator_CALL_ONCE = 129,
1030   BuiltinOperator_BROADCAST_TO = 130,
1031   BuiltinOperator_RFFT2D = 131,
1032   BuiltinOperator_CONV_3D = 132,
1033   BuiltinOperator_IMAG = 133,
1034   BuiltinOperator_REAL = 134,
1035   BuiltinOperator_COMPLEX_ABS = 135,
1036   BuiltinOperator_HASHTABLE = 136,
1037   BuiltinOperator_HASHTABLE_FIND = 137,
1038   BuiltinOperator_HASHTABLE_IMPORT = 138,
1039   BuiltinOperator_HASHTABLE_SIZE = 139,
1040   BuiltinOperator_REDUCE_ALL = 140,
1041   BuiltinOperator_CONV_3D_TRANSPOSE = 141,
1042   BuiltinOperator_VAR_HANDLE = 142,
1043   BuiltinOperator_READ_VARIABLE = 143,
1044   BuiltinOperator_ASSIGN_VARIABLE = 144,
1045   BuiltinOperator_BROADCAST_ARGS = 145,
1046   BuiltinOperator_RANDOM_STANDARD_NORMAL = 146,
1047   BuiltinOperator_BUCKETIZE = 147,
1048   BuiltinOperator_RANDOM_UNIFORM = 148,
1049   BuiltinOperator_MULTINOMIAL = 149,
1050   BuiltinOperator_GELU = 150,
1051   BuiltinOperator_DYNAMIC_UPDATE_SLICE = 151,
1052   BuiltinOperator_RELU_0_TO_1 = 152,
1053   BuiltinOperator_UNSORTED_SEGMENT_PROD = 153,
1054   BuiltinOperator_UNSORTED_SEGMENT_MAX = 154,
1055   BuiltinOperator_UNSORTED_SEGMENT_SUM = 155,
1056   BuiltinOperator_ATAN2 = 156,
1057   BuiltinOperator_UNSORTED_SEGMENT_MIN = 157,
1058   BuiltinOperator_SIGN = 158,
1059   BuiltinOperator_MIN = BuiltinOperator_ADD,
1060   BuiltinOperator_MAX = BuiltinOperator_SIGN
1061 };
1062 
1063 inline const BuiltinOperator (&EnumValuesBuiltinOperator())[159] {
1064   static const BuiltinOperator values[] = {
1065     BuiltinOperator_ADD,
1066     BuiltinOperator_AVERAGE_POOL_2D,
1067     BuiltinOperator_CONCATENATION,
1068     BuiltinOperator_CONV_2D,
1069     BuiltinOperator_DEPTHWISE_CONV_2D,
1070     BuiltinOperator_DEPTH_TO_SPACE,
1071     BuiltinOperator_DEQUANTIZE,
1072     BuiltinOperator_EMBEDDING_LOOKUP,
1073     BuiltinOperator_FLOOR,
1074     BuiltinOperator_FULLY_CONNECTED,
1075     BuiltinOperator_HASHTABLE_LOOKUP,
1076     BuiltinOperator_L2_NORMALIZATION,
1077     BuiltinOperator_L2_POOL_2D,
1078     BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION,
1079     BuiltinOperator_LOGISTIC,
1080     BuiltinOperator_LSH_PROJECTION,
1081     BuiltinOperator_LSTM,
1082     BuiltinOperator_MAX_POOL_2D,
1083     BuiltinOperator_MUL,
1084     BuiltinOperator_RELU,
1085     BuiltinOperator_RELU_N1_TO_1,
1086     BuiltinOperator_RELU6,
1087     BuiltinOperator_RESHAPE,
1088     BuiltinOperator_RESIZE_BILINEAR,
1089     BuiltinOperator_RNN,
1090     BuiltinOperator_SOFTMAX,
1091     BuiltinOperator_SPACE_TO_DEPTH,
1092     BuiltinOperator_SVDF,
1093     BuiltinOperator_TANH,
1094     BuiltinOperator_CONCAT_EMBEDDINGS,
1095     BuiltinOperator_SKIP_GRAM,
1096     BuiltinOperator_CALL,
1097     BuiltinOperator_CUSTOM,
1098     BuiltinOperator_EMBEDDING_LOOKUP_SPARSE,
1099     BuiltinOperator_PAD,
1100     BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN,
1101     BuiltinOperator_GATHER,
1102     BuiltinOperator_BATCH_TO_SPACE_ND,
1103     BuiltinOperator_SPACE_TO_BATCH_ND,
1104     BuiltinOperator_TRANSPOSE,
1105     BuiltinOperator_MEAN,
1106     BuiltinOperator_SUB,
1107     BuiltinOperator_DIV,
1108     BuiltinOperator_SQUEEZE,
1109     BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM,
1110     BuiltinOperator_STRIDED_SLICE,
1111     BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN,
1112     BuiltinOperator_EXP,
1113     BuiltinOperator_TOPK_V2,
1114     BuiltinOperator_SPLIT,
1115     BuiltinOperator_LOG_SOFTMAX,
1116     BuiltinOperator_DELEGATE,
1117     BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM,
1118     BuiltinOperator_CAST,
1119     BuiltinOperator_PRELU,
1120     BuiltinOperator_MAXIMUM,
1121     BuiltinOperator_ARG_MAX,
1122     BuiltinOperator_MINIMUM,
1123     BuiltinOperator_LESS,
1124     BuiltinOperator_NEG,
1125     BuiltinOperator_PADV2,
1126     BuiltinOperator_GREATER,
1127     BuiltinOperator_GREATER_EQUAL,
1128     BuiltinOperator_LESS_EQUAL,
1129     BuiltinOperator_SELECT,
1130     BuiltinOperator_SLICE,
1131     BuiltinOperator_SIN,
1132     BuiltinOperator_TRANSPOSE_CONV,
1133     BuiltinOperator_SPARSE_TO_DENSE,
1134     BuiltinOperator_TILE,
1135     BuiltinOperator_EXPAND_DIMS,
1136     BuiltinOperator_EQUAL,
1137     BuiltinOperator_NOT_EQUAL,
1138     BuiltinOperator_LOG,
1139     BuiltinOperator_SUM,
1140     BuiltinOperator_SQRT,
1141     BuiltinOperator_RSQRT,
1142     BuiltinOperator_SHAPE,
1143     BuiltinOperator_POW,
1144     BuiltinOperator_ARG_MIN,
1145     BuiltinOperator_FAKE_QUANT,
1146     BuiltinOperator_REDUCE_PROD,
1147     BuiltinOperator_REDUCE_MAX,
1148     BuiltinOperator_PACK,
1149     BuiltinOperator_LOGICAL_OR,
1150     BuiltinOperator_ONE_HOT,
1151     BuiltinOperator_LOGICAL_AND,
1152     BuiltinOperator_LOGICAL_NOT,
1153     BuiltinOperator_UNPACK,
1154     BuiltinOperator_REDUCE_MIN,
1155     BuiltinOperator_FLOOR_DIV,
1156     BuiltinOperator_REDUCE_ANY,
1157     BuiltinOperator_SQUARE,
1158     BuiltinOperator_ZEROS_LIKE,
1159     BuiltinOperator_FILL,
1160     BuiltinOperator_FLOOR_MOD,
1161     BuiltinOperator_RANGE,
1162     BuiltinOperator_RESIZE_NEAREST_NEIGHBOR,
1163     BuiltinOperator_LEAKY_RELU,
1164     BuiltinOperator_SQUARED_DIFFERENCE,
1165     BuiltinOperator_MIRROR_PAD,
1166     BuiltinOperator_ABS,
1167     BuiltinOperator_SPLIT_V,
1168     BuiltinOperator_UNIQUE,
1169     BuiltinOperator_CEIL,
1170     BuiltinOperator_REVERSE_V2,
1171     BuiltinOperator_ADD_N,
1172     BuiltinOperator_GATHER_ND,
1173     BuiltinOperator_COS,
1174     BuiltinOperator_WHERE,
1175     BuiltinOperator_RANK,
1176     BuiltinOperator_ELU,
1177     BuiltinOperator_REVERSE_SEQUENCE,
1178     BuiltinOperator_MATRIX_DIAG,
1179     BuiltinOperator_QUANTIZE,
1180     BuiltinOperator_MATRIX_SET_DIAG,
1181     BuiltinOperator_ROUND,
1182     BuiltinOperator_HARD_SWISH,
1183     BuiltinOperator_IF,
1184     BuiltinOperator_WHILE,
1185     BuiltinOperator_NON_MAX_SUPPRESSION_V4,
1186     BuiltinOperator_NON_MAX_SUPPRESSION_V5,
1187     BuiltinOperator_SCATTER_ND,
1188     BuiltinOperator_SELECT_V2,
1189     BuiltinOperator_DENSIFY,
1190     BuiltinOperator_SEGMENT_SUM,
1191     BuiltinOperator_BATCH_MATMUL,
1192     BuiltinOperator_PLACEHOLDER_FOR_GREATER_OP_CODES,
1193     BuiltinOperator_CUMSUM,
1194     BuiltinOperator_CALL_ONCE,
1195     BuiltinOperator_BROADCAST_TO,
1196     BuiltinOperator_RFFT2D,
1197     BuiltinOperator_CONV_3D,
1198     BuiltinOperator_IMAG,
1199     BuiltinOperator_REAL,
1200     BuiltinOperator_COMPLEX_ABS,
1201     BuiltinOperator_HASHTABLE,
1202     BuiltinOperator_HASHTABLE_FIND,
1203     BuiltinOperator_HASHTABLE_IMPORT,
1204     BuiltinOperator_HASHTABLE_SIZE,
1205     BuiltinOperator_REDUCE_ALL,
1206     BuiltinOperator_CONV_3D_TRANSPOSE,
1207     BuiltinOperator_VAR_HANDLE,
1208     BuiltinOperator_READ_VARIABLE,
1209     BuiltinOperator_ASSIGN_VARIABLE,
1210     BuiltinOperator_BROADCAST_ARGS,
1211     BuiltinOperator_RANDOM_STANDARD_NORMAL,
1212     BuiltinOperator_BUCKETIZE,
1213     BuiltinOperator_RANDOM_UNIFORM,
1214     BuiltinOperator_MULTINOMIAL,
1215     BuiltinOperator_GELU,
1216     BuiltinOperator_DYNAMIC_UPDATE_SLICE,
1217     BuiltinOperator_RELU_0_TO_1,
1218     BuiltinOperator_UNSORTED_SEGMENT_PROD,
1219     BuiltinOperator_UNSORTED_SEGMENT_MAX,
1220     BuiltinOperator_UNSORTED_SEGMENT_SUM,
1221     BuiltinOperator_ATAN2,
1222     BuiltinOperator_UNSORTED_SEGMENT_MIN,
1223     BuiltinOperator_SIGN
1224   };
1225   return values;
1226 }
1227 
1228 inline const char * const *EnumNamesBuiltinOperator() {
1229   static const char * const names[160] = {
1230     "ADD",
1231     "AVERAGE_POOL_2D",
1232     "CONCATENATION",
1233     "CONV_2D",
1234     "DEPTHWISE_CONV_2D",
1235     "DEPTH_TO_SPACE",
1236     "DEQUANTIZE",
1237     "EMBEDDING_LOOKUP",
1238     "FLOOR",
1239     "FULLY_CONNECTED",
1240     "HASHTABLE_LOOKUP",
1241     "L2_NORMALIZATION",
1242     "L2_POOL_2D",
1243     "LOCAL_RESPONSE_NORMALIZATION",
1244     "LOGISTIC",
1245     "LSH_PROJECTION",
1246     "LSTM",
1247     "MAX_POOL_2D",
1248     "MUL",
1249     "RELU",
1250     "RELU_N1_TO_1",
1251     "RELU6",
1252     "RESHAPE",
1253     "RESIZE_BILINEAR",
1254     "RNN",
1255     "SOFTMAX",
1256     "SPACE_TO_DEPTH",
1257     "SVDF",
1258     "TANH",
1259     "CONCAT_EMBEDDINGS",
1260     "SKIP_GRAM",
1261     "CALL",
1262     "CUSTOM",
1263     "EMBEDDING_LOOKUP_SPARSE",
1264     "PAD",
1265     "UNIDIRECTIONAL_SEQUENCE_RNN",
1266     "GATHER",
1267     "BATCH_TO_SPACE_ND",
1268     "SPACE_TO_BATCH_ND",
1269     "TRANSPOSE",
1270     "MEAN",
1271     "SUB",
1272     "DIV",
1273     "SQUEEZE",
1274     "UNIDIRECTIONAL_SEQUENCE_LSTM",
1275     "STRIDED_SLICE",
1276     "BIDIRECTIONAL_SEQUENCE_RNN",
1277     "EXP",
1278     "TOPK_V2",
1279     "SPLIT",
1280     "LOG_SOFTMAX",
1281     "DELEGATE",
1282     "BIDIRECTIONAL_SEQUENCE_LSTM",
1283     "CAST",
1284     "PRELU",
1285     "MAXIMUM",
1286     "ARG_MAX",
1287     "MINIMUM",
1288     "LESS",
1289     "NEG",
1290     "PADV2",
1291     "GREATER",
1292     "GREATER_EQUAL",
1293     "LESS_EQUAL",
1294     "SELECT",
1295     "SLICE",
1296     "SIN",
1297     "TRANSPOSE_CONV",
1298     "SPARSE_TO_DENSE",
1299     "TILE",
1300     "EXPAND_DIMS",
1301     "EQUAL",
1302     "NOT_EQUAL",
1303     "LOG",
1304     "SUM",
1305     "SQRT",
1306     "RSQRT",
1307     "SHAPE",
1308     "POW",
1309     "ARG_MIN",
1310     "FAKE_QUANT",
1311     "REDUCE_PROD",
1312     "REDUCE_MAX",
1313     "PACK",
1314     "LOGICAL_OR",
1315     "ONE_HOT",
1316     "LOGICAL_AND",
1317     "LOGICAL_NOT",
1318     "UNPACK",
1319     "REDUCE_MIN",
1320     "FLOOR_DIV",
1321     "REDUCE_ANY",
1322     "SQUARE",
1323     "ZEROS_LIKE",
1324     "FILL",
1325     "FLOOR_MOD",
1326     "RANGE",
1327     "RESIZE_NEAREST_NEIGHBOR",
1328     "LEAKY_RELU",
1329     "SQUARED_DIFFERENCE",
1330     "MIRROR_PAD",
1331     "ABS",
1332     "SPLIT_V",
1333     "UNIQUE",
1334     "CEIL",
1335     "REVERSE_V2",
1336     "ADD_N",
1337     "GATHER_ND",
1338     "COS",
1339     "WHERE",
1340     "RANK",
1341     "ELU",
1342     "REVERSE_SEQUENCE",
1343     "MATRIX_DIAG",
1344     "QUANTIZE",
1345     "MATRIX_SET_DIAG",
1346     "ROUND",
1347     "HARD_SWISH",
1348     "IF",
1349     "WHILE",
1350     "NON_MAX_SUPPRESSION_V4",
1351     "NON_MAX_SUPPRESSION_V5",
1352     "SCATTER_ND",
1353     "SELECT_V2",
1354     "DENSIFY",
1355     "SEGMENT_SUM",
1356     "BATCH_MATMUL",
1357     "PLACEHOLDER_FOR_GREATER_OP_CODES",
1358     "CUMSUM",
1359     "CALL_ONCE",
1360     "BROADCAST_TO",
1361     "RFFT2D",
1362     "CONV_3D",
1363     "IMAG",
1364     "REAL",
1365     "COMPLEX_ABS",
1366     "HASHTABLE",
1367     "HASHTABLE_FIND",
1368     "HASHTABLE_IMPORT",
1369     "HASHTABLE_SIZE",
1370     "REDUCE_ALL",
1371     "CONV_3D_TRANSPOSE",
1372     "VAR_HANDLE",
1373     "READ_VARIABLE",
1374     "ASSIGN_VARIABLE",
1375     "BROADCAST_ARGS",
1376     "RANDOM_STANDARD_NORMAL",
1377     "BUCKETIZE",
1378     "RANDOM_UNIFORM",
1379     "MULTINOMIAL",
1380     "GELU",
1381     "DYNAMIC_UPDATE_SLICE",
1382     "RELU_0_TO_1",
1383     "UNSORTED_SEGMENT_PROD",
1384     "UNSORTED_SEGMENT_MAX",
1385     "UNSORTED_SEGMENT_SUM",
1386     "ATAN2",
1387     "UNSORTED_SEGMENT_MIN",
1388     "SIGN",
1389     nullptr
1390   };
1391   return names;
1392 }
1393 
1394 inline const char *EnumNameBuiltinOperator(BuiltinOperator e) {
1395   if (flatbuffers::IsOutRange(e, BuiltinOperator_ADD, BuiltinOperator_SIGN)) return "";
1396   const size_t index = static_cast<size_t>(e);
1397   return EnumNamesBuiltinOperator()[index];
1398 }
1399 
1400 enum BuiltinOptions : uint8_t {
1401   BuiltinOptions_NONE = 0,
1402   BuiltinOptions_Conv2DOptions = 1,
1403   BuiltinOptions_DepthwiseConv2DOptions = 2,
1404   BuiltinOptions_ConcatEmbeddingsOptions = 3,
1405   BuiltinOptions_LSHProjectionOptions = 4,
1406   BuiltinOptions_Pool2DOptions = 5,
1407   BuiltinOptions_SVDFOptions = 6,
1408   BuiltinOptions_RNNOptions = 7,
1409   BuiltinOptions_FullyConnectedOptions = 8,
1410   BuiltinOptions_SoftmaxOptions = 9,
1411   BuiltinOptions_ConcatenationOptions = 10,
1412   BuiltinOptions_AddOptions = 11,
1413   BuiltinOptions_L2NormOptions = 12,
1414   BuiltinOptions_LocalResponseNormalizationOptions = 13,
1415   BuiltinOptions_LSTMOptions = 14,
1416   BuiltinOptions_ResizeBilinearOptions = 15,
1417   BuiltinOptions_CallOptions = 16,
1418   BuiltinOptions_ReshapeOptions = 17,
1419   BuiltinOptions_SkipGramOptions = 18,
1420   BuiltinOptions_SpaceToDepthOptions = 19,
1421   BuiltinOptions_EmbeddingLookupSparseOptions = 20,
1422   BuiltinOptions_MulOptions = 21,
1423   BuiltinOptions_PadOptions = 22,
1424   BuiltinOptions_GatherOptions = 23,
1425   BuiltinOptions_BatchToSpaceNDOptions = 24,
1426   BuiltinOptions_SpaceToBatchNDOptions = 25,
1427   BuiltinOptions_TransposeOptions = 26,
1428   BuiltinOptions_ReducerOptions = 27,
1429   BuiltinOptions_SubOptions = 28,
1430   BuiltinOptions_DivOptions = 29,
1431   BuiltinOptions_SqueezeOptions = 30,
1432   BuiltinOptions_SequenceRNNOptions = 31,
1433   BuiltinOptions_StridedSliceOptions = 32,
1434   BuiltinOptions_ExpOptions = 33,
1435   BuiltinOptions_TopKV2Options = 34,
1436   BuiltinOptions_SplitOptions = 35,
1437   BuiltinOptions_LogSoftmaxOptions = 36,
1438   BuiltinOptions_CastOptions = 37,
1439   BuiltinOptions_DequantizeOptions = 38,
1440   BuiltinOptions_MaximumMinimumOptions = 39,
1441   BuiltinOptions_ArgMaxOptions = 40,
1442   BuiltinOptions_LessOptions = 41,
1443   BuiltinOptions_NegOptions = 42,
1444   BuiltinOptions_PadV2Options = 43,
1445   BuiltinOptions_GreaterOptions = 44,
1446   BuiltinOptions_GreaterEqualOptions = 45,
1447   BuiltinOptions_LessEqualOptions = 46,
1448   BuiltinOptions_SelectOptions = 47,
1449   BuiltinOptions_SliceOptions = 48,
1450   BuiltinOptions_TransposeConvOptions = 49,
1451   BuiltinOptions_SparseToDenseOptions = 50,
1452   BuiltinOptions_TileOptions = 51,
1453   BuiltinOptions_ExpandDimsOptions = 52,
1454   BuiltinOptions_EqualOptions = 53,
1455   BuiltinOptions_NotEqualOptions = 54,
1456   BuiltinOptions_ShapeOptions = 55,
1457   BuiltinOptions_PowOptions = 56,
1458   BuiltinOptions_ArgMinOptions = 57,
1459   BuiltinOptions_FakeQuantOptions = 58,
1460   BuiltinOptions_PackOptions = 59,
1461   BuiltinOptions_LogicalOrOptions = 60,
1462   BuiltinOptions_OneHotOptions = 61,
1463   BuiltinOptions_LogicalAndOptions = 62,
1464   BuiltinOptions_LogicalNotOptions = 63,
1465   BuiltinOptions_UnpackOptions = 64,
1466   BuiltinOptions_FloorDivOptions = 65,
1467   BuiltinOptions_SquareOptions = 66,
1468   BuiltinOptions_ZerosLikeOptions = 67,
1469   BuiltinOptions_FillOptions = 68,
1470   BuiltinOptions_BidirectionalSequenceLSTMOptions = 69,
1471   BuiltinOptions_BidirectionalSequenceRNNOptions = 70,
1472   BuiltinOptions_UnidirectionalSequenceLSTMOptions = 71,
1473   BuiltinOptions_FloorModOptions = 72,
1474   BuiltinOptions_RangeOptions = 73,
1475   BuiltinOptions_ResizeNearestNeighborOptions = 74,
1476   BuiltinOptions_LeakyReluOptions = 75,
1477   BuiltinOptions_SquaredDifferenceOptions = 76,
1478   BuiltinOptions_MirrorPadOptions = 77,
1479   BuiltinOptions_AbsOptions = 78,
1480   BuiltinOptions_SplitVOptions = 79,
1481   BuiltinOptions_UniqueOptions = 80,
1482   BuiltinOptions_ReverseV2Options = 81,
1483   BuiltinOptions_AddNOptions = 82,
1484   BuiltinOptions_GatherNdOptions = 83,
1485   BuiltinOptions_CosOptions = 84,
1486   BuiltinOptions_WhereOptions = 85,
1487   BuiltinOptions_RankOptions = 86,
1488   BuiltinOptions_ReverseSequenceOptions = 87,
1489   BuiltinOptions_MatrixDiagOptions = 88,
1490   BuiltinOptions_QuantizeOptions = 89,
1491   BuiltinOptions_MatrixSetDiagOptions = 90,
1492   BuiltinOptions_HardSwishOptions = 91,
1493   BuiltinOptions_IfOptions = 92,
1494   BuiltinOptions_WhileOptions = 93,
1495   BuiltinOptions_DepthToSpaceOptions = 94,
1496   BuiltinOptions_NonMaxSuppressionV4Options = 95,
1497   BuiltinOptions_NonMaxSuppressionV5Options = 96,
1498   BuiltinOptions_ScatterNdOptions = 97,
1499   BuiltinOptions_SelectV2Options = 98,
1500   BuiltinOptions_DensifyOptions = 99,
1501   BuiltinOptions_SegmentSumOptions = 100,
1502   BuiltinOptions_BatchMatMulOptions = 101,
1503   BuiltinOptions_CumsumOptions = 102,
1504   BuiltinOptions_CallOnceOptions = 103,
1505   BuiltinOptions_BroadcastToOptions = 104,
1506   BuiltinOptions_Rfft2dOptions = 105,
1507   BuiltinOptions_Conv3DOptions = 106,
1508   BuiltinOptions_HashtableOptions = 107,
1509   BuiltinOptions_HashtableFindOptions = 108,
1510   BuiltinOptions_HashtableImportOptions = 109,
1511   BuiltinOptions_HashtableSizeOptions = 110,
1512   BuiltinOptions_VarHandleOptions = 111,
1513   BuiltinOptions_ReadVariableOptions = 112,
1514   BuiltinOptions_AssignVariableOptions = 113,
1515   BuiltinOptions_RandomOptions = 114,
1516   BuiltinOptions_BucketizeOptions = 115,
1517   BuiltinOptions_GeluOptions = 116,
1518   BuiltinOptions_DynamicUpdateSliceOptions = 117,
1519   BuiltinOptions_UnsortedSegmentProdOptions = 118,
1520   BuiltinOptions_UnsortedSegmentMaxOptions = 119,
1521   BuiltinOptions_UnsortedSegmentMinOptions = 120,
1522   BuiltinOptions_UnsortedSegmentSumOptions = 121,
1523   BuiltinOptions_ATan2Options = 122,
1524   BuiltinOptions_SignOptions = 123,
1525   BuiltinOptions_MIN = BuiltinOptions_NONE,
1526   BuiltinOptions_MAX = BuiltinOptions_SignOptions
1527 };
1528 
1529 inline const BuiltinOptions (&EnumValuesBuiltinOptions())[124] {
1530   static const BuiltinOptions values[] = {
1531     BuiltinOptions_NONE,
1532     BuiltinOptions_Conv2DOptions,
1533     BuiltinOptions_DepthwiseConv2DOptions,
1534     BuiltinOptions_ConcatEmbeddingsOptions,
1535     BuiltinOptions_LSHProjectionOptions,
1536     BuiltinOptions_Pool2DOptions,
1537     BuiltinOptions_SVDFOptions,
1538     BuiltinOptions_RNNOptions,
1539     BuiltinOptions_FullyConnectedOptions,
1540     BuiltinOptions_SoftmaxOptions,
1541     BuiltinOptions_ConcatenationOptions,
1542     BuiltinOptions_AddOptions,
1543     BuiltinOptions_L2NormOptions,
1544     BuiltinOptions_LocalResponseNormalizationOptions,
1545     BuiltinOptions_LSTMOptions,
1546     BuiltinOptions_ResizeBilinearOptions,
1547     BuiltinOptions_CallOptions,
1548     BuiltinOptions_ReshapeOptions,
1549     BuiltinOptions_SkipGramOptions,
1550     BuiltinOptions_SpaceToDepthOptions,
1551     BuiltinOptions_EmbeddingLookupSparseOptions,
1552     BuiltinOptions_MulOptions,
1553     BuiltinOptions_PadOptions,
1554     BuiltinOptions_GatherOptions,
1555     BuiltinOptions_BatchToSpaceNDOptions,
1556     BuiltinOptions_SpaceToBatchNDOptions,
1557     BuiltinOptions_TransposeOptions,
1558     BuiltinOptions_ReducerOptions,
1559     BuiltinOptions_SubOptions,
1560     BuiltinOptions_DivOptions,
1561     BuiltinOptions_SqueezeOptions,
1562     BuiltinOptions_SequenceRNNOptions,
1563     BuiltinOptions_StridedSliceOptions,
1564     BuiltinOptions_ExpOptions,
1565     BuiltinOptions_TopKV2Options,
1566     BuiltinOptions_SplitOptions,
1567     BuiltinOptions_LogSoftmaxOptions,
1568     BuiltinOptions_CastOptions,
1569     BuiltinOptions_DequantizeOptions,
1570     BuiltinOptions_MaximumMinimumOptions,
1571     BuiltinOptions_ArgMaxOptions,
1572     BuiltinOptions_LessOptions,
1573     BuiltinOptions_NegOptions,
1574     BuiltinOptions_PadV2Options,
1575     BuiltinOptions_GreaterOptions,
1576     BuiltinOptions_GreaterEqualOptions,
1577     BuiltinOptions_LessEqualOptions,
1578     BuiltinOptions_SelectOptions,
1579     BuiltinOptions_SliceOptions,
1580     BuiltinOptions_TransposeConvOptions,
1581     BuiltinOptions_SparseToDenseOptions,
1582     BuiltinOptions_TileOptions,
1583     BuiltinOptions_ExpandDimsOptions,
1584     BuiltinOptions_EqualOptions,
1585     BuiltinOptions_NotEqualOptions,
1586     BuiltinOptions_ShapeOptions,
1587     BuiltinOptions_PowOptions,
1588     BuiltinOptions_ArgMinOptions,
1589     BuiltinOptions_FakeQuantOptions,
1590     BuiltinOptions_PackOptions,
1591     BuiltinOptions_LogicalOrOptions,
1592     BuiltinOptions_OneHotOptions,
1593     BuiltinOptions_LogicalAndOptions,
1594     BuiltinOptions_LogicalNotOptions,
1595     BuiltinOptions_UnpackOptions,
1596     BuiltinOptions_FloorDivOptions,
1597     BuiltinOptions_SquareOptions,
1598     BuiltinOptions_ZerosLikeOptions,
1599     BuiltinOptions_FillOptions,
1600     BuiltinOptions_BidirectionalSequenceLSTMOptions,
1601     BuiltinOptions_BidirectionalSequenceRNNOptions,
1602     BuiltinOptions_UnidirectionalSequenceLSTMOptions,
1603     BuiltinOptions_FloorModOptions,
1604     BuiltinOptions_RangeOptions,
1605     BuiltinOptions_ResizeNearestNeighborOptions,
1606     BuiltinOptions_LeakyReluOptions,
1607     BuiltinOptions_SquaredDifferenceOptions,
1608     BuiltinOptions_MirrorPadOptions,
1609     BuiltinOptions_AbsOptions,
1610     BuiltinOptions_SplitVOptions,
1611     BuiltinOptions_UniqueOptions,
1612     BuiltinOptions_ReverseV2Options,
1613     BuiltinOptions_AddNOptions,
1614     BuiltinOptions_GatherNdOptions,
1615     BuiltinOptions_CosOptions,
1616     BuiltinOptions_WhereOptions,
1617     BuiltinOptions_RankOptions,
1618     BuiltinOptions_ReverseSequenceOptions,
1619     BuiltinOptions_MatrixDiagOptions,
1620     BuiltinOptions_QuantizeOptions,
1621     BuiltinOptions_MatrixSetDiagOptions,
1622     BuiltinOptions_HardSwishOptions,
1623     BuiltinOptions_IfOptions,
1624     BuiltinOptions_WhileOptions,
1625     BuiltinOptions_DepthToSpaceOptions,
1626     BuiltinOptions_NonMaxSuppressionV4Options,
1627     BuiltinOptions_NonMaxSuppressionV5Options,
1628     BuiltinOptions_ScatterNdOptions,
1629     BuiltinOptions_SelectV2Options,
1630     BuiltinOptions_DensifyOptions,
1631     BuiltinOptions_SegmentSumOptions,
1632     BuiltinOptions_BatchMatMulOptions,
1633     BuiltinOptions_CumsumOptions,
1634     BuiltinOptions_CallOnceOptions,
1635     BuiltinOptions_BroadcastToOptions,
1636     BuiltinOptions_Rfft2dOptions,
1637     BuiltinOptions_Conv3DOptions,
1638     BuiltinOptions_HashtableOptions,
1639     BuiltinOptions_HashtableFindOptions,
1640     BuiltinOptions_HashtableImportOptions,
1641     BuiltinOptions_HashtableSizeOptions,
1642     BuiltinOptions_VarHandleOptions,
1643     BuiltinOptions_ReadVariableOptions,
1644     BuiltinOptions_AssignVariableOptions,
1645     BuiltinOptions_RandomOptions,
1646     BuiltinOptions_BucketizeOptions,
1647     BuiltinOptions_GeluOptions,
1648     BuiltinOptions_DynamicUpdateSliceOptions,
1649     BuiltinOptions_UnsortedSegmentProdOptions,
1650     BuiltinOptions_UnsortedSegmentMaxOptions,
1651     BuiltinOptions_UnsortedSegmentMinOptions,
1652     BuiltinOptions_UnsortedSegmentSumOptions,
1653     BuiltinOptions_ATan2Options,
1654     BuiltinOptions_SignOptions
1655   };
1656   return values;
1657 }
1658 
1659 inline const char * const *EnumNamesBuiltinOptions() {
1660   static const char * const names[125] = {
1661     "NONE",
1662     "Conv2DOptions",
1663     "DepthwiseConv2DOptions",
1664     "ConcatEmbeddingsOptions",
1665     "LSHProjectionOptions",
1666     "Pool2DOptions",
1667     "SVDFOptions",
1668     "RNNOptions",
1669     "FullyConnectedOptions",
1670     "SoftmaxOptions",
1671     "ConcatenationOptions",
1672     "AddOptions",
1673     "L2NormOptions",
1674     "LocalResponseNormalizationOptions",
1675     "LSTMOptions",
1676     "ResizeBilinearOptions",
1677     "CallOptions",
1678     "ReshapeOptions",
1679     "SkipGramOptions",
1680     "SpaceToDepthOptions",
1681     "EmbeddingLookupSparseOptions",
1682     "MulOptions",
1683     "PadOptions",
1684     "GatherOptions",
1685     "BatchToSpaceNDOptions",
1686     "SpaceToBatchNDOptions",
1687     "TransposeOptions",
1688     "ReducerOptions",
1689     "SubOptions",
1690     "DivOptions",
1691     "SqueezeOptions",
1692     "SequenceRNNOptions",
1693     "StridedSliceOptions",
1694     "ExpOptions",
1695     "TopKV2Options",
1696     "SplitOptions",
1697     "LogSoftmaxOptions",
1698     "CastOptions",
1699     "DequantizeOptions",
1700     "MaximumMinimumOptions",
1701     "ArgMaxOptions",
1702     "LessOptions",
1703     "NegOptions",
1704     "PadV2Options",
1705     "GreaterOptions",
1706     "GreaterEqualOptions",
1707     "LessEqualOptions",
1708     "SelectOptions",
1709     "SliceOptions",
1710     "TransposeConvOptions",
1711     "SparseToDenseOptions",
1712     "TileOptions",
1713     "ExpandDimsOptions",
1714     "EqualOptions",
1715     "NotEqualOptions",
1716     "ShapeOptions",
1717     "PowOptions",
1718     "ArgMinOptions",
1719     "FakeQuantOptions",
1720     "PackOptions",
1721     "LogicalOrOptions",
1722     "OneHotOptions",
1723     "LogicalAndOptions",
1724     "LogicalNotOptions",
1725     "UnpackOptions",
1726     "FloorDivOptions",
1727     "SquareOptions",
1728     "ZerosLikeOptions",
1729     "FillOptions",
1730     "BidirectionalSequenceLSTMOptions",
1731     "BidirectionalSequenceRNNOptions",
1732     "UnidirectionalSequenceLSTMOptions",
1733     "FloorModOptions",
1734     "RangeOptions",
1735     "ResizeNearestNeighborOptions",
1736     "LeakyReluOptions",
1737     "SquaredDifferenceOptions",
1738     "MirrorPadOptions",
1739     "AbsOptions",
1740     "SplitVOptions",
1741     "UniqueOptions",
1742     "ReverseV2Options",
1743     "AddNOptions",
1744     "GatherNdOptions",
1745     "CosOptions",
1746     "WhereOptions",
1747     "RankOptions",
1748     "ReverseSequenceOptions",
1749     "MatrixDiagOptions",
1750     "QuantizeOptions",
1751     "MatrixSetDiagOptions",
1752     "HardSwishOptions",
1753     "IfOptions",
1754     "WhileOptions",
1755     "DepthToSpaceOptions",
1756     "NonMaxSuppressionV4Options",
1757     "NonMaxSuppressionV5Options",
1758     "ScatterNdOptions",
1759     "SelectV2Options",
1760     "DensifyOptions",
1761     "SegmentSumOptions",
1762     "BatchMatMulOptions",
1763     "CumsumOptions",
1764     "CallOnceOptions",
1765     "BroadcastToOptions",
1766     "Rfft2dOptions",
1767     "Conv3DOptions",
1768     "HashtableOptions",
1769     "HashtableFindOptions",
1770     "HashtableImportOptions",
1771     "HashtableSizeOptions",
1772     "VarHandleOptions",
1773     "ReadVariableOptions",
1774     "AssignVariableOptions",
1775     "RandomOptions",
1776     "BucketizeOptions",
1777     "GeluOptions",
1778     "DynamicUpdateSliceOptions",
1779     "UnsortedSegmentProdOptions",
1780     "UnsortedSegmentMaxOptions",
1781     "UnsortedSegmentMinOptions",
1782     "UnsortedSegmentSumOptions",
1783     "ATan2Options",
1784     "SignOptions",
1785     nullptr
1786   };
1787   return names;
1788 }
1789 
1790 inline const char *EnumNameBuiltinOptions(BuiltinOptions e) {
1791   if (flatbuffers::IsOutRange(e, BuiltinOptions_NONE, BuiltinOptions_SignOptions)) return "";
1792   const size_t index = static_cast<size_t>(e);
1793   return EnumNamesBuiltinOptions()[index];
1794 }
1795 
1796 template<typename T> struct BuiltinOptionsTraits {
1797   static const BuiltinOptions enum_value = BuiltinOptions_NONE;
1798 };
1799 
1800 template<> struct BuiltinOptionsTraits<tflite::Conv2DOptions> {
1801   static const BuiltinOptions enum_value = BuiltinOptions_Conv2DOptions;
1802 };
1803 
1804 template<> struct BuiltinOptionsTraits<tflite::DepthwiseConv2DOptions> {
1805   static const BuiltinOptions enum_value = BuiltinOptions_DepthwiseConv2DOptions;
1806 };
1807 
1808 template<> struct BuiltinOptionsTraits<tflite::ConcatEmbeddingsOptions> {
1809   static const BuiltinOptions enum_value = BuiltinOptions_ConcatEmbeddingsOptions;
1810 };
1811 
1812 template<> struct BuiltinOptionsTraits<tflite::LSHProjectionOptions> {
1813   static const BuiltinOptions enum_value = BuiltinOptions_LSHProjectionOptions;
1814 };
1815 
1816 template<> struct BuiltinOptionsTraits<tflite::Pool2DOptions> {
1817   static const BuiltinOptions enum_value = BuiltinOptions_Pool2DOptions;
1818 };
1819 
1820 template<> struct BuiltinOptionsTraits<tflite::SVDFOptions> {
1821   static const BuiltinOptions enum_value = BuiltinOptions_SVDFOptions;
1822 };
1823 
1824 template<> struct BuiltinOptionsTraits<tflite::RNNOptions> {
1825   static const BuiltinOptions enum_value = BuiltinOptions_RNNOptions;
1826 };
1827 
1828 template<> struct BuiltinOptionsTraits<tflite::FullyConnectedOptions> {
1829   static const BuiltinOptions enum_value = BuiltinOptions_FullyConnectedOptions;
1830 };
1831 
1832 template<> struct BuiltinOptionsTraits<tflite::SoftmaxOptions> {
1833   static const BuiltinOptions enum_value = BuiltinOptions_SoftmaxOptions;
1834 };
1835 
1836 template<> struct BuiltinOptionsTraits<tflite::ConcatenationOptions> {
1837   static const BuiltinOptions enum_value = BuiltinOptions_ConcatenationOptions;
1838 };
1839 
1840 template<> struct BuiltinOptionsTraits<tflite::AddOptions> {
1841   static const BuiltinOptions enum_value = BuiltinOptions_AddOptions;
1842 };
1843 
1844 template<> struct BuiltinOptionsTraits<tflite::L2NormOptions> {
1845   static const BuiltinOptions enum_value = BuiltinOptions_L2NormOptions;
1846 };
1847 
1848 template<> struct BuiltinOptionsTraits<tflite::LocalResponseNormalizationOptions> {
1849   static const BuiltinOptions enum_value = BuiltinOptions_LocalResponseNormalizationOptions;
1850 };
1851 
1852 template<> struct BuiltinOptionsTraits<tflite::LSTMOptions> {
1853   static const BuiltinOptions enum_value = BuiltinOptions_LSTMOptions;
1854 };
1855 
1856 template<> struct BuiltinOptionsTraits<tflite::ResizeBilinearOptions> {
1857   static const BuiltinOptions enum_value = BuiltinOptions_ResizeBilinearOptions;
1858 };
1859 
1860 template<> struct BuiltinOptionsTraits<tflite::CallOptions> {
1861   static const BuiltinOptions enum_value = BuiltinOptions_CallOptions;
1862 };
1863 
1864 template<> struct BuiltinOptionsTraits<tflite::ReshapeOptions> {
1865   static const BuiltinOptions enum_value = BuiltinOptions_ReshapeOptions;
1866 };
1867 
1868 template<> struct BuiltinOptionsTraits<tflite::SkipGramOptions> {
1869   static const BuiltinOptions enum_value = BuiltinOptions_SkipGramOptions;
1870 };
1871 
1872 template<> struct BuiltinOptionsTraits<tflite::SpaceToDepthOptions> {
1873   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToDepthOptions;
1874 };
1875 
1876 template<> struct BuiltinOptionsTraits<tflite::EmbeddingLookupSparseOptions> {
1877   static const BuiltinOptions enum_value = BuiltinOptions_EmbeddingLookupSparseOptions;
1878 };
1879 
1880 template<> struct BuiltinOptionsTraits<tflite::MulOptions> {
1881   static const BuiltinOptions enum_value = BuiltinOptions_MulOptions;
1882 };
1883 
1884 template<> struct BuiltinOptionsTraits<tflite::PadOptions> {
1885   static const BuiltinOptions enum_value = BuiltinOptions_PadOptions;
1886 };
1887 
1888 template<> struct BuiltinOptionsTraits<tflite::GatherOptions> {
1889   static const BuiltinOptions enum_value = BuiltinOptions_GatherOptions;
1890 };
1891 
1892 template<> struct BuiltinOptionsTraits<tflite::BatchToSpaceNDOptions> {
1893   static const BuiltinOptions enum_value = BuiltinOptions_BatchToSpaceNDOptions;
1894 };
1895 
1896 template<> struct BuiltinOptionsTraits<tflite::SpaceToBatchNDOptions> {
1897   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToBatchNDOptions;
1898 };
1899 
1900 template<> struct BuiltinOptionsTraits<tflite::TransposeOptions> {
1901   static const BuiltinOptions enum_value = BuiltinOptions_TransposeOptions;
1902 };
1903 
1904 template<> struct BuiltinOptionsTraits<tflite::ReducerOptions> {
1905   static const BuiltinOptions enum_value = BuiltinOptions_ReducerOptions;
1906 };
1907 
1908 template<> struct BuiltinOptionsTraits<tflite::SubOptions> {
1909   static const BuiltinOptions enum_value = BuiltinOptions_SubOptions;
1910 };
1911 
1912 template<> struct BuiltinOptionsTraits<tflite::DivOptions> {
1913   static const BuiltinOptions enum_value = BuiltinOptions_DivOptions;
1914 };
1915 
1916 template<> struct BuiltinOptionsTraits<tflite::SqueezeOptions> {
1917   static const BuiltinOptions enum_value = BuiltinOptions_SqueezeOptions;
1918 };
1919 
1920 template<> struct BuiltinOptionsTraits<tflite::SequenceRNNOptions> {
1921   static const BuiltinOptions enum_value = BuiltinOptions_SequenceRNNOptions;
1922 };
1923 
1924 template<> struct BuiltinOptionsTraits<tflite::StridedSliceOptions> {
1925   static const BuiltinOptions enum_value = BuiltinOptions_StridedSliceOptions;
1926 };
1927 
1928 template<> struct BuiltinOptionsTraits<tflite::ExpOptions> {
1929   static const BuiltinOptions enum_value = BuiltinOptions_ExpOptions;
1930 };
1931 
1932 template<> struct BuiltinOptionsTraits<tflite::TopKV2Options> {
1933   static const BuiltinOptions enum_value = BuiltinOptions_TopKV2Options;
1934 };
1935 
1936 template<> struct BuiltinOptionsTraits<tflite::SplitOptions> {
1937   static const BuiltinOptions enum_value = BuiltinOptions_SplitOptions;
1938 };
1939 
1940 template<> struct BuiltinOptionsTraits<tflite::LogSoftmaxOptions> {
1941   static const BuiltinOptions enum_value = BuiltinOptions_LogSoftmaxOptions;
1942 };
1943 
1944 template<> struct BuiltinOptionsTraits<tflite::CastOptions> {
1945   static const BuiltinOptions enum_value = BuiltinOptions_CastOptions;
1946 };
1947 
1948 template<> struct BuiltinOptionsTraits<tflite::DequantizeOptions> {
1949   static const BuiltinOptions enum_value = BuiltinOptions_DequantizeOptions;
1950 };
1951 
1952 template<> struct BuiltinOptionsTraits<tflite::MaximumMinimumOptions> {
1953   static const BuiltinOptions enum_value = BuiltinOptions_MaximumMinimumOptions;
1954 };
1955 
1956 template<> struct BuiltinOptionsTraits<tflite::ArgMaxOptions> {
1957   static const BuiltinOptions enum_value = BuiltinOptions_ArgMaxOptions;
1958 };
1959 
1960 template<> struct BuiltinOptionsTraits<tflite::LessOptions> {
1961   static const BuiltinOptions enum_value = BuiltinOptions_LessOptions;
1962 };
1963 
1964 template<> struct BuiltinOptionsTraits<tflite::NegOptions> {
1965   static const BuiltinOptions enum_value = BuiltinOptions_NegOptions;
1966 };
1967 
1968 template<> struct BuiltinOptionsTraits<tflite::PadV2Options> {
1969   static const BuiltinOptions enum_value = BuiltinOptions_PadV2Options;
1970 };
1971 
1972 template<> struct BuiltinOptionsTraits<tflite::GreaterOptions> {
1973   static const BuiltinOptions enum_value = BuiltinOptions_GreaterOptions;
1974 };
1975 
1976 template<> struct BuiltinOptionsTraits<tflite::GreaterEqualOptions> {
1977   static const BuiltinOptions enum_value = BuiltinOptions_GreaterEqualOptions;
1978 };
1979 
1980 template<> struct BuiltinOptionsTraits<tflite::LessEqualOptions> {
1981   static const BuiltinOptions enum_value = BuiltinOptions_LessEqualOptions;
1982 };
1983 
1984 template<> struct BuiltinOptionsTraits<tflite::SelectOptions> {
1985   static const BuiltinOptions enum_value = BuiltinOptions_SelectOptions;
1986 };
1987 
1988 template<> struct BuiltinOptionsTraits<tflite::SliceOptions> {
1989   static const BuiltinOptions enum_value = BuiltinOptions_SliceOptions;
1990 };
1991 
1992 template<> struct BuiltinOptionsTraits<tflite::TransposeConvOptions> {
1993   static const BuiltinOptions enum_value = BuiltinOptions_TransposeConvOptions;
1994 };
1995 
1996 template<> struct BuiltinOptionsTraits<tflite::SparseToDenseOptions> {
1997   static const BuiltinOptions enum_value = BuiltinOptions_SparseToDenseOptions;
1998 };
1999 
2000 template<> struct BuiltinOptionsTraits<tflite::TileOptions> {
2001   static const BuiltinOptions enum_value = BuiltinOptions_TileOptions;
2002 };
2003 
2004 template<> struct BuiltinOptionsTraits<tflite::ExpandDimsOptions> {
2005   static const BuiltinOptions enum_value = BuiltinOptions_ExpandDimsOptions;
2006 };
2007 
2008 template<> struct BuiltinOptionsTraits<tflite::EqualOptions> {
2009   static const BuiltinOptions enum_value = BuiltinOptions_EqualOptions;
2010 };
2011 
2012 template<> struct BuiltinOptionsTraits<tflite::NotEqualOptions> {
2013   static const BuiltinOptions enum_value = BuiltinOptions_NotEqualOptions;
2014 };
2015 
2016 template<> struct BuiltinOptionsTraits<tflite::ShapeOptions> {
2017   static const BuiltinOptions enum_value = BuiltinOptions_ShapeOptions;
2018 };
2019 
2020 template<> struct BuiltinOptionsTraits<tflite::PowOptions> {
2021   static const BuiltinOptions enum_value = BuiltinOptions_PowOptions;
2022 };
2023 
2024 template<> struct BuiltinOptionsTraits<tflite::ArgMinOptions> {
2025   static const BuiltinOptions enum_value = BuiltinOptions_ArgMinOptions;
2026 };
2027 
2028 template<> struct BuiltinOptionsTraits<tflite::FakeQuantOptions> {
2029   static const BuiltinOptions enum_value = BuiltinOptions_FakeQuantOptions;
2030 };
2031 
2032 template<> struct BuiltinOptionsTraits<tflite::PackOptions> {
2033   static const BuiltinOptions enum_value = BuiltinOptions_PackOptions;
2034 };
2035 
2036 template<> struct BuiltinOptionsTraits<tflite::LogicalOrOptions> {
2037   static const BuiltinOptions enum_value = BuiltinOptions_LogicalOrOptions;
2038 };
2039 
2040 template<> struct BuiltinOptionsTraits<tflite::OneHotOptions> {
2041   static const BuiltinOptions enum_value = BuiltinOptions_OneHotOptions;
2042 };
2043 
2044 template<> struct BuiltinOptionsTraits<tflite::LogicalAndOptions> {
2045   static const BuiltinOptions enum_value = BuiltinOptions_LogicalAndOptions;
2046 };
2047 
2048 template<> struct BuiltinOptionsTraits<tflite::LogicalNotOptions> {
2049   static const BuiltinOptions enum_value = BuiltinOptions_LogicalNotOptions;
2050 };
2051 
2052 template<> struct BuiltinOptionsTraits<tflite::UnpackOptions> {
2053   static const BuiltinOptions enum_value = BuiltinOptions_UnpackOptions;
2054 };
2055 
2056 template<> struct BuiltinOptionsTraits<tflite::FloorDivOptions> {
2057   static const BuiltinOptions enum_value = BuiltinOptions_FloorDivOptions;
2058 };
2059 
2060 template<> struct BuiltinOptionsTraits<tflite::SquareOptions> {
2061   static const BuiltinOptions enum_value = BuiltinOptions_SquareOptions;
2062 };
2063 
2064 template<> struct BuiltinOptionsTraits<tflite::ZerosLikeOptions> {
2065   static const BuiltinOptions enum_value = BuiltinOptions_ZerosLikeOptions;
2066 };
2067 
2068 template<> struct BuiltinOptionsTraits<tflite::FillOptions> {
2069   static const BuiltinOptions enum_value = BuiltinOptions_FillOptions;
2070 };
2071 
2072 template<> struct BuiltinOptionsTraits<tflite::BidirectionalSequenceLSTMOptions> {
2073   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceLSTMOptions;
2074 };
2075 
2076 template<> struct BuiltinOptionsTraits<tflite::BidirectionalSequenceRNNOptions> {
2077   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceRNNOptions;
2078 };
2079 
2080 template<> struct BuiltinOptionsTraits<tflite::UnidirectionalSequenceLSTMOptions> {
2081   static const BuiltinOptions enum_value = BuiltinOptions_UnidirectionalSequenceLSTMOptions;
2082 };
2083 
2084 template<> struct BuiltinOptionsTraits<tflite::FloorModOptions> {
2085   static const BuiltinOptions enum_value = BuiltinOptions_FloorModOptions;
2086 };
2087 
2088 template<> struct BuiltinOptionsTraits<tflite::RangeOptions> {
2089   static const BuiltinOptions enum_value = BuiltinOptions_RangeOptions;
2090 };
2091 
2092 template<> struct BuiltinOptionsTraits<tflite::ResizeNearestNeighborOptions> {
2093   static const BuiltinOptions enum_value = BuiltinOptions_ResizeNearestNeighborOptions;
2094 };
2095 
2096 template<> struct BuiltinOptionsTraits<tflite::LeakyReluOptions> {
2097   static const BuiltinOptions enum_value = BuiltinOptions_LeakyReluOptions;
2098 };
2099 
2100 template<> struct BuiltinOptionsTraits<tflite::SquaredDifferenceOptions> {
2101   static const BuiltinOptions enum_value = BuiltinOptions_SquaredDifferenceOptions;
2102 };
2103 
2104 template<> struct BuiltinOptionsTraits<tflite::MirrorPadOptions> {
2105   static const BuiltinOptions enum_value = BuiltinOptions_MirrorPadOptions;
2106 };
2107 
2108 template<> struct BuiltinOptionsTraits<tflite::AbsOptions> {
2109   static const BuiltinOptions enum_value = BuiltinOptions_AbsOptions;
2110 };
2111 
2112 template<> struct BuiltinOptionsTraits<tflite::SplitVOptions> {
2113   static const BuiltinOptions enum_value = BuiltinOptions_SplitVOptions;
2114 };
2115 
2116 template<> struct BuiltinOptionsTraits<tflite::UniqueOptions> {
2117   static const BuiltinOptions enum_value = BuiltinOptions_UniqueOptions;
2118 };
2119 
2120 template<> struct BuiltinOptionsTraits<tflite::ReverseV2Options> {
2121   static const BuiltinOptions enum_value = BuiltinOptions_ReverseV2Options;
2122 };
2123 
2124 template<> struct BuiltinOptionsTraits<tflite::AddNOptions> {
2125   static const BuiltinOptions enum_value = BuiltinOptions_AddNOptions;
2126 };
2127 
2128 template<> struct BuiltinOptionsTraits<tflite::GatherNdOptions> {
2129   static const BuiltinOptions enum_value = BuiltinOptions_GatherNdOptions;
2130 };
2131 
2132 template<> struct BuiltinOptionsTraits<tflite::CosOptions> {
2133   static const BuiltinOptions enum_value = BuiltinOptions_CosOptions;
2134 };
2135 
2136 template<> struct BuiltinOptionsTraits<tflite::WhereOptions> {
2137   static const BuiltinOptions enum_value = BuiltinOptions_WhereOptions;
2138 };
2139 
2140 template<> struct BuiltinOptionsTraits<tflite::RankOptions> {
2141   static const BuiltinOptions enum_value = BuiltinOptions_RankOptions;
2142 };
2143 
2144 template<> struct BuiltinOptionsTraits<tflite::ReverseSequenceOptions> {
2145   static const BuiltinOptions enum_value = BuiltinOptions_ReverseSequenceOptions;
2146 };
2147 
2148 template<> struct BuiltinOptionsTraits<tflite::MatrixDiagOptions> {
2149   static const BuiltinOptions enum_value = BuiltinOptions_MatrixDiagOptions;
2150 };
2151 
2152 template<> struct BuiltinOptionsTraits<tflite::QuantizeOptions> {
2153   static const BuiltinOptions enum_value = BuiltinOptions_QuantizeOptions;
2154 };
2155 
2156 template<> struct BuiltinOptionsTraits<tflite::MatrixSetDiagOptions> {
2157   static const BuiltinOptions enum_value = BuiltinOptions_MatrixSetDiagOptions;
2158 };
2159 
2160 template<> struct BuiltinOptionsTraits<tflite::HardSwishOptions> {
2161   static const BuiltinOptions enum_value = BuiltinOptions_HardSwishOptions;
2162 };
2163 
2164 template<> struct BuiltinOptionsTraits<tflite::IfOptions> {
2165   static const BuiltinOptions enum_value = BuiltinOptions_IfOptions;
2166 };
2167 
2168 template<> struct BuiltinOptionsTraits<tflite::WhileOptions> {
2169   static const BuiltinOptions enum_value = BuiltinOptions_WhileOptions;
2170 };
2171 
2172 template<> struct BuiltinOptionsTraits<tflite::DepthToSpaceOptions> {
2173   static const BuiltinOptions enum_value = BuiltinOptions_DepthToSpaceOptions;
2174 };
2175 
2176 template<> struct BuiltinOptionsTraits<tflite::NonMaxSuppressionV4Options> {
2177   static const BuiltinOptions enum_value = BuiltinOptions_NonMaxSuppressionV4Options;
2178 };
2179 
2180 template<> struct BuiltinOptionsTraits<tflite::NonMaxSuppressionV5Options> {
2181   static const BuiltinOptions enum_value = BuiltinOptions_NonMaxSuppressionV5Options;
2182 };
2183 
2184 template<> struct BuiltinOptionsTraits<tflite::ScatterNdOptions> {
2185   static const BuiltinOptions enum_value = BuiltinOptions_ScatterNdOptions;
2186 };
2187 
2188 template<> struct BuiltinOptionsTraits<tflite::SelectV2Options> {
2189   static const BuiltinOptions enum_value = BuiltinOptions_SelectV2Options;
2190 };
2191 
2192 template<> struct BuiltinOptionsTraits<tflite::DensifyOptions> {
2193   static const BuiltinOptions enum_value = BuiltinOptions_DensifyOptions;
2194 };
2195 
2196 template<> struct BuiltinOptionsTraits<tflite::SegmentSumOptions> {
2197   static const BuiltinOptions enum_value = BuiltinOptions_SegmentSumOptions;
2198 };
2199 
2200 template<> struct BuiltinOptionsTraits<tflite::BatchMatMulOptions> {
2201   static const BuiltinOptions enum_value = BuiltinOptions_BatchMatMulOptions;
2202 };
2203 
2204 template<> struct BuiltinOptionsTraits<tflite::CumsumOptions> {
2205   static const BuiltinOptions enum_value = BuiltinOptions_CumsumOptions;
2206 };
2207 
2208 template<> struct BuiltinOptionsTraits<tflite::CallOnceOptions> {
2209   static const BuiltinOptions enum_value = BuiltinOptions_CallOnceOptions;
2210 };
2211 
2212 template<> struct BuiltinOptionsTraits<tflite::BroadcastToOptions> {
2213   static const BuiltinOptions enum_value = BuiltinOptions_BroadcastToOptions;
2214 };
2215 
2216 template<> struct BuiltinOptionsTraits<tflite::Rfft2dOptions> {
2217   static const BuiltinOptions enum_value = BuiltinOptions_Rfft2dOptions;
2218 };
2219 
2220 template<> struct BuiltinOptionsTraits<tflite::Conv3DOptions> {
2221   static const BuiltinOptions enum_value = BuiltinOptions_Conv3DOptions;
2222 };
2223 
2224 template<> struct BuiltinOptionsTraits<tflite::HashtableOptions> {
2225   static const BuiltinOptions enum_value = BuiltinOptions_HashtableOptions;
2226 };
2227 
2228 template<> struct BuiltinOptionsTraits<tflite::HashtableFindOptions> {
2229   static const BuiltinOptions enum_value = BuiltinOptions_HashtableFindOptions;
2230 };
2231 
2232 template<> struct BuiltinOptionsTraits<tflite::HashtableImportOptions> {
2233   static const BuiltinOptions enum_value = BuiltinOptions_HashtableImportOptions;
2234 };
2235 
2236 template<> struct BuiltinOptionsTraits<tflite::HashtableSizeOptions> {
2237   static const BuiltinOptions enum_value = BuiltinOptions_HashtableSizeOptions;
2238 };
2239 
2240 template<> struct BuiltinOptionsTraits<tflite::VarHandleOptions> {
2241   static const BuiltinOptions enum_value = BuiltinOptions_VarHandleOptions;
2242 };
2243 
2244 template<> struct BuiltinOptionsTraits<tflite::ReadVariableOptions> {
2245   static const BuiltinOptions enum_value = BuiltinOptions_ReadVariableOptions;
2246 };
2247 
2248 template<> struct BuiltinOptionsTraits<tflite::AssignVariableOptions> {
2249   static const BuiltinOptions enum_value = BuiltinOptions_AssignVariableOptions;
2250 };
2251 
2252 template<> struct BuiltinOptionsTraits<tflite::RandomOptions> {
2253   static const BuiltinOptions enum_value = BuiltinOptions_RandomOptions;
2254 };
2255 
2256 template<> struct BuiltinOptionsTraits<tflite::BucketizeOptions> {
2257   static const BuiltinOptions enum_value = BuiltinOptions_BucketizeOptions;
2258 };
2259 
2260 template<> struct BuiltinOptionsTraits<tflite::GeluOptions> {
2261   static const BuiltinOptions enum_value = BuiltinOptions_GeluOptions;
2262 };
2263 
2264 template<> struct BuiltinOptionsTraits<tflite::DynamicUpdateSliceOptions> {
2265   static const BuiltinOptions enum_value = BuiltinOptions_DynamicUpdateSliceOptions;
2266 };
2267 
2268 template<> struct BuiltinOptionsTraits<tflite::UnsortedSegmentProdOptions> {
2269   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentProdOptions;
2270 };
2271 
2272 template<> struct BuiltinOptionsTraits<tflite::UnsortedSegmentMaxOptions> {
2273   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentMaxOptions;
2274 };
2275 
2276 template<> struct BuiltinOptionsTraits<tflite::UnsortedSegmentMinOptions> {
2277   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentMinOptions;
2278 };
2279 
2280 template<> struct BuiltinOptionsTraits<tflite::UnsortedSegmentSumOptions> {
2281   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentSumOptions;
2282 };
2283 
2284 template<> struct BuiltinOptionsTraits<tflite::ATan2Options> {
2285   static const BuiltinOptions enum_value = BuiltinOptions_ATan2Options;
2286 };
2287 
2288 template<> struct BuiltinOptionsTraits<tflite::SignOptions> {
2289   static const BuiltinOptions enum_value = BuiltinOptions_SignOptions;
2290 };
2291 
2292 template<typename T> struct BuiltinOptionsUnionTraits {
2293   static const BuiltinOptions enum_value = BuiltinOptions_NONE;
2294 };
2295 
2296 template<> struct BuiltinOptionsUnionTraits<tflite::Conv2DOptionsT> {
2297   static const BuiltinOptions enum_value = BuiltinOptions_Conv2DOptions;
2298 };
2299 
2300 template<> struct BuiltinOptionsUnionTraits<tflite::DepthwiseConv2DOptionsT> {
2301   static const BuiltinOptions enum_value = BuiltinOptions_DepthwiseConv2DOptions;
2302 };
2303 
2304 template<> struct BuiltinOptionsUnionTraits<tflite::ConcatEmbeddingsOptionsT> {
2305   static const BuiltinOptions enum_value = BuiltinOptions_ConcatEmbeddingsOptions;
2306 };
2307 
2308 template<> struct BuiltinOptionsUnionTraits<tflite::LSHProjectionOptionsT> {
2309   static const BuiltinOptions enum_value = BuiltinOptions_LSHProjectionOptions;
2310 };
2311 
2312 template<> struct BuiltinOptionsUnionTraits<tflite::Pool2DOptionsT> {
2313   static const BuiltinOptions enum_value = BuiltinOptions_Pool2DOptions;
2314 };
2315 
2316 template<> struct BuiltinOptionsUnionTraits<tflite::SVDFOptionsT> {
2317   static const BuiltinOptions enum_value = BuiltinOptions_SVDFOptions;
2318 };
2319 
2320 template<> struct BuiltinOptionsUnionTraits<tflite::RNNOptionsT> {
2321   static const BuiltinOptions enum_value = BuiltinOptions_RNNOptions;
2322 };
2323 
2324 template<> struct BuiltinOptionsUnionTraits<tflite::FullyConnectedOptionsT> {
2325   static const BuiltinOptions enum_value = BuiltinOptions_FullyConnectedOptions;
2326 };
2327 
2328 template<> struct BuiltinOptionsUnionTraits<tflite::SoftmaxOptionsT> {
2329   static const BuiltinOptions enum_value = BuiltinOptions_SoftmaxOptions;
2330 };
2331 
2332 template<> struct BuiltinOptionsUnionTraits<tflite::ConcatenationOptionsT> {
2333   static const BuiltinOptions enum_value = BuiltinOptions_ConcatenationOptions;
2334 };
2335 
2336 template<> struct BuiltinOptionsUnionTraits<tflite::AddOptionsT> {
2337   static const BuiltinOptions enum_value = BuiltinOptions_AddOptions;
2338 };
2339 
2340 template<> struct BuiltinOptionsUnionTraits<tflite::L2NormOptionsT> {
2341   static const BuiltinOptions enum_value = BuiltinOptions_L2NormOptions;
2342 };
2343 
2344 template<> struct BuiltinOptionsUnionTraits<tflite::LocalResponseNormalizationOptionsT> {
2345   static const BuiltinOptions enum_value = BuiltinOptions_LocalResponseNormalizationOptions;
2346 };
2347 
2348 template<> struct BuiltinOptionsUnionTraits<tflite::LSTMOptionsT> {
2349   static const BuiltinOptions enum_value = BuiltinOptions_LSTMOptions;
2350 };
2351 
2352 template<> struct BuiltinOptionsUnionTraits<tflite::ResizeBilinearOptionsT> {
2353   static const BuiltinOptions enum_value = BuiltinOptions_ResizeBilinearOptions;
2354 };
2355 
2356 template<> struct BuiltinOptionsUnionTraits<tflite::CallOptionsT> {
2357   static const BuiltinOptions enum_value = BuiltinOptions_CallOptions;
2358 };
2359 
2360 template<> struct BuiltinOptionsUnionTraits<tflite::ReshapeOptionsT> {
2361   static const BuiltinOptions enum_value = BuiltinOptions_ReshapeOptions;
2362 };
2363 
2364 template<> struct BuiltinOptionsUnionTraits<tflite::SkipGramOptionsT> {
2365   static const BuiltinOptions enum_value = BuiltinOptions_SkipGramOptions;
2366 };
2367 
2368 template<> struct BuiltinOptionsUnionTraits<tflite::SpaceToDepthOptionsT> {
2369   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToDepthOptions;
2370 };
2371 
2372 template<> struct BuiltinOptionsUnionTraits<tflite::EmbeddingLookupSparseOptionsT> {
2373   static const BuiltinOptions enum_value = BuiltinOptions_EmbeddingLookupSparseOptions;
2374 };
2375 
2376 template<> struct BuiltinOptionsUnionTraits<tflite::MulOptionsT> {
2377   static const BuiltinOptions enum_value = BuiltinOptions_MulOptions;
2378 };
2379 
2380 template<> struct BuiltinOptionsUnionTraits<tflite::PadOptionsT> {
2381   static const BuiltinOptions enum_value = BuiltinOptions_PadOptions;
2382 };
2383 
2384 template<> struct BuiltinOptionsUnionTraits<tflite::GatherOptionsT> {
2385   static const BuiltinOptions enum_value = BuiltinOptions_GatherOptions;
2386 };
2387 
2388 template<> struct BuiltinOptionsUnionTraits<tflite::BatchToSpaceNDOptionsT> {
2389   static const BuiltinOptions enum_value = BuiltinOptions_BatchToSpaceNDOptions;
2390 };
2391 
2392 template<> struct BuiltinOptionsUnionTraits<tflite::SpaceToBatchNDOptionsT> {
2393   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToBatchNDOptions;
2394 };
2395 
2396 template<> struct BuiltinOptionsUnionTraits<tflite::TransposeOptionsT> {
2397   static const BuiltinOptions enum_value = BuiltinOptions_TransposeOptions;
2398 };
2399 
2400 template<> struct BuiltinOptionsUnionTraits<tflite::ReducerOptionsT> {
2401   static const BuiltinOptions enum_value = BuiltinOptions_ReducerOptions;
2402 };
2403 
2404 template<> struct BuiltinOptionsUnionTraits<tflite::SubOptionsT> {
2405   static const BuiltinOptions enum_value = BuiltinOptions_SubOptions;
2406 };
2407 
2408 template<> struct BuiltinOptionsUnionTraits<tflite::DivOptionsT> {
2409   static const BuiltinOptions enum_value = BuiltinOptions_DivOptions;
2410 };
2411 
2412 template<> struct BuiltinOptionsUnionTraits<tflite::SqueezeOptionsT> {
2413   static const BuiltinOptions enum_value = BuiltinOptions_SqueezeOptions;
2414 };
2415 
2416 template<> struct BuiltinOptionsUnionTraits<tflite::SequenceRNNOptionsT> {
2417   static const BuiltinOptions enum_value = BuiltinOptions_SequenceRNNOptions;
2418 };
2419 
2420 template<> struct BuiltinOptionsUnionTraits<tflite::StridedSliceOptionsT> {
2421   static const BuiltinOptions enum_value = BuiltinOptions_StridedSliceOptions;
2422 };
2423 
2424 template<> struct BuiltinOptionsUnionTraits<tflite::ExpOptionsT> {
2425   static const BuiltinOptions enum_value = BuiltinOptions_ExpOptions;
2426 };
2427 
2428 template<> struct BuiltinOptionsUnionTraits<tflite::TopKV2OptionsT> {
2429   static const BuiltinOptions enum_value = BuiltinOptions_TopKV2Options;
2430 };
2431 
2432 template<> struct BuiltinOptionsUnionTraits<tflite::SplitOptionsT> {
2433   static const BuiltinOptions enum_value = BuiltinOptions_SplitOptions;
2434 };
2435 
2436 template<> struct BuiltinOptionsUnionTraits<tflite::LogSoftmaxOptionsT> {
2437   static const BuiltinOptions enum_value = BuiltinOptions_LogSoftmaxOptions;
2438 };
2439 
2440 template<> struct BuiltinOptionsUnionTraits<tflite::CastOptionsT> {
2441   static const BuiltinOptions enum_value = BuiltinOptions_CastOptions;
2442 };
2443 
2444 template<> struct BuiltinOptionsUnionTraits<tflite::DequantizeOptionsT> {
2445   static const BuiltinOptions enum_value = BuiltinOptions_DequantizeOptions;
2446 };
2447 
2448 template<> struct BuiltinOptionsUnionTraits<tflite::MaximumMinimumOptionsT> {
2449   static const BuiltinOptions enum_value = BuiltinOptions_MaximumMinimumOptions;
2450 };
2451 
2452 template<> struct BuiltinOptionsUnionTraits<tflite::ArgMaxOptionsT> {
2453   static const BuiltinOptions enum_value = BuiltinOptions_ArgMaxOptions;
2454 };
2455 
2456 template<> struct BuiltinOptionsUnionTraits<tflite::LessOptionsT> {
2457   static const BuiltinOptions enum_value = BuiltinOptions_LessOptions;
2458 };
2459 
2460 template<> struct BuiltinOptionsUnionTraits<tflite::NegOptionsT> {
2461   static const BuiltinOptions enum_value = BuiltinOptions_NegOptions;
2462 };
2463 
2464 template<> struct BuiltinOptionsUnionTraits<tflite::PadV2OptionsT> {
2465   static const BuiltinOptions enum_value = BuiltinOptions_PadV2Options;
2466 };
2467 
2468 template<> struct BuiltinOptionsUnionTraits<tflite::GreaterOptionsT> {
2469   static const BuiltinOptions enum_value = BuiltinOptions_GreaterOptions;
2470 };
2471 
2472 template<> struct BuiltinOptionsUnionTraits<tflite::GreaterEqualOptionsT> {
2473   static const BuiltinOptions enum_value = BuiltinOptions_GreaterEqualOptions;
2474 };
2475 
2476 template<> struct BuiltinOptionsUnionTraits<tflite::LessEqualOptionsT> {
2477   static const BuiltinOptions enum_value = BuiltinOptions_LessEqualOptions;
2478 };
2479 
2480 template<> struct BuiltinOptionsUnionTraits<tflite::SelectOptionsT> {
2481   static const BuiltinOptions enum_value = BuiltinOptions_SelectOptions;
2482 };
2483 
2484 template<> struct BuiltinOptionsUnionTraits<tflite::SliceOptionsT> {
2485   static const BuiltinOptions enum_value = BuiltinOptions_SliceOptions;
2486 };
2487 
2488 template<> struct BuiltinOptionsUnionTraits<tflite::TransposeConvOptionsT> {
2489   static const BuiltinOptions enum_value = BuiltinOptions_TransposeConvOptions;
2490 };
2491 
2492 template<> struct BuiltinOptionsUnionTraits<tflite::SparseToDenseOptionsT> {
2493   static const BuiltinOptions enum_value = BuiltinOptions_SparseToDenseOptions;
2494 };
2495 
2496 template<> struct BuiltinOptionsUnionTraits<tflite::TileOptionsT> {
2497   static const BuiltinOptions enum_value = BuiltinOptions_TileOptions;
2498 };
2499 
2500 template<> struct BuiltinOptionsUnionTraits<tflite::ExpandDimsOptionsT> {
2501   static const BuiltinOptions enum_value = BuiltinOptions_ExpandDimsOptions;
2502 };
2503 
2504 template<> struct BuiltinOptionsUnionTraits<tflite::EqualOptionsT> {
2505   static const BuiltinOptions enum_value = BuiltinOptions_EqualOptions;
2506 };
2507 
2508 template<> struct BuiltinOptionsUnionTraits<tflite::NotEqualOptionsT> {
2509   static const BuiltinOptions enum_value = BuiltinOptions_NotEqualOptions;
2510 };
2511 
2512 template<> struct BuiltinOptionsUnionTraits<tflite::ShapeOptionsT> {
2513   static const BuiltinOptions enum_value = BuiltinOptions_ShapeOptions;
2514 };
2515 
2516 template<> struct BuiltinOptionsUnionTraits<tflite::PowOptionsT> {
2517   static const BuiltinOptions enum_value = BuiltinOptions_PowOptions;
2518 };
2519 
2520 template<> struct BuiltinOptionsUnionTraits<tflite::ArgMinOptionsT> {
2521   static const BuiltinOptions enum_value = BuiltinOptions_ArgMinOptions;
2522 };
2523 
2524 template<> struct BuiltinOptionsUnionTraits<tflite::FakeQuantOptionsT> {
2525   static const BuiltinOptions enum_value = BuiltinOptions_FakeQuantOptions;
2526 };
2527 
2528 template<> struct BuiltinOptionsUnionTraits<tflite::PackOptionsT> {
2529   static const BuiltinOptions enum_value = BuiltinOptions_PackOptions;
2530 };
2531 
2532 template<> struct BuiltinOptionsUnionTraits<tflite::LogicalOrOptionsT> {
2533   static const BuiltinOptions enum_value = BuiltinOptions_LogicalOrOptions;
2534 };
2535 
2536 template<> struct BuiltinOptionsUnionTraits<tflite::OneHotOptionsT> {
2537   static const BuiltinOptions enum_value = BuiltinOptions_OneHotOptions;
2538 };
2539 
2540 template<> struct BuiltinOptionsUnionTraits<tflite::LogicalAndOptionsT> {
2541   static const BuiltinOptions enum_value = BuiltinOptions_LogicalAndOptions;
2542 };
2543 
2544 template<> struct BuiltinOptionsUnionTraits<tflite::LogicalNotOptionsT> {
2545   static const BuiltinOptions enum_value = BuiltinOptions_LogicalNotOptions;
2546 };
2547 
2548 template<> struct BuiltinOptionsUnionTraits<tflite::UnpackOptionsT> {
2549   static const BuiltinOptions enum_value = BuiltinOptions_UnpackOptions;
2550 };
2551 
2552 template<> struct BuiltinOptionsUnionTraits<tflite::FloorDivOptionsT> {
2553   static const BuiltinOptions enum_value = BuiltinOptions_FloorDivOptions;
2554 };
2555 
2556 template<> struct BuiltinOptionsUnionTraits<tflite::SquareOptionsT> {
2557   static const BuiltinOptions enum_value = BuiltinOptions_SquareOptions;
2558 };
2559 
2560 template<> struct BuiltinOptionsUnionTraits<tflite::ZerosLikeOptionsT> {
2561   static const BuiltinOptions enum_value = BuiltinOptions_ZerosLikeOptions;
2562 };
2563 
2564 template<> struct BuiltinOptionsUnionTraits<tflite::FillOptionsT> {
2565   static const BuiltinOptions enum_value = BuiltinOptions_FillOptions;
2566 };
2567 
2568 template<> struct BuiltinOptionsUnionTraits<tflite::BidirectionalSequenceLSTMOptionsT> {
2569   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceLSTMOptions;
2570 };
2571 
2572 template<> struct BuiltinOptionsUnionTraits<tflite::BidirectionalSequenceRNNOptionsT> {
2573   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceRNNOptions;
2574 };
2575 
2576 template<> struct BuiltinOptionsUnionTraits<tflite::UnidirectionalSequenceLSTMOptionsT> {
2577   static const BuiltinOptions enum_value = BuiltinOptions_UnidirectionalSequenceLSTMOptions;
2578 };
2579 
2580 template<> struct BuiltinOptionsUnionTraits<tflite::FloorModOptionsT> {
2581   static const BuiltinOptions enum_value = BuiltinOptions_FloorModOptions;
2582 };
2583 
2584 template<> struct BuiltinOptionsUnionTraits<tflite::RangeOptionsT> {
2585   static const BuiltinOptions enum_value = BuiltinOptions_RangeOptions;
2586 };
2587 
2588 template<> struct BuiltinOptionsUnionTraits<tflite::ResizeNearestNeighborOptionsT> {
2589   static const BuiltinOptions enum_value = BuiltinOptions_ResizeNearestNeighborOptions;
2590 };
2591 
2592 template<> struct BuiltinOptionsUnionTraits<tflite::LeakyReluOptionsT> {
2593   static const BuiltinOptions enum_value = BuiltinOptions_LeakyReluOptions;
2594 };
2595 
2596 template<> struct BuiltinOptionsUnionTraits<tflite::SquaredDifferenceOptionsT> {
2597   static const BuiltinOptions enum_value = BuiltinOptions_SquaredDifferenceOptions;
2598 };
2599 
2600 template<> struct BuiltinOptionsUnionTraits<tflite::MirrorPadOptionsT> {
2601   static const BuiltinOptions enum_value = BuiltinOptions_MirrorPadOptions;
2602 };
2603 
2604 template<> struct BuiltinOptionsUnionTraits<tflite::AbsOptionsT> {
2605   static const BuiltinOptions enum_value = BuiltinOptions_AbsOptions;
2606 };
2607 
2608 template<> struct BuiltinOptionsUnionTraits<tflite::SplitVOptionsT> {
2609   static const BuiltinOptions enum_value = BuiltinOptions_SplitVOptions;
2610 };
2611 
2612 template<> struct BuiltinOptionsUnionTraits<tflite::UniqueOptionsT> {
2613   static const BuiltinOptions enum_value = BuiltinOptions_UniqueOptions;
2614 };
2615 
2616 template<> struct BuiltinOptionsUnionTraits<tflite::ReverseV2OptionsT> {
2617   static const BuiltinOptions enum_value = BuiltinOptions_ReverseV2Options;
2618 };
2619 
2620 template<> struct BuiltinOptionsUnionTraits<tflite::AddNOptionsT> {
2621   static const BuiltinOptions enum_value = BuiltinOptions_AddNOptions;
2622 };
2623 
2624 template<> struct BuiltinOptionsUnionTraits<tflite::GatherNdOptionsT> {
2625   static const BuiltinOptions enum_value = BuiltinOptions_GatherNdOptions;
2626 };
2627 
2628 template<> struct BuiltinOptionsUnionTraits<tflite::CosOptionsT> {
2629   static const BuiltinOptions enum_value = BuiltinOptions_CosOptions;
2630 };
2631 
2632 template<> struct BuiltinOptionsUnionTraits<tflite::WhereOptionsT> {
2633   static const BuiltinOptions enum_value = BuiltinOptions_WhereOptions;
2634 };
2635 
2636 template<> struct BuiltinOptionsUnionTraits<tflite::RankOptionsT> {
2637   static const BuiltinOptions enum_value = BuiltinOptions_RankOptions;
2638 };
2639 
2640 template<> struct BuiltinOptionsUnionTraits<tflite::ReverseSequenceOptionsT> {
2641   static const BuiltinOptions enum_value = BuiltinOptions_ReverseSequenceOptions;
2642 };
2643 
2644 template<> struct BuiltinOptionsUnionTraits<tflite::MatrixDiagOptionsT> {
2645   static const BuiltinOptions enum_value = BuiltinOptions_MatrixDiagOptions;
2646 };
2647 
2648 template<> struct BuiltinOptionsUnionTraits<tflite::QuantizeOptionsT> {
2649   static const BuiltinOptions enum_value = BuiltinOptions_QuantizeOptions;
2650 };
2651 
2652 template<> struct BuiltinOptionsUnionTraits<tflite::MatrixSetDiagOptionsT> {
2653   static const BuiltinOptions enum_value = BuiltinOptions_MatrixSetDiagOptions;
2654 };
2655 
2656 template<> struct BuiltinOptionsUnionTraits<tflite::HardSwishOptionsT> {
2657   static const BuiltinOptions enum_value = BuiltinOptions_HardSwishOptions;
2658 };
2659 
2660 template<> struct BuiltinOptionsUnionTraits<tflite::IfOptionsT> {
2661   static const BuiltinOptions enum_value = BuiltinOptions_IfOptions;
2662 };
2663 
2664 template<> struct BuiltinOptionsUnionTraits<tflite::WhileOptionsT> {
2665   static const BuiltinOptions enum_value = BuiltinOptions_WhileOptions;
2666 };
2667 
2668 template<> struct BuiltinOptionsUnionTraits<tflite::DepthToSpaceOptionsT> {
2669   static const BuiltinOptions enum_value = BuiltinOptions_DepthToSpaceOptions;
2670 };
2671 
2672 template<> struct BuiltinOptionsUnionTraits<tflite::NonMaxSuppressionV4OptionsT> {
2673   static const BuiltinOptions enum_value = BuiltinOptions_NonMaxSuppressionV4Options;
2674 };
2675 
2676 template<> struct BuiltinOptionsUnionTraits<tflite::NonMaxSuppressionV5OptionsT> {
2677   static const BuiltinOptions enum_value = BuiltinOptions_NonMaxSuppressionV5Options;
2678 };
2679 
2680 template<> struct BuiltinOptionsUnionTraits<tflite::ScatterNdOptionsT> {
2681   static const BuiltinOptions enum_value = BuiltinOptions_ScatterNdOptions;
2682 };
2683 
2684 template<> struct BuiltinOptionsUnionTraits<tflite::SelectV2OptionsT> {
2685   static const BuiltinOptions enum_value = BuiltinOptions_SelectV2Options;
2686 };
2687 
2688 template<> struct BuiltinOptionsUnionTraits<tflite::DensifyOptionsT> {
2689   static const BuiltinOptions enum_value = BuiltinOptions_DensifyOptions;
2690 };
2691 
2692 template<> struct BuiltinOptionsUnionTraits<tflite::SegmentSumOptionsT> {
2693   static const BuiltinOptions enum_value = BuiltinOptions_SegmentSumOptions;
2694 };
2695 
2696 template<> struct BuiltinOptionsUnionTraits<tflite::BatchMatMulOptionsT> {
2697   static const BuiltinOptions enum_value = BuiltinOptions_BatchMatMulOptions;
2698 };
2699 
2700 template<> struct BuiltinOptionsUnionTraits<tflite::CumsumOptionsT> {
2701   static const BuiltinOptions enum_value = BuiltinOptions_CumsumOptions;
2702 };
2703 
2704 template<> struct BuiltinOptionsUnionTraits<tflite::CallOnceOptionsT> {
2705   static const BuiltinOptions enum_value = BuiltinOptions_CallOnceOptions;
2706 };
2707 
2708 template<> struct BuiltinOptionsUnionTraits<tflite::BroadcastToOptionsT> {
2709   static const BuiltinOptions enum_value = BuiltinOptions_BroadcastToOptions;
2710 };
2711 
2712 template<> struct BuiltinOptionsUnionTraits<tflite::Rfft2dOptionsT> {
2713   static const BuiltinOptions enum_value = BuiltinOptions_Rfft2dOptions;
2714 };
2715 
2716 template<> struct BuiltinOptionsUnionTraits<tflite::Conv3DOptionsT> {
2717   static const BuiltinOptions enum_value = BuiltinOptions_Conv3DOptions;
2718 };
2719 
2720 template<> struct BuiltinOptionsUnionTraits<tflite::HashtableOptionsT> {
2721   static const BuiltinOptions enum_value = BuiltinOptions_HashtableOptions;
2722 };
2723 
2724 template<> struct BuiltinOptionsUnionTraits<tflite::HashtableFindOptionsT> {
2725   static const BuiltinOptions enum_value = BuiltinOptions_HashtableFindOptions;
2726 };
2727 
2728 template<> struct BuiltinOptionsUnionTraits<tflite::HashtableImportOptionsT> {
2729   static const BuiltinOptions enum_value = BuiltinOptions_HashtableImportOptions;
2730 };
2731 
2732 template<> struct BuiltinOptionsUnionTraits<tflite::HashtableSizeOptionsT> {
2733   static const BuiltinOptions enum_value = BuiltinOptions_HashtableSizeOptions;
2734 };
2735 
2736 template<> struct BuiltinOptionsUnionTraits<tflite::VarHandleOptionsT> {
2737   static const BuiltinOptions enum_value = BuiltinOptions_VarHandleOptions;
2738 };
2739 
2740 template<> struct BuiltinOptionsUnionTraits<tflite::ReadVariableOptionsT> {
2741   static const BuiltinOptions enum_value = BuiltinOptions_ReadVariableOptions;
2742 };
2743 
2744 template<> struct BuiltinOptionsUnionTraits<tflite::AssignVariableOptionsT> {
2745   static const BuiltinOptions enum_value = BuiltinOptions_AssignVariableOptions;
2746 };
2747 
2748 template<> struct BuiltinOptionsUnionTraits<tflite::RandomOptionsT> {
2749   static const BuiltinOptions enum_value = BuiltinOptions_RandomOptions;
2750 };
2751 
2752 template<> struct BuiltinOptionsUnionTraits<tflite::BucketizeOptionsT> {
2753   static const BuiltinOptions enum_value = BuiltinOptions_BucketizeOptions;
2754 };
2755 
2756 template<> struct BuiltinOptionsUnionTraits<tflite::GeluOptionsT> {
2757   static const BuiltinOptions enum_value = BuiltinOptions_GeluOptions;
2758 };
2759 
2760 template<> struct BuiltinOptionsUnionTraits<tflite::DynamicUpdateSliceOptionsT> {
2761   static const BuiltinOptions enum_value = BuiltinOptions_DynamicUpdateSliceOptions;
2762 };
2763 
2764 template<> struct BuiltinOptionsUnionTraits<tflite::UnsortedSegmentProdOptionsT> {
2765   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentProdOptions;
2766 };
2767 
2768 template<> struct BuiltinOptionsUnionTraits<tflite::UnsortedSegmentMaxOptionsT> {
2769   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentMaxOptions;
2770 };
2771 
2772 template<> struct BuiltinOptionsUnionTraits<tflite::UnsortedSegmentMinOptionsT> {
2773   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentMinOptions;
2774 };
2775 
2776 template<> struct BuiltinOptionsUnionTraits<tflite::UnsortedSegmentSumOptionsT> {
2777   static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentSumOptions;
2778 };
2779 
2780 template<> struct BuiltinOptionsUnionTraits<tflite::ATan2OptionsT> {
2781   static const BuiltinOptions enum_value = BuiltinOptions_ATan2Options;
2782 };
2783 
2784 template<> struct BuiltinOptionsUnionTraits<tflite::SignOptionsT> {
2785   static const BuiltinOptions enum_value = BuiltinOptions_SignOptions;
2786 };
2787 
2788 struct BuiltinOptionsUnion {
2789   BuiltinOptions type;
2790   void *value;
2791 
2792   BuiltinOptionsUnion() : type(BuiltinOptions_NONE), value(nullptr) {}
2793   BuiltinOptionsUnion(BuiltinOptionsUnion&& u) FLATBUFFERS_NOEXCEPT :
2794     type(BuiltinOptions_NONE), value(nullptr)
2795     { std::swap(type, u.type); std::swap(value, u.value); }
2796   BuiltinOptionsUnion(const BuiltinOptionsUnion &);
2797   BuiltinOptionsUnion &operator=(const BuiltinOptionsUnion &u)
2798     { BuiltinOptionsUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
2799   BuiltinOptionsUnion &operator=(BuiltinOptionsUnion &&u) FLATBUFFERS_NOEXCEPT
2800     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
2801   ~BuiltinOptionsUnion() { Reset(); }
2802 
2803   void Reset();
2804 
2805   template <typename T>
2806   void Set(T&& val) {
2807     typedef typename std::remove_reference<T>::type RT;
2808     Reset();
2809     type = BuiltinOptionsUnionTraits<RT>::enum_value;
2810     if (type != BuiltinOptions_NONE) {
2811       value = new RT(std::forward<T>(val));
2812     }
2813   }
2814 
2815   static void *UnPack(const void *obj, BuiltinOptions type, const flatbuffers::resolver_function_t *resolver);
2816   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
2817 
2818   tflite::Conv2DOptionsT *AsConv2DOptions() {
2819     return type == BuiltinOptions_Conv2DOptions ?
2820       reinterpret_cast<tflite::Conv2DOptionsT *>(value) : nullptr;
2821   }
2822   const tflite::Conv2DOptionsT *AsConv2DOptions() const {
2823     return type == BuiltinOptions_Conv2DOptions ?
2824       reinterpret_cast<const tflite::Conv2DOptionsT *>(value) : nullptr;
2825   }
2826   tflite::DepthwiseConv2DOptionsT *AsDepthwiseConv2DOptions() {
2827     return type == BuiltinOptions_DepthwiseConv2DOptions ?
2828       reinterpret_cast<tflite::DepthwiseConv2DOptionsT *>(value) : nullptr;
2829   }
2830   const tflite::DepthwiseConv2DOptionsT *AsDepthwiseConv2DOptions() const {
2831     return type == BuiltinOptions_DepthwiseConv2DOptions ?
2832       reinterpret_cast<const tflite::DepthwiseConv2DOptionsT *>(value) : nullptr;
2833   }
2834   tflite::ConcatEmbeddingsOptionsT *AsConcatEmbeddingsOptions() {
2835     return type == BuiltinOptions_ConcatEmbeddingsOptions ?
2836       reinterpret_cast<tflite::ConcatEmbeddingsOptionsT *>(value) : nullptr;
2837   }
2838   const tflite::ConcatEmbeddingsOptionsT *AsConcatEmbeddingsOptions() const {
2839     return type == BuiltinOptions_ConcatEmbeddingsOptions ?
2840       reinterpret_cast<const tflite::ConcatEmbeddingsOptionsT *>(value) : nullptr;
2841   }
2842   tflite::LSHProjectionOptionsT *AsLSHProjectionOptions() {
2843     return type == BuiltinOptions_LSHProjectionOptions ?
2844       reinterpret_cast<tflite::LSHProjectionOptionsT *>(value) : nullptr;
2845   }
2846   const tflite::LSHProjectionOptionsT *AsLSHProjectionOptions() const {
2847     return type == BuiltinOptions_LSHProjectionOptions ?
2848       reinterpret_cast<const tflite::LSHProjectionOptionsT *>(value) : nullptr;
2849   }
2850   tflite::Pool2DOptionsT *AsPool2DOptions() {
2851     return type == BuiltinOptions_Pool2DOptions ?
2852       reinterpret_cast<tflite::Pool2DOptionsT *>(value) : nullptr;
2853   }
2854   const tflite::Pool2DOptionsT *AsPool2DOptions() const {
2855     return type == BuiltinOptions_Pool2DOptions ?
2856       reinterpret_cast<const tflite::Pool2DOptionsT *>(value) : nullptr;
2857   }
2858   tflite::SVDFOptionsT *AsSVDFOptions() {
2859     return type == BuiltinOptions_SVDFOptions ?
2860       reinterpret_cast<tflite::SVDFOptionsT *>(value) : nullptr;
2861   }
2862   const tflite::SVDFOptionsT *AsSVDFOptions() const {
2863     return type == BuiltinOptions_SVDFOptions ?
2864       reinterpret_cast<const tflite::SVDFOptionsT *>(value) : nullptr;
2865   }
2866   tflite::RNNOptionsT *AsRNNOptions() {
2867     return type == BuiltinOptions_RNNOptions ?
2868       reinterpret_cast<tflite::RNNOptionsT *>(value) : nullptr;
2869   }
2870   const tflite::RNNOptionsT *AsRNNOptions() const {
2871     return type == BuiltinOptions_RNNOptions ?
2872       reinterpret_cast<const tflite::RNNOptionsT *>(value) : nullptr;
2873   }
2874   tflite::FullyConnectedOptionsT *AsFullyConnectedOptions() {
2875     return type == BuiltinOptions_FullyConnectedOptions ?
2876       reinterpret_cast<tflite::FullyConnectedOptionsT *>(value) : nullptr;
2877   }
2878   const tflite::FullyConnectedOptionsT *AsFullyConnectedOptions() const {
2879     return type == BuiltinOptions_FullyConnectedOptions ?
2880       reinterpret_cast<const tflite::FullyConnectedOptionsT *>(value) : nullptr;
2881   }
2882   tflite::SoftmaxOptionsT *AsSoftmaxOptions() {
2883     return type == BuiltinOptions_SoftmaxOptions ?
2884       reinterpret_cast<tflite::SoftmaxOptionsT *>(value) : nullptr;
2885   }
2886   const tflite::SoftmaxOptionsT *AsSoftmaxOptions() const {
2887     return type == BuiltinOptions_SoftmaxOptions ?
2888       reinterpret_cast<const tflite::SoftmaxOptionsT *>(value) : nullptr;
2889   }
2890   tflite::ConcatenationOptionsT *AsConcatenationOptions() {
2891     return type == BuiltinOptions_ConcatenationOptions ?
2892       reinterpret_cast<tflite::ConcatenationOptionsT *>(value) : nullptr;
2893   }
2894   const tflite::ConcatenationOptionsT *AsConcatenationOptions() const {
2895     return type == BuiltinOptions_ConcatenationOptions ?
2896       reinterpret_cast<const tflite::ConcatenationOptionsT *>(value) : nullptr;
2897   }
2898   tflite::AddOptionsT *AsAddOptions() {
2899     return type == BuiltinOptions_AddOptions ?
2900       reinterpret_cast<tflite::AddOptionsT *>(value) : nullptr;
2901   }
2902   const tflite::AddOptionsT *AsAddOptions() const {
2903     return type == BuiltinOptions_AddOptions ?
2904       reinterpret_cast<const tflite::AddOptionsT *>(value) : nullptr;
2905   }
2906   tflite::L2NormOptionsT *AsL2NormOptions() {
2907     return type == BuiltinOptions_L2NormOptions ?
2908       reinterpret_cast<tflite::L2NormOptionsT *>(value) : nullptr;
2909   }
2910   const tflite::L2NormOptionsT *AsL2NormOptions() const {
2911     return type == BuiltinOptions_L2NormOptions ?
2912       reinterpret_cast<const tflite::L2NormOptionsT *>(value) : nullptr;
2913   }
2914   tflite::LocalResponseNormalizationOptionsT *AsLocalResponseNormalizationOptions() {
2915     return type == BuiltinOptions_LocalResponseNormalizationOptions ?
2916       reinterpret_cast<tflite::LocalResponseNormalizationOptionsT *>(value) : nullptr;
2917   }
2918   const tflite::LocalResponseNormalizationOptionsT *AsLocalResponseNormalizationOptions() const {
2919     return type == BuiltinOptions_LocalResponseNormalizationOptions ?
2920       reinterpret_cast<const tflite::LocalResponseNormalizationOptionsT *>(value) : nullptr;
2921   }
2922   tflite::LSTMOptionsT *AsLSTMOptions() {
2923     return type == BuiltinOptions_LSTMOptions ?
2924       reinterpret_cast<tflite::LSTMOptionsT *>(value) : nullptr;
2925   }
2926   const tflite::LSTMOptionsT *AsLSTMOptions() const {
2927     return type == BuiltinOptions_LSTMOptions ?
2928       reinterpret_cast<const tflite::LSTMOptionsT *>(value) : nullptr;
2929   }
2930   tflite::ResizeBilinearOptionsT *AsResizeBilinearOptions() {
2931     return type == BuiltinOptions_ResizeBilinearOptions ?
2932       reinterpret_cast<tflite::ResizeBilinearOptionsT *>(value) : nullptr;
2933   }
2934   const tflite::ResizeBilinearOptionsT *AsResizeBilinearOptions() const {
2935     return type == BuiltinOptions_ResizeBilinearOptions ?
2936       reinterpret_cast<const tflite::ResizeBilinearOptionsT *>(value) : nullptr;
2937   }
2938   tflite::CallOptionsT *AsCallOptions() {
2939     return type == BuiltinOptions_CallOptions ?
2940       reinterpret_cast<tflite::CallOptionsT *>(value) : nullptr;
2941   }
2942   const tflite::CallOptionsT *AsCallOptions() const {
2943     return type == BuiltinOptions_CallOptions ?
2944       reinterpret_cast<const tflite::CallOptionsT *>(value) : nullptr;
2945   }
2946   tflite::ReshapeOptionsT *AsReshapeOptions() {
2947     return type == BuiltinOptions_ReshapeOptions ?
2948       reinterpret_cast<tflite::ReshapeOptionsT *>(value) : nullptr;
2949   }
2950   const tflite::ReshapeOptionsT *AsReshapeOptions() const {
2951     return type == BuiltinOptions_ReshapeOptions ?
2952       reinterpret_cast<const tflite::ReshapeOptionsT *>(value) : nullptr;
2953   }
2954   tflite::SkipGramOptionsT *AsSkipGramOptions() {
2955     return type == BuiltinOptions_SkipGramOptions ?
2956       reinterpret_cast<tflite::SkipGramOptionsT *>(value) : nullptr;
2957   }
2958   const tflite::SkipGramOptionsT *AsSkipGramOptions() const {
2959     return type == BuiltinOptions_SkipGramOptions ?
2960       reinterpret_cast<const tflite::SkipGramOptionsT *>(value) : nullptr;
2961   }
2962   tflite::SpaceToDepthOptionsT *AsSpaceToDepthOptions() {
2963     return type == BuiltinOptions_SpaceToDepthOptions ?
2964       reinterpret_cast<tflite::SpaceToDepthOptionsT *>(value) : nullptr;
2965   }
2966   const tflite::SpaceToDepthOptionsT *AsSpaceToDepthOptions() const {
2967     return type == BuiltinOptions_SpaceToDepthOptions ?
2968       reinterpret_cast<const tflite::SpaceToDepthOptionsT *>(value) : nullptr;
2969   }
2970   tflite::EmbeddingLookupSparseOptionsT *AsEmbeddingLookupSparseOptions() {
2971     return type == BuiltinOptions_EmbeddingLookupSparseOptions ?
2972       reinterpret_cast<tflite::EmbeddingLookupSparseOptionsT *>(value) : nullptr;
2973   }
2974   const tflite::EmbeddingLookupSparseOptionsT *AsEmbeddingLookupSparseOptions() const {
2975     return type == BuiltinOptions_EmbeddingLookupSparseOptions ?
2976       reinterpret_cast<const tflite::EmbeddingLookupSparseOptionsT *>(value) : nullptr;
2977   }
2978   tflite::MulOptionsT *AsMulOptions() {
2979     return type == BuiltinOptions_MulOptions ?
2980       reinterpret_cast<tflite::MulOptionsT *>(value) : nullptr;
2981   }
2982   const tflite::MulOptionsT *AsMulOptions() const {
2983     return type == BuiltinOptions_MulOptions ?
2984       reinterpret_cast<const tflite::MulOptionsT *>(value) : nullptr;
2985   }
2986   tflite::PadOptionsT *AsPadOptions() {
2987     return type == BuiltinOptions_PadOptions ?
2988       reinterpret_cast<tflite::PadOptionsT *>(value) : nullptr;
2989   }
2990   const tflite::PadOptionsT *AsPadOptions() const {
2991     return type == BuiltinOptions_PadOptions ?
2992       reinterpret_cast<const tflite::PadOptionsT *>(value) : nullptr;
2993   }
2994   tflite::GatherOptionsT *AsGatherOptions() {
2995     return type == BuiltinOptions_GatherOptions ?
2996       reinterpret_cast<tflite::GatherOptionsT *>(value) : nullptr;
2997   }
2998   const tflite::GatherOptionsT *AsGatherOptions() const {
2999     return type == BuiltinOptions_GatherOptions ?
3000       reinterpret_cast<const tflite::GatherOptionsT *>(value) : nullptr;
3001   }
3002   tflite::BatchToSpaceNDOptionsT *AsBatchToSpaceNDOptions() {
3003     return type == BuiltinOptions_BatchToSpaceNDOptions ?
3004       reinterpret_cast<tflite::BatchToSpaceNDOptionsT *>(value) : nullptr;
3005   }
3006   const tflite::BatchToSpaceNDOptionsT *AsBatchToSpaceNDOptions() const {
3007     return type == BuiltinOptions_BatchToSpaceNDOptions ?
3008       reinterpret_cast<const tflite::BatchToSpaceNDOptionsT *>(value) : nullptr;
3009   }
3010   tflite::SpaceToBatchNDOptionsT *AsSpaceToBatchNDOptions() {
3011     return type == BuiltinOptions_SpaceToBatchNDOptions ?
3012       reinterpret_cast<tflite::SpaceToBatchNDOptionsT *>(value) : nullptr;
3013   }
3014   const tflite::SpaceToBatchNDOptionsT *AsSpaceToBatchNDOptions() const {
3015     return type == BuiltinOptions_SpaceToBatchNDOptions ?
3016       reinterpret_cast<const tflite::SpaceToBatchNDOptionsT *>(value) : nullptr;
3017   }
3018   tflite::TransposeOptionsT *AsTransposeOptions() {
3019     return type == BuiltinOptions_TransposeOptions ?
3020       reinterpret_cast<tflite::TransposeOptionsT *>(value) : nullptr;
3021   }
3022   const tflite::TransposeOptionsT *AsTransposeOptions() const {
3023     return type == BuiltinOptions_TransposeOptions ?
3024       reinterpret_cast<const tflite::TransposeOptionsT *>(value) : nullptr;
3025   }
3026   tflite::ReducerOptionsT *AsReducerOptions() {
3027     return type == BuiltinOptions_ReducerOptions ?
3028       reinterpret_cast<tflite::ReducerOptionsT *>(value) : nullptr;
3029   }
3030   const tflite::ReducerOptionsT *AsReducerOptions() const {
3031     return type == BuiltinOptions_ReducerOptions ?
3032       reinterpret_cast<const tflite::ReducerOptionsT *>(value) : nullptr;
3033   }
3034   tflite::SubOptionsT *AsSubOptions() {
3035     return type == BuiltinOptions_SubOptions ?
3036       reinterpret_cast<tflite::SubOptionsT *>(value) : nullptr;
3037   }
3038   const tflite::SubOptionsT *AsSubOptions() const {
3039     return type == BuiltinOptions_SubOptions ?
3040       reinterpret_cast<const tflite::SubOptionsT *>(value) : nullptr;
3041   }
3042   tflite::DivOptionsT *AsDivOptions() {
3043     return type == BuiltinOptions_DivOptions ?
3044       reinterpret_cast<tflite::DivOptionsT *>(value) : nullptr;
3045   }
3046   const tflite::DivOptionsT *AsDivOptions() const {
3047     return type == BuiltinOptions_DivOptions ?
3048       reinterpret_cast<const tflite::DivOptionsT *>(value) : nullptr;
3049   }
3050   tflite::SqueezeOptionsT *AsSqueezeOptions() {
3051     return type == BuiltinOptions_SqueezeOptions ?
3052       reinterpret_cast<tflite::SqueezeOptionsT *>(value) : nullptr;
3053   }
3054   const tflite::SqueezeOptionsT *AsSqueezeOptions() const {
3055     return type == BuiltinOptions_SqueezeOptions ?
3056       reinterpret_cast<const tflite::SqueezeOptionsT *>(value) : nullptr;
3057   }
3058   tflite::SequenceRNNOptionsT *AsSequenceRNNOptions() {
3059     return type == BuiltinOptions_SequenceRNNOptions ?
3060       reinterpret_cast<tflite::SequenceRNNOptionsT *>(value) : nullptr;
3061   }
3062   const tflite::SequenceRNNOptionsT *AsSequenceRNNOptions() const {
3063     return type == BuiltinOptions_SequenceRNNOptions ?
3064       reinterpret_cast<const tflite::SequenceRNNOptionsT *>(value) : nullptr;
3065   }
3066   tflite::StridedSliceOptionsT *AsStridedSliceOptions() {
3067     return type == BuiltinOptions_StridedSliceOptions ?
3068       reinterpret_cast<tflite::StridedSliceOptionsT *>(value) : nullptr;
3069   }
3070   const tflite::StridedSliceOptionsT *AsStridedSliceOptions() const {
3071     return type == BuiltinOptions_StridedSliceOptions ?
3072       reinterpret_cast<const tflite::StridedSliceOptionsT *>(value) : nullptr;
3073   }
3074   tflite::ExpOptionsT *AsExpOptions() {
3075     return type == BuiltinOptions_ExpOptions ?
3076       reinterpret_cast<tflite::ExpOptionsT *>(value) : nullptr;
3077   }
3078   const tflite::ExpOptionsT *AsExpOptions() const {
3079     return type == BuiltinOptions_ExpOptions ?
3080       reinterpret_cast<const tflite::ExpOptionsT *>(value) : nullptr;
3081   }
3082   tflite::TopKV2OptionsT *AsTopKV2Options() {
3083     return type == BuiltinOptions_TopKV2Options ?
3084       reinterpret_cast<tflite::TopKV2OptionsT *>(value) : nullptr;
3085   }
3086   const tflite::TopKV2OptionsT *AsTopKV2Options() const {
3087     return type == BuiltinOptions_TopKV2Options ?
3088       reinterpret_cast<const tflite::TopKV2OptionsT *>(value) : nullptr;
3089   }
3090   tflite::SplitOptionsT *AsSplitOptions() {
3091     return type == BuiltinOptions_SplitOptions ?
3092       reinterpret_cast<tflite::SplitOptionsT *>(value) : nullptr;
3093   }
3094   const tflite::SplitOptionsT *AsSplitOptions() const {
3095     return type == BuiltinOptions_SplitOptions ?
3096       reinterpret_cast<const tflite::SplitOptionsT *>(value) : nullptr;
3097   }
3098   tflite::LogSoftmaxOptionsT *AsLogSoftmaxOptions() {
3099     return type == BuiltinOptions_LogSoftmaxOptions ?
3100       reinterpret_cast<tflite::LogSoftmaxOptionsT *>(value) : nullptr;
3101   }
3102   const tflite::LogSoftmaxOptionsT *AsLogSoftmaxOptions() const {
3103     return type == BuiltinOptions_LogSoftmaxOptions ?
3104       reinterpret_cast<const tflite::LogSoftmaxOptionsT *>(value) : nullptr;
3105   }
3106   tflite::CastOptionsT *AsCastOptions() {
3107     return type == BuiltinOptions_CastOptions ?
3108       reinterpret_cast<tflite::CastOptionsT *>(value) : nullptr;
3109   }
3110   const tflite::CastOptionsT *AsCastOptions() const {
3111     return type == BuiltinOptions_CastOptions ?
3112       reinterpret_cast<const tflite::CastOptionsT *>(value) : nullptr;
3113   }
3114   tflite::DequantizeOptionsT *AsDequantizeOptions() {
3115     return type == BuiltinOptions_DequantizeOptions ?
3116       reinterpret_cast<tflite::DequantizeOptionsT *>(value) : nullptr;
3117   }
3118   const tflite::DequantizeOptionsT *AsDequantizeOptions() const {
3119     return type == BuiltinOptions_DequantizeOptions ?
3120       reinterpret_cast<const tflite::DequantizeOptionsT *>(value) : nullptr;
3121   }
3122   tflite::MaximumMinimumOptionsT *AsMaximumMinimumOptions() {
3123     return type == BuiltinOptions_MaximumMinimumOptions ?
3124       reinterpret_cast<tflite::MaximumMinimumOptionsT *>(value) : nullptr;
3125   }
3126   const tflite::MaximumMinimumOptionsT *AsMaximumMinimumOptions() const {
3127     return type == BuiltinOptions_MaximumMinimumOptions ?
3128       reinterpret_cast<const tflite::MaximumMinimumOptionsT *>(value) : nullptr;
3129   }
3130   tflite::ArgMaxOptionsT *AsArgMaxOptions() {
3131     return type == BuiltinOptions_ArgMaxOptions ?
3132       reinterpret_cast<tflite::ArgMaxOptionsT *>(value) : nullptr;
3133   }
3134   const tflite::ArgMaxOptionsT *AsArgMaxOptions() const {
3135     return type == BuiltinOptions_ArgMaxOptions ?
3136       reinterpret_cast<const tflite::ArgMaxOptionsT *>(value) : nullptr;
3137   }
3138   tflite::LessOptionsT *AsLessOptions() {
3139     return type == BuiltinOptions_LessOptions ?
3140       reinterpret_cast<tflite::LessOptionsT *>(value) : nullptr;
3141   }
3142   const tflite::LessOptionsT *AsLessOptions() const {
3143     return type == BuiltinOptions_LessOptions ?
3144       reinterpret_cast<const tflite::LessOptionsT *>(value) : nullptr;
3145   }
3146   tflite::NegOptionsT *AsNegOptions() {
3147     return type == BuiltinOptions_NegOptions ?
3148       reinterpret_cast<tflite::NegOptionsT *>(value) : nullptr;
3149   }
3150   const tflite::NegOptionsT *AsNegOptions() const {
3151     return type == BuiltinOptions_NegOptions ?
3152       reinterpret_cast<const tflite::NegOptionsT *>(value) : nullptr;
3153   }
3154   tflite::PadV2OptionsT *AsPadV2Options() {
3155     return type == BuiltinOptions_PadV2Options ?
3156       reinterpret_cast<tflite::PadV2OptionsT *>(value) : nullptr;
3157   }
3158   const tflite::PadV2OptionsT *AsPadV2Options() const {
3159     return type == BuiltinOptions_PadV2Options ?
3160       reinterpret_cast<const tflite::PadV2OptionsT *>(value) : nullptr;
3161   }
3162   tflite::GreaterOptionsT *AsGreaterOptions() {
3163     return type == BuiltinOptions_GreaterOptions ?
3164       reinterpret_cast<tflite::GreaterOptionsT *>(value) : nullptr;
3165   }
3166   const tflite::GreaterOptionsT *AsGreaterOptions() const {
3167     return type == BuiltinOptions_GreaterOptions ?
3168       reinterpret_cast<const tflite::GreaterOptionsT *>(value) : nullptr;
3169   }
3170   tflite::GreaterEqualOptionsT *AsGreaterEqualOptions() {
3171     return type == BuiltinOptions_GreaterEqualOptions ?
3172       reinterpret_cast<tflite::GreaterEqualOptionsT *>(value) : nullptr;
3173   }
3174   const tflite::GreaterEqualOptionsT *AsGreaterEqualOptions() const {
3175     return type == BuiltinOptions_GreaterEqualOptions ?
3176       reinterpret_cast<const tflite::GreaterEqualOptionsT *>(value) : nullptr;
3177   }
3178   tflite::LessEqualOptionsT *AsLessEqualOptions() {
3179     return type == BuiltinOptions_LessEqualOptions ?
3180       reinterpret_cast<tflite::LessEqualOptionsT *>(value) : nullptr;
3181   }
3182   const tflite::LessEqualOptionsT *AsLessEqualOptions() const {
3183     return type == BuiltinOptions_LessEqualOptions ?
3184       reinterpret_cast<const tflite::LessEqualOptionsT *>(value) : nullptr;
3185   }
3186   tflite::SelectOptionsT *AsSelectOptions() {
3187     return type == BuiltinOptions_SelectOptions ?
3188       reinterpret_cast<tflite::SelectOptionsT *>(value) : nullptr;
3189   }
3190   const tflite::SelectOptionsT *AsSelectOptions() const {
3191     return type == BuiltinOptions_SelectOptions ?
3192       reinterpret_cast<const tflite::SelectOptionsT *>(value) : nullptr;
3193   }
3194   tflite::SliceOptionsT *AsSliceOptions() {
3195     return type == BuiltinOptions_SliceOptions ?
3196       reinterpret_cast<tflite::SliceOptionsT *>(value) : nullptr;
3197   }
3198   const tflite::SliceOptionsT *AsSliceOptions() const {
3199     return type == BuiltinOptions_SliceOptions ?
3200       reinterpret_cast<const tflite::SliceOptionsT *>(value) : nullptr;
3201   }
3202   tflite::TransposeConvOptionsT *AsTransposeConvOptions() {
3203     return type == BuiltinOptions_TransposeConvOptions ?
3204       reinterpret_cast<tflite::TransposeConvOptionsT *>(value) : nullptr;
3205   }
3206   const tflite::TransposeConvOptionsT *AsTransposeConvOptions() const {
3207     return type == BuiltinOptions_TransposeConvOptions ?
3208       reinterpret_cast<const tflite::TransposeConvOptionsT *>(value) : nullptr;
3209   }
3210   tflite::SparseToDenseOptionsT *AsSparseToDenseOptions() {
3211     return type == BuiltinOptions_SparseToDenseOptions ?
3212       reinterpret_cast<tflite::SparseToDenseOptionsT *>(value) : nullptr;
3213   }
3214   const tflite::SparseToDenseOptionsT *AsSparseToDenseOptions() const {
3215     return type == BuiltinOptions_SparseToDenseOptions ?
3216       reinterpret_cast<const tflite::SparseToDenseOptionsT *>(value) : nullptr;
3217   }
3218   tflite::TileOptionsT *AsTileOptions() {
3219     return type == BuiltinOptions_TileOptions ?
3220       reinterpret_cast<tflite::TileOptionsT *>(value) : nullptr;
3221   }
3222   const tflite::TileOptionsT *AsTileOptions() const {
3223     return type == BuiltinOptions_TileOptions ?
3224       reinterpret_cast<const tflite::TileOptionsT *>(value) : nullptr;
3225   }
3226   tflite::ExpandDimsOptionsT *AsExpandDimsOptions() {
3227     return type == BuiltinOptions_ExpandDimsOptions ?
3228       reinterpret_cast<tflite::ExpandDimsOptionsT *>(value) : nullptr;
3229   }
3230   const tflite::ExpandDimsOptionsT *AsExpandDimsOptions() const {
3231     return type == BuiltinOptions_ExpandDimsOptions ?
3232       reinterpret_cast<const tflite::ExpandDimsOptionsT *>(value) : nullptr;
3233   }
3234   tflite::EqualOptionsT *AsEqualOptions() {
3235     return type == BuiltinOptions_EqualOptions ?
3236       reinterpret_cast<tflite::EqualOptionsT *>(value) : nullptr;
3237   }
3238   const tflite::EqualOptionsT *AsEqualOptions() const {
3239     return type == BuiltinOptions_EqualOptions ?
3240       reinterpret_cast<const tflite::EqualOptionsT *>(value) : nullptr;
3241   }
3242   tflite::NotEqualOptionsT *AsNotEqualOptions() {
3243     return type == BuiltinOptions_NotEqualOptions ?
3244       reinterpret_cast<tflite::NotEqualOptionsT *>(value) : nullptr;
3245   }
3246   const tflite::NotEqualOptionsT *AsNotEqualOptions() const {
3247     return type == BuiltinOptions_NotEqualOptions ?
3248       reinterpret_cast<const tflite::NotEqualOptionsT *>(value) : nullptr;
3249   }
3250   tflite::ShapeOptionsT *AsShapeOptions() {
3251     return type == BuiltinOptions_ShapeOptions ?
3252       reinterpret_cast<tflite::ShapeOptionsT *>(value) : nullptr;
3253   }
3254   const tflite::ShapeOptionsT *AsShapeOptions() const {
3255     return type == BuiltinOptions_ShapeOptions ?
3256       reinterpret_cast<const tflite::ShapeOptionsT *>(value) : nullptr;
3257   }
3258   tflite::PowOptionsT *AsPowOptions() {
3259     return type == BuiltinOptions_PowOptions ?
3260       reinterpret_cast<tflite::PowOptionsT *>(value) : nullptr;
3261   }
3262   const tflite::PowOptionsT *AsPowOptions() const {
3263     return type == BuiltinOptions_PowOptions ?
3264       reinterpret_cast<const tflite::PowOptionsT *>(value) : nullptr;
3265   }
3266   tflite::ArgMinOptionsT *AsArgMinOptions() {
3267     return type == BuiltinOptions_ArgMinOptions ?
3268       reinterpret_cast<tflite::ArgMinOptionsT *>(value) : nullptr;
3269   }
3270   const tflite::ArgMinOptionsT *AsArgMinOptions() const {
3271     return type == BuiltinOptions_ArgMinOptions ?
3272       reinterpret_cast<const tflite::ArgMinOptionsT *>(value) : nullptr;
3273   }
3274   tflite::FakeQuantOptionsT *AsFakeQuantOptions() {
3275     return type == BuiltinOptions_FakeQuantOptions ?
3276       reinterpret_cast<tflite::FakeQuantOptionsT *>(value) : nullptr;
3277   }
3278   const tflite::FakeQuantOptionsT *AsFakeQuantOptions() const {
3279     return type == BuiltinOptions_FakeQuantOptions ?
3280       reinterpret_cast<const tflite::FakeQuantOptionsT *>(value) : nullptr;
3281   }
3282   tflite::PackOptionsT *AsPackOptions() {
3283     return type == BuiltinOptions_PackOptions ?
3284       reinterpret_cast<tflite::PackOptionsT *>(value) : nullptr;
3285   }
3286   const tflite::PackOptionsT *AsPackOptions() const {
3287     return type == BuiltinOptions_PackOptions ?
3288       reinterpret_cast<const tflite::PackOptionsT *>(value) : nullptr;
3289   }
3290   tflite::LogicalOrOptionsT *AsLogicalOrOptions() {
3291     return type == BuiltinOptions_LogicalOrOptions ?
3292       reinterpret_cast<tflite::LogicalOrOptionsT *>(value) : nullptr;
3293   }
3294   const tflite::LogicalOrOptionsT *AsLogicalOrOptions() const {
3295     return type == BuiltinOptions_LogicalOrOptions ?
3296       reinterpret_cast<const tflite::LogicalOrOptionsT *>(value) : nullptr;
3297   }
3298   tflite::OneHotOptionsT *AsOneHotOptions() {
3299     return type == BuiltinOptions_OneHotOptions ?
3300       reinterpret_cast<tflite::OneHotOptionsT *>(value) : nullptr;
3301   }
3302   const tflite::OneHotOptionsT *AsOneHotOptions() const {
3303     return type == BuiltinOptions_OneHotOptions ?
3304       reinterpret_cast<const tflite::OneHotOptionsT *>(value) : nullptr;
3305   }
3306   tflite::LogicalAndOptionsT *AsLogicalAndOptions() {
3307     return type == BuiltinOptions_LogicalAndOptions ?
3308       reinterpret_cast<tflite::LogicalAndOptionsT *>(value) : nullptr;
3309   }
3310   const tflite::LogicalAndOptionsT *AsLogicalAndOptions() const {
3311     return type == BuiltinOptions_LogicalAndOptions ?
3312       reinterpret_cast<const tflite::LogicalAndOptionsT *>(value) : nullptr;
3313   }
3314   tflite::LogicalNotOptionsT *AsLogicalNotOptions() {
3315     return type == BuiltinOptions_LogicalNotOptions ?
3316       reinterpret_cast<tflite::LogicalNotOptionsT *>(value) : nullptr;
3317   }
3318   const tflite::LogicalNotOptionsT *AsLogicalNotOptions() const {
3319     return type == BuiltinOptions_LogicalNotOptions ?
3320       reinterpret_cast<const tflite::LogicalNotOptionsT *>(value) : nullptr;
3321   }
3322   tflite::UnpackOptionsT *AsUnpackOptions() {
3323     return type == BuiltinOptions_UnpackOptions ?
3324       reinterpret_cast<tflite::UnpackOptionsT *>(value) : nullptr;
3325   }
3326   const tflite::UnpackOptionsT *AsUnpackOptions() const {
3327     return type == BuiltinOptions_UnpackOptions ?
3328       reinterpret_cast<const tflite::UnpackOptionsT *>(value) : nullptr;
3329   }
3330   tflite::FloorDivOptionsT *AsFloorDivOptions() {
3331     return type == BuiltinOptions_FloorDivOptions ?
3332       reinterpret_cast<tflite::FloorDivOptionsT *>(value) : nullptr;
3333   }
3334   const tflite::FloorDivOptionsT *AsFloorDivOptions() const {
3335     return type == BuiltinOptions_FloorDivOptions ?
3336       reinterpret_cast<const tflite::FloorDivOptionsT *>(value) : nullptr;
3337   }
3338   tflite::SquareOptionsT *AsSquareOptions() {
3339     return type == BuiltinOptions_SquareOptions ?
3340       reinterpret_cast<tflite::SquareOptionsT *>(value) : nullptr;
3341   }
3342   const tflite::SquareOptionsT *AsSquareOptions() const {
3343     return type == BuiltinOptions_SquareOptions ?
3344       reinterpret_cast<const tflite::SquareOptionsT *>(value) : nullptr;
3345   }
3346   tflite::ZerosLikeOptionsT *AsZerosLikeOptions() {
3347     return type == BuiltinOptions_ZerosLikeOptions ?
3348       reinterpret_cast<tflite::ZerosLikeOptionsT *>(value) : nullptr;
3349   }
3350   const tflite::ZerosLikeOptionsT *AsZerosLikeOptions() const {
3351     return type == BuiltinOptions_ZerosLikeOptions ?
3352       reinterpret_cast<const tflite::ZerosLikeOptionsT *>(value) : nullptr;
3353   }
3354   tflite::FillOptionsT *AsFillOptions() {
3355     return type == BuiltinOptions_FillOptions ?
3356       reinterpret_cast<tflite::FillOptionsT *>(value) : nullptr;
3357   }
3358   const tflite::FillOptionsT *AsFillOptions() const {
3359     return type == BuiltinOptions_FillOptions ?
3360       reinterpret_cast<const tflite::FillOptionsT *>(value) : nullptr;
3361   }
3362   tflite::BidirectionalSequenceLSTMOptionsT *AsBidirectionalSequenceLSTMOptions() {
3363     return type == BuiltinOptions_BidirectionalSequenceLSTMOptions ?
3364       reinterpret_cast<tflite::BidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
3365   }
3366   const tflite::BidirectionalSequenceLSTMOptionsT *AsBidirectionalSequenceLSTMOptions() const {
3367     return type == BuiltinOptions_BidirectionalSequenceLSTMOptions ?
3368       reinterpret_cast<const tflite::BidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
3369   }
3370   tflite::BidirectionalSequenceRNNOptionsT *AsBidirectionalSequenceRNNOptions() {
3371     return type == BuiltinOptions_BidirectionalSequenceRNNOptions ?
3372       reinterpret_cast<tflite::BidirectionalSequenceRNNOptionsT *>(value) : nullptr;
3373   }
3374   const tflite::BidirectionalSequenceRNNOptionsT *AsBidirectionalSequenceRNNOptions() const {
3375     return type == BuiltinOptions_BidirectionalSequenceRNNOptions ?
3376       reinterpret_cast<const tflite::BidirectionalSequenceRNNOptionsT *>(value) : nullptr;
3377   }
3378   tflite::UnidirectionalSequenceLSTMOptionsT *AsUnidirectionalSequenceLSTMOptions() {
3379     return type == BuiltinOptions_UnidirectionalSequenceLSTMOptions ?
3380       reinterpret_cast<tflite::UnidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
3381   }
3382   const tflite::UnidirectionalSequenceLSTMOptionsT *AsUnidirectionalSequenceLSTMOptions() const {
3383     return type == BuiltinOptions_UnidirectionalSequenceLSTMOptions ?
3384       reinterpret_cast<const tflite::UnidirectionalSequenceLSTMOptionsT *>(value) : nullptr;
3385   }
3386   tflite::FloorModOptionsT *AsFloorModOptions() {
3387     return type == BuiltinOptions_FloorModOptions ?
3388       reinterpret_cast<tflite::FloorModOptionsT *>(value) : nullptr;
3389   }
3390   const tflite::FloorModOptionsT *AsFloorModOptions() const {
3391     return type == BuiltinOptions_FloorModOptions ?
3392       reinterpret_cast<const tflite::FloorModOptionsT *>(value) : nullptr;
3393   }
3394   tflite::RangeOptionsT *AsRangeOptions() {
3395     return type == BuiltinOptions_RangeOptions ?
3396       reinterpret_cast<tflite::RangeOptionsT *>(value) : nullptr;
3397   }
3398   const tflite::RangeOptionsT *AsRangeOptions() const {
3399     return type == BuiltinOptions_RangeOptions ?
3400       reinterpret_cast<const tflite::RangeOptionsT *>(value) : nullptr;
3401   }
3402   tflite::ResizeNearestNeighborOptionsT *AsResizeNearestNeighborOptions() {
3403     return type == BuiltinOptions_ResizeNearestNeighborOptions ?
3404       reinterpret_cast<tflite::ResizeNearestNeighborOptionsT *>(value) : nullptr;
3405   }
3406   const tflite::ResizeNearestNeighborOptionsT *AsResizeNearestNeighborOptions() const {
3407     return type == BuiltinOptions_ResizeNearestNeighborOptions ?
3408       reinterpret_cast<const tflite::ResizeNearestNeighborOptionsT *>(value) : nullptr;
3409   }
3410   tflite::LeakyReluOptionsT *AsLeakyReluOptions() {
3411     return type == BuiltinOptions_LeakyReluOptions ?
3412       reinterpret_cast<tflite::LeakyReluOptionsT *>(value) : nullptr;
3413   }
3414   const tflite::LeakyReluOptionsT *AsLeakyReluOptions() const {
3415     return type == BuiltinOptions_LeakyReluOptions ?
3416       reinterpret_cast<const tflite::LeakyReluOptionsT *>(value) : nullptr;
3417   }
3418   tflite::SquaredDifferenceOptionsT *AsSquaredDifferenceOptions() {
3419     return type == BuiltinOptions_SquaredDifferenceOptions ?
3420       reinterpret_cast<tflite::SquaredDifferenceOptionsT *>(value) : nullptr;
3421   }
3422   const tflite::SquaredDifferenceOptionsT *AsSquaredDifferenceOptions() const {
3423     return type == BuiltinOptions_SquaredDifferenceOptions ?
3424       reinterpret_cast<const tflite::SquaredDifferenceOptionsT *>(value) : nullptr;
3425   }
3426   tflite::MirrorPadOptionsT *AsMirrorPadOptions() {
3427     return type == BuiltinOptions_MirrorPadOptions ?
3428       reinterpret_cast<tflite::MirrorPadOptionsT *>(value) : nullptr;
3429   }
3430   const tflite::MirrorPadOptionsT *AsMirrorPadOptions() const {
3431     return type == BuiltinOptions_MirrorPadOptions ?
3432       reinterpret_cast<const tflite::MirrorPadOptionsT *>(value) : nullptr;
3433   }
3434   tflite::AbsOptionsT *AsAbsOptions() {
3435     return type == BuiltinOptions_AbsOptions ?
3436       reinterpret_cast<tflite::AbsOptionsT *>(value) : nullptr;
3437   }
3438   const tflite::AbsOptionsT *AsAbsOptions() const {
3439     return type == BuiltinOptions_AbsOptions ?
3440       reinterpret_cast<const tflite::AbsOptionsT *>(value) : nullptr;
3441   }
3442   tflite::SplitVOptionsT *AsSplitVOptions() {
3443     return type == BuiltinOptions_SplitVOptions ?
3444       reinterpret_cast<tflite::SplitVOptionsT *>(value) : nullptr;
3445   }
3446   const tflite::SplitVOptionsT *AsSplitVOptions() const {
3447     return type == BuiltinOptions_SplitVOptions ?
3448       reinterpret_cast<const tflite::SplitVOptionsT *>(value) : nullptr;
3449   }
3450   tflite::UniqueOptionsT *AsUniqueOptions() {
3451     return type == BuiltinOptions_UniqueOptions ?
3452       reinterpret_cast<tflite::UniqueOptionsT *>(value) : nullptr;
3453   }
3454   const tflite::UniqueOptionsT *AsUniqueOptions() const {
3455     return type == BuiltinOptions_UniqueOptions ?
3456       reinterpret_cast<const tflite::UniqueOptionsT *>(value) : nullptr;
3457   }
3458   tflite::ReverseV2OptionsT *AsReverseV2Options() {
3459     return type == BuiltinOptions_ReverseV2Options ?
3460       reinterpret_cast<tflite::ReverseV2OptionsT *>(value) : nullptr;
3461   }
3462   const tflite::ReverseV2OptionsT *AsReverseV2Options() const {
3463     return type == BuiltinOptions_ReverseV2Options ?
3464       reinterpret_cast<const tflite::ReverseV2OptionsT *>(value) : nullptr;
3465   }
3466   tflite::AddNOptionsT *AsAddNOptions() {
3467     return type == BuiltinOptions_AddNOptions ?
3468       reinterpret_cast<tflite::AddNOptionsT *>(value) : nullptr;
3469   }
3470   const tflite::AddNOptionsT *AsAddNOptions() const {
3471     return type == BuiltinOptions_AddNOptions ?
3472       reinterpret_cast<const tflite::AddNOptionsT *>(value) : nullptr;
3473   }
3474   tflite::GatherNdOptionsT *AsGatherNdOptions() {
3475     return type == BuiltinOptions_GatherNdOptions ?
3476       reinterpret_cast<tflite::GatherNdOptionsT *>(value) : nullptr;
3477   }
3478   const tflite::GatherNdOptionsT *AsGatherNdOptions() const {
3479     return type == BuiltinOptions_GatherNdOptions ?
3480       reinterpret_cast<const tflite::GatherNdOptionsT *>(value) : nullptr;
3481   }
3482   tflite::CosOptionsT *AsCosOptions() {
3483     return type == BuiltinOptions_CosOptions ?
3484       reinterpret_cast<tflite::CosOptionsT *>(value) : nullptr;
3485   }
3486   const tflite::CosOptionsT *AsCosOptions() const {
3487     return type == BuiltinOptions_CosOptions ?
3488       reinterpret_cast<const tflite::CosOptionsT *>(value) : nullptr;
3489   }
3490   tflite::WhereOptionsT *AsWhereOptions() {
3491     return type == BuiltinOptions_WhereOptions ?
3492       reinterpret_cast<tflite::WhereOptionsT *>(value) : nullptr;
3493   }
3494   const tflite::WhereOptionsT *AsWhereOptions() const {
3495     return type == BuiltinOptions_WhereOptions ?
3496       reinterpret_cast<const tflite::WhereOptionsT *>(value) : nullptr;
3497   }
3498   tflite::RankOptionsT *AsRankOptions() {
3499     return type == BuiltinOptions_RankOptions ?
3500       reinterpret_cast<tflite::RankOptionsT *>(value) : nullptr;
3501   }
3502   const tflite::RankOptionsT *AsRankOptions() const {
3503     return type == BuiltinOptions_RankOptions ?
3504       reinterpret_cast<const tflite::RankOptionsT *>(value) : nullptr;
3505   }
3506   tflite::ReverseSequenceOptionsT *AsReverseSequenceOptions() {
3507     return type == BuiltinOptions_ReverseSequenceOptions ?
3508       reinterpret_cast<tflite::ReverseSequenceOptionsT *>(value) : nullptr;
3509   }
3510   const tflite::ReverseSequenceOptionsT *AsReverseSequenceOptions() const {
3511     return type == BuiltinOptions_ReverseSequenceOptions ?
3512       reinterpret_cast<const tflite::ReverseSequenceOptionsT *>(value) : nullptr;
3513   }
3514   tflite::MatrixDiagOptionsT *AsMatrixDiagOptions() {
3515     return type == BuiltinOptions_MatrixDiagOptions ?
3516       reinterpret_cast<tflite::MatrixDiagOptionsT *>(value) : nullptr;
3517   }
3518   const tflite::MatrixDiagOptionsT *AsMatrixDiagOptions() const {
3519     return type == BuiltinOptions_MatrixDiagOptions ?
3520       reinterpret_cast<const tflite::MatrixDiagOptionsT *>(value) : nullptr;
3521   }
3522   tflite::QuantizeOptionsT *AsQuantizeOptions() {
3523     return type == BuiltinOptions_QuantizeOptions ?
3524       reinterpret_cast<tflite::QuantizeOptionsT *>(value) : nullptr;
3525   }
3526   const tflite::QuantizeOptionsT *AsQuantizeOptions() const {
3527     return type == BuiltinOptions_QuantizeOptions ?
3528       reinterpret_cast<const tflite::QuantizeOptionsT *>(value) : nullptr;
3529   }
3530   tflite::MatrixSetDiagOptionsT *AsMatrixSetDiagOptions() {
3531     return type == BuiltinOptions_MatrixSetDiagOptions ?
3532       reinterpret_cast<tflite::MatrixSetDiagOptionsT *>(value) : nullptr;
3533   }
3534   const tflite::MatrixSetDiagOptionsT *AsMatrixSetDiagOptions() const {
3535     return type == BuiltinOptions_MatrixSetDiagOptions ?
3536       reinterpret_cast<const tflite::MatrixSetDiagOptionsT *>(value) : nullptr;
3537   }
3538   tflite::HardSwishOptionsT *AsHardSwishOptions() {
3539     return type == BuiltinOptions_HardSwishOptions ?
3540       reinterpret_cast<tflite::HardSwishOptionsT *>(value) : nullptr;
3541   }
3542   const tflite::HardSwishOptionsT *AsHardSwishOptions() const {
3543     return type == BuiltinOptions_HardSwishOptions ?
3544       reinterpret_cast<const tflite::HardSwishOptionsT *>(value) : nullptr;
3545   }
3546   tflite::IfOptionsT *AsIfOptions() {
3547     return type == BuiltinOptions_IfOptions ?
3548       reinterpret_cast<tflite::IfOptionsT *>(value) : nullptr;
3549   }
3550   const tflite::IfOptionsT *AsIfOptions() const {
3551     return type == BuiltinOptions_IfOptions ?
3552       reinterpret_cast<const tflite::IfOptionsT *>(value) : nullptr;
3553   }
3554   tflite::WhileOptionsT *AsWhileOptions() {
3555     return type == BuiltinOptions_WhileOptions ?
3556       reinterpret_cast<tflite::WhileOptionsT *>(value) : nullptr;
3557   }
3558   const tflite::WhileOptionsT *AsWhileOptions() const {
3559     return type == BuiltinOptions_WhileOptions ?
3560       reinterpret_cast<const tflite::WhileOptionsT *>(value) : nullptr;
3561   }
3562   tflite::DepthToSpaceOptionsT *AsDepthToSpaceOptions() {
3563     return type == BuiltinOptions_DepthToSpaceOptions ?
3564       reinterpret_cast<tflite::DepthToSpaceOptionsT *>(value) : nullptr;
3565   }
3566   const tflite::DepthToSpaceOptionsT *AsDepthToSpaceOptions() const {
3567     return type == BuiltinOptions_DepthToSpaceOptions ?
3568       reinterpret_cast<const tflite::DepthToSpaceOptionsT *>(value) : nullptr;
3569   }
3570   tflite::NonMaxSuppressionV4OptionsT *AsNonMaxSuppressionV4Options() {
3571     return type == BuiltinOptions_NonMaxSuppressionV4Options ?
3572       reinterpret_cast<tflite::NonMaxSuppressionV4OptionsT *>(value) : nullptr;
3573   }
3574   const tflite::NonMaxSuppressionV4OptionsT *AsNonMaxSuppressionV4Options() const {
3575     return type == BuiltinOptions_NonMaxSuppressionV4Options ?
3576       reinterpret_cast<const tflite::NonMaxSuppressionV4OptionsT *>(value) : nullptr;
3577   }
3578   tflite::NonMaxSuppressionV5OptionsT *AsNonMaxSuppressionV5Options() {
3579     return type == BuiltinOptions_NonMaxSuppressionV5Options ?
3580       reinterpret_cast<tflite::NonMaxSuppressionV5OptionsT *>(value) : nullptr;
3581   }
3582   const tflite::NonMaxSuppressionV5OptionsT *AsNonMaxSuppressionV5Options() const {
3583     return type == BuiltinOptions_NonMaxSuppressionV5Options ?
3584       reinterpret_cast<const tflite::NonMaxSuppressionV5OptionsT *>(value) : nullptr;
3585   }
3586   tflite::ScatterNdOptionsT *AsScatterNdOptions() {
3587     return type == BuiltinOptions_ScatterNdOptions ?
3588       reinterpret_cast<tflite::ScatterNdOptionsT *>(value) : nullptr;
3589   }
3590   const tflite::ScatterNdOptionsT *AsScatterNdOptions() const {
3591     return type == BuiltinOptions_ScatterNdOptions ?
3592       reinterpret_cast<const tflite::ScatterNdOptionsT *>(value) : nullptr;
3593   }
3594   tflite::SelectV2OptionsT *AsSelectV2Options() {
3595     return type == BuiltinOptions_SelectV2Options ?
3596       reinterpret_cast<tflite::SelectV2OptionsT *>(value) : nullptr;
3597   }
3598   const tflite::SelectV2OptionsT *AsSelectV2Options() const {
3599     return type == BuiltinOptions_SelectV2Options ?
3600       reinterpret_cast<const tflite::SelectV2OptionsT *>(value) : nullptr;
3601   }
3602   tflite::DensifyOptionsT *AsDensifyOptions() {
3603     return type == BuiltinOptions_DensifyOptions ?
3604       reinterpret_cast<tflite::DensifyOptionsT *>(value) : nullptr;
3605   }
3606   const tflite::DensifyOptionsT *AsDensifyOptions() const {
3607     return type == BuiltinOptions_DensifyOptions ?
3608       reinterpret_cast<const tflite::DensifyOptionsT *>(value) : nullptr;
3609   }
3610   tflite::SegmentSumOptionsT *AsSegmentSumOptions() {
3611     return type == BuiltinOptions_SegmentSumOptions ?
3612       reinterpret_cast<tflite::SegmentSumOptionsT *>(value) : nullptr;
3613   }
3614   const tflite::SegmentSumOptionsT *AsSegmentSumOptions() const {
3615     return type == BuiltinOptions_SegmentSumOptions ?
3616       reinterpret_cast<const tflite::SegmentSumOptionsT *>(value) : nullptr;
3617   }
3618   tflite::BatchMatMulOptionsT *AsBatchMatMulOptions() {
3619     return type == BuiltinOptions_BatchMatMulOptions ?
3620       reinterpret_cast<tflite::BatchMatMulOptionsT *>(value) : nullptr;
3621   }
3622   const tflite::BatchMatMulOptionsT *AsBatchMatMulOptions() const {
3623     return type == BuiltinOptions_BatchMatMulOptions ?
3624       reinterpret_cast<const tflite::BatchMatMulOptionsT *>(value) : nullptr;
3625   }
3626   tflite::CumsumOptionsT *AsCumsumOptions() {
3627     return type == BuiltinOptions_CumsumOptions ?
3628       reinterpret_cast<tflite::CumsumOptionsT *>(value) : nullptr;
3629   }
3630   const tflite::CumsumOptionsT *AsCumsumOptions() const {
3631     return type == BuiltinOptions_CumsumOptions ?
3632       reinterpret_cast<const tflite::CumsumOptionsT *>(value) : nullptr;
3633   }
3634   tflite::CallOnceOptionsT *AsCallOnceOptions() {
3635     return type == BuiltinOptions_CallOnceOptions ?
3636       reinterpret_cast<tflite::CallOnceOptionsT *>(value) : nullptr;
3637   }
3638   const tflite::CallOnceOptionsT *AsCallOnceOptions() const {
3639     return type == BuiltinOptions_CallOnceOptions ?
3640       reinterpret_cast<const tflite::CallOnceOptionsT *>(value) : nullptr;
3641   }
3642   tflite::BroadcastToOptionsT *AsBroadcastToOptions() {
3643     return type == BuiltinOptions_BroadcastToOptions ?
3644       reinterpret_cast<tflite::BroadcastToOptionsT *>(value) : nullptr;
3645   }
3646   const tflite::BroadcastToOptionsT *AsBroadcastToOptions() const {
3647     return type == BuiltinOptions_BroadcastToOptions ?
3648       reinterpret_cast<const tflite::BroadcastToOptionsT *>(value) : nullptr;
3649   }
3650   tflite::Rfft2dOptionsT *AsRfft2dOptions() {
3651     return type == BuiltinOptions_Rfft2dOptions ?
3652       reinterpret_cast<tflite::Rfft2dOptionsT *>(value) : nullptr;
3653   }
3654   const tflite::Rfft2dOptionsT *AsRfft2dOptions() const {
3655     return type == BuiltinOptions_Rfft2dOptions ?
3656       reinterpret_cast<const tflite::Rfft2dOptionsT *>(value) : nullptr;
3657   }
3658   tflite::Conv3DOptionsT *AsConv3DOptions() {
3659     return type == BuiltinOptions_Conv3DOptions ?
3660       reinterpret_cast<tflite::Conv3DOptionsT *>(value) : nullptr;
3661   }
3662   const tflite::Conv3DOptionsT *AsConv3DOptions() const {
3663     return type == BuiltinOptions_Conv3DOptions ?
3664       reinterpret_cast<const tflite::Conv3DOptionsT *>(value) : nullptr;
3665   }
3666   tflite::HashtableOptionsT *AsHashtableOptions() {
3667     return type == BuiltinOptions_HashtableOptions ?
3668       reinterpret_cast<tflite::HashtableOptionsT *>(value) : nullptr;
3669   }
3670   const tflite::HashtableOptionsT *AsHashtableOptions() const {
3671     return type == BuiltinOptions_HashtableOptions ?
3672       reinterpret_cast<const tflite::HashtableOptionsT *>(value) : nullptr;
3673   }
3674   tflite::HashtableFindOptionsT *AsHashtableFindOptions() {
3675     return type == BuiltinOptions_HashtableFindOptions ?
3676       reinterpret_cast<tflite::HashtableFindOptionsT *>(value) : nullptr;
3677   }
3678   const tflite::HashtableFindOptionsT *AsHashtableFindOptions() const {
3679     return type == BuiltinOptions_HashtableFindOptions ?
3680       reinterpret_cast<const tflite::HashtableFindOptionsT *>(value) : nullptr;
3681   }
3682   tflite::HashtableImportOptionsT *AsHashtableImportOptions() {
3683     return type == BuiltinOptions_HashtableImportOptions ?
3684       reinterpret_cast<tflite::HashtableImportOptionsT *>(value) : nullptr;
3685   }
3686   const tflite::HashtableImportOptionsT *AsHashtableImportOptions() const {
3687     return type == BuiltinOptions_HashtableImportOptions ?
3688       reinterpret_cast<const tflite::HashtableImportOptionsT *>(value) : nullptr;
3689   }
3690   tflite::HashtableSizeOptionsT *AsHashtableSizeOptions() {
3691     return type == BuiltinOptions_HashtableSizeOptions ?
3692       reinterpret_cast<tflite::HashtableSizeOptionsT *>(value) : nullptr;
3693   }
3694   const tflite::HashtableSizeOptionsT *AsHashtableSizeOptions() const {
3695     return type == BuiltinOptions_HashtableSizeOptions ?
3696       reinterpret_cast<const tflite::HashtableSizeOptionsT *>(value) : nullptr;
3697   }
3698   tflite::VarHandleOptionsT *AsVarHandleOptions() {
3699     return type == BuiltinOptions_VarHandleOptions ?
3700       reinterpret_cast<tflite::VarHandleOptionsT *>(value) : nullptr;
3701   }
3702   const tflite::VarHandleOptionsT *AsVarHandleOptions() const {
3703     return type == BuiltinOptions_VarHandleOptions ?
3704       reinterpret_cast<const tflite::VarHandleOptionsT *>(value) : nullptr;
3705   }
3706   tflite::ReadVariableOptionsT *AsReadVariableOptions() {
3707     return type == BuiltinOptions_ReadVariableOptions ?
3708       reinterpret_cast<tflite::ReadVariableOptionsT *>(value) : nullptr;
3709   }
3710   const tflite::ReadVariableOptionsT *AsReadVariableOptions() const {
3711     return type == BuiltinOptions_ReadVariableOptions ?
3712       reinterpret_cast<const tflite::ReadVariableOptionsT *>(value) : nullptr;
3713   }
3714   tflite::AssignVariableOptionsT *AsAssignVariableOptions() {
3715     return type == BuiltinOptions_AssignVariableOptions ?
3716       reinterpret_cast<tflite::AssignVariableOptionsT *>(value) : nullptr;
3717   }
3718   const tflite::AssignVariableOptionsT *AsAssignVariableOptions() const {
3719     return type == BuiltinOptions_AssignVariableOptions ?
3720       reinterpret_cast<const tflite::AssignVariableOptionsT *>(value) : nullptr;
3721   }
3722   tflite::RandomOptionsT *AsRandomOptions() {
3723     return type == BuiltinOptions_RandomOptions ?
3724       reinterpret_cast<tflite::RandomOptionsT *>(value) : nullptr;
3725   }
3726   const tflite::RandomOptionsT *AsRandomOptions() const {
3727     return type == BuiltinOptions_RandomOptions ?
3728       reinterpret_cast<const tflite::RandomOptionsT *>(value) : nullptr;
3729   }
3730   tflite::BucketizeOptionsT *AsBucketizeOptions() {
3731     return type == BuiltinOptions_BucketizeOptions ?
3732       reinterpret_cast<tflite::BucketizeOptionsT *>(value) : nullptr;
3733   }
3734   const tflite::BucketizeOptionsT *AsBucketizeOptions() const {
3735     return type == BuiltinOptions_BucketizeOptions ?
3736       reinterpret_cast<const tflite::BucketizeOptionsT *>(value) : nullptr;
3737   }
3738   tflite::GeluOptionsT *AsGeluOptions() {
3739     return type == BuiltinOptions_GeluOptions ?
3740       reinterpret_cast<tflite::GeluOptionsT *>(value) : nullptr;
3741   }
3742   const tflite::GeluOptionsT *AsGeluOptions() const {
3743     return type == BuiltinOptions_GeluOptions ?
3744       reinterpret_cast<const tflite::GeluOptionsT *>(value) : nullptr;
3745   }
3746   tflite::DynamicUpdateSliceOptionsT *AsDynamicUpdateSliceOptions() {
3747     return type == BuiltinOptions_DynamicUpdateSliceOptions ?
3748       reinterpret_cast<tflite::DynamicUpdateSliceOptionsT *>(value) : nullptr;
3749   }
3750   const tflite::DynamicUpdateSliceOptionsT *AsDynamicUpdateSliceOptions() const {
3751     return type == BuiltinOptions_DynamicUpdateSliceOptions ?
3752       reinterpret_cast<const tflite::DynamicUpdateSliceOptionsT *>(value) : nullptr;
3753   }
3754   tflite::UnsortedSegmentProdOptionsT *AsUnsortedSegmentProdOptions() {
3755     return type == BuiltinOptions_UnsortedSegmentProdOptions ?
3756       reinterpret_cast<tflite::UnsortedSegmentProdOptionsT *>(value) : nullptr;
3757   }
3758   const tflite::UnsortedSegmentProdOptionsT *AsUnsortedSegmentProdOptions() const {
3759     return type == BuiltinOptions_UnsortedSegmentProdOptions ?
3760       reinterpret_cast<const tflite::UnsortedSegmentProdOptionsT *>(value) : nullptr;
3761   }
3762   tflite::UnsortedSegmentMaxOptionsT *AsUnsortedSegmentMaxOptions() {
3763     return type == BuiltinOptions_UnsortedSegmentMaxOptions ?
3764       reinterpret_cast<tflite::UnsortedSegmentMaxOptionsT *>(value) : nullptr;
3765   }
3766   const tflite::UnsortedSegmentMaxOptionsT *AsUnsortedSegmentMaxOptions() const {
3767     return type == BuiltinOptions_UnsortedSegmentMaxOptions ?
3768       reinterpret_cast<const tflite::UnsortedSegmentMaxOptionsT *>(value) : nullptr;
3769   }
3770   tflite::UnsortedSegmentMinOptionsT *AsUnsortedSegmentMinOptions() {
3771     return type == BuiltinOptions_UnsortedSegmentMinOptions ?
3772       reinterpret_cast<tflite::UnsortedSegmentMinOptionsT *>(value) : nullptr;
3773   }
3774   const tflite::UnsortedSegmentMinOptionsT *AsUnsortedSegmentMinOptions() const {
3775     return type == BuiltinOptions_UnsortedSegmentMinOptions ?
3776       reinterpret_cast<const tflite::UnsortedSegmentMinOptionsT *>(value) : nullptr;
3777   }
3778   tflite::UnsortedSegmentSumOptionsT *AsUnsortedSegmentSumOptions() {
3779     return type == BuiltinOptions_UnsortedSegmentSumOptions ?
3780       reinterpret_cast<tflite::UnsortedSegmentSumOptionsT *>(value) : nullptr;
3781   }
3782   const tflite::UnsortedSegmentSumOptionsT *AsUnsortedSegmentSumOptions() const {
3783     return type == BuiltinOptions_UnsortedSegmentSumOptions ?
3784       reinterpret_cast<const tflite::UnsortedSegmentSumOptionsT *>(value) : nullptr;
3785   }
3786   tflite::ATan2OptionsT *AsATan2Options() {
3787     return type == BuiltinOptions_ATan2Options ?
3788       reinterpret_cast<tflite::ATan2OptionsT *>(value) : nullptr;
3789   }
3790   const tflite::ATan2OptionsT *AsATan2Options() const {
3791     return type == BuiltinOptions_ATan2Options ?
3792       reinterpret_cast<const tflite::ATan2OptionsT *>(value) : nullptr;
3793   }
3794   tflite::SignOptionsT *AsSignOptions() {
3795     return type == BuiltinOptions_SignOptions ?
3796       reinterpret_cast<tflite::SignOptionsT *>(value) : nullptr;
3797   }
3798   const tflite::SignOptionsT *AsSignOptions() const {
3799     return type == BuiltinOptions_SignOptions ?
3800       reinterpret_cast<const tflite::SignOptionsT *>(value) : nullptr;
3801   }
3802 };
3803 
3804 bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type);
3805 bool VerifyBuiltinOptionsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
3806 
3807 enum Padding : int8_t {
3808   Padding_SAME = 0,
3809   Padding_VALID = 1,
3810   Padding_MIN = Padding_SAME,
3811   Padding_MAX = Padding_VALID
3812 };
3813 
3814 inline const Padding (&EnumValuesPadding())[2] {
3815   static const Padding values[] = {
3816     Padding_SAME,
3817     Padding_VALID
3818   };
3819   return values;
3820 }
3821 
3822 inline const char * const *EnumNamesPadding() {
3823   static const char * const names[3] = {
3824     "SAME",
3825     "VALID",
3826     nullptr
3827   };
3828   return names;
3829 }
3830 
3831 inline const char *EnumNamePadding(Padding e) {
3832   if (flatbuffers::IsOutRange(e, Padding_SAME, Padding_VALID)) return "";
3833   const size_t index = static_cast<size_t>(e);
3834   return EnumNamesPadding()[index];
3835 }
3836 
3837 enum ActivationFunctionType : int8_t {
3838   ActivationFunctionType_NONE = 0,
3839   ActivationFunctionType_RELU = 1,
3840   ActivationFunctionType_RELU_N1_TO_1 = 2,
3841   ActivationFunctionType_RELU6 = 3,
3842   ActivationFunctionType_TANH = 4,
3843   ActivationFunctionType_SIGN_BIT = 5,
3844   ActivationFunctionType_MIN = ActivationFunctionType_NONE,
3845   ActivationFunctionType_MAX = ActivationFunctionType_SIGN_BIT
3846 };
3847 
3848 inline const ActivationFunctionType (&EnumValuesActivationFunctionType())[6] {
3849   static const ActivationFunctionType values[] = {
3850     ActivationFunctionType_NONE,
3851     ActivationFunctionType_RELU,
3852     ActivationFunctionType_RELU_N1_TO_1,
3853     ActivationFunctionType_RELU6,
3854     ActivationFunctionType_TANH,
3855     ActivationFunctionType_SIGN_BIT
3856   };
3857   return values;
3858 }
3859 
3860 inline const char * const *EnumNamesActivationFunctionType() {
3861   static const char * const names[7] = {
3862     "NONE",
3863     "RELU",
3864     "RELU_N1_TO_1",
3865     "RELU6",
3866     "TANH",
3867     "SIGN_BIT",
3868     nullptr
3869   };
3870   return names;
3871 }
3872 
3873 inline const char *EnumNameActivationFunctionType(ActivationFunctionType e) {
3874   if (flatbuffers::IsOutRange(e, ActivationFunctionType_NONE, ActivationFunctionType_SIGN_BIT)) return "";
3875   const size_t index = static_cast<size_t>(e);
3876   return EnumNamesActivationFunctionType()[index];
3877 }
3878 
3879 enum LSHProjectionType : int8_t {
3880   LSHProjectionType_UNKNOWN = 0,
3881   LSHProjectionType_SPARSE = 1,
3882   LSHProjectionType_DENSE = 2,
3883   LSHProjectionType_MIN = LSHProjectionType_UNKNOWN,
3884   LSHProjectionType_MAX = LSHProjectionType_DENSE
3885 };
3886 
3887 inline const LSHProjectionType (&EnumValuesLSHProjectionType())[3] {
3888   static const LSHProjectionType values[] = {
3889     LSHProjectionType_UNKNOWN,
3890     LSHProjectionType_SPARSE,
3891     LSHProjectionType_DENSE
3892   };
3893   return values;
3894 }
3895 
3896 inline const char * const *EnumNamesLSHProjectionType() {
3897   static const char * const names[4] = {
3898     "UNKNOWN",
3899     "SPARSE",
3900     "DENSE",
3901     nullptr
3902   };
3903   return names;
3904 }
3905 
3906 inline const char *EnumNameLSHProjectionType(LSHProjectionType e) {
3907   if (flatbuffers::IsOutRange(e, LSHProjectionType_UNKNOWN, LSHProjectionType_DENSE)) return "";
3908   const size_t index = static_cast<size_t>(e);
3909   return EnumNamesLSHProjectionType()[index];
3910 }
3911 
3912 enum FullyConnectedOptionsWeightsFormat : int8_t {
3913   FullyConnectedOptionsWeightsFormat_DEFAULT = 0,
3914   FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8 = 1,
3915   FullyConnectedOptionsWeightsFormat_MIN = FullyConnectedOptionsWeightsFormat_DEFAULT,
3916   FullyConnectedOptionsWeightsFormat_MAX = FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8
3917 };
3918 
3919 inline const FullyConnectedOptionsWeightsFormat (&EnumValuesFullyConnectedOptionsWeightsFormat())[2] {
3920   static const FullyConnectedOptionsWeightsFormat values[] = {
3921     FullyConnectedOptionsWeightsFormat_DEFAULT,
3922     FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8
3923   };
3924   return values;
3925 }
3926 
3927 inline const char * const *EnumNamesFullyConnectedOptionsWeightsFormat() {
3928   static const char * const names[3] = {
3929     "DEFAULT",
3930     "SHUFFLED4x16INT8",
3931     nullptr
3932   };
3933   return names;
3934 }
3935 
3936 inline const char *EnumNameFullyConnectedOptionsWeightsFormat(FullyConnectedOptionsWeightsFormat e) {
3937   if (flatbuffers::IsOutRange(e, FullyConnectedOptionsWeightsFormat_DEFAULT, FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8)) return "";
3938   const size_t index = static_cast<size_t>(e);
3939   return EnumNamesFullyConnectedOptionsWeightsFormat()[index];
3940 }
3941 
3942 enum LSTMKernelType : int8_t {
3943   LSTMKernelType_FULL = 0,
3944   LSTMKernelType_BASIC = 1,
3945   LSTMKernelType_MIN = LSTMKernelType_FULL,
3946   LSTMKernelType_MAX = LSTMKernelType_BASIC
3947 };
3948 
3949 inline const LSTMKernelType (&EnumValuesLSTMKernelType())[2] {
3950   static const LSTMKernelType values[] = {
3951     LSTMKernelType_FULL,
3952     LSTMKernelType_BASIC
3953   };
3954   return values;
3955 }
3956 
3957 inline const char * const *EnumNamesLSTMKernelType() {
3958   static const char * const names[3] = {
3959     "FULL",
3960     "BASIC",
3961     nullptr
3962   };
3963   return names;
3964 }
3965 
3966 inline const char *EnumNameLSTMKernelType(LSTMKernelType e) {
3967   if (flatbuffers::IsOutRange(e, LSTMKernelType_FULL, LSTMKernelType_BASIC)) return "";
3968   const size_t index = static_cast<size_t>(e);
3969   return EnumNamesLSTMKernelType()[index];
3970 }
3971 
3972 enum CombinerType : int8_t {
3973   CombinerType_SUM = 0,
3974   CombinerType_MEAN = 1,
3975   CombinerType_SQRTN = 2,
3976   CombinerType_MIN = CombinerType_SUM,
3977   CombinerType_MAX = CombinerType_SQRTN
3978 };
3979 
3980 inline const CombinerType (&EnumValuesCombinerType())[3] {
3981   static const CombinerType values[] = {
3982     CombinerType_SUM,
3983     CombinerType_MEAN,
3984     CombinerType_SQRTN
3985   };
3986   return values;
3987 }
3988 
3989 inline const char * const *EnumNamesCombinerType() {
3990   static const char * const names[4] = {
3991     "SUM",
3992     "MEAN",
3993     "SQRTN",
3994     nullptr
3995   };
3996   return names;
3997 }
3998 
3999 inline const char *EnumNameCombinerType(CombinerType e) {
4000   if (flatbuffers::IsOutRange(e, CombinerType_SUM, CombinerType_SQRTN)) return "";
4001   const size_t index = static_cast<size_t>(e);
4002   return EnumNamesCombinerType()[index];
4003 }
4004 
4005 enum MirrorPadMode : int8_t {
4006   MirrorPadMode_REFLECT = 0,
4007   MirrorPadMode_SYMMETRIC = 1,
4008   MirrorPadMode_MIN = MirrorPadMode_REFLECT,
4009   MirrorPadMode_MAX = MirrorPadMode_SYMMETRIC
4010 };
4011 
4012 inline const MirrorPadMode (&EnumValuesMirrorPadMode())[2] {
4013   static const MirrorPadMode values[] = {
4014     MirrorPadMode_REFLECT,
4015     MirrorPadMode_SYMMETRIC
4016   };
4017   return values;
4018 }
4019 
4020 inline const char * const *EnumNamesMirrorPadMode() {
4021   static const char * const names[3] = {
4022     "REFLECT",
4023     "SYMMETRIC",
4024     nullptr
4025   };
4026   return names;
4027 }
4028 
4029 inline const char *EnumNameMirrorPadMode(MirrorPadMode e) {
4030   if (flatbuffers::IsOutRange(e, MirrorPadMode_REFLECT, MirrorPadMode_SYMMETRIC)) return "";
4031   const size_t index = static_cast<size_t>(e);
4032   return EnumNamesMirrorPadMode()[index];
4033 }
4034 
4035 enum CustomOptionsFormat : int8_t {
4036   CustomOptionsFormat_FLEXBUFFERS = 0,
4037   CustomOptionsFormat_MIN = CustomOptionsFormat_FLEXBUFFERS,
4038   CustomOptionsFormat_MAX = CustomOptionsFormat_FLEXBUFFERS
4039 };
4040 
4041 inline const CustomOptionsFormat (&EnumValuesCustomOptionsFormat())[1] {
4042   static const CustomOptionsFormat values[] = {
4043     CustomOptionsFormat_FLEXBUFFERS
4044   };
4045   return values;
4046 }
4047 
4048 inline const char * const *EnumNamesCustomOptionsFormat() {
4049   static const char * const names[2] = {
4050     "FLEXBUFFERS",
4051     nullptr
4052   };
4053   return names;
4054 }
4055 
4056 inline const char *EnumNameCustomOptionsFormat(CustomOptionsFormat e) {
4057   if (flatbuffers::IsOutRange(e, CustomOptionsFormat_FLEXBUFFERS, CustomOptionsFormat_FLEXBUFFERS)) return "";
4058   const size_t index = static_cast<size_t>(e);
4059   return EnumNamesCustomOptionsFormat()[index];
4060 }
4061 
4062 struct CustomQuantizationT : public flatbuffers::NativeTable {
4063   typedef CustomQuantization TableType;
4064   std::vector<uint8_t> custom{};
4065 };
4066 
4067 struct CustomQuantization FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4068   typedef CustomQuantizationT NativeTableType;
4069   typedef CustomQuantizationBuilder Builder;
4070   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4071     VT_CUSTOM = 4
4072   };
4073   const flatbuffers::Vector<uint8_t> *custom() const {
4074     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CUSTOM);
4075   }
4076   flatbuffers::Vector<uint8_t> *mutable_custom() {
4077     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_CUSTOM);
4078   }
4079   bool Verify(flatbuffers::Verifier &verifier) const {
4080     return VerifyTableStart(verifier) &&
4081            VerifyOffset(verifier, VT_CUSTOM) &&
4082            verifier.VerifyVector(custom()) &&
4083            verifier.EndTable();
4084   }
4085   CustomQuantizationT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4086   void UnPackTo(CustomQuantizationT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4087   static flatbuffers::Offset<CustomQuantization> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4088 };
4089 
4090 struct CustomQuantizationBuilder {
4091   typedef CustomQuantization Table;
4092   flatbuffers::FlatBufferBuilder &fbb_;
4093   flatbuffers::uoffset_t start_;
4094   void add_custom(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom) {
4095     fbb_.AddOffset(CustomQuantization::VT_CUSTOM, custom);
4096   }
4097   explicit CustomQuantizationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4098         : fbb_(_fbb) {
4099     start_ = fbb_.StartTable();
4100   }
4101   flatbuffers::Offset<CustomQuantization> Finish() {
4102     const auto end = fbb_.EndTable(start_);
4103     auto o = flatbuffers::Offset<CustomQuantization>(end);
4104     return o;
4105   }
4106 };
4107 
4108 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(
4109     flatbuffers::FlatBufferBuilder &_fbb,
4110     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom = 0) {
4111   CustomQuantizationBuilder builder_(_fbb);
4112   builder_.add_custom(custom);
4113   return builder_.Finish();
4114 }
4115 
4116 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantizationDirect(
4117     flatbuffers::FlatBufferBuilder &_fbb,
4118     const std::vector<uint8_t> *custom = nullptr) {
4119   if (custom) { _fbb.ForceVectorAlignment(custom->size(), sizeof(uint8_t), 16); }
4120   auto custom__ = custom ? _fbb.CreateVector<uint8_t>(*custom) : 0;
4121   return tflite::CreateCustomQuantization(
4122       _fbb,
4123       custom__);
4124 }
4125 
4126 flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4127 
4128 struct QuantizationParametersT : public flatbuffers::NativeTable {
4129   typedef QuantizationParameters TableType;
4130   std::vector<float> min{};
4131   std::vector<float> max{};
4132   std::vector<float> scale{};
4133   std::vector<int64_t> zero_point{};
4134   tflite::QuantizationDetailsUnion details{};
4135   int32_t quantized_dimension = 0;
4136 };
4137 
4138 struct QuantizationParameters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4139   typedef QuantizationParametersT NativeTableType;
4140   typedef QuantizationParametersBuilder Builder;
4141   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4142     VT_MIN = 4,
4143     VT_MAX = 6,
4144     VT_SCALE = 8,
4145     VT_ZERO_POINT = 10,
4146     VT_DETAILS_TYPE = 12,
4147     VT_DETAILS = 14,
4148     VT_QUANTIZED_DIMENSION = 16
4149   };
4150   const flatbuffers::Vector<float> *min() const {
4151     return GetPointer<const flatbuffers::Vector<float> *>(VT_MIN);
4152   }
4153   flatbuffers::Vector<float> *mutable_min() {
4154     return GetPointer<flatbuffers::Vector<float> *>(VT_MIN);
4155   }
4156   const flatbuffers::Vector<float> *max() const {
4157     return GetPointer<const flatbuffers::Vector<float> *>(VT_MAX);
4158   }
4159   flatbuffers::Vector<float> *mutable_max() {
4160     return GetPointer<flatbuffers::Vector<float> *>(VT_MAX);
4161   }
4162   const flatbuffers::Vector<float> *scale() const {
4163     return GetPointer<const flatbuffers::Vector<float> *>(VT_SCALE);
4164   }
4165   flatbuffers::Vector<float> *mutable_scale() {
4166     return GetPointer<flatbuffers::Vector<float> *>(VT_SCALE);
4167   }
4168   const flatbuffers::Vector<int64_t> *zero_point() const {
4169     return GetPointer<const flatbuffers::Vector<int64_t> *>(VT_ZERO_POINT);
4170   }
4171   flatbuffers::Vector<int64_t> *mutable_zero_point() {
4172     return GetPointer<flatbuffers::Vector<int64_t> *>(VT_ZERO_POINT);
4173   }
4174   tflite::QuantizationDetails details_type() const {
4175     return static_cast<tflite::QuantizationDetails>(GetField<uint8_t>(VT_DETAILS_TYPE, 0));
4176   }
4177   const void *details() const {
4178     return GetPointer<const void *>(VT_DETAILS);
4179   }
4180   template<typename T> const T *details_as() const;
4181   const tflite::CustomQuantization *details_as_CustomQuantization() const {
4182     return details_type() == tflite::QuantizationDetails_CustomQuantization ? static_cast<const tflite::CustomQuantization *>(details()) : nullptr;
4183   }
4184   void *mutable_details() {
4185     return GetPointer<void *>(VT_DETAILS);
4186   }
4187   int32_t quantized_dimension() const {
4188     return GetField<int32_t>(VT_QUANTIZED_DIMENSION, 0);
4189   }
4190   bool mutate_quantized_dimension(int32_t _quantized_dimension = 0) {
4191     return SetField<int32_t>(VT_QUANTIZED_DIMENSION, _quantized_dimension, 0);
4192   }
4193   bool Verify(flatbuffers::Verifier &verifier) const {
4194     return VerifyTableStart(verifier) &&
4195            VerifyOffset(verifier, VT_MIN) &&
4196            verifier.VerifyVector(min()) &&
4197            VerifyOffset(verifier, VT_MAX) &&
4198            verifier.VerifyVector(max()) &&
4199            VerifyOffset(verifier, VT_SCALE) &&
4200            verifier.VerifyVector(scale()) &&
4201            VerifyOffset(verifier, VT_ZERO_POINT) &&
4202            verifier.VerifyVector(zero_point()) &&
4203            VerifyField<uint8_t>(verifier, VT_DETAILS_TYPE, 1) &&
4204            VerifyOffset(verifier, VT_DETAILS) &&
4205            VerifyQuantizationDetails(verifier, details(), details_type()) &&
4206            VerifyField<int32_t>(verifier, VT_QUANTIZED_DIMENSION, 4) &&
4207            verifier.EndTable();
4208   }
4209   QuantizationParametersT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4210   void UnPackTo(QuantizationParametersT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4211   static flatbuffers::Offset<QuantizationParameters> Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4212 };
4213 
4214 template<> inline const tflite::CustomQuantization *QuantizationParameters::details_as<tflite::CustomQuantization>() const {
4215   return details_as_CustomQuantization();
4216 }
4217 
4218 struct QuantizationParametersBuilder {
4219   typedef QuantizationParameters Table;
4220   flatbuffers::FlatBufferBuilder &fbb_;
4221   flatbuffers::uoffset_t start_;
4222   void add_min(flatbuffers::Offset<flatbuffers::Vector<float>> min) {
4223     fbb_.AddOffset(QuantizationParameters::VT_MIN, min);
4224   }
4225   void add_max(flatbuffers::Offset<flatbuffers::Vector<float>> max) {
4226     fbb_.AddOffset(QuantizationParameters::VT_MAX, max);
4227   }
4228   void add_scale(flatbuffers::Offset<flatbuffers::Vector<float>> scale) {
4229     fbb_.AddOffset(QuantizationParameters::VT_SCALE, scale);
4230   }
4231   void add_zero_point(flatbuffers::Offset<flatbuffers::Vector<int64_t>> zero_point) {
4232     fbb_.AddOffset(QuantizationParameters::VT_ZERO_POINT, zero_point);
4233   }
4234   void add_details_type(tflite::QuantizationDetails details_type) {
4235     fbb_.AddElement<uint8_t>(QuantizationParameters::VT_DETAILS_TYPE, static_cast<uint8_t>(details_type), 0);
4236   }
4237   void add_details(flatbuffers::Offset<void> details) {
4238     fbb_.AddOffset(QuantizationParameters::VT_DETAILS, details);
4239   }
4240   void add_quantized_dimension(int32_t quantized_dimension) {
4241     fbb_.AddElement<int32_t>(QuantizationParameters::VT_QUANTIZED_DIMENSION, quantized_dimension, 0);
4242   }
4243   explicit QuantizationParametersBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4244         : fbb_(_fbb) {
4245     start_ = fbb_.StartTable();
4246   }
4247   flatbuffers::Offset<QuantizationParameters> Finish() {
4248     const auto end = fbb_.EndTable(start_);
4249     auto o = flatbuffers::Offset<QuantizationParameters>(end);
4250     return o;
4251   }
4252 };
4253 
4254 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(
4255     flatbuffers::FlatBufferBuilder &_fbb,
4256     flatbuffers::Offset<flatbuffers::Vector<float>> min = 0,
4257     flatbuffers::Offset<flatbuffers::Vector<float>> max = 0,
4258     flatbuffers::Offset<flatbuffers::Vector<float>> scale = 0,
4259     flatbuffers::Offset<flatbuffers::Vector<int64_t>> zero_point = 0,
4260     tflite::QuantizationDetails details_type = tflite::QuantizationDetails_NONE,
4261     flatbuffers::Offset<void> details = 0,
4262     int32_t quantized_dimension = 0) {
4263   QuantizationParametersBuilder builder_(_fbb);
4264   builder_.add_quantized_dimension(quantized_dimension);
4265   builder_.add_details(details);
4266   builder_.add_zero_point(zero_point);
4267   builder_.add_scale(scale);
4268   builder_.add_max(max);
4269   builder_.add_min(min);
4270   builder_.add_details_type(details_type);
4271   return builder_.Finish();
4272 }
4273 
4274 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParametersDirect(
4275     flatbuffers::FlatBufferBuilder &_fbb,
4276     const std::vector<float> *min = nullptr,
4277     const std::vector<float> *max = nullptr,
4278     const std::vector<float> *scale = nullptr,
4279     const std::vector<int64_t> *zero_point = nullptr,
4280     tflite::QuantizationDetails details_type = tflite::QuantizationDetails_NONE,
4281     flatbuffers::Offset<void> details = 0,
4282     int32_t quantized_dimension = 0) {
4283   auto min__ = min ? _fbb.CreateVector<float>(*min) : 0;
4284   auto max__ = max ? _fbb.CreateVector<float>(*max) : 0;
4285   auto scale__ = scale ? _fbb.CreateVector<float>(*scale) : 0;
4286   auto zero_point__ = zero_point ? _fbb.CreateVector<int64_t>(*zero_point) : 0;
4287   return tflite::CreateQuantizationParameters(
4288       _fbb,
4289       min__,
4290       max__,
4291       scale__,
4292       zero_point__,
4293       details_type,
4294       details,
4295       quantized_dimension);
4296 }
4297 
4298 flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4299 
4300 struct Int32VectorT : public flatbuffers::NativeTable {
4301   typedef Int32Vector TableType;
4302   std::vector<int32_t> values{};
4303 };
4304 
4305 struct Int32Vector FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4306   typedef Int32VectorT NativeTableType;
4307   typedef Int32VectorBuilder Builder;
4308   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4309     VT_VALUES = 4
4310   };
4311   const flatbuffers::Vector<int32_t> *values() const {
4312     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_VALUES);
4313   }
4314   flatbuffers::Vector<int32_t> *mutable_values() {
4315     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_VALUES);
4316   }
4317   bool Verify(flatbuffers::Verifier &verifier) const {
4318     return VerifyTableStart(verifier) &&
4319            VerifyOffset(verifier, VT_VALUES) &&
4320            verifier.VerifyVector(values()) &&
4321            verifier.EndTable();
4322   }
4323   Int32VectorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4324   void UnPackTo(Int32VectorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4325   static flatbuffers::Offset<Int32Vector> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Int32VectorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4326 };
4327 
4328 struct Int32VectorBuilder {
4329   typedef Int32Vector Table;
4330   flatbuffers::FlatBufferBuilder &fbb_;
4331   flatbuffers::uoffset_t start_;
4332   void add_values(flatbuffers::Offset<flatbuffers::Vector<int32_t>> values) {
4333     fbb_.AddOffset(Int32Vector::VT_VALUES, values);
4334   }
4335   explicit Int32VectorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4336         : fbb_(_fbb) {
4337     start_ = fbb_.StartTable();
4338   }
4339   flatbuffers::Offset<Int32Vector> Finish() {
4340     const auto end = fbb_.EndTable(start_);
4341     auto o = flatbuffers::Offset<Int32Vector>(end);
4342     return o;
4343   }
4344 };
4345 
4346 inline flatbuffers::Offset<Int32Vector> CreateInt32Vector(
4347     flatbuffers::FlatBufferBuilder &_fbb,
4348     flatbuffers::Offset<flatbuffers::Vector<int32_t>> values = 0) {
4349   Int32VectorBuilder builder_(_fbb);
4350   builder_.add_values(values);
4351   return builder_.Finish();
4352 }
4353 
4354 inline flatbuffers::Offset<Int32Vector> CreateInt32VectorDirect(
4355     flatbuffers::FlatBufferBuilder &_fbb,
4356     const std::vector<int32_t> *values = nullptr) {
4357   auto values__ = values ? _fbb.CreateVector<int32_t>(*values) : 0;
4358   return tflite::CreateInt32Vector(
4359       _fbb,
4360       values__);
4361 }
4362 
4363 flatbuffers::Offset<Int32Vector> CreateInt32Vector(flatbuffers::FlatBufferBuilder &_fbb, const Int32VectorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4364 
4365 struct Uint16VectorT : public flatbuffers::NativeTable {
4366   typedef Uint16Vector TableType;
4367   std::vector<uint16_t> values{};
4368 };
4369 
4370 struct Uint16Vector FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4371   typedef Uint16VectorT NativeTableType;
4372   typedef Uint16VectorBuilder Builder;
4373   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4374     VT_VALUES = 4
4375   };
4376   const flatbuffers::Vector<uint16_t> *values() const {
4377     return GetPointer<const flatbuffers::Vector<uint16_t> *>(VT_VALUES);
4378   }
4379   flatbuffers::Vector<uint16_t> *mutable_values() {
4380     return GetPointer<flatbuffers::Vector<uint16_t> *>(VT_VALUES);
4381   }
4382   bool Verify(flatbuffers::Verifier &verifier) const {
4383     return VerifyTableStart(verifier) &&
4384            VerifyOffset(verifier, VT_VALUES) &&
4385            verifier.VerifyVector(values()) &&
4386            verifier.EndTable();
4387   }
4388   Uint16VectorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4389   void UnPackTo(Uint16VectorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4390   static flatbuffers::Offset<Uint16Vector> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Uint16VectorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4391 };
4392 
4393 struct Uint16VectorBuilder {
4394   typedef Uint16Vector Table;
4395   flatbuffers::FlatBufferBuilder &fbb_;
4396   flatbuffers::uoffset_t start_;
4397   void add_values(flatbuffers::Offset<flatbuffers::Vector<uint16_t>> values) {
4398     fbb_.AddOffset(Uint16Vector::VT_VALUES, values);
4399   }
4400   explicit Uint16VectorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4401         : fbb_(_fbb) {
4402     start_ = fbb_.StartTable();
4403   }
4404   flatbuffers::Offset<Uint16Vector> Finish() {
4405     const auto end = fbb_.EndTable(start_);
4406     auto o = flatbuffers::Offset<Uint16Vector>(end);
4407     return o;
4408   }
4409 };
4410 
4411 inline flatbuffers::Offset<Uint16Vector> CreateUint16Vector(
4412     flatbuffers::FlatBufferBuilder &_fbb,
4413     flatbuffers::Offset<flatbuffers::Vector<uint16_t>> values = 0) {
4414   Uint16VectorBuilder builder_(_fbb);
4415   builder_.add_values(values);
4416   return builder_.Finish();
4417 }
4418 
4419 inline flatbuffers::Offset<Uint16Vector> CreateUint16VectorDirect(
4420     flatbuffers::FlatBufferBuilder &_fbb,
4421     const std::vector<uint16_t> *values = nullptr) {
4422   if (values) { _fbb.ForceVectorAlignment(values->size(), sizeof(uint16_t), 4); }
4423   auto values__ = values ? _fbb.CreateVector<uint16_t>(*values) : 0;
4424   return tflite::CreateUint16Vector(
4425       _fbb,
4426       values__);
4427 }
4428 
4429 flatbuffers::Offset<Uint16Vector> CreateUint16Vector(flatbuffers::FlatBufferBuilder &_fbb, const Uint16VectorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4430 
4431 struct Uint8VectorT : public flatbuffers::NativeTable {
4432   typedef Uint8Vector TableType;
4433   std::vector<uint8_t> values{};
4434 };
4435 
4436 struct Uint8Vector FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4437   typedef Uint8VectorT NativeTableType;
4438   typedef Uint8VectorBuilder Builder;
4439   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4440     VT_VALUES = 4
4441   };
4442   const flatbuffers::Vector<uint8_t> *values() const {
4443     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_VALUES);
4444   }
4445   flatbuffers::Vector<uint8_t> *mutable_values() {
4446     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_VALUES);
4447   }
4448   bool Verify(flatbuffers::Verifier &verifier) const {
4449     return VerifyTableStart(verifier) &&
4450            VerifyOffset(verifier, VT_VALUES) &&
4451            verifier.VerifyVector(values()) &&
4452            verifier.EndTable();
4453   }
4454   Uint8VectorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4455   void UnPackTo(Uint8VectorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4456   static flatbuffers::Offset<Uint8Vector> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Uint8VectorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4457 };
4458 
4459 struct Uint8VectorBuilder {
4460   typedef Uint8Vector Table;
4461   flatbuffers::FlatBufferBuilder &fbb_;
4462   flatbuffers::uoffset_t start_;
4463   void add_values(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> values) {
4464     fbb_.AddOffset(Uint8Vector::VT_VALUES, values);
4465   }
4466   explicit Uint8VectorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4467         : fbb_(_fbb) {
4468     start_ = fbb_.StartTable();
4469   }
4470   flatbuffers::Offset<Uint8Vector> Finish() {
4471     const auto end = fbb_.EndTable(start_);
4472     auto o = flatbuffers::Offset<Uint8Vector>(end);
4473     return o;
4474   }
4475 };
4476 
4477 inline flatbuffers::Offset<Uint8Vector> CreateUint8Vector(
4478     flatbuffers::FlatBufferBuilder &_fbb,
4479     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> values = 0) {
4480   Uint8VectorBuilder builder_(_fbb);
4481   builder_.add_values(values);
4482   return builder_.Finish();
4483 }
4484 
4485 inline flatbuffers::Offset<Uint8Vector> CreateUint8VectorDirect(
4486     flatbuffers::FlatBufferBuilder &_fbb,
4487     const std::vector<uint8_t> *values = nullptr) {
4488   if (values) { _fbb.ForceVectorAlignment(values->size(), sizeof(uint8_t), 4); }
4489   auto values__ = values ? _fbb.CreateVector<uint8_t>(*values) : 0;
4490   return tflite::CreateUint8Vector(
4491       _fbb,
4492       values__);
4493 }
4494 
4495 flatbuffers::Offset<Uint8Vector> CreateUint8Vector(flatbuffers::FlatBufferBuilder &_fbb, const Uint8VectorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4496 
4497 struct DimensionMetadataT : public flatbuffers::NativeTable {
4498   typedef DimensionMetadata TableType;
4499   tflite::DimensionType format = tflite::DimensionType_DENSE;
4500   int32_t dense_size = 0;
4501   tflite::SparseIndexVectorUnion array_segments{};
4502   tflite::SparseIndexVectorUnion array_indices{};
4503 };
4504 
4505 struct DimensionMetadata FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4506   typedef DimensionMetadataT NativeTableType;
4507   typedef DimensionMetadataBuilder Builder;
4508   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4509     VT_FORMAT = 4,
4510     VT_DENSE_SIZE = 6,
4511     VT_ARRAY_SEGMENTS_TYPE = 8,
4512     VT_ARRAY_SEGMENTS = 10,
4513     VT_ARRAY_INDICES_TYPE = 12,
4514     VT_ARRAY_INDICES = 14
4515   };
4516   tflite::DimensionType format() const {
4517     return static_cast<tflite::DimensionType>(GetField<int8_t>(VT_FORMAT, 0));
4518   }
4519   bool mutate_format(tflite::DimensionType _format = static_cast<tflite::DimensionType>(0)) {
4520     return SetField<int8_t>(VT_FORMAT, static_cast<int8_t>(_format), 0);
4521   }
4522   int32_t dense_size() const {
4523     return GetField<int32_t>(VT_DENSE_SIZE, 0);
4524   }
4525   bool mutate_dense_size(int32_t _dense_size = 0) {
4526     return SetField<int32_t>(VT_DENSE_SIZE, _dense_size, 0);
4527   }
4528   tflite::SparseIndexVector array_segments_type() const {
4529     return static_cast<tflite::SparseIndexVector>(GetField<uint8_t>(VT_ARRAY_SEGMENTS_TYPE, 0));
4530   }
4531   const void *array_segments() const {
4532     return GetPointer<const void *>(VT_ARRAY_SEGMENTS);
4533   }
4534   template<typename T> const T *array_segments_as() const;
4535   const tflite::Int32Vector *array_segments_as_Int32Vector() const {
4536     return array_segments_type() == tflite::SparseIndexVector_Int32Vector ? static_cast<const tflite::Int32Vector *>(array_segments()) : nullptr;
4537   }
4538   const tflite::Uint16Vector *array_segments_as_Uint16Vector() const {
4539     return array_segments_type() == tflite::SparseIndexVector_Uint16Vector ? static_cast<const tflite::Uint16Vector *>(array_segments()) : nullptr;
4540   }
4541   const tflite::Uint8Vector *array_segments_as_Uint8Vector() const {
4542     return array_segments_type() == tflite::SparseIndexVector_Uint8Vector ? static_cast<const tflite::Uint8Vector *>(array_segments()) : nullptr;
4543   }
4544   void *mutable_array_segments() {
4545     return GetPointer<void *>(VT_ARRAY_SEGMENTS);
4546   }
4547   tflite::SparseIndexVector array_indices_type() const {
4548     return static_cast<tflite::SparseIndexVector>(GetField<uint8_t>(VT_ARRAY_INDICES_TYPE, 0));
4549   }
4550   const void *array_indices() const {
4551     return GetPointer<const void *>(VT_ARRAY_INDICES);
4552   }
4553   template<typename T> const T *array_indices_as() const;
4554   const tflite::Int32Vector *array_indices_as_Int32Vector() const {
4555     return array_indices_type() == tflite::SparseIndexVector_Int32Vector ? static_cast<const tflite::Int32Vector *>(array_indices()) : nullptr;
4556   }
4557   const tflite::Uint16Vector *array_indices_as_Uint16Vector() const {
4558     return array_indices_type() == tflite::SparseIndexVector_Uint16Vector ? static_cast<const tflite::Uint16Vector *>(array_indices()) : nullptr;
4559   }
4560   const tflite::Uint8Vector *array_indices_as_Uint8Vector() const {
4561     return array_indices_type() == tflite::SparseIndexVector_Uint8Vector ? static_cast<const tflite::Uint8Vector *>(array_indices()) : nullptr;
4562   }
4563   void *mutable_array_indices() {
4564     return GetPointer<void *>(VT_ARRAY_INDICES);
4565   }
4566   bool Verify(flatbuffers::Verifier &verifier) const {
4567     return VerifyTableStart(verifier) &&
4568            VerifyField<int8_t>(verifier, VT_FORMAT, 1) &&
4569            VerifyField<int32_t>(verifier, VT_DENSE_SIZE, 4) &&
4570            VerifyField<uint8_t>(verifier, VT_ARRAY_SEGMENTS_TYPE, 1) &&
4571            VerifyOffset(verifier, VT_ARRAY_SEGMENTS) &&
4572            VerifySparseIndexVector(verifier, array_segments(), array_segments_type()) &&
4573            VerifyField<uint8_t>(verifier, VT_ARRAY_INDICES_TYPE, 1) &&
4574            VerifyOffset(verifier, VT_ARRAY_INDICES) &&
4575            VerifySparseIndexVector(verifier, array_indices(), array_indices_type()) &&
4576            verifier.EndTable();
4577   }
4578   DimensionMetadataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4579   void UnPackTo(DimensionMetadataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4580   static flatbuffers::Offset<DimensionMetadata> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DimensionMetadataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4581 };
4582 
4583 template<> inline const tflite::Int32Vector *DimensionMetadata::array_segments_as<tflite::Int32Vector>() const {
4584   return array_segments_as_Int32Vector();
4585 }
4586 
4587 template<> inline const tflite::Uint16Vector *DimensionMetadata::array_segments_as<tflite::Uint16Vector>() const {
4588   return array_segments_as_Uint16Vector();
4589 }
4590 
4591 template<> inline const tflite::Uint8Vector *DimensionMetadata::array_segments_as<tflite::Uint8Vector>() const {
4592   return array_segments_as_Uint8Vector();
4593 }
4594 
4595 template<> inline const tflite::Int32Vector *DimensionMetadata::array_indices_as<tflite::Int32Vector>() const {
4596   return array_indices_as_Int32Vector();
4597 }
4598 
4599 template<> inline const tflite::Uint16Vector *DimensionMetadata::array_indices_as<tflite::Uint16Vector>() const {
4600   return array_indices_as_Uint16Vector();
4601 }
4602 
4603 template<> inline const tflite::Uint8Vector *DimensionMetadata::array_indices_as<tflite::Uint8Vector>() const {
4604   return array_indices_as_Uint8Vector();
4605 }
4606 
4607 struct DimensionMetadataBuilder {
4608   typedef DimensionMetadata Table;
4609   flatbuffers::FlatBufferBuilder &fbb_;
4610   flatbuffers::uoffset_t start_;
4611   void add_format(tflite::DimensionType format) {
4612     fbb_.AddElement<int8_t>(DimensionMetadata::VT_FORMAT, static_cast<int8_t>(format), 0);
4613   }
4614   void add_dense_size(int32_t dense_size) {
4615     fbb_.AddElement<int32_t>(DimensionMetadata::VT_DENSE_SIZE, dense_size, 0);
4616   }
4617   void add_array_segments_type(tflite::SparseIndexVector array_segments_type) {
4618     fbb_.AddElement<uint8_t>(DimensionMetadata::VT_ARRAY_SEGMENTS_TYPE, static_cast<uint8_t>(array_segments_type), 0);
4619   }
4620   void add_array_segments(flatbuffers::Offset<void> array_segments) {
4621     fbb_.AddOffset(DimensionMetadata::VT_ARRAY_SEGMENTS, array_segments);
4622   }
4623   void add_array_indices_type(tflite::SparseIndexVector array_indices_type) {
4624     fbb_.AddElement<uint8_t>(DimensionMetadata::VT_ARRAY_INDICES_TYPE, static_cast<uint8_t>(array_indices_type), 0);
4625   }
4626   void add_array_indices(flatbuffers::Offset<void> array_indices) {
4627     fbb_.AddOffset(DimensionMetadata::VT_ARRAY_INDICES, array_indices);
4628   }
4629   explicit DimensionMetadataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4630         : fbb_(_fbb) {
4631     start_ = fbb_.StartTable();
4632   }
4633   flatbuffers::Offset<DimensionMetadata> Finish() {
4634     const auto end = fbb_.EndTable(start_);
4635     auto o = flatbuffers::Offset<DimensionMetadata>(end);
4636     return o;
4637   }
4638 };
4639 
4640 inline flatbuffers::Offset<DimensionMetadata> CreateDimensionMetadata(
4641     flatbuffers::FlatBufferBuilder &_fbb,
4642     tflite::DimensionType format = tflite::DimensionType_DENSE,
4643     int32_t dense_size = 0,
4644     tflite::SparseIndexVector array_segments_type = tflite::SparseIndexVector_NONE,
4645     flatbuffers::Offset<void> array_segments = 0,
4646     tflite::SparseIndexVector array_indices_type = tflite::SparseIndexVector_NONE,
4647     flatbuffers::Offset<void> array_indices = 0) {
4648   DimensionMetadataBuilder builder_(_fbb);
4649   builder_.add_array_indices(array_indices);
4650   builder_.add_array_segments(array_segments);
4651   builder_.add_dense_size(dense_size);
4652   builder_.add_array_indices_type(array_indices_type);
4653   builder_.add_array_segments_type(array_segments_type);
4654   builder_.add_format(format);
4655   return builder_.Finish();
4656 }
4657 
4658 flatbuffers::Offset<DimensionMetadata> CreateDimensionMetadata(flatbuffers::FlatBufferBuilder &_fbb, const DimensionMetadataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4659 
4660 struct SparsityParametersT : public flatbuffers::NativeTable {
4661   typedef SparsityParameters TableType;
4662   std::vector<int32_t> traversal_order{};
4663   std::vector<int32_t> block_map{};
4664   std::vector<std::unique_ptr<tflite::DimensionMetadataT>> dim_metadata{};
4665   SparsityParametersT() = default;
4666   SparsityParametersT(const SparsityParametersT &o);
4667   SparsityParametersT(SparsityParametersT&&) FLATBUFFERS_NOEXCEPT = default;
4668   SparsityParametersT &operator=(SparsityParametersT o) FLATBUFFERS_NOEXCEPT;
4669 };
4670 
4671 struct SparsityParameters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4672   typedef SparsityParametersT NativeTableType;
4673   typedef SparsityParametersBuilder Builder;
4674   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4675     VT_TRAVERSAL_ORDER = 4,
4676     VT_BLOCK_MAP = 6,
4677     VT_DIM_METADATA = 8
4678   };
4679   const flatbuffers::Vector<int32_t> *traversal_order() const {
4680     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_TRAVERSAL_ORDER);
4681   }
4682   flatbuffers::Vector<int32_t> *mutable_traversal_order() {
4683     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_TRAVERSAL_ORDER);
4684   }
4685   const flatbuffers::Vector<int32_t> *block_map() const {
4686     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_BLOCK_MAP);
4687   }
4688   flatbuffers::Vector<int32_t> *mutable_block_map() {
4689     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_BLOCK_MAP);
4690   }
4691   const flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>> *dim_metadata() const {
4692     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>> *>(VT_DIM_METADATA);
4693   }
4694   flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>> *mutable_dim_metadata() {
4695     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>> *>(VT_DIM_METADATA);
4696   }
4697   bool Verify(flatbuffers::Verifier &verifier) const {
4698     return VerifyTableStart(verifier) &&
4699            VerifyOffset(verifier, VT_TRAVERSAL_ORDER) &&
4700            verifier.VerifyVector(traversal_order()) &&
4701            VerifyOffset(verifier, VT_BLOCK_MAP) &&
4702            verifier.VerifyVector(block_map()) &&
4703            VerifyOffset(verifier, VT_DIM_METADATA) &&
4704            verifier.VerifyVector(dim_metadata()) &&
4705            verifier.VerifyVectorOfTables(dim_metadata()) &&
4706            verifier.EndTable();
4707   }
4708   SparsityParametersT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4709   void UnPackTo(SparsityParametersT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4710   static flatbuffers::Offset<SparsityParameters> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SparsityParametersT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4711 };
4712 
4713 struct SparsityParametersBuilder {
4714   typedef SparsityParameters Table;
4715   flatbuffers::FlatBufferBuilder &fbb_;
4716   flatbuffers::uoffset_t start_;
4717   void add_traversal_order(flatbuffers::Offset<flatbuffers::Vector<int32_t>> traversal_order) {
4718     fbb_.AddOffset(SparsityParameters::VT_TRAVERSAL_ORDER, traversal_order);
4719   }
4720   void add_block_map(flatbuffers::Offset<flatbuffers::Vector<int32_t>> block_map) {
4721     fbb_.AddOffset(SparsityParameters::VT_BLOCK_MAP, block_map);
4722   }
4723   void add_dim_metadata(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>>> dim_metadata) {
4724     fbb_.AddOffset(SparsityParameters::VT_DIM_METADATA, dim_metadata);
4725   }
4726   explicit SparsityParametersBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4727         : fbb_(_fbb) {
4728     start_ = fbb_.StartTable();
4729   }
4730   flatbuffers::Offset<SparsityParameters> Finish() {
4731     const auto end = fbb_.EndTable(start_);
4732     auto o = flatbuffers::Offset<SparsityParameters>(end);
4733     return o;
4734   }
4735 };
4736 
4737 inline flatbuffers::Offset<SparsityParameters> CreateSparsityParameters(
4738     flatbuffers::FlatBufferBuilder &_fbb,
4739     flatbuffers::Offset<flatbuffers::Vector<int32_t>> traversal_order = 0,
4740     flatbuffers::Offset<flatbuffers::Vector<int32_t>> block_map = 0,
4741     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>>> dim_metadata = 0) {
4742   SparsityParametersBuilder builder_(_fbb);
4743   builder_.add_dim_metadata(dim_metadata);
4744   builder_.add_block_map(block_map);
4745   builder_.add_traversal_order(traversal_order);
4746   return builder_.Finish();
4747 }
4748 
4749 inline flatbuffers::Offset<SparsityParameters> CreateSparsityParametersDirect(
4750     flatbuffers::FlatBufferBuilder &_fbb,
4751     const std::vector<int32_t> *traversal_order = nullptr,
4752     const std::vector<int32_t> *block_map = nullptr,
4753     const std::vector<flatbuffers::Offset<tflite::DimensionMetadata>> *dim_metadata = nullptr) {
4754   auto traversal_order__ = traversal_order ? _fbb.CreateVector<int32_t>(*traversal_order) : 0;
4755   auto block_map__ = block_map ? _fbb.CreateVector<int32_t>(*block_map) : 0;
4756   auto dim_metadata__ = dim_metadata ? _fbb.CreateVector<flatbuffers::Offset<tflite::DimensionMetadata>>(*dim_metadata) : 0;
4757   return tflite::CreateSparsityParameters(
4758       _fbb,
4759       traversal_order__,
4760       block_map__,
4761       dim_metadata__);
4762 }
4763 
4764 flatbuffers::Offset<SparsityParameters> CreateSparsityParameters(flatbuffers::FlatBufferBuilder &_fbb, const SparsityParametersT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4765 
4766 struct VariantSubTypeT : public flatbuffers::NativeTable {
4767   typedef VariantSubType TableType;
4768   std::vector<int32_t> shape{};
4769   tflite::TensorType type = tflite::TensorType_FLOAT32;
4770   bool has_rank = false;
4771 };
4772 
4773 struct VariantSubType FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4774   typedef VariantSubTypeT NativeTableType;
4775   typedef VariantSubTypeBuilder Builder;
4776   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4777     VT_SHAPE = 4,
4778     VT_TYPE = 6,
4779     VT_HAS_RANK = 8
4780   };
4781   const flatbuffers::Vector<int32_t> *shape() const {
4782     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
4783   }
4784   flatbuffers::Vector<int32_t> *mutable_shape() {
4785     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_SHAPE);
4786   }
4787   tflite::TensorType type() const {
4788     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_TYPE, 0));
4789   }
4790   bool mutate_type(tflite::TensorType _type = static_cast<tflite::TensorType>(0)) {
4791     return SetField<int8_t>(VT_TYPE, static_cast<int8_t>(_type), 0);
4792   }
4793   bool has_rank() const {
4794     return GetField<uint8_t>(VT_HAS_RANK, 0) != 0;
4795   }
4796   bool mutate_has_rank(bool _has_rank = 0) {
4797     return SetField<uint8_t>(VT_HAS_RANK, static_cast<uint8_t>(_has_rank), 0);
4798   }
4799   bool Verify(flatbuffers::Verifier &verifier) const {
4800     return VerifyTableStart(verifier) &&
4801            VerifyOffset(verifier, VT_SHAPE) &&
4802            verifier.VerifyVector(shape()) &&
4803            VerifyField<int8_t>(verifier, VT_TYPE, 1) &&
4804            VerifyField<uint8_t>(verifier, VT_HAS_RANK, 1) &&
4805            verifier.EndTable();
4806   }
4807   VariantSubTypeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4808   void UnPackTo(VariantSubTypeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4809   static flatbuffers::Offset<VariantSubType> Pack(flatbuffers::FlatBufferBuilder &_fbb, const VariantSubTypeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4810 };
4811 
4812 struct VariantSubTypeBuilder {
4813   typedef VariantSubType Table;
4814   flatbuffers::FlatBufferBuilder &fbb_;
4815   flatbuffers::uoffset_t start_;
4816   void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
4817     fbb_.AddOffset(VariantSubType::VT_SHAPE, shape);
4818   }
4819   void add_type(tflite::TensorType type) {
4820     fbb_.AddElement<int8_t>(VariantSubType::VT_TYPE, static_cast<int8_t>(type), 0);
4821   }
4822   void add_has_rank(bool has_rank) {
4823     fbb_.AddElement<uint8_t>(VariantSubType::VT_HAS_RANK, static_cast<uint8_t>(has_rank), 0);
4824   }
4825   explicit VariantSubTypeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4826         : fbb_(_fbb) {
4827     start_ = fbb_.StartTable();
4828   }
4829   flatbuffers::Offset<VariantSubType> Finish() {
4830     const auto end = fbb_.EndTable(start_);
4831     auto o = flatbuffers::Offset<VariantSubType>(end);
4832     return o;
4833   }
4834 };
4835 
4836 inline flatbuffers::Offset<VariantSubType> CreateVariantSubType(
4837     flatbuffers::FlatBufferBuilder &_fbb,
4838     flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0,
4839     tflite::TensorType type = tflite::TensorType_FLOAT32,
4840     bool has_rank = false) {
4841   VariantSubTypeBuilder builder_(_fbb);
4842   builder_.add_shape(shape);
4843   builder_.add_has_rank(has_rank);
4844   builder_.add_type(type);
4845   return builder_.Finish();
4846 }
4847 
4848 inline flatbuffers::Offset<VariantSubType> CreateVariantSubTypeDirect(
4849     flatbuffers::FlatBufferBuilder &_fbb,
4850     const std::vector<int32_t> *shape = nullptr,
4851     tflite::TensorType type = tflite::TensorType_FLOAT32,
4852     bool has_rank = false) {
4853   auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
4854   return tflite::CreateVariantSubType(
4855       _fbb,
4856       shape__,
4857       type,
4858       has_rank);
4859 }
4860 
4861 flatbuffers::Offset<VariantSubType> CreateVariantSubType(flatbuffers::FlatBufferBuilder &_fbb, const VariantSubTypeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4862 
4863 struct TensorT : public flatbuffers::NativeTable {
4864   typedef Tensor TableType;
4865   std::vector<int32_t> shape{};
4866   tflite::TensorType type = tflite::TensorType_FLOAT32;
4867   uint32_t buffer = 0;
4868   std::string name{};
4869   std::unique_ptr<tflite::QuantizationParametersT> quantization{};
4870   bool is_variable = false;
4871   std::unique_ptr<tflite::SparsityParametersT> sparsity{};
4872   std::vector<int32_t> shape_signature{};
4873   bool has_rank = false;
4874   std::vector<std::unique_ptr<tflite::VariantSubTypeT>> variant_tensors{};
4875   TensorT() = default;
4876   TensorT(const TensorT &o);
4877   TensorT(TensorT&&) FLATBUFFERS_NOEXCEPT = default;
4878   TensorT &operator=(TensorT o) FLATBUFFERS_NOEXCEPT;
4879 };
4880 
4881 struct Tensor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4882   typedef TensorT NativeTableType;
4883   typedef TensorBuilder Builder;
4884   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4885     VT_SHAPE = 4,
4886     VT_TYPE = 6,
4887     VT_BUFFER = 8,
4888     VT_NAME = 10,
4889     VT_QUANTIZATION = 12,
4890     VT_IS_VARIABLE = 14,
4891     VT_SPARSITY = 16,
4892     VT_SHAPE_SIGNATURE = 18,
4893     VT_HAS_RANK = 20,
4894     VT_VARIANT_TENSORS = 22
4895   };
4896   const flatbuffers::Vector<int32_t> *shape() const {
4897     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
4898   }
4899   flatbuffers::Vector<int32_t> *mutable_shape() {
4900     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_SHAPE);
4901   }
4902   tflite::TensorType type() const {
4903     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_TYPE, 0));
4904   }
4905   bool mutate_type(tflite::TensorType _type = static_cast<tflite::TensorType>(0)) {
4906     return SetField<int8_t>(VT_TYPE, static_cast<int8_t>(_type), 0);
4907   }
4908   uint32_t buffer() const {
4909     return GetField<uint32_t>(VT_BUFFER, 0);
4910   }
4911   bool mutate_buffer(uint32_t _buffer = 0) {
4912     return SetField<uint32_t>(VT_BUFFER, _buffer, 0);
4913   }
4914   const flatbuffers::String *name() const {
4915     return GetPointer<const flatbuffers::String *>(VT_NAME);
4916   }
4917   flatbuffers::String *mutable_name() {
4918     return GetPointer<flatbuffers::String *>(VT_NAME);
4919   }
4920   const tflite::QuantizationParameters *quantization() const {
4921     return GetPointer<const tflite::QuantizationParameters *>(VT_QUANTIZATION);
4922   }
4923   tflite::QuantizationParameters *mutable_quantization() {
4924     return GetPointer<tflite::QuantizationParameters *>(VT_QUANTIZATION);
4925   }
4926   bool is_variable() const {
4927     return GetField<uint8_t>(VT_IS_VARIABLE, 0) != 0;
4928   }
4929   bool mutate_is_variable(bool _is_variable = 0) {
4930     return SetField<uint8_t>(VT_IS_VARIABLE, static_cast<uint8_t>(_is_variable), 0);
4931   }
4932   const tflite::SparsityParameters *sparsity() const {
4933     return GetPointer<const tflite::SparsityParameters *>(VT_SPARSITY);
4934   }
4935   tflite::SparsityParameters *mutable_sparsity() {
4936     return GetPointer<tflite::SparsityParameters *>(VT_SPARSITY);
4937   }
4938   const flatbuffers::Vector<int32_t> *shape_signature() const {
4939     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE_SIGNATURE);
4940   }
4941   flatbuffers::Vector<int32_t> *mutable_shape_signature() {
4942     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_SHAPE_SIGNATURE);
4943   }
4944   bool has_rank() const {
4945     return GetField<uint8_t>(VT_HAS_RANK, 0) != 0;
4946   }
4947   bool mutate_has_rank(bool _has_rank = 0) {
4948     return SetField<uint8_t>(VT_HAS_RANK, static_cast<uint8_t>(_has_rank), 0);
4949   }
4950   const flatbuffers::Vector<flatbuffers::Offset<tflite::VariantSubType>> *variant_tensors() const {
4951     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::VariantSubType>> *>(VT_VARIANT_TENSORS);
4952   }
4953   flatbuffers::Vector<flatbuffers::Offset<tflite::VariantSubType>> *mutable_variant_tensors() {
4954     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::VariantSubType>> *>(VT_VARIANT_TENSORS);
4955   }
4956   bool Verify(flatbuffers::Verifier &verifier) const {
4957     return VerifyTableStart(verifier) &&
4958            VerifyOffset(verifier, VT_SHAPE) &&
4959            verifier.VerifyVector(shape()) &&
4960            VerifyField<int8_t>(verifier, VT_TYPE, 1) &&
4961            VerifyField<uint32_t>(verifier, VT_BUFFER, 4) &&
4962            VerifyOffset(verifier, VT_NAME) &&
4963            verifier.VerifyString(name()) &&
4964            VerifyOffset(verifier, VT_QUANTIZATION) &&
4965            verifier.VerifyTable(quantization()) &&
4966            VerifyField<uint8_t>(verifier, VT_IS_VARIABLE, 1) &&
4967            VerifyOffset(verifier, VT_SPARSITY) &&
4968            verifier.VerifyTable(sparsity()) &&
4969            VerifyOffset(verifier, VT_SHAPE_SIGNATURE) &&
4970            verifier.VerifyVector(shape_signature()) &&
4971            VerifyField<uint8_t>(verifier, VT_HAS_RANK, 1) &&
4972            VerifyOffset(verifier, VT_VARIANT_TENSORS) &&
4973            verifier.VerifyVector(variant_tensors()) &&
4974            verifier.VerifyVectorOfTables(variant_tensors()) &&
4975            verifier.EndTable();
4976   }
4977   TensorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4978   void UnPackTo(TensorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4979   static flatbuffers::Offset<Tensor> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TensorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4980 };
4981 
4982 struct TensorBuilder {
4983   typedef Tensor Table;
4984   flatbuffers::FlatBufferBuilder &fbb_;
4985   flatbuffers::uoffset_t start_;
4986   void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
4987     fbb_.AddOffset(Tensor::VT_SHAPE, shape);
4988   }
4989   void add_type(tflite::TensorType type) {
4990     fbb_.AddElement<int8_t>(Tensor::VT_TYPE, static_cast<int8_t>(type), 0);
4991   }
4992   void add_buffer(uint32_t buffer) {
4993     fbb_.AddElement<uint32_t>(Tensor::VT_BUFFER, buffer, 0);
4994   }
4995   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
4996     fbb_.AddOffset(Tensor::VT_NAME, name);
4997   }
4998   void add_quantization(flatbuffers::Offset<tflite::QuantizationParameters> quantization) {
4999     fbb_.AddOffset(Tensor::VT_QUANTIZATION, quantization);
5000   }
5001   void add_is_variable(bool is_variable) {
5002     fbb_.AddElement<uint8_t>(Tensor::VT_IS_VARIABLE, static_cast<uint8_t>(is_variable), 0);
5003   }
5004   void add_sparsity(flatbuffers::Offset<tflite::SparsityParameters> sparsity) {
5005     fbb_.AddOffset(Tensor::VT_SPARSITY, sparsity);
5006   }
5007   void add_shape_signature(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape_signature) {
5008     fbb_.AddOffset(Tensor::VT_SHAPE_SIGNATURE, shape_signature);
5009   }
5010   void add_has_rank(bool has_rank) {
5011     fbb_.AddElement<uint8_t>(Tensor::VT_HAS_RANK, static_cast<uint8_t>(has_rank), 0);
5012   }
5013   void add_variant_tensors(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::VariantSubType>>> variant_tensors) {
5014     fbb_.AddOffset(Tensor::VT_VARIANT_TENSORS, variant_tensors);
5015   }
5016   explicit TensorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5017         : fbb_(_fbb) {
5018     start_ = fbb_.StartTable();
5019   }
5020   flatbuffers::Offset<Tensor> Finish() {
5021     const auto end = fbb_.EndTable(start_);
5022     auto o = flatbuffers::Offset<Tensor>(end);
5023     return o;
5024   }
5025 };
5026 
5027 inline flatbuffers::Offset<Tensor> CreateTensor(
5028     flatbuffers::FlatBufferBuilder &_fbb,
5029     flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0,
5030     tflite::TensorType type = tflite::TensorType_FLOAT32,
5031     uint32_t buffer = 0,
5032     flatbuffers::Offset<flatbuffers::String> name = 0,
5033     flatbuffers::Offset<tflite::QuantizationParameters> quantization = 0,
5034     bool is_variable = false,
5035     flatbuffers::Offset<tflite::SparsityParameters> sparsity = 0,
5036     flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape_signature = 0,
5037     bool has_rank = false,
5038     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::VariantSubType>>> variant_tensors = 0) {
5039   TensorBuilder builder_(_fbb);
5040   builder_.add_variant_tensors(variant_tensors);
5041   builder_.add_shape_signature(shape_signature);
5042   builder_.add_sparsity(sparsity);
5043   builder_.add_quantization(quantization);
5044   builder_.add_name(name);
5045   builder_.add_buffer(buffer);
5046   builder_.add_shape(shape);
5047   builder_.add_has_rank(has_rank);
5048   builder_.add_is_variable(is_variable);
5049   builder_.add_type(type);
5050   return builder_.Finish();
5051 }
5052 
5053 inline flatbuffers::Offset<Tensor> CreateTensorDirect(
5054     flatbuffers::FlatBufferBuilder &_fbb,
5055     const std::vector<int32_t> *shape = nullptr,
5056     tflite::TensorType type = tflite::TensorType_FLOAT32,
5057     uint32_t buffer = 0,
5058     const char *name = nullptr,
5059     flatbuffers::Offset<tflite::QuantizationParameters> quantization = 0,
5060     bool is_variable = false,
5061     flatbuffers::Offset<tflite::SparsityParameters> sparsity = 0,
5062     const std::vector<int32_t> *shape_signature = nullptr,
5063     bool has_rank = false,
5064     const std::vector<flatbuffers::Offset<tflite::VariantSubType>> *variant_tensors = nullptr) {
5065   auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
5066   auto name__ = name ? _fbb.CreateString(name) : 0;
5067   auto shape_signature__ = shape_signature ? _fbb.CreateVector<int32_t>(*shape_signature) : 0;
5068   auto variant_tensors__ = variant_tensors ? _fbb.CreateVector<flatbuffers::Offset<tflite::VariantSubType>>(*variant_tensors) : 0;
5069   return tflite::CreateTensor(
5070       _fbb,
5071       shape__,
5072       type,
5073       buffer,
5074       name__,
5075       quantization,
5076       is_variable,
5077       sparsity,
5078       shape_signature__,
5079       has_rank,
5080       variant_tensors__);
5081 }
5082 
5083 flatbuffers::Offset<Tensor> CreateTensor(flatbuffers::FlatBufferBuilder &_fbb, const TensorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5084 
5085 struct Conv2DOptionsT : public flatbuffers::NativeTable {
5086   typedef Conv2DOptions TableType;
5087   tflite::Padding padding = tflite::Padding_SAME;
5088   int32_t stride_w = 0;
5089   int32_t stride_h = 0;
5090   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5091   int32_t dilation_w_factor = 1;
5092   int32_t dilation_h_factor = 1;
5093 };
5094 
5095 struct Conv2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5096   typedef Conv2DOptionsT NativeTableType;
5097   typedef Conv2DOptionsBuilder Builder;
5098   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5099     VT_PADDING = 4,
5100     VT_STRIDE_W = 6,
5101     VT_STRIDE_H = 8,
5102     VT_FUSED_ACTIVATION_FUNCTION = 10,
5103     VT_DILATION_W_FACTOR = 12,
5104     VT_DILATION_H_FACTOR = 14
5105   };
5106   tflite::Padding padding() const {
5107     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
5108   }
5109   bool mutate_padding(tflite::Padding _padding = static_cast<tflite::Padding>(0)) {
5110     return SetField<int8_t>(VT_PADDING, static_cast<int8_t>(_padding), 0);
5111   }
5112   int32_t stride_w() const {
5113     return GetField<int32_t>(VT_STRIDE_W, 0);
5114   }
5115   bool mutate_stride_w(int32_t _stride_w = 0) {
5116     return SetField<int32_t>(VT_STRIDE_W, _stride_w, 0);
5117   }
5118   int32_t stride_h() const {
5119     return GetField<int32_t>(VT_STRIDE_H, 0);
5120   }
5121   bool mutate_stride_h(int32_t _stride_h = 0) {
5122     return SetField<int32_t>(VT_STRIDE_H, _stride_h, 0);
5123   }
5124   tflite::ActivationFunctionType fused_activation_function() const {
5125     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5126   }
5127   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5128     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5129   }
5130   int32_t dilation_w_factor() const {
5131     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
5132   }
5133   bool mutate_dilation_w_factor(int32_t _dilation_w_factor = 1) {
5134     return SetField<int32_t>(VT_DILATION_W_FACTOR, _dilation_w_factor, 1);
5135   }
5136   int32_t dilation_h_factor() const {
5137     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
5138   }
5139   bool mutate_dilation_h_factor(int32_t _dilation_h_factor = 1) {
5140     return SetField<int32_t>(VT_DILATION_H_FACTOR, _dilation_h_factor, 1);
5141   }
5142   bool Verify(flatbuffers::Verifier &verifier) const {
5143     return VerifyTableStart(verifier) &&
5144            VerifyField<int8_t>(verifier, VT_PADDING, 1) &&
5145            VerifyField<int32_t>(verifier, VT_STRIDE_W, 4) &&
5146            VerifyField<int32_t>(verifier, VT_STRIDE_H, 4) &&
5147            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5148            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR, 4) &&
5149            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR, 4) &&
5150            verifier.EndTable();
5151   }
5152   Conv2DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5153   void UnPackTo(Conv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5154   static flatbuffers::Offset<Conv2DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5155 };
5156 
5157 struct Conv2DOptionsBuilder {
5158   typedef Conv2DOptions Table;
5159   flatbuffers::FlatBufferBuilder &fbb_;
5160   flatbuffers::uoffset_t start_;
5161   void add_padding(tflite::Padding padding) {
5162     fbb_.AddElement<int8_t>(Conv2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
5163   }
5164   void add_stride_w(int32_t stride_w) {
5165     fbb_.AddElement<int32_t>(Conv2DOptions::VT_STRIDE_W, stride_w, 0);
5166   }
5167   void add_stride_h(int32_t stride_h) {
5168     fbb_.AddElement<int32_t>(Conv2DOptions::VT_STRIDE_H, stride_h, 0);
5169   }
5170   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5171     fbb_.AddElement<int8_t>(Conv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5172   }
5173   void add_dilation_w_factor(int32_t dilation_w_factor) {
5174     fbb_.AddElement<int32_t>(Conv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
5175   }
5176   void add_dilation_h_factor(int32_t dilation_h_factor) {
5177     fbb_.AddElement<int32_t>(Conv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
5178   }
5179   explicit Conv2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5180         : fbb_(_fbb) {
5181     start_ = fbb_.StartTable();
5182   }
5183   flatbuffers::Offset<Conv2DOptions> Finish() {
5184     const auto end = fbb_.EndTable(start_);
5185     auto o = flatbuffers::Offset<Conv2DOptions>(end);
5186     return o;
5187   }
5188 };
5189 
5190 inline flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(
5191     flatbuffers::FlatBufferBuilder &_fbb,
5192     tflite::Padding padding = tflite::Padding_SAME,
5193     int32_t stride_w = 0,
5194     int32_t stride_h = 0,
5195     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
5196     int32_t dilation_w_factor = 1,
5197     int32_t dilation_h_factor = 1) {
5198   Conv2DOptionsBuilder builder_(_fbb);
5199   builder_.add_dilation_h_factor(dilation_h_factor);
5200   builder_.add_dilation_w_factor(dilation_w_factor);
5201   builder_.add_stride_h(stride_h);
5202   builder_.add_stride_w(stride_w);
5203   builder_.add_fused_activation_function(fused_activation_function);
5204   builder_.add_padding(padding);
5205   return builder_.Finish();
5206 }
5207 
5208 flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5209 
5210 struct Conv3DOptionsT : public flatbuffers::NativeTable {
5211   typedef Conv3DOptions TableType;
5212   tflite::Padding padding = tflite::Padding_SAME;
5213   int32_t stride_d = 0;
5214   int32_t stride_w = 0;
5215   int32_t stride_h = 0;
5216   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5217   int32_t dilation_d_factor = 1;
5218   int32_t dilation_w_factor = 1;
5219   int32_t dilation_h_factor = 1;
5220 };
5221 
5222 struct Conv3DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5223   typedef Conv3DOptionsT NativeTableType;
5224   typedef Conv3DOptionsBuilder Builder;
5225   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5226     VT_PADDING = 4,
5227     VT_STRIDE_D = 6,
5228     VT_STRIDE_W = 8,
5229     VT_STRIDE_H = 10,
5230     VT_FUSED_ACTIVATION_FUNCTION = 12,
5231     VT_DILATION_D_FACTOR = 14,
5232     VT_DILATION_W_FACTOR = 16,
5233     VT_DILATION_H_FACTOR = 18
5234   };
5235   tflite::Padding padding() const {
5236     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
5237   }
5238   bool mutate_padding(tflite::Padding _padding = static_cast<tflite::Padding>(0)) {
5239     return SetField<int8_t>(VT_PADDING, static_cast<int8_t>(_padding), 0);
5240   }
5241   int32_t stride_d() const {
5242     return GetField<int32_t>(VT_STRIDE_D, 0);
5243   }
5244   bool mutate_stride_d(int32_t _stride_d = 0) {
5245     return SetField<int32_t>(VT_STRIDE_D, _stride_d, 0);
5246   }
5247   int32_t stride_w() const {
5248     return GetField<int32_t>(VT_STRIDE_W, 0);
5249   }
5250   bool mutate_stride_w(int32_t _stride_w = 0) {
5251     return SetField<int32_t>(VT_STRIDE_W, _stride_w, 0);
5252   }
5253   int32_t stride_h() const {
5254     return GetField<int32_t>(VT_STRIDE_H, 0);
5255   }
5256   bool mutate_stride_h(int32_t _stride_h = 0) {
5257     return SetField<int32_t>(VT_STRIDE_H, _stride_h, 0);
5258   }
5259   tflite::ActivationFunctionType fused_activation_function() const {
5260     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5261   }
5262   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5263     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5264   }
5265   int32_t dilation_d_factor() const {
5266     return GetField<int32_t>(VT_DILATION_D_FACTOR, 1);
5267   }
5268   bool mutate_dilation_d_factor(int32_t _dilation_d_factor = 1) {
5269     return SetField<int32_t>(VT_DILATION_D_FACTOR, _dilation_d_factor, 1);
5270   }
5271   int32_t dilation_w_factor() const {
5272     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
5273   }
5274   bool mutate_dilation_w_factor(int32_t _dilation_w_factor = 1) {
5275     return SetField<int32_t>(VT_DILATION_W_FACTOR, _dilation_w_factor, 1);
5276   }
5277   int32_t dilation_h_factor() const {
5278     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
5279   }
5280   bool mutate_dilation_h_factor(int32_t _dilation_h_factor = 1) {
5281     return SetField<int32_t>(VT_DILATION_H_FACTOR, _dilation_h_factor, 1);
5282   }
5283   bool Verify(flatbuffers::Verifier &verifier) const {
5284     return VerifyTableStart(verifier) &&
5285            VerifyField<int8_t>(verifier, VT_PADDING, 1) &&
5286            VerifyField<int32_t>(verifier, VT_STRIDE_D, 4) &&
5287            VerifyField<int32_t>(verifier, VT_STRIDE_W, 4) &&
5288            VerifyField<int32_t>(verifier, VT_STRIDE_H, 4) &&
5289            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5290            VerifyField<int32_t>(verifier, VT_DILATION_D_FACTOR, 4) &&
5291            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR, 4) &&
5292            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR, 4) &&
5293            verifier.EndTable();
5294   }
5295   Conv3DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5296   void UnPackTo(Conv3DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5297   static flatbuffers::Offset<Conv3DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Conv3DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5298 };
5299 
5300 struct Conv3DOptionsBuilder {
5301   typedef Conv3DOptions Table;
5302   flatbuffers::FlatBufferBuilder &fbb_;
5303   flatbuffers::uoffset_t start_;
5304   void add_padding(tflite::Padding padding) {
5305     fbb_.AddElement<int8_t>(Conv3DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
5306   }
5307   void add_stride_d(int32_t stride_d) {
5308     fbb_.AddElement<int32_t>(Conv3DOptions::VT_STRIDE_D, stride_d, 0);
5309   }
5310   void add_stride_w(int32_t stride_w) {
5311     fbb_.AddElement<int32_t>(Conv3DOptions::VT_STRIDE_W, stride_w, 0);
5312   }
5313   void add_stride_h(int32_t stride_h) {
5314     fbb_.AddElement<int32_t>(Conv3DOptions::VT_STRIDE_H, stride_h, 0);
5315   }
5316   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5317     fbb_.AddElement<int8_t>(Conv3DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5318   }
5319   void add_dilation_d_factor(int32_t dilation_d_factor) {
5320     fbb_.AddElement<int32_t>(Conv3DOptions::VT_DILATION_D_FACTOR, dilation_d_factor, 1);
5321   }
5322   void add_dilation_w_factor(int32_t dilation_w_factor) {
5323     fbb_.AddElement<int32_t>(Conv3DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
5324   }
5325   void add_dilation_h_factor(int32_t dilation_h_factor) {
5326     fbb_.AddElement<int32_t>(Conv3DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
5327   }
5328   explicit Conv3DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5329         : fbb_(_fbb) {
5330     start_ = fbb_.StartTable();
5331   }
5332   flatbuffers::Offset<Conv3DOptions> Finish() {
5333     const auto end = fbb_.EndTable(start_);
5334     auto o = flatbuffers::Offset<Conv3DOptions>(end);
5335     return o;
5336   }
5337 };
5338 
5339 inline flatbuffers::Offset<Conv3DOptions> CreateConv3DOptions(
5340     flatbuffers::FlatBufferBuilder &_fbb,
5341     tflite::Padding padding = tflite::Padding_SAME,
5342     int32_t stride_d = 0,
5343     int32_t stride_w = 0,
5344     int32_t stride_h = 0,
5345     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
5346     int32_t dilation_d_factor = 1,
5347     int32_t dilation_w_factor = 1,
5348     int32_t dilation_h_factor = 1) {
5349   Conv3DOptionsBuilder builder_(_fbb);
5350   builder_.add_dilation_h_factor(dilation_h_factor);
5351   builder_.add_dilation_w_factor(dilation_w_factor);
5352   builder_.add_dilation_d_factor(dilation_d_factor);
5353   builder_.add_stride_h(stride_h);
5354   builder_.add_stride_w(stride_w);
5355   builder_.add_stride_d(stride_d);
5356   builder_.add_fused_activation_function(fused_activation_function);
5357   builder_.add_padding(padding);
5358   return builder_.Finish();
5359 }
5360 
5361 flatbuffers::Offset<Conv3DOptions> CreateConv3DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Conv3DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5362 
5363 struct Pool2DOptionsT : public flatbuffers::NativeTable {
5364   typedef Pool2DOptions TableType;
5365   tflite::Padding padding = tflite::Padding_SAME;
5366   int32_t stride_w = 0;
5367   int32_t stride_h = 0;
5368   int32_t filter_width = 0;
5369   int32_t filter_height = 0;
5370   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5371 };
5372 
5373 struct Pool2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5374   typedef Pool2DOptionsT NativeTableType;
5375   typedef Pool2DOptionsBuilder Builder;
5376   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5377     VT_PADDING = 4,
5378     VT_STRIDE_W = 6,
5379     VT_STRIDE_H = 8,
5380     VT_FILTER_WIDTH = 10,
5381     VT_FILTER_HEIGHT = 12,
5382     VT_FUSED_ACTIVATION_FUNCTION = 14
5383   };
5384   tflite::Padding padding() const {
5385     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
5386   }
5387   bool mutate_padding(tflite::Padding _padding = static_cast<tflite::Padding>(0)) {
5388     return SetField<int8_t>(VT_PADDING, static_cast<int8_t>(_padding), 0);
5389   }
5390   int32_t stride_w() const {
5391     return GetField<int32_t>(VT_STRIDE_W, 0);
5392   }
5393   bool mutate_stride_w(int32_t _stride_w = 0) {
5394     return SetField<int32_t>(VT_STRIDE_W, _stride_w, 0);
5395   }
5396   int32_t stride_h() const {
5397     return GetField<int32_t>(VT_STRIDE_H, 0);
5398   }
5399   bool mutate_stride_h(int32_t _stride_h = 0) {
5400     return SetField<int32_t>(VT_STRIDE_H, _stride_h, 0);
5401   }
5402   int32_t filter_width() const {
5403     return GetField<int32_t>(VT_FILTER_WIDTH, 0);
5404   }
5405   bool mutate_filter_width(int32_t _filter_width = 0) {
5406     return SetField<int32_t>(VT_FILTER_WIDTH, _filter_width, 0);
5407   }
5408   int32_t filter_height() const {
5409     return GetField<int32_t>(VT_FILTER_HEIGHT, 0);
5410   }
5411   bool mutate_filter_height(int32_t _filter_height = 0) {
5412     return SetField<int32_t>(VT_FILTER_HEIGHT, _filter_height, 0);
5413   }
5414   tflite::ActivationFunctionType fused_activation_function() const {
5415     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5416   }
5417   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5418     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5419   }
5420   bool Verify(flatbuffers::Verifier &verifier) const {
5421     return VerifyTableStart(verifier) &&
5422            VerifyField<int8_t>(verifier, VT_PADDING, 1) &&
5423            VerifyField<int32_t>(verifier, VT_STRIDE_W, 4) &&
5424            VerifyField<int32_t>(verifier, VT_STRIDE_H, 4) &&
5425            VerifyField<int32_t>(verifier, VT_FILTER_WIDTH, 4) &&
5426            VerifyField<int32_t>(verifier, VT_FILTER_HEIGHT, 4) &&
5427            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5428            verifier.EndTable();
5429   }
5430   Pool2DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5431   void UnPackTo(Pool2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5432   static flatbuffers::Offset<Pool2DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5433 };
5434 
5435 struct Pool2DOptionsBuilder {
5436   typedef Pool2DOptions Table;
5437   flatbuffers::FlatBufferBuilder &fbb_;
5438   flatbuffers::uoffset_t start_;
5439   void add_padding(tflite::Padding padding) {
5440     fbb_.AddElement<int8_t>(Pool2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
5441   }
5442   void add_stride_w(int32_t stride_w) {
5443     fbb_.AddElement<int32_t>(Pool2DOptions::VT_STRIDE_W, stride_w, 0);
5444   }
5445   void add_stride_h(int32_t stride_h) {
5446     fbb_.AddElement<int32_t>(Pool2DOptions::VT_STRIDE_H, stride_h, 0);
5447   }
5448   void add_filter_width(int32_t filter_width) {
5449     fbb_.AddElement<int32_t>(Pool2DOptions::VT_FILTER_WIDTH, filter_width, 0);
5450   }
5451   void add_filter_height(int32_t filter_height) {
5452     fbb_.AddElement<int32_t>(Pool2DOptions::VT_FILTER_HEIGHT, filter_height, 0);
5453   }
5454   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5455     fbb_.AddElement<int8_t>(Pool2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5456   }
5457   explicit Pool2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5458         : fbb_(_fbb) {
5459     start_ = fbb_.StartTable();
5460   }
5461   flatbuffers::Offset<Pool2DOptions> Finish() {
5462     const auto end = fbb_.EndTable(start_);
5463     auto o = flatbuffers::Offset<Pool2DOptions>(end);
5464     return o;
5465   }
5466 };
5467 
5468 inline flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(
5469     flatbuffers::FlatBufferBuilder &_fbb,
5470     tflite::Padding padding = tflite::Padding_SAME,
5471     int32_t stride_w = 0,
5472     int32_t stride_h = 0,
5473     int32_t filter_width = 0,
5474     int32_t filter_height = 0,
5475     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
5476   Pool2DOptionsBuilder builder_(_fbb);
5477   builder_.add_filter_height(filter_height);
5478   builder_.add_filter_width(filter_width);
5479   builder_.add_stride_h(stride_h);
5480   builder_.add_stride_w(stride_w);
5481   builder_.add_fused_activation_function(fused_activation_function);
5482   builder_.add_padding(padding);
5483   return builder_.Finish();
5484 }
5485 
5486 flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5487 
5488 struct DepthwiseConv2DOptionsT : public flatbuffers::NativeTable {
5489   typedef DepthwiseConv2DOptions TableType;
5490   tflite::Padding padding = tflite::Padding_SAME;
5491   int32_t stride_w = 0;
5492   int32_t stride_h = 0;
5493   int32_t depth_multiplier = 0;
5494   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5495   int32_t dilation_w_factor = 1;
5496   int32_t dilation_h_factor = 1;
5497 };
5498 
5499 struct DepthwiseConv2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5500   typedef DepthwiseConv2DOptionsT NativeTableType;
5501   typedef DepthwiseConv2DOptionsBuilder Builder;
5502   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5503     VT_PADDING = 4,
5504     VT_STRIDE_W = 6,
5505     VT_STRIDE_H = 8,
5506     VT_DEPTH_MULTIPLIER = 10,
5507     VT_FUSED_ACTIVATION_FUNCTION = 12,
5508     VT_DILATION_W_FACTOR = 14,
5509     VT_DILATION_H_FACTOR = 16
5510   };
5511   tflite::Padding padding() const {
5512     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
5513   }
5514   bool mutate_padding(tflite::Padding _padding = static_cast<tflite::Padding>(0)) {
5515     return SetField<int8_t>(VT_PADDING, static_cast<int8_t>(_padding), 0);
5516   }
5517   int32_t stride_w() const {
5518     return GetField<int32_t>(VT_STRIDE_W, 0);
5519   }
5520   bool mutate_stride_w(int32_t _stride_w = 0) {
5521     return SetField<int32_t>(VT_STRIDE_W, _stride_w, 0);
5522   }
5523   int32_t stride_h() const {
5524     return GetField<int32_t>(VT_STRIDE_H, 0);
5525   }
5526   bool mutate_stride_h(int32_t _stride_h = 0) {
5527     return SetField<int32_t>(VT_STRIDE_H, _stride_h, 0);
5528   }
5529   int32_t depth_multiplier() const {
5530     return GetField<int32_t>(VT_DEPTH_MULTIPLIER, 0);
5531   }
5532   bool mutate_depth_multiplier(int32_t _depth_multiplier = 0) {
5533     return SetField<int32_t>(VT_DEPTH_MULTIPLIER, _depth_multiplier, 0);
5534   }
5535   tflite::ActivationFunctionType fused_activation_function() const {
5536     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5537   }
5538   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5539     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5540   }
5541   int32_t dilation_w_factor() const {
5542     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
5543   }
5544   bool mutate_dilation_w_factor(int32_t _dilation_w_factor = 1) {
5545     return SetField<int32_t>(VT_DILATION_W_FACTOR, _dilation_w_factor, 1);
5546   }
5547   int32_t dilation_h_factor() const {
5548     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
5549   }
5550   bool mutate_dilation_h_factor(int32_t _dilation_h_factor = 1) {
5551     return SetField<int32_t>(VT_DILATION_H_FACTOR, _dilation_h_factor, 1);
5552   }
5553   bool Verify(flatbuffers::Verifier &verifier) const {
5554     return VerifyTableStart(verifier) &&
5555            VerifyField<int8_t>(verifier, VT_PADDING, 1) &&
5556            VerifyField<int32_t>(verifier, VT_STRIDE_W, 4) &&
5557            VerifyField<int32_t>(verifier, VT_STRIDE_H, 4) &&
5558            VerifyField<int32_t>(verifier, VT_DEPTH_MULTIPLIER, 4) &&
5559            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5560            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR, 4) &&
5561            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR, 4) &&
5562            verifier.EndTable();
5563   }
5564   DepthwiseConv2DOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5565   void UnPackTo(DepthwiseConv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5566   static flatbuffers::Offset<DepthwiseConv2DOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5567 };
5568 
5569 struct DepthwiseConv2DOptionsBuilder {
5570   typedef DepthwiseConv2DOptions Table;
5571   flatbuffers::FlatBufferBuilder &fbb_;
5572   flatbuffers::uoffset_t start_;
5573   void add_padding(tflite::Padding padding) {
5574     fbb_.AddElement<int8_t>(DepthwiseConv2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
5575   }
5576   void add_stride_w(int32_t stride_w) {
5577     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_STRIDE_W, stride_w, 0);
5578   }
5579   void add_stride_h(int32_t stride_h) {
5580     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_STRIDE_H, stride_h, 0);
5581   }
5582   void add_depth_multiplier(int32_t depth_multiplier) {
5583     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DEPTH_MULTIPLIER, depth_multiplier, 0);
5584   }
5585   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5586     fbb_.AddElement<int8_t>(DepthwiseConv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5587   }
5588   void add_dilation_w_factor(int32_t dilation_w_factor) {
5589     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
5590   }
5591   void add_dilation_h_factor(int32_t dilation_h_factor) {
5592     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
5593   }
5594   explicit DepthwiseConv2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5595         : fbb_(_fbb) {
5596     start_ = fbb_.StartTable();
5597   }
5598   flatbuffers::Offset<DepthwiseConv2DOptions> Finish() {
5599     const auto end = fbb_.EndTable(start_);
5600     auto o = flatbuffers::Offset<DepthwiseConv2DOptions>(end);
5601     return o;
5602   }
5603 };
5604 
5605 inline flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(
5606     flatbuffers::FlatBufferBuilder &_fbb,
5607     tflite::Padding padding = tflite::Padding_SAME,
5608     int32_t stride_w = 0,
5609     int32_t stride_h = 0,
5610     int32_t depth_multiplier = 0,
5611     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
5612     int32_t dilation_w_factor = 1,
5613     int32_t dilation_h_factor = 1) {
5614   DepthwiseConv2DOptionsBuilder builder_(_fbb);
5615   builder_.add_dilation_h_factor(dilation_h_factor);
5616   builder_.add_dilation_w_factor(dilation_w_factor);
5617   builder_.add_depth_multiplier(depth_multiplier);
5618   builder_.add_stride_h(stride_h);
5619   builder_.add_stride_w(stride_w);
5620   builder_.add_fused_activation_function(fused_activation_function);
5621   builder_.add_padding(padding);
5622   return builder_.Finish();
5623 }
5624 
5625 flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5626 
5627 struct ConcatEmbeddingsOptionsT : public flatbuffers::NativeTable {
5628   typedef ConcatEmbeddingsOptions TableType;
5629   int32_t num_channels = 0;
5630   std::vector<int32_t> num_columns_per_channel{};
5631   std::vector<int32_t> embedding_dim_per_channel{};
5632 };
5633 
5634 struct ConcatEmbeddingsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5635   typedef ConcatEmbeddingsOptionsT NativeTableType;
5636   typedef ConcatEmbeddingsOptionsBuilder Builder;
5637   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5638     VT_NUM_CHANNELS = 4,
5639     VT_NUM_COLUMNS_PER_CHANNEL = 6,
5640     VT_EMBEDDING_DIM_PER_CHANNEL = 8
5641   };
5642   int32_t num_channels() const {
5643     return GetField<int32_t>(VT_NUM_CHANNELS, 0);
5644   }
5645   bool mutate_num_channels(int32_t _num_channels = 0) {
5646     return SetField<int32_t>(VT_NUM_CHANNELS, _num_channels, 0);
5647   }
5648   const flatbuffers::Vector<int32_t> *num_columns_per_channel() const {
5649     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_NUM_COLUMNS_PER_CHANNEL);
5650   }
5651   flatbuffers::Vector<int32_t> *mutable_num_columns_per_channel() {
5652     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_NUM_COLUMNS_PER_CHANNEL);
5653   }
5654   const flatbuffers::Vector<int32_t> *embedding_dim_per_channel() const {
5655     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_EMBEDDING_DIM_PER_CHANNEL);
5656   }
5657   flatbuffers::Vector<int32_t> *mutable_embedding_dim_per_channel() {
5658     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_EMBEDDING_DIM_PER_CHANNEL);
5659   }
5660   bool Verify(flatbuffers::Verifier &verifier) const {
5661     return VerifyTableStart(verifier) &&
5662            VerifyField<int32_t>(verifier, VT_NUM_CHANNELS, 4) &&
5663            VerifyOffset(verifier, VT_NUM_COLUMNS_PER_CHANNEL) &&
5664            verifier.VerifyVector(num_columns_per_channel()) &&
5665            VerifyOffset(verifier, VT_EMBEDDING_DIM_PER_CHANNEL) &&
5666            verifier.VerifyVector(embedding_dim_per_channel()) &&
5667            verifier.EndTable();
5668   }
5669   ConcatEmbeddingsOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5670   void UnPackTo(ConcatEmbeddingsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5671   static flatbuffers::Offset<ConcatEmbeddingsOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5672 };
5673 
5674 struct ConcatEmbeddingsOptionsBuilder {
5675   typedef ConcatEmbeddingsOptions Table;
5676   flatbuffers::FlatBufferBuilder &fbb_;
5677   flatbuffers::uoffset_t start_;
5678   void add_num_channels(int32_t num_channels) {
5679     fbb_.AddElement<int32_t>(ConcatEmbeddingsOptions::VT_NUM_CHANNELS, num_channels, 0);
5680   }
5681   void add_num_columns_per_channel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> num_columns_per_channel) {
5682     fbb_.AddOffset(ConcatEmbeddingsOptions::VT_NUM_COLUMNS_PER_CHANNEL, num_columns_per_channel);
5683   }
5684   void add_embedding_dim_per_channel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> embedding_dim_per_channel) {
5685     fbb_.AddOffset(ConcatEmbeddingsOptions::VT_EMBEDDING_DIM_PER_CHANNEL, embedding_dim_per_channel);
5686   }
5687   explicit ConcatEmbeddingsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5688         : fbb_(_fbb) {
5689     start_ = fbb_.StartTable();
5690   }
5691   flatbuffers::Offset<ConcatEmbeddingsOptions> Finish() {
5692     const auto end = fbb_.EndTable(start_);
5693     auto o = flatbuffers::Offset<ConcatEmbeddingsOptions>(end);
5694     return o;
5695   }
5696 };
5697 
5698 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(
5699     flatbuffers::FlatBufferBuilder &_fbb,
5700     int32_t num_channels = 0,
5701     flatbuffers::Offset<flatbuffers::Vector<int32_t>> num_columns_per_channel = 0,
5702     flatbuffers::Offset<flatbuffers::Vector<int32_t>> embedding_dim_per_channel = 0) {
5703   ConcatEmbeddingsOptionsBuilder builder_(_fbb);
5704   builder_.add_embedding_dim_per_channel(embedding_dim_per_channel);
5705   builder_.add_num_columns_per_channel(num_columns_per_channel);
5706   builder_.add_num_channels(num_channels);
5707   return builder_.Finish();
5708 }
5709 
5710 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptionsDirect(
5711     flatbuffers::FlatBufferBuilder &_fbb,
5712     int32_t num_channels = 0,
5713     const std::vector<int32_t> *num_columns_per_channel = nullptr,
5714     const std::vector<int32_t> *embedding_dim_per_channel = nullptr) {
5715   auto num_columns_per_channel__ = num_columns_per_channel ? _fbb.CreateVector<int32_t>(*num_columns_per_channel) : 0;
5716   auto embedding_dim_per_channel__ = embedding_dim_per_channel ? _fbb.CreateVector<int32_t>(*embedding_dim_per_channel) : 0;
5717   return tflite::CreateConcatEmbeddingsOptions(
5718       _fbb,
5719       num_channels,
5720       num_columns_per_channel__,
5721       embedding_dim_per_channel__);
5722 }
5723 
5724 flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5725 
5726 struct LSHProjectionOptionsT : public flatbuffers::NativeTable {
5727   typedef LSHProjectionOptions TableType;
5728   tflite::LSHProjectionType type = tflite::LSHProjectionType_UNKNOWN;
5729 };
5730 
5731 struct LSHProjectionOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5732   typedef LSHProjectionOptionsT NativeTableType;
5733   typedef LSHProjectionOptionsBuilder Builder;
5734   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5735     VT_TYPE = 4
5736   };
5737   tflite::LSHProjectionType type() const {
5738     return static_cast<tflite::LSHProjectionType>(GetField<int8_t>(VT_TYPE, 0));
5739   }
5740   bool mutate_type(tflite::LSHProjectionType _type = static_cast<tflite::LSHProjectionType>(0)) {
5741     return SetField<int8_t>(VT_TYPE, static_cast<int8_t>(_type), 0);
5742   }
5743   bool Verify(flatbuffers::Verifier &verifier) const {
5744     return VerifyTableStart(verifier) &&
5745            VerifyField<int8_t>(verifier, VT_TYPE, 1) &&
5746            verifier.EndTable();
5747   }
5748   LSHProjectionOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5749   void UnPackTo(LSHProjectionOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5750   static flatbuffers::Offset<LSHProjectionOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5751 };
5752 
5753 struct LSHProjectionOptionsBuilder {
5754   typedef LSHProjectionOptions Table;
5755   flatbuffers::FlatBufferBuilder &fbb_;
5756   flatbuffers::uoffset_t start_;
5757   void add_type(tflite::LSHProjectionType type) {
5758     fbb_.AddElement<int8_t>(LSHProjectionOptions::VT_TYPE, static_cast<int8_t>(type), 0);
5759   }
5760   explicit LSHProjectionOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5761         : fbb_(_fbb) {
5762     start_ = fbb_.StartTable();
5763   }
5764   flatbuffers::Offset<LSHProjectionOptions> Finish() {
5765     const auto end = fbb_.EndTable(start_);
5766     auto o = flatbuffers::Offset<LSHProjectionOptions>(end);
5767     return o;
5768   }
5769 };
5770 
5771 inline flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(
5772     flatbuffers::FlatBufferBuilder &_fbb,
5773     tflite::LSHProjectionType type = tflite::LSHProjectionType_UNKNOWN) {
5774   LSHProjectionOptionsBuilder builder_(_fbb);
5775   builder_.add_type(type);
5776   return builder_.Finish();
5777 }
5778 
5779 flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5780 
5781 struct SVDFOptionsT : public flatbuffers::NativeTable {
5782   typedef SVDFOptions TableType;
5783   int32_t rank = 0;
5784   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5785   bool asymmetric_quantize_inputs = false;
5786 };
5787 
5788 struct SVDFOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5789   typedef SVDFOptionsT NativeTableType;
5790   typedef SVDFOptionsBuilder Builder;
5791   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5792     VT_RANK = 4,
5793     VT_FUSED_ACTIVATION_FUNCTION = 6,
5794     VT_ASYMMETRIC_QUANTIZE_INPUTS = 8
5795   };
5796   int32_t rank() const {
5797     return GetField<int32_t>(VT_RANK, 0);
5798   }
5799   bool mutate_rank(int32_t _rank = 0) {
5800     return SetField<int32_t>(VT_RANK, _rank, 0);
5801   }
5802   tflite::ActivationFunctionType fused_activation_function() const {
5803     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5804   }
5805   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5806     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5807   }
5808   bool asymmetric_quantize_inputs() const {
5809     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
5810   }
5811   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
5812     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
5813   }
5814   bool Verify(flatbuffers::Verifier &verifier) const {
5815     return VerifyTableStart(verifier) &&
5816            VerifyField<int32_t>(verifier, VT_RANK, 4) &&
5817            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5818            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
5819            verifier.EndTable();
5820   }
5821   SVDFOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5822   void UnPackTo(SVDFOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5823   static flatbuffers::Offset<SVDFOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5824 };
5825 
5826 struct SVDFOptionsBuilder {
5827   typedef SVDFOptions Table;
5828   flatbuffers::FlatBufferBuilder &fbb_;
5829   flatbuffers::uoffset_t start_;
5830   void add_rank(int32_t rank) {
5831     fbb_.AddElement<int32_t>(SVDFOptions::VT_RANK, rank, 0);
5832   }
5833   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5834     fbb_.AddElement<int8_t>(SVDFOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5835   }
5836   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
5837     fbb_.AddElement<uint8_t>(SVDFOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
5838   }
5839   explicit SVDFOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5840         : fbb_(_fbb) {
5841     start_ = fbb_.StartTable();
5842   }
5843   flatbuffers::Offset<SVDFOptions> Finish() {
5844     const auto end = fbb_.EndTable(start_);
5845     auto o = flatbuffers::Offset<SVDFOptions>(end);
5846     return o;
5847   }
5848 };
5849 
5850 inline flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(
5851     flatbuffers::FlatBufferBuilder &_fbb,
5852     int32_t rank = 0,
5853     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
5854     bool asymmetric_quantize_inputs = false) {
5855   SVDFOptionsBuilder builder_(_fbb);
5856   builder_.add_rank(rank);
5857   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
5858   builder_.add_fused_activation_function(fused_activation_function);
5859   return builder_.Finish();
5860 }
5861 
5862 flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5863 
5864 struct RNNOptionsT : public flatbuffers::NativeTable {
5865   typedef RNNOptions TableType;
5866   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5867   bool asymmetric_quantize_inputs = false;
5868 };
5869 
5870 struct RNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5871   typedef RNNOptionsT NativeTableType;
5872   typedef RNNOptionsBuilder Builder;
5873   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5874     VT_FUSED_ACTIVATION_FUNCTION = 4,
5875     VT_ASYMMETRIC_QUANTIZE_INPUTS = 6
5876   };
5877   tflite::ActivationFunctionType fused_activation_function() const {
5878     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5879   }
5880   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5881     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5882   }
5883   bool asymmetric_quantize_inputs() const {
5884     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
5885   }
5886   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
5887     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
5888   }
5889   bool Verify(flatbuffers::Verifier &verifier) const {
5890     return VerifyTableStart(verifier) &&
5891            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5892            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
5893            verifier.EndTable();
5894   }
5895   RNNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5896   void UnPackTo(RNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5897   static flatbuffers::Offset<RNNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5898 };
5899 
5900 struct RNNOptionsBuilder {
5901   typedef RNNOptions Table;
5902   flatbuffers::FlatBufferBuilder &fbb_;
5903   flatbuffers::uoffset_t start_;
5904   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5905     fbb_.AddElement<int8_t>(RNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5906   }
5907   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
5908     fbb_.AddElement<uint8_t>(RNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
5909   }
5910   explicit RNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5911         : fbb_(_fbb) {
5912     start_ = fbb_.StartTable();
5913   }
5914   flatbuffers::Offset<RNNOptions> Finish() {
5915     const auto end = fbb_.EndTable(start_);
5916     auto o = flatbuffers::Offset<RNNOptions>(end);
5917     return o;
5918   }
5919 };
5920 
5921 inline flatbuffers::Offset<RNNOptions> CreateRNNOptions(
5922     flatbuffers::FlatBufferBuilder &_fbb,
5923     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
5924     bool asymmetric_quantize_inputs = false) {
5925   RNNOptionsBuilder builder_(_fbb);
5926   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
5927   builder_.add_fused_activation_function(fused_activation_function);
5928   return builder_.Finish();
5929 }
5930 
5931 flatbuffers::Offset<RNNOptions> CreateRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5932 
5933 struct SequenceRNNOptionsT : public flatbuffers::NativeTable {
5934   typedef SequenceRNNOptions TableType;
5935   bool time_major = false;
5936   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
5937   bool asymmetric_quantize_inputs = false;
5938 };
5939 
5940 struct SequenceRNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5941   typedef SequenceRNNOptionsT NativeTableType;
5942   typedef SequenceRNNOptionsBuilder Builder;
5943   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5944     VT_TIME_MAJOR = 4,
5945     VT_FUSED_ACTIVATION_FUNCTION = 6,
5946     VT_ASYMMETRIC_QUANTIZE_INPUTS = 8
5947   };
5948   bool time_major() const {
5949     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
5950   }
5951   bool mutate_time_major(bool _time_major = 0) {
5952     return SetField<uint8_t>(VT_TIME_MAJOR, static_cast<uint8_t>(_time_major), 0);
5953   }
5954   tflite::ActivationFunctionType fused_activation_function() const {
5955     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
5956   }
5957   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
5958     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
5959   }
5960   bool asymmetric_quantize_inputs() const {
5961     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
5962   }
5963   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
5964     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
5965   }
5966   bool Verify(flatbuffers::Verifier &verifier) const {
5967     return VerifyTableStart(verifier) &&
5968            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR, 1) &&
5969            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
5970            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
5971            verifier.EndTable();
5972   }
5973   SequenceRNNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5974   void UnPackTo(SequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5975   static flatbuffers::Offset<SequenceRNNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5976 };
5977 
5978 struct SequenceRNNOptionsBuilder {
5979   typedef SequenceRNNOptions Table;
5980   flatbuffers::FlatBufferBuilder &fbb_;
5981   flatbuffers::uoffset_t start_;
5982   void add_time_major(bool time_major) {
5983     fbb_.AddElement<uint8_t>(SequenceRNNOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
5984   }
5985   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
5986     fbb_.AddElement<int8_t>(SequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
5987   }
5988   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
5989     fbb_.AddElement<uint8_t>(SequenceRNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
5990   }
5991   explicit SequenceRNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5992         : fbb_(_fbb) {
5993     start_ = fbb_.StartTable();
5994   }
5995   flatbuffers::Offset<SequenceRNNOptions> Finish() {
5996     const auto end = fbb_.EndTable(start_);
5997     auto o = flatbuffers::Offset<SequenceRNNOptions>(end);
5998     return o;
5999   }
6000 };
6001 
6002 inline flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(
6003     flatbuffers::FlatBufferBuilder &_fbb,
6004     bool time_major = false,
6005     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6006     bool asymmetric_quantize_inputs = false) {
6007   SequenceRNNOptionsBuilder builder_(_fbb);
6008   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
6009   builder_.add_fused_activation_function(fused_activation_function);
6010   builder_.add_time_major(time_major);
6011   return builder_.Finish();
6012 }
6013 
6014 flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6015 
6016 struct BidirectionalSequenceRNNOptionsT : public flatbuffers::NativeTable {
6017   typedef BidirectionalSequenceRNNOptions TableType;
6018   bool time_major = false;
6019   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6020   bool merge_outputs = false;
6021   bool asymmetric_quantize_inputs = false;
6022 };
6023 
6024 struct BidirectionalSequenceRNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6025   typedef BidirectionalSequenceRNNOptionsT NativeTableType;
6026   typedef BidirectionalSequenceRNNOptionsBuilder Builder;
6027   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6028     VT_TIME_MAJOR = 4,
6029     VT_FUSED_ACTIVATION_FUNCTION = 6,
6030     VT_MERGE_OUTPUTS = 8,
6031     VT_ASYMMETRIC_QUANTIZE_INPUTS = 10
6032   };
6033   bool time_major() const {
6034     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
6035   }
6036   bool mutate_time_major(bool _time_major = 0) {
6037     return SetField<uint8_t>(VT_TIME_MAJOR, static_cast<uint8_t>(_time_major), 0);
6038   }
6039   tflite::ActivationFunctionType fused_activation_function() const {
6040     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6041   }
6042   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6043     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6044   }
6045   bool merge_outputs() const {
6046     return GetField<uint8_t>(VT_MERGE_OUTPUTS, 0) != 0;
6047   }
6048   bool mutate_merge_outputs(bool _merge_outputs = 0) {
6049     return SetField<uint8_t>(VT_MERGE_OUTPUTS, static_cast<uint8_t>(_merge_outputs), 0);
6050   }
6051   bool asymmetric_quantize_inputs() const {
6052     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
6053   }
6054   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
6055     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
6056   }
6057   bool Verify(flatbuffers::Verifier &verifier) const {
6058     return VerifyTableStart(verifier) &&
6059            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR, 1) &&
6060            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6061            VerifyField<uint8_t>(verifier, VT_MERGE_OUTPUTS, 1) &&
6062            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
6063            verifier.EndTable();
6064   }
6065   BidirectionalSequenceRNNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6066   void UnPackTo(BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6067   static flatbuffers::Offset<BidirectionalSequenceRNNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6068 };
6069 
6070 struct BidirectionalSequenceRNNOptionsBuilder {
6071   typedef BidirectionalSequenceRNNOptions Table;
6072   flatbuffers::FlatBufferBuilder &fbb_;
6073   flatbuffers::uoffset_t start_;
6074   void add_time_major(bool time_major) {
6075     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
6076   }
6077   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6078     fbb_.AddElement<int8_t>(BidirectionalSequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6079   }
6080   void add_merge_outputs(bool merge_outputs) {
6081     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_MERGE_OUTPUTS, static_cast<uint8_t>(merge_outputs), 0);
6082   }
6083   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
6084     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
6085   }
6086   explicit BidirectionalSequenceRNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6087         : fbb_(_fbb) {
6088     start_ = fbb_.StartTable();
6089   }
6090   flatbuffers::Offset<BidirectionalSequenceRNNOptions> Finish() {
6091     const auto end = fbb_.EndTable(start_);
6092     auto o = flatbuffers::Offset<BidirectionalSequenceRNNOptions>(end);
6093     return o;
6094   }
6095 };
6096 
6097 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(
6098     flatbuffers::FlatBufferBuilder &_fbb,
6099     bool time_major = false,
6100     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6101     bool merge_outputs = false,
6102     bool asymmetric_quantize_inputs = false) {
6103   BidirectionalSequenceRNNOptionsBuilder builder_(_fbb);
6104   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
6105   builder_.add_merge_outputs(merge_outputs);
6106   builder_.add_fused_activation_function(fused_activation_function);
6107   builder_.add_time_major(time_major);
6108   return builder_.Finish();
6109 }
6110 
6111 flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6112 
6113 struct FullyConnectedOptionsT : public flatbuffers::NativeTable {
6114   typedef FullyConnectedOptions TableType;
6115   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6116   tflite::FullyConnectedOptionsWeightsFormat weights_format = tflite::FullyConnectedOptionsWeightsFormat_DEFAULT;
6117   bool keep_num_dims = false;
6118   bool asymmetric_quantize_inputs = false;
6119 };
6120 
6121 struct FullyConnectedOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6122   typedef FullyConnectedOptionsT NativeTableType;
6123   typedef FullyConnectedOptionsBuilder Builder;
6124   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6125     VT_FUSED_ACTIVATION_FUNCTION = 4,
6126     VT_WEIGHTS_FORMAT = 6,
6127     VT_KEEP_NUM_DIMS = 8,
6128     VT_ASYMMETRIC_QUANTIZE_INPUTS = 10
6129   };
6130   tflite::ActivationFunctionType fused_activation_function() const {
6131     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6132   }
6133   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6134     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6135   }
6136   tflite::FullyConnectedOptionsWeightsFormat weights_format() const {
6137     return static_cast<tflite::FullyConnectedOptionsWeightsFormat>(GetField<int8_t>(VT_WEIGHTS_FORMAT, 0));
6138   }
6139   bool mutate_weights_format(tflite::FullyConnectedOptionsWeightsFormat _weights_format = static_cast<tflite::FullyConnectedOptionsWeightsFormat>(0)) {
6140     return SetField<int8_t>(VT_WEIGHTS_FORMAT, static_cast<int8_t>(_weights_format), 0);
6141   }
6142   bool keep_num_dims() const {
6143     return GetField<uint8_t>(VT_KEEP_NUM_DIMS, 0) != 0;
6144   }
6145   bool mutate_keep_num_dims(bool _keep_num_dims = 0) {
6146     return SetField<uint8_t>(VT_KEEP_NUM_DIMS, static_cast<uint8_t>(_keep_num_dims), 0);
6147   }
6148   bool asymmetric_quantize_inputs() const {
6149     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
6150   }
6151   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
6152     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
6153   }
6154   bool Verify(flatbuffers::Verifier &verifier) const {
6155     return VerifyTableStart(verifier) &&
6156            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6157            VerifyField<int8_t>(verifier, VT_WEIGHTS_FORMAT, 1) &&
6158            VerifyField<uint8_t>(verifier, VT_KEEP_NUM_DIMS, 1) &&
6159            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
6160            verifier.EndTable();
6161   }
6162   FullyConnectedOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6163   void UnPackTo(FullyConnectedOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6164   static flatbuffers::Offset<FullyConnectedOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6165 };
6166 
6167 struct FullyConnectedOptionsBuilder {
6168   typedef FullyConnectedOptions Table;
6169   flatbuffers::FlatBufferBuilder &fbb_;
6170   flatbuffers::uoffset_t start_;
6171   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6172     fbb_.AddElement<int8_t>(FullyConnectedOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6173   }
6174   void add_weights_format(tflite::FullyConnectedOptionsWeightsFormat weights_format) {
6175     fbb_.AddElement<int8_t>(FullyConnectedOptions::VT_WEIGHTS_FORMAT, static_cast<int8_t>(weights_format), 0);
6176   }
6177   void add_keep_num_dims(bool keep_num_dims) {
6178     fbb_.AddElement<uint8_t>(FullyConnectedOptions::VT_KEEP_NUM_DIMS, static_cast<uint8_t>(keep_num_dims), 0);
6179   }
6180   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
6181     fbb_.AddElement<uint8_t>(FullyConnectedOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
6182   }
6183   explicit FullyConnectedOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6184         : fbb_(_fbb) {
6185     start_ = fbb_.StartTable();
6186   }
6187   flatbuffers::Offset<FullyConnectedOptions> Finish() {
6188     const auto end = fbb_.EndTable(start_);
6189     auto o = flatbuffers::Offset<FullyConnectedOptions>(end);
6190     return o;
6191   }
6192 };
6193 
6194 inline flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(
6195     flatbuffers::FlatBufferBuilder &_fbb,
6196     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6197     tflite::FullyConnectedOptionsWeightsFormat weights_format = tflite::FullyConnectedOptionsWeightsFormat_DEFAULT,
6198     bool keep_num_dims = false,
6199     bool asymmetric_quantize_inputs = false) {
6200   FullyConnectedOptionsBuilder builder_(_fbb);
6201   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
6202   builder_.add_keep_num_dims(keep_num_dims);
6203   builder_.add_weights_format(weights_format);
6204   builder_.add_fused_activation_function(fused_activation_function);
6205   return builder_.Finish();
6206 }
6207 
6208 flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6209 
6210 struct SoftmaxOptionsT : public flatbuffers::NativeTable {
6211   typedef SoftmaxOptions TableType;
6212   float beta = 0.0f;
6213 };
6214 
6215 struct SoftmaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6216   typedef SoftmaxOptionsT NativeTableType;
6217   typedef SoftmaxOptionsBuilder Builder;
6218   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6219     VT_BETA = 4
6220   };
6221   float beta() const {
6222     return GetField<float>(VT_BETA, 0.0f);
6223   }
6224   bool mutate_beta(float _beta = 0.0f) {
6225     return SetField<float>(VT_BETA, _beta, 0.0f);
6226   }
6227   bool Verify(flatbuffers::Verifier &verifier) const {
6228     return VerifyTableStart(verifier) &&
6229            VerifyField<float>(verifier, VT_BETA, 4) &&
6230            verifier.EndTable();
6231   }
6232   SoftmaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6233   void UnPackTo(SoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6234   static flatbuffers::Offset<SoftmaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6235 };
6236 
6237 struct SoftmaxOptionsBuilder {
6238   typedef SoftmaxOptions Table;
6239   flatbuffers::FlatBufferBuilder &fbb_;
6240   flatbuffers::uoffset_t start_;
6241   void add_beta(float beta) {
6242     fbb_.AddElement<float>(SoftmaxOptions::VT_BETA, beta, 0.0f);
6243   }
6244   explicit SoftmaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6245         : fbb_(_fbb) {
6246     start_ = fbb_.StartTable();
6247   }
6248   flatbuffers::Offset<SoftmaxOptions> Finish() {
6249     const auto end = fbb_.EndTable(start_);
6250     auto o = flatbuffers::Offset<SoftmaxOptions>(end);
6251     return o;
6252   }
6253 };
6254 
6255 inline flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(
6256     flatbuffers::FlatBufferBuilder &_fbb,
6257     float beta = 0.0f) {
6258   SoftmaxOptionsBuilder builder_(_fbb);
6259   builder_.add_beta(beta);
6260   return builder_.Finish();
6261 }
6262 
6263 flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6264 
6265 struct ConcatenationOptionsT : public flatbuffers::NativeTable {
6266   typedef ConcatenationOptions TableType;
6267   int32_t axis = 0;
6268   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6269 };
6270 
6271 struct ConcatenationOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6272   typedef ConcatenationOptionsT NativeTableType;
6273   typedef ConcatenationOptionsBuilder Builder;
6274   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6275     VT_AXIS = 4,
6276     VT_FUSED_ACTIVATION_FUNCTION = 6
6277   };
6278   int32_t axis() const {
6279     return GetField<int32_t>(VT_AXIS, 0);
6280   }
6281   bool mutate_axis(int32_t _axis = 0) {
6282     return SetField<int32_t>(VT_AXIS, _axis, 0);
6283   }
6284   tflite::ActivationFunctionType fused_activation_function() const {
6285     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6286   }
6287   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6288     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6289   }
6290   bool Verify(flatbuffers::Verifier &verifier) const {
6291     return VerifyTableStart(verifier) &&
6292            VerifyField<int32_t>(verifier, VT_AXIS, 4) &&
6293            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6294            verifier.EndTable();
6295   }
6296   ConcatenationOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6297   void UnPackTo(ConcatenationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6298   static flatbuffers::Offset<ConcatenationOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6299 };
6300 
6301 struct ConcatenationOptionsBuilder {
6302   typedef ConcatenationOptions Table;
6303   flatbuffers::FlatBufferBuilder &fbb_;
6304   flatbuffers::uoffset_t start_;
6305   void add_axis(int32_t axis) {
6306     fbb_.AddElement<int32_t>(ConcatenationOptions::VT_AXIS, axis, 0);
6307   }
6308   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6309     fbb_.AddElement<int8_t>(ConcatenationOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6310   }
6311   explicit ConcatenationOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6312         : fbb_(_fbb) {
6313     start_ = fbb_.StartTable();
6314   }
6315   flatbuffers::Offset<ConcatenationOptions> Finish() {
6316     const auto end = fbb_.EndTable(start_);
6317     auto o = flatbuffers::Offset<ConcatenationOptions>(end);
6318     return o;
6319   }
6320 };
6321 
6322 inline flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(
6323     flatbuffers::FlatBufferBuilder &_fbb,
6324     int32_t axis = 0,
6325     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
6326   ConcatenationOptionsBuilder builder_(_fbb);
6327   builder_.add_axis(axis);
6328   builder_.add_fused_activation_function(fused_activation_function);
6329   return builder_.Finish();
6330 }
6331 
6332 flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6333 
6334 struct AddOptionsT : public flatbuffers::NativeTable {
6335   typedef AddOptions TableType;
6336   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6337   bool pot_scale_int16 = true;
6338 };
6339 
6340 struct AddOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6341   typedef AddOptionsT NativeTableType;
6342   typedef AddOptionsBuilder Builder;
6343   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6344     VT_FUSED_ACTIVATION_FUNCTION = 4,
6345     VT_POT_SCALE_INT16 = 6
6346   };
6347   tflite::ActivationFunctionType fused_activation_function() const {
6348     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6349   }
6350   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6351     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6352   }
6353   bool pot_scale_int16() const {
6354     return GetField<uint8_t>(VT_POT_SCALE_INT16, 1) != 0;
6355   }
6356   bool mutate_pot_scale_int16(bool _pot_scale_int16 = 1) {
6357     return SetField<uint8_t>(VT_POT_SCALE_INT16, static_cast<uint8_t>(_pot_scale_int16), 1);
6358   }
6359   bool Verify(flatbuffers::Verifier &verifier) const {
6360     return VerifyTableStart(verifier) &&
6361            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6362            VerifyField<uint8_t>(verifier, VT_POT_SCALE_INT16, 1) &&
6363            verifier.EndTable();
6364   }
6365   AddOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6366   void UnPackTo(AddOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6367   static flatbuffers::Offset<AddOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6368 };
6369 
6370 struct AddOptionsBuilder {
6371   typedef AddOptions Table;
6372   flatbuffers::FlatBufferBuilder &fbb_;
6373   flatbuffers::uoffset_t start_;
6374   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6375     fbb_.AddElement<int8_t>(AddOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6376   }
6377   void add_pot_scale_int16(bool pot_scale_int16) {
6378     fbb_.AddElement<uint8_t>(AddOptions::VT_POT_SCALE_INT16, static_cast<uint8_t>(pot_scale_int16), 1);
6379   }
6380   explicit AddOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6381         : fbb_(_fbb) {
6382     start_ = fbb_.StartTable();
6383   }
6384   flatbuffers::Offset<AddOptions> Finish() {
6385     const auto end = fbb_.EndTable(start_);
6386     auto o = flatbuffers::Offset<AddOptions>(end);
6387     return o;
6388   }
6389 };
6390 
6391 inline flatbuffers::Offset<AddOptions> CreateAddOptions(
6392     flatbuffers::FlatBufferBuilder &_fbb,
6393     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6394     bool pot_scale_int16 = true) {
6395   AddOptionsBuilder builder_(_fbb);
6396   builder_.add_pot_scale_int16(pot_scale_int16);
6397   builder_.add_fused_activation_function(fused_activation_function);
6398   return builder_.Finish();
6399 }
6400 
6401 flatbuffers::Offset<AddOptions> CreateAddOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6402 
6403 struct MulOptionsT : public flatbuffers::NativeTable {
6404   typedef MulOptions TableType;
6405   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6406 };
6407 
6408 struct MulOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6409   typedef MulOptionsT NativeTableType;
6410   typedef MulOptionsBuilder Builder;
6411   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6412     VT_FUSED_ACTIVATION_FUNCTION = 4
6413   };
6414   tflite::ActivationFunctionType fused_activation_function() const {
6415     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6416   }
6417   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6418     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6419   }
6420   bool Verify(flatbuffers::Verifier &verifier) const {
6421     return VerifyTableStart(verifier) &&
6422            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6423            verifier.EndTable();
6424   }
6425   MulOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6426   void UnPackTo(MulOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6427   static flatbuffers::Offset<MulOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6428 };
6429 
6430 struct MulOptionsBuilder {
6431   typedef MulOptions Table;
6432   flatbuffers::FlatBufferBuilder &fbb_;
6433   flatbuffers::uoffset_t start_;
6434   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6435     fbb_.AddElement<int8_t>(MulOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6436   }
6437   explicit MulOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6438         : fbb_(_fbb) {
6439     start_ = fbb_.StartTable();
6440   }
6441   flatbuffers::Offset<MulOptions> Finish() {
6442     const auto end = fbb_.EndTable(start_);
6443     auto o = flatbuffers::Offset<MulOptions>(end);
6444     return o;
6445   }
6446 };
6447 
6448 inline flatbuffers::Offset<MulOptions> CreateMulOptions(
6449     flatbuffers::FlatBufferBuilder &_fbb,
6450     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
6451   MulOptionsBuilder builder_(_fbb);
6452   builder_.add_fused_activation_function(fused_activation_function);
6453   return builder_.Finish();
6454 }
6455 
6456 flatbuffers::Offset<MulOptions> CreateMulOptions(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6457 
6458 struct L2NormOptionsT : public flatbuffers::NativeTable {
6459   typedef L2NormOptions TableType;
6460   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6461 };
6462 
6463 struct L2NormOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6464   typedef L2NormOptionsT NativeTableType;
6465   typedef L2NormOptionsBuilder Builder;
6466   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6467     VT_FUSED_ACTIVATION_FUNCTION = 4
6468   };
6469   tflite::ActivationFunctionType fused_activation_function() const {
6470     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6471   }
6472   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6473     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6474   }
6475   bool Verify(flatbuffers::Verifier &verifier) const {
6476     return VerifyTableStart(verifier) &&
6477            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6478            verifier.EndTable();
6479   }
6480   L2NormOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6481   void UnPackTo(L2NormOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6482   static flatbuffers::Offset<L2NormOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6483 };
6484 
6485 struct L2NormOptionsBuilder {
6486   typedef L2NormOptions Table;
6487   flatbuffers::FlatBufferBuilder &fbb_;
6488   flatbuffers::uoffset_t start_;
6489   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6490     fbb_.AddElement<int8_t>(L2NormOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6491   }
6492   explicit L2NormOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6493         : fbb_(_fbb) {
6494     start_ = fbb_.StartTable();
6495   }
6496   flatbuffers::Offset<L2NormOptions> Finish() {
6497     const auto end = fbb_.EndTable(start_);
6498     auto o = flatbuffers::Offset<L2NormOptions>(end);
6499     return o;
6500   }
6501 };
6502 
6503 inline flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(
6504     flatbuffers::FlatBufferBuilder &_fbb,
6505     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
6506   L2NormOptionsBuilder builder_(_fbb);
6507   builder_.add_fused_activation_function(fused_activation_function);
6508   return builder_.Finish();
6509 }
6510 
6511 flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6512 
6513 struct LocalResponseNormalizationOptionsT : public flatbuffers::NativeTable {
6514   typedef LocalResponseNormalizationOptions TableType;
6515   int32_t radius = 0;
6516   float bias = 0.0f;
6517   float alpha = 0.0f;
6518   float beta = 0.0f;
6519 };
6520 
6521 struct LocalResponseNormalizationOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6522   typedef LocalResponseNormalizationOptionsT NativeTableType;
6523   typedef LocalResponseNormalizationOptionsBuilder Builder;
6524   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6525     VT_RADIUS = 4,
6526     VT_BIAS = 6,
6527     VT_ALPHA = 8,
6528     VT_BETA = 10
6529   };
6530   int32_t radius() const {
6531     return GetField<int32_t>(VT_RADIUS, 0);
6532   }
6533   bool mutate_radius(int32_t _radius = 0) {
6534     return SetField<int32_t>(VT_RADIUS, _radius, 0);
6535   }
6536   float bias() const {
6537     return GetField<float>(VT_BIAS, 0.0f);
6538   }
6539   bool mutate_bias(float _bias = 0.0f) {
6540     return SetField<float>(VT_BIAS, _bias, 0.0f);
6541   }
6542   float alpha() const {
6543     return GetField<float>(VT_ALPHA, 0.0f);
6544   }
6545   bool mutate_alpha(float _alpha = 0.0f) {
6546     return SetField<float>(VT_ALPHA, _alpha, 0.0f);
6547   }
6548   float beta() const {
6549     return GetField<float>(VT_BETA, 0.0f);
6550   }
6551   bool mutate_beta(float _beta = 0.0f) {
6552     return SetField<float>(VT_BETA, _beta, 0.0f);
6553   }
6554   bool Verify(flatbuffers::Verifier &verifier) const {
6555     return VerifyTableStart(verifier) &&
6556            VerifyField<int32_t>(verifier, VT_RADIUS, 4) &&
6557            VerifyField<float>(verifier, VT_BIAS, 4) &&
6558            VerifyField<float>(verifier, VT_ALPHA, 4) &&
6559            VerifyField<float>(verifier, VT_BETA, 4) &&
6560            verifier.EndTable();
6561   }
6562   LocalResponseNormalizationOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6563   void UnPackTo(LocalResponseNormalizationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6564   static flatbuffers::Offset<LocalResponseNormalizationOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6565 };
6566 
6567 struct LocalResponseNormalizationOptionsBuilder {
6568   typedef LocalResponseNormalizationOptions Table;
6569   flatbuffers::FlatBufferBuilder &fbb_;
6570   flatbuffers::uoffset_t start_;
6571   void add_radius(int32_t radius) {
6572     fbb_.AddElement<int32_t>(LocalResponseNormalizationOptions::VT_RADIUS, radius, 0);
6573   }
6574   void add_bias(float bias) {
6575     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_BIAS, bias, 0.0f);
6576   }
6577   void add_alpha(float alpha) {
6578     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_ALPHA, alpha, 0.0f);
6579   }
6580   void add_beta(float beta) {
6581     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_BETA, beta, 0.0f);
6582   }
6583   explicit LocalResponseNormalizationOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6584         : fbb_(_fbb) {
6585     start_ = fbb_.StartTable();
6586   }
6587   flatbuffers::Offset<LocalResponseNormalizationOptions> Finish() {
6588     const auto end = fbb_.EndTable(start_);
6589     auto o = flatbuffers::Offset<LocalResponseNormalizationOptions>(end);
6590     return o;
6591   }
6592 };
6593 
6594 inline flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(
6595     flatbuffers::FlatBufferBuilder &_fbb,
6596     int32_t radius = 0,
6597     float bias = 0.0f,
6598     float alpha = 0.0f,
6599     float beta = 0.0f) {
6600   LocalResponseNormalizationOptionsBuilder builder_(_fbb);
6601   builder_.add_beta(beta);
6602   builder_.add_alpha(alpha);
6603   builder_.add_bias(bias);
6604   builder_.add_radius(radius);
6605   return builder_.Finish();
6606 }
6607 
6608 flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6609 
6610 struct LSTMOptionsT : public flatbuffers::NativeTable {
6611   typedef LSTMOptions TableType;
6612   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6613   float cell_clip = 0.0f;
6614   float proj_clip = 0.0f;
6615   tflite::LSTMKernelType kernel_type = tflite::LSTMKernelType_FULL;
6616   bool asymmetric_quantize_inputs = false;
6617 };
6618 
6619 struct LSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6620   typedef LSTMOptionsT NativeTableType;
6621   typedef LSTMOptionsBuilder Builder;
6622   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6623     VT_FUSED_ACTIVATION_FUNCTION = 4,
6624     VT_CELL_CLIP = 6,
6625     VT_PROJ_CLIP = 8,
6626     VT_KERNEL_TYPE = 10,
6627     VT_ASYMMETRIC_QUANTIZE_INPUTS = 12
6628   };
6629   tflite::ActivationFunctionType fused_activation_function() const {
6630     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6631   }
6632   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6633     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6634   }
6635   float cell_clip() const {
6636     return GetField<float>(VT_CELL_CLIP, 0.0f);
6637   }
6638   bool mutate_cell_clip(float _cell_clip = 0.0f) {
6639     return SetField<float>(VT_CELL_CLIP, _cell_clip, 0.0f);
6640   }
6641   float proj_clip() const {
6642     return GetField<float>(VT_PROJ_CLIP, 0.0f);
6643   }
6644   bool mutate_proj_clip(float _proj_clip = 0.0f) {
6645     return SetField<float>(VT_PROJ_CLIP, _proj_clip, 0.0f);
6646   }
6647   tflite::LSTMKernelType kernel_type() const {
6648     return static_cast<tflite::LSTMKernelType>(GetField<int8_t>(VT_KERNEL_TYPE, 0));
6649   }
6650   bool mutate_kernel_type(tflite::LSTMKernelType _kernel_type = static_cast<tflite::LSTMKernelType>(0)) {
6651     return SetField<int8_t>(VT_KERNEL_TYPE, static_cast<int8_t>(_kernel_type), 0);
6652   }
6653   bool asymmetric_quantize_inputs() const {
6654     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
6655   }
6656   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
6657     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
6658   }
6659   bool Verify(flatbuffers::Verifier &verifier) const {
6660     return VerifyTableStart(verifier) &&
6661            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6662            VerifyField<float>(verifier, VT_CELL_CLIP, 4) &&
6663            VerifyField<float>(verifier, VT_PROJ_CLIP, 4) &&
6664            VerifyField<int8_t>(verifier, VT_KERNEL_TYPE, 1) &&
6665            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
6666            verifier.EndTable();
6667   }
6668   LSTMOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6669   void UnPackTo(LSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6670   static flatbuffers::Offset<LSTMOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6671 };
6672 
6673 struct LSTMOptionsBuilder {
6674   typedef LSTMOptions Table;
6675   flatbuffers::FlatBufferBuilder &fbb_;
6676   flatbuffers::uoffset_t start_;
6677   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6678     fbb_.AddElement<int8_t>(LSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6679   }
6680   void add_cell_clip(float cell_clip) {
6681     fbb_.AddElement<float>(LSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
6682   }
6683   void add_proj_clip(float proj_clip) {
6684     fbb_.AddElement<float>(LSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
6685   }
6686   void add_kernel_type(tflite::LSTMKernelType kernel_type) {
6687     fbb_.AddElement<int8_t>(LSTMOptions::VT_KERNEL_TYPE, static_cast<int8_t>(kernel_type), 0);
6688   }
6689   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
6690     fbb_.AddElement<uint8_t>(LSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
6691   }
6692   explicit LSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6693         : fbb_(_fbb) {
6694     start_ = fbb_.StartTable();
6695   }
6696   flatbuffers::Offset<LSTMOptions> Finish() {
6697     const auto end = fbb_.EndTable(start_);
6698     auto o = flatbuffers::Offset<LSTMOptions>(end);
6699     return o;
6700   }
6701 };
6702 
6703 inline flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(
6704     flatbuffers::FlatBufferBuilder &_fbb,
6705     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6706     float cell_clip = 0.0f,
6707     float proj_clip = 0.0f,
6708     tflite::LSTMKernelType kernel_type = tflite::LSTMKernelType_FULL,
6709     bool asymmetric_quantize_inputs = false) {
6710   LSTMOptionsBuilder builder_(_fbb);
6711   builder_.add_proj_clip(proj_clip);
6712   builder_.add_cell_clip(cell_clip);
6713   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
6714   builder_.add_kernel_type(kernel_type);
6715   builder_.add_fused_activation_function(fused_activation_function);
6716   return builder_.Finish();
6717 }
6718 
6719 flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6720 
6721 struct UnidirectionalSequenceLSTMOptionsT : public flatbuffers::NativeTable {
6722   typedef UnidirectionalSequenceLSTMOptions TableType;
6723   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6724   float cell_clip = 0.0f;
6725   float proj_clip = 0.0f;
6726   bool time_major = false;
6727   bool asymmetric_quantize_inputs = false;
6728 };
6729 
6730 struct UnidirectionalSequenceLSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6731   typedef UnidirectionalSequenceLSTMOptionsT NativeTableType;
6732   typedef UnidirectionalSequenceLSTMOptionsBuilder Builder;
6733   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6734     VT_FUSED_ACTIVATION_FUNCTION = 4,
6735     VT_CELL_CLIP = 6,
6736     VT_PROJ_CLIP = 8,
6737     VT_TIME_MAJOR = 10,
6738     VT_ASYMMETRIC_QUANTIZE_INPUTS = 12
6739   };
6740   tflite::ActivationFunctionType fused_activation_function() const {
6741     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6742   }
6743   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6744     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6745   }
6746   float cell_clip() const {
6747     return GetField<float>(VT_CELL_CLIP, 0.0f);
6748   }
6749   bool mutate_cell_clip(float _cell_clip = 0.0f) {
6750     return SetField<float>(VT_CELL_CLIP, _cell_clip, 0.0f);
6751   }
6752   float proj_clip() const {
6753     return GetField<float>(VT_PROJ_CLIP, 0.0f);
6754   }
6755   bool mutate_proj_clip(float _proj_clip = 0.0f) {
6756     return SetField<float>(VT_PROJ_CLIP, _proj_clip, 0.0f);
6757   }
6758   bool time_major() const {
6759     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
6760   }
6761   bool mutate_time_major(bool _time_major = 0) {
6762     return SetField<uint8_t>(VT_TIME_MAJOR, static_cast<uint8_t>(_time_major), 0);
6763   }
6764   bool asymmetric_quantize_inputs() const {
6765     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
6766   }
6767   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
6768     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
6769   }
6770   bool Verify(flatbuffers::Verifier &verifier) const {
6771     return VerifyTableStart(verifier) &&
6772            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6773            VerifyField<float>(verifier, VT_CELL_CLIP, 4) &&
6774            VerifyField<float>(verifier, VT_PROJ_CLIP, 4) &&
6775            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR, 1) &&
6776            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
6777            verifier.EndTable();
6778   }
6779   UnidirectionalSequenceLSTMOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6780   void UnPackTo(UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6781   static flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6782 };
6783 
6784 struct UnidirectionalSequenceLSTMOptionsBuilder {
6785   typedef UnidirectionalSequenceLSTMOptions Table;
6786   flatbuffers::FlatBufferBuilder &fbb_;
6787   flatbuffers::uoffset_t start_;
6788   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6789     fbb_.AddElement<int8_t>(UnidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6790   }
6791   void add_cell_clip(float cell_clip) {
6792     fbb_.AddElement<float>(UnidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
6793   }
6794   void add_proj_clip(float proj_clip) {
6795     fbb_.AddElement<float>(UnidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
6796   }
6797   void add_time_major(bool time_major) {
6798     fbb_.AddElement<uint8_t>(UnidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
6799   }
6800   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
6801     fbb_.AddElement<uint8_t>(UnidirectionalSequenceLSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
6802   }
6803   explicit UnidirectionalSequenceLSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6804         : fbb_(_fbb) {
6805     start_ = fbb_.StartTable();
6806   }
6807   flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> Finish() {
6808     const auto end = fbb_.EndTable(start_);
6809     auto o = flatbuffers::Offset<UnidirectionalSequenceLSTMOptions>(end);
6810     return o;
6811   }
6812 };
6813 
6814 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(
6815     flatbuffers::FlatBufferBuilder &_fbb,
6816     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6817     float cell_clip = 0.0f,
6818     float proj_clip = 0.0f,
6819     bool time_major = false,
6820     bool asymmetric_quantize_inputs = false) {
6821   UnidirectionalSequenceLSTMOptionsBuilder builder_(_fbb);
6822   builder_.add_proj_clip(proj_clip);
6823   builder_.add_cell_clip(cell_clip);
6824   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
6825   builder_.add_time_major(time_major);
6826   builder_.add_fused_activation_function(fused_activation_function);
6827   return builder_.Finish();
6828 }
6829 
6830 flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6831 
6832 struct BidirectionalSequenceLSTMOptionsT : public flatbuffers::NativeTable {
6833   typedef BidirectionalSequenceLSTMOptions TableType;
6834   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
6835   float cell_clip = 0.0f;
6836   float proj_clip = 0.0f;
6837   bool merge_outputs = false;
6838   bool time_major = true;
6839   bool asymmetric_quantize_inputs = false;
6840 };
6841 
6842 struct BidirectionalSequenceLSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6843   typedef BidirectionalSequenceLSTMOptionsT NativeTableType;
6844   typedef BidirectionalSequenceLSTMOptionsBuilder Builder;
6845   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6846     VT_FUSED_ACTIVATION_FUNCTION = 4,
6847     VT_CELL_CLIP = 6,
6848     VT_PROJ_CLIP = 8,
6849     VT_MERGE_OUTPUTS = 10,
6850     VT_TIME_MAJOR = 12,
6851     VT_ASYMMETRIC_QUANTIZE_INPUTS = 14
6852   };
6853   tflite::ActivationFunctionType fused_activation_function() const {
6854     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
6855   }
6856   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
6857     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
6858   }
6859   float cell_clip() const {
6860     return GetField<float>(VT_CELL_CLIP, 0.0f);
6861   }
6862   bool mutate_cell_clip(float _cell_clip = 0.0f) {
6863     return SetField<float>(VT_CELL_CLIP, _cell_clip, 0.0f);
6864   }
6865   float proj_clip() const {
6866     return GetField<float>(VT_PROJ_CLIP, 0.0f);
6867   }
6868   bool mutate_proj_clip(float _proj_clip = 0.0f) {
6869     return SetField<float>(VT_PROJ_CLIP, _proj_clip, 0.0f);
6870   }
6871   bool merge_outputs() const {
6872     return GetField<uint8_t>(VT_MERGE_OUTPUTS, 0) != 0;
6873   }
6874   bool mutate_merge_outputs(bool _merge_outputs = 0) {
6875     return SetField<uint8_t>(VT_MERGE_OUTPUTS, static_cast<uint8_t>(_merge_outputs), 0);
6876   }
6877   bool time_major() const {
6878     return GetField<uint8_t>(VT_TIME_MAJOR, 1) != 0;
6879   }
6880   bool mutate_time_major(bool _time_major = 1) {
6881     return SetField<uint8_t>(VT_TIME_MAJOR, static_cast<uint8_t>(_time_major), 1);
6882   }
6883   bool asymmetric_quantize_inputs() const {
6884     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
6885   }
6886   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
6887     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
6888   }
6889   bool Verify(flatbuffers::Verifier &verifier) const {
6890     return VerifyTableStart(verifier) &&
6891            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
6892            VerifyField<float>(verifier, VT_CELL_CLIP, 4) &&
6893            VerifyField<float>(verifier, VT_PROJ_CLIP, 4) &&
6894            VerifyField<uint8_t>(verifier, VT_MERGE_OUTPUTS, 1) &&
6895            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR, 1) &&
6896            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
6897            verifier.EndTable();
6898   }
6899   BidirectionalSequenceLSTMOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6900   void UnPackTo(BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6901   static flatbuffers::Offset<BidirectionalSequenceLSTMOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6902 };
6903 
6904 struct BidirectionalSequenceLSTMOptionsBuilder {
6905   typedef BidirectionalSequenceLSTMOptions Table;
6906   flatbuffers::FlatBufferBuilder &fbb_;
6907   flatbuffers::uoffset_t start_;
6908   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
6909     fbb_.AddElement<int8_t>(BidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
6910   }
6911   void add_cell_clip(float cell_clip) {
6912     fbb_.AddElement<float>(BidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
6913   }
6914   void add_proj_clip(float proj_clip) {
6915     fbb_.AddElement<float>(BidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
6916   }
6917   void add_merge_outputs(bool merge_outputs) {
6918     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_MERGE_OUTPUTS, static_cast<uint8_t>(merge_outputs), 0);
6919   }
6920   void add_time_major(bool time_major) {
6921     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 1);
6922   }
6923   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
6924     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
6925   }
6926   explicit BidirectionalSequenceLSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6927         : fbb_(_fbb) {
6928     start_ = fbb_.StartTable();
6929   }
6930   flatbuffers::Offset<BidirectionalSequenceLSTMOptions> Finish() {
6931     const auto end = fbb_.EndTable(start_);
6932     auto o = flatbuffers::Offset<BidirectionalSequenceLSTMOptions>(end);
6933     return o;
6934   }
6935 };
6936 
6937 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(
6938     flatbuffers::FlatBufferBuilder &_fbb,
6939     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
6940     float cell_clip = 0.0f,
6941     float proj_clip = 0.0f,
6942     bool merge_outputs = false,
6943     bool time_major = true,
6944     bool asymmetric_quantize_inputs = false) {
6945   BidirectionalSequenceLSTMOptionsBuilder builder_(_fbb);
6946   builder_.add_proj_clip(proj_clip);
6947   builder_.add_cell_clip(cell_clip);
6948   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
6949   builder_.add_time_major(time_major);
6950   builder_.add_merge_outputs(merge_outputs);
6951   builder_.add_fused_activation_function(fused_activation_function);
6952   return builder_.Finish();
6953 }
6954 
6955 flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6956 
6957 struct ResizeBilinearOptionsT : public flatbuffers::NativeTable {
6958   typedef ResizeBilinearOptions TableType;
6959   bool align_corners = false;
6960   bool half_pixel_centers = false;
6961 };
6962 
6963 struct ResizeBilinearOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6964   typedef ResizeBilinearOptionsT NativeTableType;
6965   typedef ResizeBilinearOptionsBuilder Builder;
6966   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6967     VT_ALIGN_CORNERS = 8,
6968     VT_HALF_PIXEL_CENTERS = 10
6969   };
6970   bool align_corners() const {
6971     return GetField<uint8_t>(VT_ALIGN_CORNERS, 0) != 0;
6972   }
6973   bool mutate_align_corners(bool _align_corners = 0) {
6974     return SetField<uint8_t>(VT_ALIGN_CORNERS, static_cast<uint8_t>(_align_corners), 0);
6975   }
6976   bool half_pixel_centers() const {
6977     return GetField<uint8_t>(VT_HALF_PIXEL_CENTERS, 0) != 0;
6978   }
6979   bool mutate_half_pixel_centers(bool _half_pixel_centers = 0) {
6980     return SetField<uint8_t>(VT_HALF_PIXEL_CENTERS, static_cast<uint8_t>(_half_pixel_centers), 0);
6981   }
6982   bool Verify(flatbuffers::Verifier &verifier) const {
6983     return VerifyTableStart(verifier) &&
6984            VerifyField<uint8_t>(verifier, VT_ALIGN_CORNERS, 1) &&
6985            VerifyField<uint8_t>(verifier, VT_HALF_PIXEL_CENTERS, 1) &&
6986            verifier.EndTable();
6987   }
6988   ResizeBilinearOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6989   void UnPackTo(ResizeBilinearOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6990   static flatbuffers::Offset<ResizeBilinearOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6991 };
6992 
6993 struct ResizeBilinearOptionsBuilder {
6994   typedef ResizeBilinearOptions Table;
6995   flatbuffers::FlatBufferBuilder &fbb_;
6996   flatbuffers::uoffset_t start_;
6997   void add_align_corners(bool align_corners) {
6998     fbb_.AddElement<uint8_t>(ResizeBilinearOptions::VT_ALIGN_CORNERS, static_cast<uint8_t>(align_corners), 0);
6999   }
7000   void add_half_pixel_centers(bool half_pixel_centers) {
7001     fbb_.AddElement<uint8_t>(ResizeBilinearOptions::VT_HALF_PIXEL_CENTERS, static_cast<uint8_t>(half_pixel_centers), 0);
7002   }
7003   explicit ResizeBilinearOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7004         : fbb_(_fbb) {
7005     start_ = fbb_.StartTable();
7006   }
7007   flatbuffers::Offset<ResizeBilinearOptions> Finish() {
7008     const auto end = fbb_.EndTable(start_);
7009     auto o = flatbuffers::Offset<ResizeBilinearOptions>(end);
7010     return o;
7011   }
7012 };
7013 
7014 inline flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(
7015     flatbuffers::FlatBufferBuilder &_fbb,
7016     bool align_corners = false,
7017     bool half_pixel_centers = false) {
7018   ResizeBilinearOptionsBuilder builder_(_fbb);
7019   builder_.add_half_pixel_centers(half_pixel_centers);
7020   builder_.add_align_corners(align_corners);
7021   return builder_.Finish();
7022 }
7023 
7024 flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7025 
7026 struct ResizeNearestNeighborOptionsT : public flatbuffers::NativeTable {
7027   typedef ResizeNearestNeighborOptions TableType;
7028   bool align_corners = false;
7029   bool half_pixel_centers = false;
7030 };
7031 
7032 struct ResizeNearestNeighborOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7033   typedef ResizeNearestNeighborOptionsT NativeTableType;
7034   typedef ResizeNearestNeighborOptionsBuilder Builder;
7035   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7036     VT_ALIGN_CORNERS = 4,
7037     VT_HALF_PIXEL_CENTERS = 6
7038   };
7039   bool align_corners() const {
7040     return GetField<uint8_t>(VT_ALIGN_CORNERS, 0) != 0;
7041   }
7042   bool mutate_align_corners(bool _align_corners = 0) {
7043     return SetField<uint8_t>(VT_ALIGN_CORNERS, static_cast<uint8_t>(_align_corners), 0);
7044   }
7045   bool half_pixel_centers() const {
7046     return GetField<uint8_t>(VT_HALF_PIXEL_CENTERS, 0) != 0;
7047   }
7048   bool mutate_half_pixel_centers(bool _half_pixel_centers = 0) {
7049     return SetField<uint8_t>(VT_HALF_PIXEL_CENTERS, static_cast<uint8_t>(_half_pixel_centers), 0);
7050   }
7051   bool Verify(flatbuffers::Verifier &verifier) const {
7052     return VerifyTableStart(verifier) &&
7053            VerifyField<uint8_t>(verifier, VT_ALIGN_CORNERS, 1) &&
7054            VerifyField<uint8_t>(verifier, VT_HALF_PIXEL_CENTERS, 1) &&
7055            verifier.EndTable();
7056   }
7057   ResizeNearestNeighborOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7058   void UnPackTo(ResizeNearestNeighborOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7059   static flatbuffers::Offset<ResizeNearestNeighborOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7060 };
7061 
7062 struct ResizeNearestNeighborOptionsBuilder {
7063   typedef ResizeNearestNeighborOptions Table;
7064   flatbuffers::FlatBufferBuilder &fbb_;
7065   flatbuffers::uoffset_t start_;
7066   void add_align_corners(bool align_corners) {
7067     fbb_.AddElement<uint8_t>(ResizeNearestNeighborOptions::VT_ALIGN_CORNERS, static_cast<uint8_t>(align_corners), 0);
7068   }
7069   void add_half_pixel_centers(bool half_pixel_centers) {
7070     fbb_.AddElement<uint8_t>(ResizeNearestNeighborOptions::VT_HALF_PIXEL_CENTERS, static_cast<uint8_t>(half_pixel_centers), 0);
7071   }
7072   explicit ResizeNearestNeighborOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7073         : fbb_(_fbb) {
7074     start_ = fbb_.StartTable();
7075   }
7076   flatbuffers::Offset<ResizeNearestNeighborOptions> Finish() {
7077     const auto end = fbb_.EndTable(start_);
7078     auto o = flatbuffers::Offset<ResizeNearestNeighborOptions>(end);
7079     return o;
7080   }
7081 };
7082 
7083 inline flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(
7084     flatbuffers::FlatBufferBuilder &_fbb,
7085     bool align_corners = false,
7086     bool half_pixel_centers = false) {
7087   ResizeNearestNeighborOptionsBuilder builder_(_fbb);
7088   builder_.add_half_pixel_centers(half_pixel_centers);
7089   builder_.add_align_corners(align_corners);
7090   return builder_.Finish();
7091 }
7092 
7093 flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7094 
7095 struct CallOptionsT : public flatbuffers::NativeTable {
7096   typedef CallOptions TableType;
7097   uint32_t subgraph = 0;
7098 };
7099 
7100 struct CallOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7101   typedef CallOptionsT NativeTableType;
7102   typedef CallOptionsBuilder Builder;
7103   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7104     VT_SUBGRAPH = 4
7105   };
7106   uint32_t subgraph() const {
7107     return GetField<uint32_t>(VT_SUBGRAPH, 0);
7108   }
7109   bool mutate_subgraph(uint32_t _subgraph = 0) {
7110     return SetField<uint32_t>(VT_SUBGRAPH, _subgraph, 0);
7111   }
7112   bool Verify(flatbuffers::Verifier &verifier) const {
7113     return VerifyTableStart(verifier) &&
7114            VerifyField<uint32_t>(verifier, VT_SUBGRAPH, 4) &&
7115            verifier.EndTable();
7116   }
7117   CallOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7118   void UnPackTo(CallOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7119   static flatbuffers::Offset<CallOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7120 };
7121 
7122 struct CallOptionsBuilder {
7123   typedef CallOptions Table;
7124   flatbuffers::FlatBufferBuilder &fbb_;
7125   flatbuffers::uoffset_t start_;
7126   void add_subgraph(uint32_t subgraph) {
7127     fbb_.AddElement<uint32_t>(CallOptions::VT_SUBGRAPH, subgraph, 0);
7128   }
7129   explicit CallOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7130         : fbb_(_fbb) {
7131     start_ = fbb_.StartTable();
7132   }
7133   flatbuffers::Offset<CallOptions> Finish() {
7134     const auto end = fbb_.EndTable(start_);
7135     auto o = flatbuffers::Offset<CallOptions>(end);
7136     return o;
7137   }
7138 };
7139 
7140 inline flatbuffers::Offset<CallOptions> CreateCallOptions(
7141     flatbuffers::FlatBufferBuilder &_fbb,
7142     uint32_t subgraph = 0) {
7143   CallOptionsBuilder builder_(_fbb);
7144   builder_.add_subgraph(subgraph);
7145   return builder_.Finish();
7146 }
7147 
7148 flatbuffers::Offset<CallOptions> CreateCallOptions(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7149 
7150 struct PadOptionsT : public flatbuffers::NativeTable {
7151   typedef PadOptions TableType;
7152 };
7153 
7154 struct PadOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7155   typedef PadOptionsT NativeTableType;
7156   typedef PadOptionsBuilder Builder;
7157   bool Verify(flatbuffers::Verifier &verifier) const {
7158     return VerifyTableStart(verifier) &&
7159            verifier.EndTable();
7160   }
7161   PadOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7162   void UnPackTo(PadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7163   static flatbuffers::Offset<PadOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7164 };
7165 
7166 struct PadOptionsBuilder {
7167   typedef PadOptions Table;
7168   flatbuffers::FlatBufferBuilder &fbb_;
7169   flatbuffers::uoffset_t start_;
7170   explicit PadOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7171         : fbb_(_fbb) {
7172     start_ = fbb_.StartTable();
7173   }
7174   flatbuffers::Offset<PadOptions> Finish() {
7175     const auto end = fbb_.EndTable(start_);
7176     auto o = flatbuffers::Offset<PadOptions>(end);
7177     return o;
7178   }
7179 };
7180 
7181 inline flatbuffers::Offset<PadOptions> CreatePadOptions(
7182     flatbuffers::FlatBufferBuilder &_fbb) {
7183   PadOptionsBuilder builder_(_fbb);
7184   return builder_.Finish();
7185 }
7186 
7187 flatbuffers::Offset<PadOptions> CreatePadOptions(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7188 
7189 struct PadV2OptionsT : public flatbuffers::NativeTable {
7190   typedef PadV2Options TableType;
7191 };
7192 
7193 struct PadV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7194   typedef PadV2OptionsT NativeTableType;
7195   typedef PadV2OptionsBuilder Builder;
7196   bool Verify(flatbuffers::Verifier &verifier) const {
7197     return VerifyTableStart(verifier) &&
7198            verifier.EndTable();
7199   }
7200   PadV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7201   void UnPackTo(PadV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7202   static flatbuffers::Offset<PadV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7203 };
7204 
7205 struct PadV2OptionsBuilder {
7206   typedef PadV2Options Table;
7207   flatbuffers::FlatBufferBuilder &fbb_;
7208   flatbuffers::uoffset_t start_;
7209   explicit PadV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7210         : fbb_(_fbb) {
7211     start_ = fbb_.StartTable();
7212   }
7213   flatbuffers::Offset<PadV2Options> Finish() {
7214     const auto end = fbb_.EndTable(start_);
7215     auto o = flatbuffers::Offset<PadV2Options>(end);
7216     return o;
7217   }
7218 };
7219 
7220 inline flatbuffers::Offset<PadV2Options> CreatePadV2Options(
7221     flatbuffers::FlatBufferBuilder &_fbb) {
7222   PadV2OptionsBuilder builder_(_fbb);
7223   return builder_.Finish();
7224 }
7225 
7226 flatbuffers::Offset<PadV2Options> CreatePadV2Options(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7227 
7228 struct ReshapeOptionsT : public flatbuffers::NativeTable {
7229   typedef ReshapeOptions TableType;
7230   std::vector<int32_t> new_shape{};
7231 };
7232 
7233 struct ReshapeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7234   typedef ReshapeOptionsT NativeTableType;
7235   typedef ReshapeOptionsBuilder Builder;
7236   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7237     VT_NEW_SHAPE = 4
7238   };
7239   const flatbuffers::Vector<int32_t> *new_shape() const {
7240     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_NEW_SHAPE);
7241   }
7242   flatbuffers::Vector<int32_t> *mutable_new_shape() {
7243     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_NEW_SHAPE);
7244   }
7245   bool Verify(flatbuffers::Verifier &verifier) const {
7246     return VerifyTableStart(verifier) &&
7247            VerifyOffset(verifier, VT_NEW_SHAPE) &&
7248            verifier.VerifyVector(new_shape()) &&
7249            verifier.EndTable();
7250   }
7251   ReshapeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7252   void UnPackTo(ReshapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7253   static flatbuffers::Offset<ReshapeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7254 };
7255 
7256 struct ReshapeOptionsBuilder {
7257   typedef ReshapeOptions Table;
7258   flatbuffers::FlatBufferBuilder &fbb_;
7259   flatbuffers::uoffset_t start_;
7260   void add_new_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> new_shape) {
7261     fbb_.AddOffset(ReshapeOptions::VT_NEW_SHAPE, new_shape);
7262   }
7263   explicit ReshapeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7264         : fbb_(_fbb) {
7265     start_ = fbb_.StartTable();
7266   }
7267   flatbuffers::Offset<ReshapeOptions> Finish() {
7268     const auto end = fbb_.EndTable(start_);
7269     auto o = flatbuffers::Offset<ReshapeOptions>(end);
7270     return o;
7271   }
7272 };
7273 
7274 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(
7275     flatbuffers::FlatBufferBuilder &_fbb,
7276     flatbuffers::Offset<flatbuffers::Vector<int32_t>> new_shape = 0) {
7277   ReshapeOptionsBuilder builder_(_fbb);
7278   builder_.add_new_shape(new_shape);
7279   return builder_.Finish();
7280 }
7281 
7282 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptionsDirect(
7283     flatbuffers::FlatBufferBuilder &_fbb,
7284     const std::vector<int32_t> *new_shape = nullptr) {
7285   auto new_shape__ = new_shape ? _fbb.CreateVector<int32_t>(*new_shape) : 0;
7286   return tflite::CreateReshapeOptions(
7287       _fbb,
7288       new_shape__);
7289 }
7290 
7291 flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7292 
7293 struct SpaceToBatchNDOptionsT : public flatbuffers::NativeTable {
7294   typedef SpaceToBatchNDOptions TableType;
7295 };
7296 
7297 struct SpaceToBatchNDOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7298   typedef SpaceToBatchNDOptionsT NativeTableType;
7299   typedef SpaceToBatchNDOptionsBuilder Builder;
7300   bool Verify(flatbuffers::Verifier &verifier) const {
7301     return VerifyTableStart(verifier) &&
7302            verifier.EndTable();
7303   }
7304   SpaceToBatchNDOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7305   void UnPackTo(SpaceToBatchNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7306   static flatbuffers::Offset<SpaceToBatchNDOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7307 };
7308 
7309 struct SpaceToBatchNDOptionsBuilder {
7310   typedef SpaceToBatchNDOptions Table;
7311   flatbuffers::FlatBufferBuilder &fbb_;
7312   flatbuffers::uoffset_t start_;
7313   explicit SpaceToBatchNDOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7314         : fbb_(_fbb) {
7315     start_ = fbb_.StartTable();
7316   }
7317   flatbuffers::Offset<SpaceToBatchNDOptions> Finish() {
7318     const auto end = fbb_.EndTable(start_);
7319     auto o = flatbuffers::Offset<SpaceToBatchNDOptions>(end);
7320     return o;
7321   }
7322 };
7323 
7324 inline flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(
7325     flatbuffers::FlatBufferBuilder &_fbb) {
7326   SpaceToBatchNDOptionsBuilder builder_(_fbb);
7327   return builder_.Finish();
7328 }
7329 
7330 flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7331 
7332 struct BatchToSpaceNDOptionsT : public flatbuffers::NativeTable {
7333   typedef BatchToSpaceNDOptions TableType;
7334 };
7335 
7336 struct BatchToSpaceNDOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7337   typedef BatchToSpaceNDOptionsT NativeTableType;
7338   typedef BatchToSpaceNDOptionsBuilder Builder;
7339   bool Verify(flatbuffers::Verifier &verifier) const {
7340     return VerifyTableStart(verifier) &&
7341            verifier.EndTable();
7342   }
7343   BatchToSpaceNDOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7344   void UnPackTo(BatchToSpaceNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7345   static flatbuffers::Offset<BatchToSpaceNDOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7346 };
7347 
7348 struct BatchToSpaceNDOptionsBuilder {
7349   typedef BatchToSpaceNDOptions Table;
7350   flatbuffers::FlatBufferBuilder &fbb_;
7351   flatbuffers::uoffset_t start_;
7352   explicit BatchToSpaceNDOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7353         : fbb_(_fbb) {
7354     start_ = fbb_.StartTable();
7355   }
7356   flatbuffers::Offset<BatchToSpaceNDOptions> Finish() {
7357     const auto end = fbb_.EndTable(start_);
7358     auto o = flatbuffers::Offset<BatchToSpaceNDOptions>(end);
7359     return o;
7360   }
7361 };
7362 
7363 inline flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(
7364     flatbuffers::FlatBufferBuilder &_fbb) {
7365   BatchToSpaceNDOptionsBuilder builder_(_fbb);
7366   return builder_.Finish();
7367 }
7368 
7369 flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7370 
7371 struct SkipGramOptionsT : public flatbuffers::NativeTable {
7372   typedef SkipGramOptions TableType;
7373   int32_t ngram_size = 0;
7374   int32_t max_skip_size = 0;
7375   bool include_all_ngrams = false;
7376 };
7377 
7378 struct SkipGramOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7379   typedef SkipGramOptionsT NativeTableType;
7380   typedef SkipGramOptionsBuilder Builder;
7381   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7382     VT_NGRAM_SIZE = 4,
7383     VT_MAX_SKIP_SIZE = 6,
7384     VT_INCLUDE_ALL_NGRAMS = 8
7385   };
7386   int32_t ngram_size() const {
7387     return GetField<int32_t>(VT_NGRAM_SIZE, 0);
7388   }
7389   bool mutate_ngram_size(int32_t _ngram_size = 0) {
7390     return SetField<int32_t>(VT_NGRAM_SIZE, _ngram_size, 0);
7391   }
7392   int32_t max_skip_size() const {
7393     return GetField<int32_t>(VT_MAX_SKIP_SIZE, 0);
7394   }
7395   bool mutate_max_skip_size(int32_t _max_skip_size = 0) {
7396     return SetField<int32_t>(VT_MAX_SKIP_SIZE, _max_skip_size, 0);
7397   }
7398   bool include_all_ngrams() const {
7399     return GetField<uint8_t>(VT_INCLUDE_ALL_NGRAMS, 0) != 0;
7400   }
7401   bool mutate_include_all_ngrams(bool _include_all_ngrams = 0) {
7402     return SetField<uint8_t>(VT_INCLUDE_ALL_NGRAMS, static_cast<uint8_t>(_include_all_ngrams), 0);
7403   }
7404   bool Verify(flatbuffers::Verifier &verifier) const {
7405     return VerifyTableStart(verifier) &&
7406            VerifyField<int32_t>(verifier, VT_NGRAM_SIZE, 4) &&
7407            VerifyField<int32_t>(verifier, VT_MAX_SKIP_SIZE, 4) &&
7408            VerifyField<uint8_t>(verifier, VT_INCLUDE_ALL_NGRAMS, 1) &&
7409            verifier.EndTable();
7410   }
7411   SkipGramOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7412   void UnPackTo(SkipGramOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7413   static flatbuffers::Offset<SkipGramOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7414 };
7415 
7416 struct SkipGramOptionsBuilder {
7417   typedef SkipGramOptions Table;
7418   flatbuffers::FlatBufferBuilder &fbb_;
7419   flatbuffers::uoffset_t start_;
7420   void add_ngram_size(int32_t ngram_size) {
7421     fbb_.AddElement<int32_t>(SkipGramOptions::VT_NGRAM_SIZE, ngram_size, 0);
7422   }
7423   void add_max_skip_size(int32_t max_skip_size) {
7424     fbb_.AddElement<int32_t>(SkipGramOptions::VT_MAX_SKIP_SIZE, max_skip_size, 0);
7425   }
7426   void add_include_all_ngrams(bool include_all_ngrams) {
7427     fbb_.AddElement<uint8_t>(SkipGramOptions::VT_INCLUDE_ALL_NGRAMS, static_cast<uint8_t>(include_all_ngrams), 0);
7428   }
7429   explicit SkipGramOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7430         : fbb_(_fbb) {
7431     start_ = fbb_.StartTable();
7432   }
7433   flatbuffers::Offset<SkipGramOptions> Finish() {
7434     const auto end = fbb_.EndTable(start_);
7435     auto o = flatbuffers::Offset<SkipGramOptions>(end);
7436     return o;
7437   }
7438 };
7439 
7440 inline flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(
7441     flatbuffers::FlatBufferBuilder &_fbb,
7442     int32_t ngram_size = 0,
7443     int32_t max_skip_size = 0,
7444     bool include_all_ngrams = false) {
7445   SkipGramOptionsBuilder builder_(_fbb);
7446   builder_.add_max_skip_size(max_skip_size);
7447   builder_.add_ngram_size(ngram_size);
7448   builder_.add_include_all_ngrams(include_all_ngrams);
7449   return builder_.Finish();
7450 }
7451 
7452 flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7453 
7454 struct SpaceToDepthOptionsT : public flatbuffers::NativeTable {
7455   typedef SpaceToDepthOptions TableType;
7456   int32_t block_size = 0;
7457 };
7458 
7459 struct SpaceToDepthOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7460   typedef SpaceToDepthOptionsT NativeTableType;
7461   typedef SpaceToDepthOptionsBuilder Builder;
7462   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7463     VT_BLOCK_SIZE = 4
7464   };
7465   int32_t block_size() const {
7466     return GetField<int32_t>(VT_BLOCK_SIZE, 0);
7467   }
7468   bool mutate_block_size(int32_t _block_size = 0) {
7469     return SetField<int32_t>(VT_BLOCK_SIZE, _block_size, 0);
7470   }
7471   bool Verify(flatbuffers::Verifier &verifier) const {
7472     return VerifyTableStart(verifier) &&
7473            VerifyField<int32_t>(verifier, VT_BLOCK_SIZE, 4) &&
7474            verifier.EndTable();
7475   }
7476   SpaceToDepthOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7477   void UnPackTo(SpaceToDepthOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7478   static flatbuffers::Offset<SpaceToDepthOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7479 };
7480 
7481 struct SpaceToDepthOptionsBuilder {
7482   typedef SpaceToDepthOptions Table;
7483   flatbuffers::FlatBufferBuilder &fbb_;
7484   flatbuffers::uoffset_t start_;
7485   void add_block_size(int32_t block_size) {
7486     fbb_.AddElement<int32_t>(SpaceToDepthOptions::VT_BLOCK_SIZE, block_size, 0);
7487   }
7488   explicit SpaceToDepthOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7489         : fbb_(_fbb) {
7490     start_ = fbb_.StartTable();
7491   }
7492   flatbuffers::Offset<SpaceToDepthOptions> Finish() {
7493     const auto end = fbb_.EndTable(start_);
7494     auto o = flatbuffers::Offset<SpaceToDepthOptions>(end);
7495     return o;
7496   }
7497 };
7498 
7499 inline flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(
7500     flatbuffers::FlatBufferBuilder &_fbb,
7501     int32_t block_size = 0) {
7502   SpaceToDepthOptionsBuilder builder_(_fbb);
7503   builder_.add_block_size(block_size);
7504   return builder_.Finish();
7505 }
7506 
7507 flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7508 
7509 struct DepthToSpaceOptionsT : public flatbuffers::NativeTable {
7510   typedef DepthToSpaceOptions TableType;
7511   int32_t block_size = 0;
7512 };
7513 
7514 struct DepthToSpaceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7515   typedef DepthToSpaceOptionsT NativeTableType;
7516   typedef DepthToSpaceOptionsBuilder Builder;
7517   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7518     VT_BLOCK_SIZE = 4
7519   };
7520   int32_t block_size() const {
7521     return GetField<int32_t>(VT_BLOCK_SIZE, 0);
7522   }
7523   bool mutate_block_size(int32_t _block_size = 0) {
7524     return SetField<int32_t>(VT_BLOCK_SIZE, _block_size, 0);
7525   }
7526   bool Verify(flatbuffers::Verifier &verifier) const {
7527     return VerifyTableStart(verifier) &&
7528            VerifyField<int32_t>(verifier, VT_BLOCK_SIZE, 4) &&
7529            verifier.EndTable();
7530   }
7531   DepthToSpaceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7532   void UnPackTo(DepthToSpaceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7533   static flatbuffers::Offset<DepthToSpaceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DepthToSpaceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7534 };
7535 
7536 struct DepthToSpaceOptionsBuilder {
7537   typedef DepthToSpaceOptions Table;
7538   flatbuffers::FlatBufferBuilder &fbb_;
7539   flatbuffers::uoffset_t start_;
7540   void add_block_size(int32_t block_size) {
7541     fbb_.AddElement<int32_t>(DepthToSpaceOptions::VT_BLOCK_SIZE, block_size, 0);
7542   }
7543   explicit DepthToSpaceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7544         : fbb_(_fbb) {
7545     start_ = fbb_.StartTable();
7546   }
7547   flatbuffers::Offset<DepthToSpaceOptions> Finish() {
7548     const auto end = fbb_.EndTable(start_);
7549     auto o = flatbuffers::Offset<DepthToSpaceOptions>(end);
7550     return o;
7551   }
7552 };
7553 
7554 inline flatbuffers::Offset<DepthToSpaceOptions> CreateDepthToSpaceOptions(
7555     flatbuffers::FlatBufferBuilder &_fbb,
7556     int32_t block_size = 0) {
7557   DepthToSpaceOptionsBuilder builder_(_fbb);
7558   builder_.add_block_size(block_size);
7559   return builder_.Finish();
7560 }
7561 
7562 flatbuffers::Offset<DepthToSpaceOptions> CreateDepthToSpaceOptions(flatbuffers::FlatBufferBuilder &_fbb, const DepthToSpaceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7563 
7564 struct SubOptionsT : public flatbuffers::NativeTable {
7565   typedef SubOptions TableType;
7566   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
7567   bool pot_scale_int16 = true;
7568 };
7569 
7570 struct SubOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7571   typedef SubOptionsT NativeTableType;
7572   typedef SubOptionsBuilder Builder;
7573   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7574     VT_FUSED_ACTIVATION_FUNCTION = 4,
7575     VT_POT_SCALE_INT16 = 6
7576   };
7577   tflite::ActivationFunctionType fused_activation_function() const {
7578     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
7579   }
7580   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
7581     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
7582   }
7583   bool pot_scale_int16() const {
7584     return GetField<uint8_t>(VT_POT_SCALE_INT16, 1) != 0;
7585   }
7586   bool mutate_pot_scale_int16(bool _pot_scale_int16 = 1) {
7587     return SetField<uint8_t>(VT_POT_SCALE_INT16, static_cast<uint8_t>(_pot_scale_int16), 1);
7588   }
7589   bool Verify(flatbuffers::Verifier &verifier) const {
7590     return VerifyTableStart(verifier) &&
7591            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
7592            VerifyField<uint8_t>(verifier, VT_POT_SCALE_INT16, 1) &&
7593            verifier.EndTable();
7594   }
7595   SubOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7596   void UnPackTo(SubOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7597   static flatbuffers::Offset<SubOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7598 };
7599 
7600 struct SubOptionsBuilder {
7601   typedef SubOptions Table;
7602   flatbuffers::FlatBufferBuilder &fbb_;
7603   flatbuffers::uoffset_t start_;
7604   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
7605     fbb_.AddElement<int8_t>(SubOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
7606   }
7607   void add_pot_scale_int16(bool pot_scale_int16) {
7608     fbb_.AddElement<uint8_t>(SubOptions::VT_POT_SCALE_INT16, static_cast<uint8_t>(pot_scale_int16), 1);
7609   }
7610   explicit SubOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7611         : fbb_(_fbb) {
7612     start_ = fbb_.StartTable();
7613   }
7614   flatbuffers::Offset<SubOptions> Finish() {
7615     const auto end = fbb_.EndTable(start_);
7616     auto o = flatbuffers::Offset<SubOptions>(end);
7617     return o;
7618   }
7619 };
7620 
7621 inline flatbuffers::Offset<SubOptions> CreateSubOptions(
7622     flatbuffers::FlatBufferBuilder &_fbb,
7623     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
7624     bool pot_scale_int16 = true) {
7625   SubOptionsBuilder builder_(_fbb);
7626   builder_.add_pot_scale_int16(pot_scale_int16);
7627   builder_.add_fused_activation_function(fused_activation_function);
7628   return builder_.Finish();
7629 }
7630 
7631 flatbuffers::Offset<SubOptions> CreateSubOptions(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7632 
7633 struct DivOptionsT : public flatbuffers::NativeTable {
7634   typedef DivOptions TableType;
7635   tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE;
7636 };
7637 
7638 struct DivOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7639   typedef DivOptionsT NativeTableType;
7640   typedef DivOptionsBuilder Builder;
7641   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7642     VT_FUSED_ACTIVATION_FUNCTION = 4
7643   };
7644   tflite::ActivationFunctionType fused_activation_function() const {
7645     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
7646   }
7647   bool mutate_fused_activation_function(tflite::ActivationFunctionType _fused_activation_function = static_cast<tflite::ActivationFunctionType>(0)) {
7648     return SetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(_fused_activation_function), 0);
7649   }
7650   bool Verify(flatbuffers::Verifier &verifier) const {
7651     return VerifyTableStart(verifier) &&
7652            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION, 1) &&
7653            verifier.EndTable();
7654   }
7655   DivOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7656   void UnPackTo(DivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7657   static flatbuffers::Offset<DivOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7658 };
7659 
7660 struct DivOptionsBuilder {
7661   typedef DivOptions Table;
7662   flatbuffers::FlatBufferBuilder &fbb_;
7663   flatbuffers::uoffset_t start_;
7664   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
7665     fbb_.AddElement<int8_t>(DivOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
7666   }
7667   explicit DivOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7668         : fbb_(_fbb) {
7669     start_ = fbb_.StartTable();
7670   }
7671   flatbuffers::Offset<DivOptions> Finish() {
7672     const auto end = fbb_.EndTable(start_);
7673     auto o = flatbuffers::Offset<DivOptions>(end);
7674     return o;
7675   }
7676 };
7677 
7678 inline flatbuffers::Offset<DivOptions> CreateDivOptions(
7679     flatbuffers::FlatBufferBuilder &_fbb,
7680     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
7681   DivOptionsBuilder builder_(_fbb);
7682   builder_.add_fused_activation_function(fused_activation_function);
7683   return builder_.Finish();
7684 }
7685 
7686 flatbuffers::Offset<DivOptions> CreateDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7687 
7688 struct TopKV2OptionsT : public flatbuffers::NativeTable {
7689   typedef TopKV2Options TableType;
7690 };
7691 
7692 struct TopKV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7693   typedef TopKV2OptionsT NativeTableType;
7694   typedef TopKV2OptionsBuilder Builder;
7695   bool Verify(flatbuffers::Verifier &verifier) const {
7696     return VerifyTableStart(verifier) &&
7697            verifier.EndTable();
7698   }
7699   TopKV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7700   void UnPackTo(TopKV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7701   static flatbuffers::Offset<TopKV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7702 };
7703 
7704 struct TopKV2OptionsBuilder {
7705   typedef TopKV2Options Table;
7706   flatbuffers::FlatBufferBuilder &fbb_;
7707   flatbuffers::uoffset_t start_;
7708   explicit TopKV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7709         : fbb_(_fbb) {
7710     start_ = fbb_.StartTable();
7711   }
7712   flatbuffers::Offset<TopKV2Options> Finish() {
7713     const auto end = fbb_.EndTable(start_);
7714     auto o = flatbuffers::Offset<TopKV2Options>(end);
7715     return o;
7716   }
7717 };
7718 
7719 inline flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(
7720     flatbuffers::FlatBufferBuilder &_fbb) {
7721   TopKV2OptionsBuilder builder_(_fbb);
7722   return builder_.Finish();
7723 }
7724 
7725 flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7726 
7727 struct EmbeddingLookupSparseOptionsT : public flatbuffers::NativeTable {
7728   typedef EmbeddingLookupSparseOptions TableType;
7729   tflite::CombinerType combiner = tflite::CombinerType_SUM;
7730 };
7731 
7732 struct EmbeddingLookupSparseOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7733   typedef EmbeddingLookupSparseOptionsT NativeTableType;
7734   typedef EmbeddingLookupSparseOptionsBuilder Builder;
7735   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7736     VT_COMBINER = 4
7737   };
7738   tflite::CombinerType combiner() const {
7739     return static_cast<tflite::CombinerType>(GetField<int8_t>(VT_COMBINER, 0));
7740   }
7741   bool mutate_combiner(tflite::CombinerType _combiner = static_cast<tflite::CombinerType>(0)) {
7742     return SetField<int8_t>(VT_COMBINER, static_cast<int8_t>(_combiner), 0);
7743   }
7744   bool Verify(flatbuffers::Verifier &verifier) const {
7745     return VerifyTableStart(verifier) &&
7746            VerifyField<int8_t>(verifier, VT_COMBINER, 1) &&
7747            verifier.EndTable();
7748   }
7749   EmbeddingLookupSparseOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7750   void UnPackTo(EmbeddingLookupSparseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7751   static flatbuffers::Offset<EmbeddingLookupSparseOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7752 };
7753 
7754 struct EmbeddingLookupSparseOptionsBuilder {
7755   typedef EmbeddingLookupSparseOptions Table;
7756   flatbuffers::FlatBufferBuilder &fbb_;
7757   flatbuffers::uoffset_t start_;
7758   void add_combiner(tflite::CombinerType combiner) {
7759     fbb_.AddElement<int8_t>(EmbeddingLookupSparseOptions::VT_COMBINER, static_cast<int8_t>(combiner), 0);
7760   }
7761   explicit EmbeddingLookupSparseOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7762         : fbb_(_fbb) {
7763     start_ = fbb_.StartTable();
7764   }
7765   flatbuffers::Offset<EmbeddingLookupSparseOptions> Finish() {
7766     const auto end = fbb_.EndTable(start_);
7767     auto o = flatbuffers::Offset<EmbeddingLookupSparseOptions>(end);
7768     return o;
7769   }
7770 };
7771 
7772 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(
7773     flatbuffers::FlatBufferBuilder &_fbb,
7774     tflite::CombinerType combiner = tflite::CombinerType_SUM) {
7775   EmbeddingLookupSparseOptionsBuilder builder_(_fbb);
7776   builder_.add_combiner(combiner);
7777   return builder_.Finish();
7778 }
7779 
7780 flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7781 
7782 struct GatherOptionsT : public flatbuffers::NativeTable {
7783   typedef GatherOptions TableType;
7784   int32_t axis = 0;
7785   int32_t batch_dims = 0;
7786 };
7787 
7788 struct GatherOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7789   typedef GatherOptionsT NativeTableType;
7790   typedef GatherOptionsBuilder Builder;
7791   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7792     VT_AXIS = 4,
7793     VT_BATCH_DIMS = 6
7794   };
7795   int32_t axis() const {
7796     return GetField<int32_t>(VT_AXIS, 0);
7797   }
7798   bool mutate_axis(int32_t _axis = 0) {
7799     return SetField<int32_t>(VT_AXIS, _axis, 0);
7800   }
7801   int32_t batch_dims() const {
7802     return GetField<int32_t>(VT_BATCH_DIMS, 0);
7803   }
7804   bool mutate_batch_dims(int32_t _batch_dims = 0) {
7805     return SetField<int32_t>(VT_BATCH_DIMS, _batch_dims, 0);
7806   }
7807   bool Verify(flatbuffers::Verifier &verifier) const {
7808     return VerifyTableStart(verifier) &&
7809            VerifyField<int32_t>(verifier, VT_AXIS, 4) &&
7810            VerifyField<int32_t>(verifier, VT_BATCH_DIMS, 4) &&
7811            verifier.EndTable();
7812   }
7813   GatherOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7814   void UnPackTo(GatherOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7815   static flatbuffers::Offset<GatherOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7816 };
7817 
7818 struct GatherOptionsBuilder {
7819   typedef GatherOptions Table;
7820   flatbuffers::FlatBufferBuilder &fbb_;
7821   flatbuffers::uoffset_t start_;
7822   void add_axis(int32_t axis) {
7823     fbb_.AddElement<int32_t>(GatherOptions::VT_AXIS, axis, 0);
7824   }
7825   void add_batch_dims(int32_t batch_dims) {
7826     fbb_.AddElement<int32_t>(GatherOptions::VT_BATCH_DIMS, batch_dims, 0);
7827   }
7828   explicit GatherOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7829         : fbb_(_fbb) {
7830     start_ = fbb_.StartTable();
7831   }
7832   flatbuffers::Offset<GatherOptions> Finish() {
7833     const auto end = fbb_.EndTable(start_);
7834     auto o = flatbuffers::Offset<GatherOptions>(end);
7835     return o;
7836   }
7837 };
7838 
7839 inline flatbuffers::Offset<GatherOptions> CreateGatherOptions(
7840     flatbuffers::FlatBufferBuilder &_fbb,
7841     int32_t axis = 0,
7842     int32_t batch_dims = 0) {
7843   GatherOptionsBuilder builder_(_fbb);
7844   builder_.add_batch_dims(batch_dims);
7845   builder_.add_axis(axis);
7846   return builder_.Finish();
7847 }
7848 
7849 flatbuffers::Offset<GatherOptions> CreateGatherOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7850 
7851 struct TransposeOptionsT : public flatbuffers::NativeTable {
7852   typedef TransposeOptions TableType;
7853 };
7854 
7855 struct TransposeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7856   typedef TransposeOptionsT NativeTableType;
7857   typedef TransposeOptionsBuilder Builder;
7858   bool Verify(flatbuffers::Verifier &verifier) const {
7859     return VerifyTableStart(verifier) &&
7860            verifier.EndTable();
7861   }
7862   TransposeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7863   void UnPackTo(TransposeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7864   static flatbuffers::Offset<TransposeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7865 };
7866 
7867 struct TransposeOptionsBuilder {
7868   typedef TransposeOptions Table;
7869   flatbuffers::FlatBufferBuilder &fbb_;
7870   flatbuffers::uoffset_t start_;
7871   explicit TransposeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7872         : fbb_(_fbb) {
7873     start_ = fbb_.StartTable();
7874   }
7875   flatbuffers::Offset<TransposeOptions> Finish() {
7876     const auto end = fbb_.EndTable(start_);
7877     auto o = flatbuffers::Offset<TransposeOptions>(end);
7878     return o;
7879   }
7880 };
7881 
7882 inline flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(
7883     flatbuffers::FlatBufferBuilder &_fbb) {
7884   TransposeOptionsBuilder builder_(_fbb);
7885   return builder_.Finish();
7886 }
7887 
7888 flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7889 
7890 struct ExpOptionsT : public flatbuffers::NativeTable {
7891   typedef ExpOptions TableType;
7892 };
7893 
7894 struct ExpOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7895   typedef ExpOptionsT NativeTableType;
7896   typedef ExpOptionsBuilder Builder;
7897   bool Verify(flatbuffers::Verifier &verifier) const {
7898     return VerifyTableStart(verifier) &&
7899            verifier.EndTable();
7900   }
7901   ExpOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7902   void UnPackTo(ExpOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7903   static flatbuffers::Offset<ExpOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7904 };
7905 
7906 struct ExpOptionsBuilder {
7907   typedef ExpOptions Table;
7908   flatbuffers::FlatBufferBuilder &fbb_;
7909   flatbuffers::uoffset_t start_;
7910   explicit ExpOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7911         : fbb_(_fbb) {
7912     start_ = fbb_.StartTable();
7913   }
7914   flatbuffers::Offset<ExpOptions> Finish() {
7915     const auto end = fbb_.EndTable(start_);
7916     auto o = flatbuffers::Offset<ExpOptions>(end);
7917     return o;
7918   }
7919 };
7920 
7921 inline flatbuffers::Offset<ExpOptions> CreateExpOptions(
7922     flatbuffers::FlatBufferBuilder &_fbb) {
7923   ExpOptionsBuilder builder_(_fbb);
7924   return builder_.Finish();
7925 }
7926 
7927 flatbuffers::Offset<ExpOptions> CreateExpOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7928 
7929 struct CosOptionsT : public flatbuffers::NativeTable {
7930   typedef CosOptions TableType;
7931 };
7932 
7933 struct CosOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7934   typedef CosOptionsT NativeTableType;
7935   typedef CosOptionsBuilder Builder;
7936   bool Verify(flatbuffers::Verifier &verifier) const {
7937     return VerifyTableStart(verifier) &&
7938            verifier.EndTable();
7939   }
7940   CosOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7941   void UnPackTo(CosOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7942   static flatbuffers::Offset<CosOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7943 };
7944 
7945 struct CosOptionsBuilder {
7946   typedef CosOptions Table;
7947   flatbuffers::FlatBufferBuilder &fbb_;
7948   flatbuffers::uoffset_t start_;
7949   explicit CosOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7950         : fbb_(_fbb) {
7951     start_ = fbb_.StartTable();
7952   }
7953   flatbuffers::Offset<CosOptions> Finish() {
7954     const auto end = fbb_.EndTable(start_);
7955     auto o = flatbuffers::Offset<CosOptions>(end);
7956     return o;
7957   }
7958 };
7959 
7960 inline flatbuffers::Offset<CosOptions> CreateCosOptions(
7961     flatbuffers::FlatBufferBuilder &_fbb) {
7962   CosOptionsBuilder builder_(_fbb);
7963   return builder_.Finish();
7964 }
7965 
7966 flatbuffers::Offset<CosOptions> CreateCosOptions(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7967 
7968 struct ReducerOptionsT : public flatbuffers::NativeTable {
7969   typedef ReducerOptions TableType;
7970   bool keep_dims = false;
7971 };
7972 
7973 struct ReducerOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7974   typedef ReducerOptionsT NativeTableType;
7975   typedef ReducerOptionsBuilder Builder;
7976   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7977     VT_KEEP_DIMS = 4
7978   };
7979   bool keep_dims() const {
7980     return GetField<uint8_t>(VT_KEEP_DIMS, 0) != 0;
7981   }
7982   bool mutate_keep_dims(bool _keep_dims = 0) {
7983     return SetField<uint8_t>(VT_KEEP_DIMS, static_cast<uint8_t>(_keep_dims), 0);
7984   }
7985   bool Verify(flatbuffers::Verifier &verifier) const {
7986     return VerifyTableStart(verifier) &&
7987            VerifyField<uint8_t>(verifier, VT_KEEP_DIMS, 1) &&
7988            verifier.EndTable();
7989   }
7990   ReducerOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7991   void UnPackTo(ReducerOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
7992   static flatbuffers::Offset<ReducerOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7993 };
7994 
7995 struct ReducerOptionsBuilder {
7996   typedef ReducerOptions Table;
7997   flatbuffers::FlatBufferBuilder &fbb_;
7998   flatbuffers::uoffset_t start_;
7999   void add_keep_dims(bool keep_dims) {
8000     fbb_.AddElement<uint8_t>(ReducerOptions::VT_KEEP_DIMS, static_cast<uint8_t>(keep_dims), 0);
8001   }
8002   explicit ReducerOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8003         : fbb_(_fbb) {
8004     start_ = fbb_.StartTable();
8005   }
8006   flatbuffers::Offset<ReducerOptions> Finish() {
8007     const auto end = fbb_.EndTable(start_);
8008     auto o = flatbuffers::Offset<ReducerOptions>(end);
8009     return o;
8010   }
8011 };
8012 
8013 inline flatbuffers::Offset<ReducerOptions> CreateReducerOptions(
8014     flatbuffers::FlatBufferBuilder &_fbb,
8015     bool keep_dims = false) {
8016   ReducerOptionsBuilder builder_(_fbb);
8017   builder_.add_keep_dims(keep_dims);
8018   return builder_.Finish();
8019 }
8020 
8021 flatbuffers::Offset<ReducerOptions> CreateReducerOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8022 
8023 struct SqueezeOptionsT : public flatbuffers::NativeTable {
8024   typedef SqueezeOptions TableType;
8025   std::vector<int32_t> squeeze_dims{};
8026 };
8027 
8028 struct SqueezeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8029   typedef SqueezeOptionsT NativeTableType;
8030   typedef SqueezeOptionsBuilder Builder;
8031   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8032     VT_SQUEEZE_DIMS = 4
8033   };
8034   const flatbuffers::Vector<int32_t> *squeeze_dims() const {
8035     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SQUEEZE_DIMS);
8036   }
8037   flatbuffers::Vector<int32_t> *mutable_squeeze_dims() {
8038     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_SQUEEZE_DIMS);
8039   }
8040   bool Verify(flatbuffers::Verifier &verifier) const {
8041     return VerifyTableStart(verifier) &&
8042            VerifyOffset(verifier, VT_SQUEEZE_DIMS) &&
8043            verifier.VerifyVector(squeeze_dims()) &&
8044            verifier.EndTable();
8045   }
8046   SqueezeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8047   void UnPackTo(SqueezeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8048   static flatbuffers::Offset<SqueezeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8049 };
8050 
8051 struct SqueezeOptionsBuilder {
8052   typedef SqueezeOptions Table;
8053   flatbuffers::FlatBufferBuilder &fbb_;
8054   flatbuffers::uoffset_t start_;
8055   void add_squeeze_dims(flatbuffers::Offset<flatbuffers::Vector<int32_t>> squeeze_dims) {
8056     fbb_.AddOffset(SqueezeOptions::VT_SQUEEZE_DIMS, squeeze_dims);
8057   }
8058   explicit SqueezeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8059         : fbb_(_fbb) {
8060     start_ = fbb_.StartTable();
8061   }
8062   flatbuffers::Offset<SqueezeOptions> Finish() {
8063     const auto end = fbb_.EndTable(start_);
8064     auto o = flatbuffers::Offset<SqueezeOptions>(end);
8065     return o;
8066   }
8067 };
8068 
8069 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(
8070     flatbuffers::FlatBufferBuilder &_fbb,
8071     flatbuffers::Offset<flatbuffers::Vector<int32_t>> squeeze_dims = 0) {
8072   SqueezeOptionsBuilder builder_(_fbb);
8073   builder_.add_squeeze_dims(squeeze_dims);
8074   return builder_.Finish();
8075 }
8076 
8077 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptionsDirect(
8078     flatbuffers::FlatBufferBuilder &_fbb,
8079     const std::vector<int32_t> *squeeze_dims = nullptr) {
8080   auto squeeze_dims__ = squeeze_dims ? _fbb.CreateVector<int32_t>(*squeeze_dims) : 0;
8081   return tflite::CreateSqueezeOptions(
8082       _fbb,
8083       squeeze_dims__);
8084 }
8085 
8086 flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8087 
8088 struct SplitOptionsT : public flatbuffers::NativeTable {
8089   typedef SplitOptions TableType;
8090   int32_t num_splits = 0;
8091 };
8092 
8093 struct SplitOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8094   typedef SplitOptionsT NativeTableType;
8095   typedef SplitOptionsBuilder Builder;
8096   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8097     VT_NUM_SPLITS = 4
8098   };
8099   int32_t num_splits() const {
8100     return GetField<int32_t>(VT_NUM_SPLITS, 0);
8101   }
8102   bool mutate_num_splits(int32_t _num_splits = 0) {
8103     return SetField<int32_t>(VT_NUM_SPLITS, _num_splits, 0);
8104   }
8105   bool Verify(flatbuffers::Verifier &verifier) const {
8106     return VerifyTableStart(verifier) &&
8107            VerifyField<int32_t>(verifier, VT_NUM_SPLITS, 4) &&
8108            verifier.EndTable();
8109   }
8110   SplitOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8111   void UnPackTo(SplitOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8112   static flatbuffers::Offset<SplitOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8113 };
8114 
8115 struct SplitOptionsBuilder {
8116   typedef SplitOptions Table;
8117   flatbuffers::FlatBufferBuilder &fbb_;
8118   flatbuffers::uoffset_t start_;
8119   void add_num_splits(int32_t num_splits) {
8120     fbb_.AddElement<int32_t>(SplitOptions::VT_NUM_SPLITS, num_splits, 0);
8121   }
8122   explicit SplitOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8123         : fbb_(_fbb) {
8124     start_ = fbb_.StartTable();
8125   }
8126   flatbuffers::Offset<SplitOptions> Finish() {
8127     const auto end = fbb_.EndTable(start_);
8128     auto o = flatbuffers::Offset<SplitOptions>(end);
8129     return o;
8130   }
8131 };
8132 
8133 inline flatbuffers::Offset<SplitOptions> CreateSplitOptions(
8134     flatbuffers::FlatBufferBuilder &_fbb,
8135     int32_t num_splits = 0) {
8136   SplitOptionsBuilder builder_(_fbb);
8137   builder_.add_num_splits(num_splits);
8138   return builder_.Finish();
8139 }
8140 
8141 flatbuffers::Offset<SplitOptions> CreateSplitOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8142 
8143 struct SplitVOptionsT : public flatbuffers::NativeTable {
8144   typedef SplitVOptions TableType;
8145   int32_t num_splits = 0;
8146 };
8147 
8148 struct SplitVOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8149   typedef SplitVOptionsT NativeTableType;
8150   typedef SplitVOptionsBuilder Builder;
8151   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8152     VT_NUM_SPLITS = 4
8153   };
8154   int32_t num_splits() const {
8155     return GetField<int32_t>(VT_NUM_SPLITS, 0);
8156   }
8157   bool mutate_num_splits(int32_t _num_splits = 0) {
8158     return SetField<int32_t>(VT_NUM_SPLITS, _num_splits, 0);
8159   }
8160   bool Verify(flatbuffers::Verifier &verifier) const {
8161     return VerifyTableStart(verifier) &&
8162            VerifyField<int32_t>(verifier, VT_NUM_SPLITS, 4) &&
8163            verifier.EndTable();
8164   }
8165   SplitVOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8166   void UnPackTo(SplitVOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8167   static flatbuffers::Offset<SplitVOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8168 };
8169 
8170 struct SplitVOptionsBuilder {
8171   typedef SplitVOptions Table;
8172   flatbuffers::FlatBufferBuilder &fbb_;
8173   flatbuffers::uoffset_t start_;
8174   void add_num_splits(int32_t num_splits) {
8175     fbb_.AddElement<int32_t>(SplitVOptions::VT_NUM_SPLITS, num_splits, 0);
8176   }
8177   explicit SplitVOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8178         : fbb_(_fbb) {
8179     start_ = fbb_.StartTable();
8180   }
8181   flatbuffers::Offset<SplitVOptions> Finish() {
8182     const auto end = fbb_.EndTable(start_);
8183     auto o = flatbuffers::Offset<SplitVOptions>(end);
8184     return o;
8185   }
8186 };
8187 
8188 inline flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(
8189     flatbuffers::FlatBufferBuilder &_fbb,
8190     int32_t num_splits = 0) {
8191   SplitVOptionsBuilder builder_(_fbb);
8192   builder_.add_num_splits(num_splits);
8193   return builder_.Finish();
8194 }
8195 
8196 flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8197 
8198 struct StridedSliceOptionsT : public flatbuffers::NativeTable {
8199   typedef StridedSliceOptions TableType;
8200   int32_t begin_mask = 0;
8201   int32_t end_mask = 0;
8202   int32_t ellipsis_mask = 0;
8203   int32_t new_axis_mask = 0;
8204   int32_t shrink_axis_mask = 0;
8205 };
8206 
8207 struct StridedSliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8208   typedef StridedSliceOptionsT NativeTableType;
8209   typedef StridedSliceOptionsBuilder Builder;
8210   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8211     VT_BEGIN_MASK = 4,
8212     VT_END_MASK = 6,
8213     VT_ELLIPSIS_MASK = 8,
8214     VT_NEW_AXIS_MASK = 10,
8215     VT_SHRINK_AXIS_MASK = 12
8216   };
8217   int32_t begin_mask() const {
8218     return GetField<int32_t>(VT_BEGIN_MASK, 0);
8219   }
8220   bool mutate_begin_mask(int32_t _begin_mask = 0) {
8221     return SetField<int32_t>(VT_BEGIN_MASK, _begin_mask, 0);
8222   }
8223   int32_t end_mask() const {
8224     return GetField<int32_t>(VT_END_MASK, 0);
8225   }
8226   bool mutate_end_mask(int32_t _end_mask = 0) {
8227     return SetField<int32_t>(VT_END_MASK, _end_mask, 0);
8228   }
8229   int32_t ellipsis_mask() const {
8230     return GetField<int32_t>(VT_ELLIPSIS_MASK, 0);
8231   }
8232   bool mutate_ellipsis_mask(int32_t _ellipsis_mask = 0) {
8233     return SetField<int32_t>(VT_ELLIPSIS_MASK, _ellipsis_mask, 0);
8234   }
8235   int32_t new_axis_mask() const {
8236     return GetField<int32_t>(VT_NEW_AXIS_MASK, 0);
8237   }
8238   bool mutate_new_axis_mask(int32_t _new_axis_mask = 0) {
8239     return SetField<int32_t>(VT_NEW_AXIS_MASK, _new_axis_mask, 0);
8240   }
8241   int32_t shrink_axis_mask() const {
8242     return GetField<int32_t>(VT_SHRINK_AXIS_MASK, 0);
8243   }
8244   bool mutate_shrink_axis_mask(int32_t _shrink_axis_mask = 0) {
8245     return SetField<int32_t>(VT_SHRINK_AXIS_MASK, _shrink_axis_mask, 0);
8246   }
8247   bool Verify(flatbuffers::Verifier &verifier) const {
8248     return VerifyTableStart(verifier) &&
8249            VerifyField<int32_t>(verifier, VT_BEGIN_MASK, 4) &&
8250            VerifyField<int32_t>(verifier, VT_END_MASK, 4) &&
8251            VerifyField<int32_t>(verifier, VT_ELLIPSIS_MASK, 4) &&
8252            VerifyField<int32_t>(verifier, VT_NEW_AXIS_MASK, 4) &&
8253            VerifyField<int32_t>(verifier, VT_SHRINK_AXIS_MASK, 4) &&
8254            verifier.EndTable();
8255   }
8256   StridedSliceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8257   void UnPackTo(StridedSliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8258   static flatbuffers::Offset<StridedSliceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8259 };
8260 
8261 struct StridedSliceOptionsBuilder {
8262   typedef StridedSliceOptions Table;
8263   flatbuffers::FlatBufferBuilder &fbb_;
8264   flatbuffers::uoffset_t start_;
8265   void add_begin_mask(int32_t begin_mask) {
8266     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_BEGIN_MASK, begin_mask, 0);
8267   }
8268   void add_end_mask(int32_t end_mask) {
8269     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_END_MASK, end_mask, 0);
8270   }
8271   void add_ellipsis_mask(int32_t ellipsis_mask) {
8272     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_ELLIPSIS_MASK, ellipsis_mask, 0);
8273   }
8274   void add_new_axis_mask(int32_t new_axis_mask) {
8275     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_NEW_AXIS_MASK, new_axis_mask, 0);
8276   }
8277   void add_shrink_axis_mask(int32_t shrink_axis_mask) {
8278     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_SHRINK_AXIS_MASK, shrink_axis_mask, 0);
8279   }
8280   explicit StridedSliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8281         : fbb_(_fbb) {
8282     start_ = fbb_.StartTable();
8283   }
8284   flatbuffers::Offset<StridedSliceOptions> Finish() {
8285     const auto end = fbb_.EndTable(start_);
8286     auto o = flatbuffers::Offset<StridedSliceOptions>(end);
8287     return o;
8288   }
8289 };
8290 
8291 inline flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(
8292     flatbuffers::FlatBufferBuilder &_fbb,
8293     int32_t begin_mask = 0,
8294     int32_t end_mask = 0,
8295     int32_t ellipsis_mask = 0,
8296     int32_t new_axis_mask = 0,
8297     int32_t shrink_axis_mask = 0) {
8298   StridedSliceOptionsBuilder builder_(_fbb);
8299   builder_.add_shrink_axis_mask(shrink_axis_mask);
8300   builder_.add_new_axis_mask(new_axis_mask);
8301   builder_.add_ellipsis_mask(ellipsis_mask);
8302   builder_.add_end_mask(end_mask);
8303   builder_.add_begin_mask(begin_mask);
8304   return builder_.Finish();
8305 }
8306 
8307 flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8308 
8309 struct LogSoftmaxOptionsT : public flatbuffers::NativeTable {
8310   typedef LogSoftmaxOptions TableType;
8311 };
8312 
8313 struct LogSoftmaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8314   typedef LogSoftmaxOptionsT NativeTableType;
8315   typedef LogSoftmaxOptionsBuilder Builder;
8316   bool Verify(flatbuffers::Verifier &verifier) const {
8317     return VerifyTableStart(verifier) &&
8318            verifier.EndTable();
8319   }
8320   LogSoftmaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8321   void UnPackTo(LogSoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8322   static flatbuffers::Offset<LogSoftmaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8323 };
8324 
8325 struct LogSoftmaxOptionsBuilder {
8326   typedef LogSoftmaxOptions Table;
8327   flatbuffers::FlatBufferBuilder &fbb_;
8328   flatbuffers::uoffset_t start_;
8329   explicit LogSoftmaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8330         : fbb_(_fbb) {
8331     start_ = fbb_.StartTable();
8332   }
8333   flatbuffers::Offset<LogSoftmaxOptions> Finish() {
8334     const auto end = fbb_.EndTable(start_);
8335     auto o = flatbuffers::Offset<LogSoftmaxOptions>(end);
8336     return o;
8337   }
8338 };
8339 
8340 inline flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(
8341     flatbuffers::FlatBufferBuilder &_fbb) {
8342   LogSoftmaxOptionsBuilder builder_(_fbb);
8343   return builder_.Finish();
8344 }
8345 
8346 flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8347 
8348 struct CastOptionsT : public flatbuffers::NativeTable {
8349   typedef CastOptions TableType;
8350   tflite::TensorType in_data_type = tflite::TensorType_FLOAT32;
8351   tflite::TensorType out_data_type = tflite::TensorType_FLOAT32;
8352 };
8353 
8354 struct CastOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8355   typedef CastOptionsT NativeTableType;
8356   typedef CastOptionsBuilder Builder;
8357   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8358     VT_IN_DATA_TYPE = 4,
8359     VT_OUT_DATA_TYPE = 6
8360   };
8361   tflite::TensorType in_data_type() const {
8362     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_IN_DATA_TYPE, 0));
8363   }
8364   bool mutate_in_data_type(tflite::TensorType _in_data_type = static_cast<tflite::TensorType>(0)) {
8365     return SetField<int8_t>(VT_IN_DATA_TYPE, static_cast<int8_t>(_in_data_type), 0);
8366   }
8367   tflite::TensorType out_data_type() const {
8368     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUT_DATA_TYPE, 0));
8369   }
8370   bool mutate_out_data_type(tflite::TensorType _out_data_type = static_cast<tflite::TensorType>(0)) {
8371     return SetField<int8_t>(VT_OUT_DATA_TYPE, static_cast<int8_t>(_out_data_type), 0);
8372   }
8373   bool Verify(flatbuffers::Verifier &verifier) const {
8374     return VerifyTableStart(verifier) &&
8375            VerifyField<int8_t>(verifier, VT_IN_DATA_TYPE, 1) &&
8376            VerifyField<int8_t>(verifier, VT_OUT_DATA_TYPE, 1) &&
8377            verifier.EndTable();
8378   }
8379   CastOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8380   void UnPackTo(CastOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8381   static flatbuffers::Offset<CastOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8382 };
8383 
8384 struct CastOptionsBuilder {
8385   typedef CastOptions Table;
8386   flatbuffers::FlatBufferBuilder &fbb_;
8387   flatbuffers::uoffset_t start_;
8388   void add_in_data_type(tflite::TensorType in_data_type) {
8389     fbb_.AddElement<int8_t>(CastOptions::VT_IN_DATA_TYPE, static_cast<int8_t>(in_data_type), 0);
8390   }
8391   void add_out_data_type(tflite::TensorType out_data_type) {
8392     fbb_.AddElement<int8_t>(CastOptions::VT_OUT_DATA_TYPE, static_cast<int8_t>(out_data_type), 0);
8393   }
8394   explicit CastOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8395         : fbb_(_fbb) {
8396     start_ = fbb_.StartTable();
8397   }
8398   flatbuffers::Offset<CastOptions> Finish() {
8399     const auto end = fbb_.EndTable(start_);
8400     auto o = flatbuffers::Offset<CastOptions>(end);
8401     return o;
8402   }
8403 };
8404 
8405 inline flatbuffers::Offset<CastOptions> CreateCastOptions(
8406     flatbuffers::FlatBufferBuilder &_fbb,
8407     tflite::TensorType in_data_type = tflite::TensorType_FLOAT32,
8408     tflite::TensorType out_data_type = tflite::TensorType_FLOAT32) {
8409   CastOptionsBuilder builder_(_fbb);
8410   builder_.add_out_data_type(out_data_type);
8411   builder_.add_in_data_type(in_data_type);
8412   return builder_.Finish();
8413 }
8414 
8415 flatbuffers::Offset<CastOptions> CreateCastOptions(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8416 
8417 struct DequantizeOptionsT : public flatbuffers::NativeTable {
8418   typedef DequantizeOptions TableType;
8419 };
8420 
8421 struct DequantizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8422   typedef DequantizeOptionsT NativeTableType;
8423   typedef DequantizeOptionsBuilder Builder;
8424   bool Verify(flatbuffers::Verifier &verifier) const {
8425     return VerifyTableStart(verifier) &&
8426            verifier.EndTable();
8427   }
8428   DequantizeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8429   void UnPackTo(DequantizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8430   static flatbuffers::Offset<DequantizeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8431 };
8432 
8433 struct DequantizeOptionsBuilder {
8434   typedef DequantizeOptions Table;
8435   flatbuffers::FlatBufferBuilder &fbb_;
8436   flatbuffers::uoffset_t start_;
8437   explicit DequantizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8438         : fbb_(_fbb) {
8439     start_ = fbb_.StartTable();
8440   }
8441   flatbuffers::Offset<DequantizeOptions> Finish() {
8442     const auto end = fbb_.EndTable(start_);
8443     auto o = flatbuffers::Offset<DequantizeOptions>(end);
8444     return o;
8445   }
8446 };
8447 
8448 inline flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(
8449     flatbuffers::FlatBufferBuilder &_fbb) {
8450   DequantizeOptionsBuilder builder_(_fbb);
8451   return builder_.Finish();
8452 }
8453 
8454 flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8455 
8456 struct MaximumMinimumOptionsT : public flatbuffers::NativeTable {
8457   typedef MaximumMinimumOptions TableType;
8458 };
8459 
8460 struct MaximumMinimumOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8461   typedef MaximumMinimumOptionsT NativeTableType;
8462   typedef MaximumMinimumOptionsBuilder Builder;
8463   bool Verify(flatbuffers::Verifier &verifier) const {
8464     return VerifyTableStart(verifier) &&
8465            verifier.EndTable();
8466   }
8467   MaximumMinimumOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8468   void UnPackTo(MaximumMinimumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8469   static flatbuffers::Offset<MaximumMinimumOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8470 };
8471 
8472 struct MaximumMinimumOptionsBuilder {
8473   typedef MaximumMinimumOptions Table;
8474   flatbuffers::FlatBufferBuilder &fbb_;
8475   flatbuffers::uoffset_t start_;
8476   explicit MaximumMinimumOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8477         : fbb_(_fbb) {
8478     start_ = fbb_.StartTable();
8479   }
8480   flatbuffers::Offset<MaximumMinimumOptions> Finish() {
8481     const auto end = fbb_.EndTable(start_);
8482     auto o = flatbuffers::Offset<MaximumMinimumOptions>(end);
8483     return o;
8484   }
8485 };
8486 
8487 inline flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(
8488     flatbuffers::FlatBufferBuilder &_fbb) {
8489   MaximumMinimumOptionsBuilder builder_(_fbb);
8490   return builder_.Finish();
8491 }
8492 
8493 flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8494 
8495 struct TileOptionsT : public flatbuffers::NativeTable {
8496   typedef TileOptions TableType;
8497 };
8498 
8499 struct TileOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8500   typedef TileOptionsT NativeTableType;
8501   typedef TileOptionsBuilder Builder;
8502   bool Verify(flatbuffers::Verifier &verifier) const {
8503     return VerifyTableStart(verifier) &&
8504            verifier.EndTable();
8505   }
8506   TileOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8507   void UnPackTo(TileOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8508   static flatbuffers::Offset<TileOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8509 };
8510 
8511 struct TileOptionsBuilder {
8512   typedef TileOptions Table;
8513   flatbuffers::FlatBufferBuilder &fbb_;
8514   flatbuffers::uoffset_t start_;
8515   explicit TileOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8516         : fbb_(_fbb) {
8517     start_ = fbb_.StartTable();
8518   }
8519   flatbuffers::Offset<TileOptions> Finish() {
8520     const auto end = fbb_.EndTable(start_);
8521     auto o = flatbuffers::Offset<TileOptions>(end);
8522     return o;
8523   }
8524 };
8525 
8526 inline flatbuffers::Offset<TileOptions> CreateTileOptions(
8527     flatbuffers::FlatBufferBuilder &_fbb) {
8528   TileOptionsBuilder builder_(_fbb);
8529   return builder_.Finish();
8530 }
8531 
8532 flatbuffers::Offset<TileOptions> CreateTileOptions(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8533 
8534 struct ArgMaxOptionsT : public flatbuffers::NativeTable {
8535   typedef ArgMaxOptions TableType;
8536   tflite::TensorType output_type = tflite::TensorType_FLOAT32;
8537 };
8538 
8539 struct ArgMaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8540   typedef ArgMaxOptionsT NativeTableType;
8541   typedef ArgMaxOptionsBuilder Builder;
8542   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8543     VT_OUTPUT_TYPE = 4
8544   };
8545   tflite::TensorType output_type() const {
8546     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUTPUT_TYPE, 0));
8547   }
8548   bool mutate_output_type(tflite::TensorType _output_type = static_cast<tflite::TensorType>(0)) {
8549     return SetField<int8_t>(VT_OUTPUT_TYPE, static_cast<int8_t>(_output_type), 0);
8550   }
8551   bool Verify(flatbuffers::Verifier &verifier) const {
8552     return VerifyTableStart(verifier) &&
8553            VerifyField<int8_t>(verifier, VT_OUTPUT_TYPE, 1) &&
8554            verifier.EndTable();
8555   }
8556   ArgMaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8557   void UnPackTo(ArgMaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8558   static flatbuffers::Offset<ArgMaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8559 };
8560 
8561 struct ArgMaxOptionsBuilder {
8562   typedef ArgMaxOptions Table;
8563   flatbuffers::FlatBufferBuilder &fbb_;
8564   flatbuffers::uoffset_t start_;
8565   void add_output_type(tflite::TensorType output_type) {
8566     fbb_.AddElement<int8_t>(ArgMaxOptions::VT_OUTPUT_TYPE, static_cast<int8_t>(output_type), 0);
8567   }
8568   explicit ArgMaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8569         : fbb_(_fbb) {
8570     start_ = fbb_.StartTable();
8571   }
8572   flatbuffers::Offset<ArgMaxOptions> Finish() {
8573     const auto end = fbb_.EndTable(start_);
8574     auto o = flatbuffers::Offset<ArgMaxOptions>(end);
8575     return o;
8576   }
8577 };
8578 
8579 inline flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(
8580     flatbuffers::FlatBufferBuilder &_fbb,
8581     tflite::TensorType output_type = tflite::TensorType_FLOAT32) {
8582   ArgMaxOptionsBuilder builder_(_fbb);
8583   builder_.add_output_type(output_type);
8584   return builder_.Finish();
8585 }
8586 
8587 flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8588 
8589 struct ArgMinOptionsT : public flatbuffers::NativeTable {
8590   typedef ArgMinOptions TableType;
8591   tflite::TensorType output_type = tflite::TensorType_FLOAT32;
8592 };
8593 
8594 struct ArgMinOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8595   typedef ArgMinOptionsT NativeTableType;
8596   typedef ArgMinOptionsBuilder Builder;
8597   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8598     VT_OUTPUT_TYPE = 4
8599   };
8600   tflite::TensorType output_type() const {
8601     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUTPUT_TYPE, 0));
8602   }
8603   bool mutate_output_type(tflite::TensorType _output_type = static_cast<tflite::TensorType>(0)) {
8604     return SetField<int8_t>(VT_OUTPUT_TYPE, static_cast<int8_t>(_output_type), 0);
8605   }
8606   bool Verify(flatbuffers::Verifier &verifier) const {
8607     return VerifyTableStart(verifier) &&
8608            VerifyField<int8_t>(verifier, VT_OUTPUT_TYPE, 1) &&
8609            verifier.EndTable();
8610   }
8611   ArgMinOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8612   void UnPackTo(ArgMinOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8613   static flatbuffers::Offset<ArgMinOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8614 };
8615 
8616 struct ArgMinOptionsBuilder {
8617   typedef ArgMinOptions Table;
8618   flatbuffers::FlatBufferBuilder &fbb_;
8619   flatbuffers::uoffset_t start_;
8620   void add_output_type(tflite::TensorType output_type) {
8621     fbb_.AddElement<int8_t>(ArgMinOptions::VT_OUTPUT_TYPE, static_cast<int8_t>(output_type), 0);
8622   }
8623   explicit ArgMinOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8624         : fbb_(_fbb) {
8625     start_ = fbb_.StartTable();
8626   }
8627   flatbuffers::Offset<ArgMinOptions> Finish() {
8628     const auto end = fbb_.EndTable(start_);
8629     auto o = flatbuffers::Offset<ArgMinOptions>(end);
8630     return o;
8631   }
8632 };
8633 
8634 inline flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(
8635     flatbuffers::FlatBufferBuilder &_fbb,
8636     tflite::TensorType output_type = tflite::TensorType_FLOAT32) {
8637   ArgMinOptionsBuilder builder_(_fbb);
8638   builder_.add_output_type(output_type);
8639   return builder_.Finish();
8640 }
8641 
8642 flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8643 
8644 struct GreaterOptionsT : public flatbuffers::NativeTable {
8645   typedef GreaterOptions TableType;
8646 };
8647 
8648 struct GreaterOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8649   typedef GreaterOptionsT NativeTableType;
8650   typedef GreaterOptionsBuilder Builder;
8651   bool Verify(flatbuffers::Verifier &verifier) const {
8652     return VerifyTableStart(verifier) &&
8653            verifier.EndTable();
8654   }
8655   GreaterOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8656   void UnPackTo(GreaterOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8657   static flatbuffers::Offset<GreaterOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8658 };
8659 
8660 struct GreaterOptionsBuilder {
8661   typedef GreaterOptions Table;
8662   flatbuffers::FlatBufferBuilder &fbb_;
8663   flatbuffers::uoffset_t start_;
8664   explicit GreaterOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8665         : fbb_(_fbb) {
8666     start_ = fbb_.StartTable();
8667   }
8668   flatbuffers::Offset<GreaterOptions> Finish() {
8669     const auto end = fbb_.EndTable(start_);
8670     auto o = flatbuffers::Offset<GreaterOptions>(end);
8671     return o;
8672   }
8673 };
8674 
8675 inline flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(
8676     flatbuffers::FlatBufferBuilder &_fbb) {
8677   GreaterOptionsBuilder builder_(_fbb);
8678   return builder_.Finish();
8679 }
8680 
8681 flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8682 
8683 struct GreaterEqualOptionsT : public flatbuffers::NativeTable {
8684   typedef GreaterEqualOptions TableType;
8685 };
8686 
8687 struct GreaterEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8688   typedef GreaterEqualOptionsT NativeTableType;
8689   typedef GreaterEqualOptionsBuilder Builder;
8690   bool Verify(flatbuffers::Verifier &verifier) const {
8691     return VerifyTableStart(verifier) &&
8692            verifier.EndTable();
8693   }
8694   GreaterEqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8695   void UnPackTo(GreaterEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8696   static flatbuffers::Offset<GreaterEqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8697 };
8698 
8699 struct GreaterEqualOptionsBuilder {
8700   typedef GreaterEqualOptions Table;
8701   flatbuffers::FlatBufferBuilder &fbb_;
8702   flatbuffers::uoffset_t start_;
8703   explicit GreaterEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8704         : fbb_(_fbb) {
8705     start_ = fbb_.StartTable();
8706   }
8707   flatbuffers::Offset<GreaterEqualOptions> Finish() {
8708     const auto end = fbb_.EndTable(start_);
8709     auto o = flatbuffers::Offset<GreaterEqualOptions>(end);
8710     return o;
8711   }
8712 };
8713 
8714 inline flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(
8715     flatbuffers::FlatBufferBuilder &_fbb) {
8716   GreaterEqualOptionsBuilder builder_(_fbb);
8717   return builder_.Finish();
8718 }
8719 
8720 flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8721 
8722 struct LessOptionsT : public flatbuffers::NativeTable {
8723   typedef LessOptions TableType;
8724 };
8725 
8726 struct LessOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8727   typedef LessOptionsT NativeTableType;
8728   typedef LessOptionsBuilder Builder;
8729   bool Verify(flatbuffers::Verifier &verifier) const {
8730     return VerifyTableStart(verifier) &&
8731            verifier.EndTable();
8732   }
8733   LessOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8734   void UnPackTo(LessOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8735   static flatbuffers::Offset<LessOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8736 };
8737 
8738 struct LessOptionsBuilder {
8739   typedef LessOptions Table;
8740   flatbuffers::FlatBufferBuilder &fbb_;
8741   flatbuffers::uoffset_t start_;
8742   explicit LessOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8743         : fbb_(_fbb) {
8744     start_ = fbb_.StartTable();
8745   }
8746   flatbuffers::Offset<LessOptions> Finish() {
8747     const auto end = fbb_.EndTable(start_);
8748     auto o = flatbuffers::Offset<LessOptions>(end);
8749     return o;
8750   }
8751 };
8752 
8753 inline flatbuffers::Offset<LessOptions> CreateLessOptions(
8754     flatbuffers::FlatBufferBuilder &_fbb) {
8755   LessOptionsBuilder builder_(_fbb);
8756   return builder_.Finish();
8757 }
8758 
8759 flatbuffers::Offset<LessOptions> CreateLessOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8760 
8761 struct LessEqualOptionsT : public flatbuffers::NativeTable {
8762   typedef LessEqualOptions TableType;
8763 };
8764 
8765 struct LessEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8766   typedef LessEqualOptionsT NativeTableType;
8767   typedef LessEqualOptionsBuilder Builder;
8768   bool Verify(flatbuffers::Verifier &verifier) const {
8769     return VerifyTableStart(verifier) &&
8770            verifier.EndTable();
8771   }
8772   LessEqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8773   void UnPackTo(LessEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8774   static flatbuffers::Offset<LessEqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8775 };
8776 
8777 struct LessEqualOptionsBuilder {
8778   typedef LessEqualOptions Table;
8779   flatbuffers::FlatBufferBuilder &fbb_;
8780   flatbuffers::uoffset_t start_;
8781   explicit LessEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8782         : fbb_(_fbb) {
8783     start_ = fbb_.StartTable();
8784   }
8785   flatbuffers::Offset<LessEqualOptions> Finish() {
8786     const auto end = fbb_.EndTable(start_);
8787     auto o = flatbuffers::Offset<LessEqualOptions>(end);
8788     return o;
8789   }
8790 };
8791 
8792 inline flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(
8793     flatbuffers::FlatBufferBuilder &_fbb) {
8794   LessEqualOptionsBuilder builder_(_fbb);
8795   return builder_.Finish();
8796 }
8797 
8798 flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8799 
8800 struct NegOptionsT : public flatbuffers::NativeTable {
8801   typedef NegOptions TableType;
8802 };
8803 
8804 struct NegOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8805   typedef NegOptionsT NativeTableType;
8806   typedef NegOptionsBuilder Builder;
8807   bool Verify(flatbuffers::Verifier &verifier) const {
8808     return VerifyTableStart(verifier) &&
8809            verifier.EndTable();
8810   }
8811   NegOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8812   void UnPackTo(NegOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8813   static flatbuffers::Offset<NegOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8814 };
8815 
8816 struct NegOptionsBuilder {
8817   typedef NegOptions Table;
8818   flatbuffers::FlatBufferBuilder &fbb_;
8819   flatbuffers::uoffset_t start_;
8820   explicit NegOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8821         : fbb_(_fbb) {
8822     start_ = fbb_.StartTable();
8823   }
8824   flatbuffers::Offset<NegOptions> Finish() {
8825     const auto end = fbb_.EndTable(start_);
8826     auto o = flatbuffers::Offset<NegOptions>(end);
8827     return o;
8828   }
8829 };
8830 
8831 inline flatbuffers::Offset<NegOptions> CreateNegOptions(
8832     flatbuffers::FlatBufferBuilder &_fbb) {
8833   NegOptionsBuilder builder_(_fbb);
8834   return builder_.Finish();
8835 }
8836 
8837 flatbuffers::Offset<NegOptions> CreateNegOptions(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8838 
8839 struct SelectOptionsT : public flatbuffers::NativeTable {
8840   typedef SelectOptions TableType;
8841 };
8842 
8843 struct SelectOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8844   typedef SelectOptionsT NativeTableType;
8845   typedef SelectOptionsBuilder Builder;
8846   bool Verify(flatbuffers::Verifier &verifier) const {
8847     return VerifyTableStart(verifier) &&
8848            verifier.EndTable();
8849   }
8850   SelectOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8851   void UnPackTo(SelectOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8852   static flatbuffers::Offset<SelectOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8853 };
8854 
8855 struct SelectOptionsBuilder {
8856   typedef SelectOptions Table;
8857   flatbuffers::FlatBufferBuilder &fbb_;
8858   flatbuffers::uoffset_t start_;
8859   explicit SelectOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8860         : fbb_(_fbb) {
8861     start_ = fbb_.StartTable();
8862   }
8863   flatbuffers::Offset<SelectOptions> Finish() {
8864     const auto end = fbb_.EndTable(start_);
8865     auto o = flatbuffers::Offset<SelectOptions>(end);
8866     return o;
8867   }
8868 };
8869 
8870 inline flatbuffers::Offset<SelectOptions> CreateSelectOptions(
8871     flatbuffers::FlatBufferBuilder &_fbb) {
8872   SelectOptionsBuilder builder_(_fbb);
8873   return builder_.Finish();
8874 }
8875 
8876 flatbuffers::Offset<SelectOptions> CreateSelectOptions(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8877 
8878 struct SliceOptionsT : public flatbuffers::NativeTable {
8879   typedef SliceOptions TableType;
8880 };
8881 
8882 struct SliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8883   typedef SliceOptionsT NativeTableType;
8884   typedef SliceOptionsBuilder Builder;
8885   bool Verify(flatbuffers::Verifier &verifier) const {
8886     return VerifyTableStart(verifier) &&
8887            verifier.EndTable();
8888   }
8889   SliceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8890   void UnPackTo(SliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8891   static flatbuffers::Offset<SliceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8892 };
8893 
8894 struct SliceOptionsBuilder {
8895   typedef SliceOptions Table;
8896   flatbuffers::FlatBufferBuilder &fbb_;
8897   flatbuffers::uoffset_t start_;
8898   explicit SliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8899         : fbb_(_fbb) {
8900     start_ = fbb_.StartTable();
8901   }
8902   flatbuffers::Offset<SliceOptions> Finish() {
8903     const auto end = fbb_.EndTable(start_);
8904     auto o = flatbuffers::Offset<SliceOptions>(end);
8905     return o;
8906   }
8907 };
8908 
8909 inline flatbuffers::Offset<SliceOptions> CreateSliceOptions(
8910     flatbuffers::FlatBufferBuilder &_fbb) {
8911   SliceOptionsBuilder builder_(_fbb);
8912   return builder_.Finish();
8913 }
8914 
8915 flatbuffers::Offset<SliceOptions> CreateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8916 
8917 struct TransposeConvOptionsT : public flatbuffers::NativeTable {
8918   typedef TransposeConvOptions TableType;
8919   tflite::Padding padding = tflite::Padding_SAME;
8920   int32_t stride_w = 0;
8921   int32_t stride_h = 0;
8922 };
8923 
8924 struct TransposeConvOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
8925   typedef TransposeConvOptionsT NativeTableType;
8926   typedef TransposeConvOptionsBuilder Builder;
8927   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
8928     VT_PADDING = 4,
8929     VT_STRIDE_W = 6,
8930     VT_STRIDE_H = 8
8931   };
8932   tflite::Padding padding() const {
8933     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
8934   }
8935   bool mutate_padding(tflite::Padding _padding = static_cast<tflite::Padding>(0)) {
8936     return SetField<int8_t>(VT_PADDING, static_cast<int8_t>(_padding), 0);
8937   }
8938   int32_t stride_w() const {
8939     return GetField<int32_t>(VT_STRIDE_W, 0);
8940   }
8941   bool mutate_stride_w(int32_t _stride_w = 0) {
8942     return SetField<int32_t>(VT_STRIDE_W, _stride_w, 0);
8943   }
8944   int32_t stride_h() const {
8945     return GetField<int32_t>(VT_STRIDE_H, 0);
8946   }
8947   bool mutate_stride_h(int32_t _stride_h = 0) {
8948     return SetField<int32_t>(VT_STRIDE_H, _stride_h, 0);
8949   }
8950   bool Verify(flatbuffers::Verifier &verifier) const {
8951     return VerifyTableStart(verifier) &&
8952            VerifyField<int8_t>(verifier, VT_PADDING, 1) &&
8953            VerifyField<int32_t>(verifier, VT_STRIDE_W, 4) &&
8954            VerifyField<int32_t>(verifier, VT_STRIDE_H, 4) &&
8955            verifier.EndTable();
8956   }
8957   TransposeConvOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8958   void UnPackTo(TransposeConvOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
8959   static flatbuffers::Offset<TransposeConvOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8960 };
8961 
8962 struct TransposeConvOptionsBuilder {
8963   typedef TransposeConvOptions Table;
8964   flatbuffers::FlatBufferBuilder &fbb_;
8965   flatbuffers::uoffset_t start_;
8966   void add_padding(tflite::Padding padding) {
8967     fbb_.AddElement<int8_t>(TransposeConvOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
8968   }
8969   void add_stride_w(int32_t stride_w) {
8970     fbb_.AddElement<int32_t>(TransposeConvOptions::VT_STRIDE_W, stride_w, 0);
8971   }
8972   void add_stride_h(int32_t stride_h) {
8973     fbb_.AddElement<int32_t>(TransposeConvOptions::VT_STRIDE_H, stride_h, 0);
8974   }
8975   explicit TransposeConvOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
8976         : fbb_(_fbb) {
8977     start_ = fbb_.StartTable();
8978   }
8979   flatbuffers::Offset<TransposeConvOptions> Finish() {
8980     const auto end = fbb_.EndTable(start_);
8981     auto o = flatbuffers::Offset<TransposeConvOptions>(end);
8982     return o;
8983   }
8984 };
8985 
8986 inline flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(
8987     flatbuffers::FlatBufferBuilder &_fbb,
8988     tflite::Padding padding = tflite::Padding_SAME,
8989     int32_t stride_w = 0,
8990     int32_t stride_h = 0) {
8991   TransposeConvOptionsBuilder builder_(_fbb);
8992   builder_.add_stride_h(stride_h);
8993   builder_.add_stride_w(stride_w);
8994   builder_.add_padding(padding);
8995   return builder_.Finish();
8996 }
8997 
8998 flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
8999 
9000 struct ExpandDimsOptionsT : public flatbuffers::NativeTable {
9001   typedef ExpandDimsOptions TableType;
9002 };
9003 
9004 struct ExpandDimsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9005   typedef ExpandDimsOptionsT NativeTableType;
9006   typedef ExpandDimsOptionsBuilder Builder;
9007   bool Verify(flatbuffers::Verifier &verifier) const {
9008     return VerifyTableStart(verifier) &&
9009            verifier.EndTable();
9010   }
9011   ExpandDimsOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9012   void UnPackTo(ExpandDimsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9013   static flatbuffers::Offset<ExpandDimsOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9014 };
9015 
9016 struct ExpandDimsOptionsBuilder {
9017   typedef ExpandDimsOptions Table;
9018   flatbuffers::FlatBufferBuilder &fbb_;
9019   flatbuffers::uoffset_t start_;
9020   explicit ExpandDimsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9021         : fbb_(_fbb) {
9022     start_ = fbb_.StartTable();
9023   }
9024   flatbuffers::Offset<ExpandDimsOptions> Finish() {
9025     const auto end = fbb_.EndTable(start_);
9026     auto o = flatbuffers::Offset<ExpandDimsOptions>(end);
9027     return o;
9028   }
9029 };
9030 
9031 inline flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(
9032     flatbuffers::FlatBufferBuilder &_fbb) {
9033   ExpandDimsOptionsBuilder builder_(_fbb);
9034   return builder_.Finish();
9035 }
9036 
9037 flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9038 
9039 struct SparseToDenseOptionsT : public flatbuffers::NativeTable {
9040   typedef SparseToDenseOptions TableType;
9041   bool validate_indices = false;
9042 };
9043 
9044 struct SparseToDenseOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9045   typedef SparseToDenseOptionsT NativeTableType;
9046   typedef SparseToDenseOptionsBuilder Builder;
9047   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
9048     VT_VALIDATE_INDICES = 4
9049   };
9050   bool validate_indices() const {
9051     return GetField<uint8_t>(VT_VALIDATE_INDICES, 0) != 0;
9052   }
9053   bool mutate_validate_indices(bool _validate_indices = 0) {
9054     return SetField<uint8_t>(VT_VALIDATE_INDICES, static_cast<uint8_t>(_validate_indices), 0);
9055   }
9056   bool Verify(flatbuffers::Verifier &verifier) const {
9057     return VerifyTableStart(verifier) &&
9058            VerifyField<uint8_t>(verifier, VT_VALIDATE_INDICES, 1) &&
9059            verifier.EndTable();
9060   }
9061   SparseToDenseOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9062   void UnPackTo(SparseToDenseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9063   static flatbuffers::Offset<SparseToDenseOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9064 };
9065 
9066 struct SparseToDenseOptionsBuilder {
9067   typedef SparseToDenseOptions Table;
9068   flatbuffers::FlatBufferBuilder &fbb_;
9069   flatbuffers::uoffset_t start_;
9070   void add_validate_indices(bool validate_indices) {
9071     fbb_.AddElement<uint8_t>(SparseToDenseOptions::VT_VALIDATE_INDICES, static_cast<uint8_t>(validate_indices), 0);
9072   }
9073   explicit SparseToDenseOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9074         : fbb_(_fbb) {
9075     start_ = fbb_.StartTable();
9076   }
9077   flatbuffers::Offset<SparseToDenseOptions> Finish() {
9078     const auto end = fbb_.EndTable(start_);
9079     auto o = flatbuffers::Offset<SparseToDenseOptions>(end);
9080     return o;
9081   }
9082 };
9083 
9084 inline flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(
9085     flatbuffers::FlatBufferBuilder &_fbb,
9086     bool validate_indices = false) {
9087   SparseToDenseOptionsBuilder builder_(_fbb);
9088   builder_.add_validate_indices(validate_indices);
9089   return builder_.Finish();
9090 }
9091 
9092 flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9093 
9094 struct EqualOptionsT : public flatbuffers::NativeTable {
9095   typedef EqualOptions TableType;
9096 };
9097 
9098 struct EqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9099   typedef EqualOptionsT NativeTableType;
9100   typedef EqualOptionsBuilder Builder;
9101   bool Verify(flatbuffers::Verifier &verifier) const {
9102     return VerifyTableStart(verifier) &&
9103            verifier.EndTable();
9104   }
9105   EqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9106   void UnPackTo(EqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9107   static flatbuffers::Offset<EqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9108 };
9109 
9110 struct EqualOptionsBuilder {
9111   typedef EqualOptions Table;
9112   flatbuffers::FlatBufferBuilder &fbb_;
9113   flatbuffers::uoffset_t start_;
9114   explicit EqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9115         : fbb_(_fbb) {
9116     start_ = fbb_.StartTable();
9117   }
9118   flatbuffers::Offset<EqualOptions> Finish() {
9119     const auto end = fbb_.EndTable(start_);
9120     auto o = flatbuffers::Offset<EqualOptions>(end);
9121     return o;
9122   }
9123 };
9124 
9125 inline flatbuffers::Offset<EqualOptions> CreateEqualOptions(
9126     flatbuffers::FlatBufferBuilder &_fbb) {
9127   EqualOptionsBuilder builder_(_fbb);
9128   return builder_.Finish();
9129 }
9130 
9131 flatbuffers::Offset<EqualOptions> CreateEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9132 
9133 struct NotEqualOptionsT : public flatbuffers::NativeTable {
9134   typedef NotEqualOptions TableType;
9135 };
9136 
9137 struct NotEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9138   typedef NotEqualOptionsT NativeTableType;
9139   typedef NotEqualOptionsBuilder Builder;
9140   bool Verify(flatbuffers::Verifier &verifier) const {
9141     return VerifyTableStart(verifier) &&
9142            verifier.EndTable();
9143   }
9144   NotEqualOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9145   void UnPackTo(NotEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9146   static flatbuffers::Offset<NotEqualOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9147 };
9148 
9149 struct NotEqualOptionsBuilder {
9150   typedef NotEqualOptions Table;
9151   flatbuffers::FlatBufferBuilder &fbb_;
9152   flatbuffers::uoffset_t start_;
9153   explicit NotEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9154         : fbb_(_fbb) {
9155     start_ = fbb_.StartTable();
9156   }
9157   flatbuffers::Offset<NotEqualOptions> Finish() {
9158     const auto end = fbb_.EndTable(start_);
9159     auto o = flatbuffers::Offset<NotEqualOptions>(end);
9160     return o;
9161   }
9162 };
9163 
9164 inline flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(
9165     flatbuffers::FlatBufferBuilder &_fbb) {
9166   NotEqualOptionsBuilder builder_(_fbb);
9167   return builder_.Finish();
9168 }
9169 
9170 flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9171 
9172 struct ShapeOptionsT : public flatbuffers::NativeTable {
9173   typedef ShapeOptions TableType;
9174   tflite::TensorType out_type = tflite::TensorType_FLOAT32;
9175 };
9176 
9177 struct ShapeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9178   typedef ShapeOptionsT NativeTableType;
9179   typedef ShapeOptionsBuilder Builder;
9180   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
9181     VT_OUT_TYPE = 4
9182   };
9183   tflite::TensorType out_type() const {
9184     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUT_TYPE, 0));
9185   }
9186   bool mutate_out_type(tflite::TensorType _out_type = static_cast<tflite::TensorType>(0)) {
9187     return SetField<int8_t>(VT_OUT_TYPE, static_cast<int8_t>(_out_type), 0);
9188   }
9189   bool Verify(flatbuffers::Verifier &verifier) const {
9190     return VerifyTableStart(verifier) &&
9191            VerifyField<int8_t>(verifier, VT_OUT_TYPE, 1) &&
9192            verifier.EndTable();
9193   }
9194   ShapeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9195   void UnPackTo(ShapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9196   static flatbuffers::Offset<ShapeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9197 };
9198 
9199 struct ShapeOptionsBuilder {
9200   typedef ShapeOptions Table;
9201   flatbuffers::FlatBufferBuilder &fbb_;
9202   flatbuffers::uoffset_t start_;
9203   void add_out_type(tflite::TensorType out_type) {
9204     fbb_.AddElement<int8_t>(ShapeOptions::VT_OUT_TYPE, static_cast<int8_t>(out_type), 0);
9205   }
9206   explicit ShapeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9207         : fbb_(_fbb) {
9208     start_ = fbb_.StartTable();
9209   }
9210   flatbuffers::Offset<ShapeOptions> Finish() {
9211     const auto end = fbb_.EndTable(start_);
9212     auto o = flatbuffers::Offset<ShapeOptions>(end);
9213     return o;
9214   }
9215 };
9216 
9217 inline flatbuffers::Offset<ShapeOptions> CreateShapeOptions(
9218     flatbuffers::FlatBufferBuilder &_fbb,
9219     tflite::TensorType out_type = tflite::TensorType_FLOAT32) {
9220   ShapeOptionsBuilder builder_(_fbb);
9221   builder_.add_out_type(out_type);
9222   return builder_.Finish();
9223 }
9224 
9225 flatbuffers::Offset<ShapeOptions> CreateShapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9226 
9227 struct RankOptionsT : public flatbuffers::NativeTable {
9228   typedef RankOptions TableType;
9229 };
9230 
9231 struct RankOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9232   typedef RankOptionsT NativeTableType;
9233   typedef RankOptionsBuilder Builder;
9234   bool Verify(flatbuffers::Verifier &verifier) const {
9235     return VerifyTableStart(verifier) &&
9236            verifier.EndTable();
9237   }
9238   RankOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9239   void UnPackTo(RankOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9240   static flatbuffers::Offset<RankOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9241 };
9242 
9243 struct RankOptionsBuilder {
9244   typedef RankOptions Table;
9245   flatbuffers::FlatBufferBuilder &fbb_;
9246   flatbuffers::uoffset_t start_;
9247   explicit RankOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9248         : fbb_(_fbb) {
9249     start_ = fbb_.StartTable();
9250   }
9251   flatbuffers::Offset<RankOptions> Finish() {
9252     const auto end = fbb_.EndTable(start_);
9253     auto o = flatbuffers::Offset<RankOptions>(end);
9254     return o;
9255   }
9256 };
9257 
9258 inline flatbuffers::Offset<RankOptions> CreateRankOptions(
9259     flatbuffers::FlatBufferBuilder &_fbb) {
9260   RankOptionsBuilder builder_(_fbb);
9261   return builder_.Finish();
9262 }
9263 
9264 flatbuffers::Offset<RankOptions> CreateRankOptions(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9265 
9266 struct PowOptionsT : public flatbuffers::NativeTable {
9267   typedef PowOptions TableType;
9268 };
9269 
9270 struct PowOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9271   typedef PowOptionsT NativeTableType;
9272   typedef PowOptionsBuilder Builder;
9273   bool Verify(flatbuffers::Verifier &verifier) const {
9274     return VerifyTableStart(verifier) &&
9275            verifier.EndTable();
9276   }
9277   PowOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9278   void UnPackTo(PowOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9279   static flatbuffers::Offset<PowOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9280 };
9281 
9282 struct PowOptionsBuilder {
9283   typedef PowOptions Table;
9284   flatbuffers::FlatBufferBuilder &fbb_;
9285   flatbuffers::uoffset_t start_;
9286   explicit PowOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9287         : fbb_(_fbb) {
9288     start_ = fbb_.StartTable();
9289   }
9290   flatbuffers::Offset<PowOptions> Finish() {
9291     const auto end = fbb_.EndTable(start_);
9292     auto o = flatbuffers::Offset<PowOptions>(end);
9293     return o;
9294   }
9295 };
9296 
9297 inline flatbuffers::Offset<PowOptions> CreatePowOptions(
9298     flatbuffers::FlatBufferBuilder &_fbb) {
9299   PowOptionsBuilder builder_(_fbb);
9300   return builder_.Finish();
9301 }
9302 
9303 flatbuffers::Offset<PowOptions> CreatePowOptions(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9304 
9305 struct FakeQuantOptionsT : public flatbuffers::NativeTable {
9306   typedef FakeQuantOptions TableType;
9307   float min = 0.0f;
9308   float max = 0.0f;
9309   int32_t num_bits = 0;
9310   bool narrow_range = false;
9311 };
9312 
9313 struct FakeQuantOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9314   typedef FakeQuantOptionsT NativeTableType;
9315   typedef FakeQuantOptionsBuilder Builder;
9316   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
9317     VT_MIN = 4,
9318     VT_MAX = 6,
9319     VT_NUM_BITS = 8,
9320     VT_NARROW_RANGE = 10
9321   };
9322   float min() const {
9323     return GetField<float>(VT_MIN, 0.0f);
9324   }
9325   bool mutate_min(float _min = 0.0f) {
9326     return SetField<float>(VT_MIN, _min, 0.0f);
9327   }
9328   float max() const {
9329     return GetField<float>(VT_MAX, 0.0f);
9330   }
9331   bool mutate_max(float _max = 0.0f) {
9332     return SetField<float>(VT_MAX, _max, 0.0f);
9333   }
9334   int32_t num_bits() const {
9335     return GetField<int32_t>(VT_NUM_BITS, 0);
9336   }
9337   bool mutate_num_bits(int32_t _num_bits = 0) {
9338     return SetField<int32_t>(VT_NUM_BITS, _num_bits, 0);
9339   }
9340   bool narrow_range() const {
9341     return GetField<uint8_t>(VT_NARROW_RANGE, 0) != 0;
9342   }
9343   bool mutate_narrow_range(bool _narrow_range = 0) {
9344     return SetField<uint8_t>(VT_NARROW_RANGE, static_cast<uint8_t>(_narrow_range), 0);
9345   }
9346   bool Verify(flatbuffers::Verifier &verifier) const {
9347     return VerifyTableStart(verifier) &&
9348            VerifyField<float>(verifier, VT_MIN, 4) &&
9349            VerifyField<float>(verifier, VT_MAX, 4) &&
9350            VerifyField<int32_t>(verifier, VT_NUM_BITS, 4) &&
9351            VerifyField<uint8_t>(verifier, VT_NARROW_RANGE, 1) &&
9352            verifier.EndTable();
9353   }
9354   FakeQuantOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9355   void UnPackTo(FakeQuantOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9356   static flatbuffers::Offset<FakeQuantOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9357 };
9358 
9359 struct FakeQuantOptionsBuilder {
9360   typedef FakeQuantOptions Table;
9361   flatbuffers::FlatBufferBuilder &fbb_;
9362   flatbuffers::uoffset_t start_;
9363   void add_min(float min) {
9364     fbb_.AddElement<float>(FakeQuantOptions::VT_MIN, min, 0.0f);
9365   }
9366   void add_max(float max) {
9367     fbb_.AddElement<float>(FakeQuantOptions::VT_MAX, max, 0.0f);
9368   }
9369   void add_num_bits(int32_t num_bits) {
9370     fbb_.AddElement<int32_t>(FakeQuantOptions::VT_NUM_BITS, num_bits, 0);
9371   }
9372   void add_narrow_range(bool narrow_range) {
9373     fbb_.AddElement<uint8_t>(FakeQuantOptions::VT_NARROW_RANGE, static_cast<uint8_t>(narrow_range), 0);
9374   }
9375   explicit FakeQuantOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9376         : fbb_(_fbb) {
9377     start_ = fbb_.StartTable();
9378   }
9379   flatbuffers::Offset<FakeQuantOptions> Finish() {
9380     const auto end = fbb_.EndTable(start_);
9381     auto o = flatbuffers::Offset<FakeQuantOptions>(end);
9382     return o;
9383   }
9384 };
9385 
9386 inline flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(
9387     flatbuffers::FlatBufferBuilder &_fbb,
9388     float min = 0.0f,
9389     float max = 0.0f,
9390     int32_t num_bits = 0,
9391     bool narrow_range = false) {
9392   FakeQuantOptionsBuilder builder_(_fbb);
9393   builder_.add_num_bits(num_bits);
9394   builder_.add_max(max);
9395   builder_.add_min(min);
9396   builder_.add_narrow_range(narrow_range);
9397   return builder_.Finish();
9398 }
9399 
9400 flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9401 
9402 struct PackOptionsT : public flatbuffers::NativeTable {
9403   typedef PackOptions TableType;
9404   int32_t values_count = 0;
9405   int32_t axis = 0;
9406 };
9407 
9408 struct PackOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9409   typedef PackOptionsT NativeTableType;
9410   typedef PackOptionsBuilder Builder;
9411   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
9412     VT_VALUES_COUNT = 4,
9413     VT_AXIS = 6
9414   };
9415   int32_t values_count() const {
9416     return GetField<int32_t>(VT_VALUES_COUNT, 0);
9417   }
9418   bool mutate_values_count(int32_t _values_count = 0) {
9419     return SetField<int32_t>(VT_VALUES_COUNT, _values_count, 0);
9420   }
9421   int32_t axis() const {
9422     return GetField<int32_t>(VT_AXIS, 0);
9423   }
9424   bool mutate_axis(int32_t _axis = 0) {
9425     return SetField<int32_t>(VT_AXIS, _axis, 0);
9426   }
9427   bool Verify(flatbuffers::Verifier &verifier) const {
9428     return VerifyTableStart(verifier) &&
9429            VerifyField<int32_t>(verifier, VT_VALUES_COUNT, 4) &&
9430            VerifyField<int32_t>(verifier, VT_AXIS, 4) &&
9431            verifier.EndTable();
9432   }
9433   PackOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9434   void UnPackTo(PackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9435   static flatbuffers::Offset<PackOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9436 };
9437 
9438 struct PackOptionsBuilder {
9439   typedef PackOptions Table;
9440   flatbuffers::FlatBufferBuilder &fbb_;
9441   flatbuffers::uoffset_t start_;
9442   void add_values_count(int32_t values_count) {
9443     fbb_.AddElement<int32_t>(PackOptions::VT_VALUES_COUNT, values_count, 0);
9444   }
9445   void add_axis(int32_t axis) {
9446     fbb_.AddElement<int32_t>(PackOptions::VT_AXIS, axis, 0);
9447   }
9448   explicit PackOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9449         : fbb_(_fbb) {
9450     start_ = fbb_.StartTable();
9451   }
9452   flatbuffers::Offset<PackOptions> Finish() {
9453     const auto end = fbb_.EndTable(start_);
9454     auto o = flatbuffers::Offset<PackOptions>(end);
9455     return o;
9456   }
9457 };
9458 
9459 inline flatbuffers::Offset<PackOptions> CreatePackOptions(
9460     flatbuffers::FlatBufferBuilder &_fbb,
9461     int32_t values_count = 0,
9462     int32_t axis = 0) {
9463   PackOptionsBuilder builder_(_fbb);
9464   builder_.add_axis(axis);
9465   builder_.add_values_count(values_count);
9466   return builder_.Finish();
9467 }
9468 
9469 flatbuffers::Offset<PackOptions> CreatePackOptions(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9470 
9471 struct LogicalOrOptionsT : public flatbuffers::NativeTable {
9472   typedef LogicalOrOptions TableType;
9473 };
9474 
9475 struct LogicalOrOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9476   typedef LogicalOrOptionsT NativeTableType;
9477   typedef LogicalOrOptionsBuilder Builder;
9478   bool Verify(flatbuffers::Verifier &verifier) const {
9479     return VerifyTableStart(verifier) &&
9480            verifier.EndTable();
9481   }
9482   LogicalOrOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9483   void UnPackTo(LogicalOrOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9484   static flatbuffers::Offset<LogicalOrOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9485 };
9486 
9487 struct LogicalOrOptionsBuilder {
9488   typedef LogicalOrOptions Table;
9489   flatbuffers::FlatBufferBuilder &fbb_;
9490   flatbuffers::uoffset_t start_;
9491   explicit LogicalOrOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9492         : fbb_(_fbb) {
9493     start_ = fbb_.StartTable();
9494   }
9495   flatbuffers::Offset<LogicalOrOptions> Finish() {
9496     const auto end = fbb_.EndTable(start_);
9497     auto o = flatbuffers::Offset<LogicalOrOptions>(end);
9498     return o;
9499   }
9500 };
9501 
9502 inline flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(
9503     flatbuffers::FlatBufferBuilder &_fbb) {
9504   LogicalOrOptionsBuilder builder_(_fbb);
9505   return builder_.Finish();
9506 }
9507 
9508 flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9509 
9510 struct OneHotOptionsT : public flatbuffers::NativeTable {
9511   typedef OneHotOptions TableType;
9512   int32_t axis = 0;
9513 };
9514 
9515 struct OneHotOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9516   typedef OneHotOptionsT NativeTableType;
9517   typedef OneHotOptionsBuilder Builder;
9518   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
9519     VT_AXIS = 4
9520   };
9521   int32_t axis() const {
9522     return GetField<int32_t>(VT_AXIS, 0);
9523   }
9524   bool mutate_axis(int32_t _axis = 0) {
9525     return SetField<int32_t>(VT_AXIS, _axis, 0);
9526   }
9527   bool Verify(flatbuffers::Verifier &verifier) const {
9528     return VerifyTableStart(verifier) &&
9529            VerifyField<int32_t>(verifier, VT_AXIS, 4) &&
9530            verifier.EndTable();
9531   }
9532   OneHotOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9533   void UnPackTo(OneHotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9534   static flatbuffers::Offset<OneHotOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9535 };
9536 
9537 struct OneHotOptionsBuilder {
9538   typedef OneHotOptions Table;
9539   flatbuffers::FlatBufferBuilder &fbb_;
9540   flatbuffers::uoffset_t start_;
9541   void add_axis(int32_t axis) {
9542     fbb_.AddElement<int32_t>(OneHotOptions::VT_AXIS, axis, 0);
9543   }
9544   explicit OneHotOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9545         : fbb_(_fbb) {
9546     start_ = fbb_.StartTable();
9547   }
9548   flatbuffers::Offset<OneHotOptions> Finish() {
9549     const auto end = fbb_.EndTable(start_);
9550     auto o = flatbuffers::Offset<OneHotOptions>(end);
9551     return o;
9552   }
9553 };
9554 
9555 inline flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(
9556     flatbuffers::FlatBufferBuilder &_fbb,
9557     int32_t axis = 0) {
9558   OneHotOptionsBuilder builder_(_fbb);
9559   builder_.add_axis(axis);
9560   return builder_.Finish();
9561 }
9562 
9563 flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9564 
9565 struct AbsOptionsT : public flatbuffers::NativeTable {
9566   typedef AbsOptions TableType;
9567 };
9568 
9569 struct AbsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9570   typedef AbsOptionsT NativeTableType;
9571   typedef AbsOptionsBuilder Builder;
9572   bool Verify(flatbuffers::Verifier &verifier) const {
9573     return VerifyTableStart(verifier) &&
9574            verifier.EndTable();
9575   }
9576   AbsOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9577   void UnPackTo(AbsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9578   static flatbuffers::Offset<AbsOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9579 };
9580 
9581 struct AbsOptionsBuilder {
9582   typedef AbsOptions Table;
9583   flatbuffers::FlatBufferBuilder &fbb_;
9584   flatbuffers::uoffset_t start_;
9585   explicit AbsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9586         : fbb_(_fbb) {
9587     start_ = fbb_.StartTable();
9588   }
9589   flatbuffers::Offset<AbsOptions> Finish() {
9590     const auto end = fbb_.EndTable(start_);
9591     auto o = flatbuffers::Offset<AbsOptions>(end);
9592     return o;
9593   }
9594 };
9595 
9596 inline flatbuffers::Offset<AbsOptions> CreateAbsOptions(
9597     flatbuffers::FlatBufferBuilder &_fbb) {
9598   AbsOptionsBuilder builder_(_fbb);
9599   return builder_.Finish();
9600 }
9601 
9602 flatbuffers::Offset<AbsOptions> CreateAbsOptions(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9603 
9604 struct HardSwishOptionsT : public flatbuffers::NativeTable {
9605   typedef HardSwishOptions TableType;
9606 };
9607 
9608 struct HardSwishOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9609   typedef HardSwishOptionsT NativeTableType;
9610   typedef HardSwishOptionsBuilder Builder;
9611   bool Verify(flatbuffers::Verifier &verifier) const {
9612     return VerifyTableStart(verifier) &&
9613            verifier.EndTable();
9614   }
9615   HardSwishOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9616   void UnPackTo(HardSwishOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9617   static flatbuffers::Offset<HardSwishOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HardSwishOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9618 };
9619 
9620 struct HardSwishOptionsBuilder {
9621   typedef HardSwishOptions Table;
9622   flatbuffers::FlatBufferBuilder &fbb_;
9623   flatbuffers::uoffset_t start_;
9624   explicit HardSwishOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9625         : fbb_(_fbb) {
9626     start_ = fbb_.StartTable();
9627   }
9628   flatbuffers::Offset<HardSwishOptions> Finish() {
9629     const auto end = fbb_.EndTable(start_);
9630     auto o = flatbuffers::Offset<HardSwishOptions>(end);
9631     return o;
9632   }
9633 };
9634 
9635 inline flatbuffers::Offset<HardSwishOptions> CreateHardSwishOptions(
9636     flatbuffers::FlatBufferBuilder &_fbb) {
9637   HardSwishOptionsBuilder builder_(_fbb);
9638   return builder_.Finish();
9639 }
9640 
9641 flatbuffers::Offset<HardSwishOptions> CreateHardSwishOptions(flatbuffers::FlatBufferBuilder &_fbb, const HardSwishOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9642 
9643 struct LogicalAndOptionsT : public flatbuffers::NativeTable {
9644   typedef LogicalAndOptions TableType;
9645 };
9646 
9647 struct LogicalAndOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9648   typedef LogicalAndOptionsT NativeTableType;
9649   typedef LogicalAndOptionsBuilder Builder;
9650   bool Verify(flatbuffers::Verifier &verifier) const {
9651     return VerifyTableStart(verifier) &&
9652            verifier.EndTable();
9653   }
9654   LogicalAndOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9655   void UnPackTo(LogicalAndOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9656   static flatbuffers::Offset<LogicalAndOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9657 };
9658 
9659 struct LogicalAndOptionsBuilder {
9660   typedef LogicalAndOptions Table;
9661   flatbuffers::FlatBufferBuilder &fbb_;
9662   flatbuffers::uoffset_t start_;
9663   explicit LogicalAndOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9664         : fbb_(_fbb) {
9665     start_ = fbb_.StartTable();
9666   }
9667   flatbuffers::Offset<LogicalAndOptions> Finish() {
9668     const auto end = fbb_.EndTable(start_);
9669     auto o = flatbuffers::Offset<LogicalAndOptions>(end);
9670     return o;
9671   }
9672 };
9673 
9674 inline flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(
9675     flatbuffers::FlatBufferBuilder &_fbb) {
9676   LogicalAndOptionsBuilder builder_(_fbb);
9677   return builder_.Finish();
9678 }
9679 
9680 flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9681 
9682 struct LogicalNotOptionsT : public flatbuffers::NativeTable {
9683   typedef LogicalNotOptions TableType;
9684 };
9685 
9686 struct LogicalNotOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9687   typedef LogicalNotOptionsT NativeTableType;
9688   typedef LogicalNotOptionsBuilder Builder;
9689   bool Verify(flatbuffers::Verifier &verifier) const {
9690     return VerifyTableStart(verifier) &&
9691            verifier.EndTable();
9692   }
9693   LogicalNotOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9694   void UnPackTo(LogicalNotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9695   static flatbuffers::Offset<LogicalNotOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9696 };
9697 
9698 struct LogicalNotOptionsBuilder {
9699   typedef LogicalNotOptions Table;
9700   flatbuffers::FlatBufferBuilder &fbb_;
9701   flatbuffers::uoffset_t start_;
9702   explicit LogicalNotOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9703         : fbb_(_fbb) {
9704     start_ = fbb_.StartTable();
9705   }
9706   flatbuffers::Offset<LogicalNotOptions> Finish() {
9707     const auto end = fbb_.EndTable(start_);
9708     auto o = flatbuffers::Offset<LogicalNotOptions>(end);
9709     return o;
9710   }
9711 };
9712 
9713 inline flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(
9714     flatbuffers::FlatBufferBuilder &_fbb) {
9715   LogicalNotOptionsBuilder builder_(_fbb);
9716   return builder_.Finish();
9717 }
9718 
9719 flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9720 
9721 struct UnpackOptionsT : public flatbuffers::NativeTable {
9722   typedef UnpackOptions TableType;
9723   int32_t num = 0;
9724   int32_t axis = 0;
9725 };
9726 
9727 struct UnpackOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9728   typedef UnpackOptionsT NativeTableType;
9729   typedef UnpackOptionsBuilder Builder;
9730   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
9731     VT_NUM = 4,
9732     VT_AXIS = 6
9733   };
9734   int32_t num() const {
9735     return GetField<int32_t>(VT_NUM, 0);
9736   }
9737   bool mutate_num(int32_t _num = 0) {
9738     return SetField<int32_t>(VT_NUM, _num, 0);
9739   }
9740   int32_t axis() const {
9741     return GetField<int32_t>(VT_AXIS, 0);
9742   }
9743   bool mutate_axis(int32_t _axis = 0) {
9744     return SetField<int32_t>(VT_AXIS, _axis, 0);
9745   }
9746   bool Verify(flatbuffers::Verifier &verifier) const {
9747     return VerifyTableStart(verifier) &&
9748            VerifyField<int32_t>(verifier, VT_NUM, 4) &&
9749            VerifyField<int32_t>(verifier, VT_AXIS, 4) &&
9750            verifier.EndTable();
9751   }
9752   UnpackOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9753   void UnPackTo(UnpackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9754   static flatbuffers::Offset<UnpackOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9755 };
9756 
9757 struct UnpackOptionsBuilder {
9758   typedef UnpackOptions Table;
9759   flatbuffers::FlatBufferBuilder &fbb_;
9760   flatbuffers::uoffset_t start_;
9761   void add_num(int32_t num) {
9762     fbb_.AddElement<int32_t>(UnpackOptions::VT_NUM, num, 0);
9763   }
9764   void add_axis(int32_t axis) {
9765     fbb_.AddElement<int32_t>(UnpackOptions::VT_AXIS, axis, 0);
9766   }
9767   explicit UnpackOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9768         : fbb_(_fbb) {
9769     start_ = fbb_.StartTable();
9770   }
9771   flatbuffers::Offset<UnpackOptions> Finish() {
9772     const auto end = fbb_.EndTable(start_);
9773     auto o = flatbuffers::Offset<UnpackOptions>(end);
9774     return o;
9775   }
9776 };
9777 
9778 inline flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(
9779     flatbuffers::FlatBufferBuilder &_fbb,
9780     int32_t num = 0,
9781     int32_t axis = 0) {
9782   UnpackOptionsBuilder builder_(_fbb);
9783   builder_.add_axis(axis);
9784   builder_.add_num(num);
9785   return builder_.Finish();
9786 }
9787 
9788 flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9789 
9790 struct FloorDivOptionsT : public flatbuffers::NativeTable {
9791   typedef FloorDivOptions TableType;
9792 };
9793 
9794 struct FloorDivOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9795   typedef FloorDivOptionsT NativeTableType;
9796   typedef FloorDivOptionsBuilder Builder;
9797   bool Verify(flatbuffers::Verifier &verifier) const {
9798     return VerifyTableStart(verifier) &&
9799            verifier.EndTable();
9800   }
9801   FloorDivOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9802   void UnPackTo(FloorDivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9803   static flatbuffers::Offset<FloorDivOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9804 };
9805 
9806 struct FloorDivOptionsBuilder {
9807   typedef FloorDivOptions Table;
9808   flatbuffers::FlatBufferBuilder &fbb_;
9809   flatbuffers::uoffset_t start_;
9810   explicit FloorDivOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9811         : fbb_(_fbb) {
9812     start_ = fbb_.StartTable();
9813   }
9814   flatbuffers::Offset<FloorDivOptions> Finish() {
9815     const auto end = fbb_.EndTable(start_);
9816     auto o = flatbuffers::Offset<FloorDivOptions>(end);
9817     return o;
9818   }
9819 };
9820 
9821 inline flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(
9822     flatbuffers::FlatBufferBuilder &_fbb) {
9823   FloorDivOptionsBuilder builder_(_fbb);
9824   return builder_.Finish();
9825 }
9826 
9827 flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9828 
9829 struct SquareOptionsT : public flatbuffers::NativeTable {
9830   typedef SquareOptions TableType;
9831 };
9832 
9833 struct SquareOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9834   typedef SquareOptionsT NativeTableType;
9835   typedef SquareOptionsBuilder Builder;
9836   bool Verify(flatbuffers::Verifier &verifier) const {
9837     return VerifyTableStart(verifier) &&
9838            verifier.EndTable();
9839   }
9840   SquareOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9841   void UnPackTo(SquareOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9842   static flatbuffers::Offset<SquareOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9843 };
9844 
9845 struct SquareOptionsBuilder {
9846   typedef SquareOptions Table;
9847   flatbuffers::FlatBufferBuilder &fbb_;
9848   flatbuffers::uoffset_t start_;
9849   explicit SquareOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9850         : fbb_(_fbb) {
9851     start_ = fbb_.StartTable();
9852   }
9853   flatbuffers::Offset<SquareOptions> Finish() {
9854     const auto end = fbb_.EndTable(start_);
9855     auto o = flatbuffers::Offset<SquareOptions>(end);
9856     return o;
9857   }
9858 };
9859 
9860 inline flatbuffers::Offset<SquareOptions> CreateSquareOptions(
9861     flatbuffers::FlatBufferBuilder &_fbb) {
9862   SquareOptionsBuilder builder_(_fbb);
9863   return builder_.Finish();
9864 }
9865 
9866 flatbuffers::Offset<SquareOptions> CreateSquareOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9867 
9868 struct ZerosLikeOptionsT : public flatbuffers::NativeTable {
9869   typedef ZerosLikeOptions TableType;
9870 };
9871 
9872 struct ZerosLikeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9873   typedef ZerosLikeOptionsT NativeTableType;
9874   typedef ZerosLikeOptionsBuilder Builder;
9875   bool Verify(flatbuffers::Verifier &verifier) const {
9876     return VerifyTableStart(verifier) &&
9877            verifier.EndTable();
9878   }
9879   ZerosLikeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9880   void UnPackTo(ZerosLikeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9881   static flatbuffers::Offset<ZerosLikeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9882 };
9883 
9884 struct ZerosLikeOptionsBuilder {
9885   typedef ZerosLikeOptions Table;
9886   flatbuffers::FlatBufferBuilder &fbb_;
9887   flatbuffers::uoffset_t start_;
9888   explicit ZerosLikeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9889         : fbb_(_fbb) {
9890     start_ = fbb_.StartTable();
9891   }
9892   flatbuffers::Offset<ZerosLikeOptions> Finish() {
9893     const auto end = fbb_.EndTable(start_);
9894     auto o = flatbuffers::Offset<ZerosLikeOptions>(end);
9895     return o;
9896   }
9897 };
9898 
9899 inline flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(
9900     flatbuffers::FlatBufferBuilder &_fbb) {
9901   ZerosLikeOptionsBuilder builder_(_fbb);
9902   return builder_.Finish();
9903 }
9904 
9905 flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9906 
9907 struct FillOptionsT : public flatbuffers::NativeTable {
9908   typedef FillOptions TableType;
9909 };
9910 
9911 struct FillOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9912   typedef FillOptionsT NativeTableType;
9913   typedef FillOptionsBuilder Builder;
9914   bool Verify(flatbuffers::Verifier &verifier) const {
9915     return VerifyTableStart(verifier) &&
9916            verifier.EndTable();
9917   }
9918   FillOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9919   void UnPackTo(FillOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9920   static flatbuffers::Offset<FillOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9921 };
9922 
9923 struct FillOptionsBuilder {
9924   typedef FillOptions Table;
9925   flatbuffers::FlatBufferBuilder &fbb_;
9926   flatbuffers::uoffset_t start_;
9927   explicit FillOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9928         : fbb_(_fbb) {
9929     start_ = fbb_.StartTable();
9930   }
9931   flatbuffers::Offset<FillOptions> Finish() {
9932     const auto end = fbb_.EndTable(start_);
9933     auto o = flatbuffers::Offset<FillOptions>(end);
9934     return o;
9935   }
9936 };
9937 
9938 inline flatbuffers::Offset<FillOptions> CreateFillOptions(
9939     flatbuffers::FlatBufferBuilder &_fbb) {
9940   FillOptionsBuilder builder_(_fbb);
9941   return builder_.Finish();
9942 }
9943 
9944 flatbuffers::Offset<FillOptions> CreateFillOptions(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9945 
9946 struct FloorModOptionsT : public flatbuffers::NativeTable {
9947   typedef FloorModOptions TableType;
9948 };
9949 
9950 struct FloorModOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9951   typedef FloorModOptionsT NativeTableType;
9952   typedef FloorModOptionsBuilder Builder;
9953   bool Verify(flatbuffers::Verifier &verifier) const {
9954     return VerifyTableStart(verifier) &&
9955            verifier.EndTable();
9956   }
9957   FloorModOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9958   void UnPackTo(FloorModOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9959   static flatbuffers::Offset<FloorModOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9960 };
9961 
9962 struct FloorModOptionsBuilder {
9963   typedef FloorModOptions Table;
9964   flatbuffers::FlatBufferBuilder &fbb_;
9965   flatbuffers::uoffset_t start_;
9966   explicit FloorModOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
9967         : fbb_(_fbb) {
9968     start_ = fbb_.StartTable();
9969   }
9970   flatbuffers::Offset<FloorModOptions> Finish() {
9971     const auto end = fbb_.EndTable(start_);
9972     auto o = flatbuffers::Offset<FloorModOptions>(end);
9973     return o;
9974   }
9975 };
9976 
9977 inline flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(
9978     flatbuffers::FlatBufferBuilder &_fbb) {
9979   FloorModOptionsBuilder builder_(_fbb);
9980   return builder_.Finish();
9981 }
9982 
9983 flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9984 
9985 struct RangeOptionsT : public flatbuffers::NativeTable {
9986   typedef RangeOptions TableType;
9987 };
9988 
9989 struct RangeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
9990   typedef RangeOptionsT NativeTableType;
9991   typedef RangeOptionsBuilder Builder;
9992   bool Verify(flatbuffers::Verifier &verifier) const {
9993     return VerifyTableStart(verifier) &&
9994            verifier.EndTable();
9995   }
9996   RangeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9997   void UnPackTo(RangeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
9998   static flatbuffers::Offset<RangeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
9999 };
10000 
10001 struct RangeOptionsBuilder {
10002   typedef RangeOptions Table;
10003   flatbuffers::FlatBufferBuilder &fbb_;
10004   flatbuffers::uoffset_t start_;
10005   explicit RangeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10006         : fbb_(_fbb) {
10007     start_ = fbb_.StartTable();
10008   }
10009   flatbuffers::Offset<RangeOptions> Finish() {
10010     const auto end = fbb_.EndTable(start_);
10011     auto o = flatbuffers::Offset<RangeOptions>(end);
10012     return o;
10013   }
10014 };
10015 
10016 inline flatbuffers::Offset<RangeOptions> CreateRangeOptions(
10017     flatbuffers::FlatBufferBuilder &_fbb) {
10018   RangeOptionsBuilder builder_(_fbb);
10019   return builder_.Finish();
10020 }
10021 
10022 flatbuffers::Offset<RangeOptions> CreateRangeOptions(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10023 
10024 struct LeakyReluOptionsT : public flatbuffers::NativeTable {
10025   typedef LeakyReluOptions TableType;
10026   float alpha = 0.0f;
10027 };
10028 
10029 struct LeakyReluOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10030   typedef LeakyReluOptionsT NativeTableType;
10031   typedef LeakyReluOptionsBuilder Builder;
10032   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10033     VT_ALPHA = 4
10034   };
10035   float alpha() const {
10036     return GetField<float>(VT_ALPHA, 0.0f);
10037   }
10038   bool mutate_alpha(float _alpha = 0.0f) {
10039     return SetField<float>(VT_ALPHA, _alpha, 0.0f);
10040   }
10041   bool Verify(flatbuffers::Verifier &verifier) const {
10042     return VerifyTableStart(verifier) &&
10043            VerifyField<float>(verifier, VT_ALPHA, 4) &&
10044            verifier.EndTable();
10045   }
10046   LeakyReluOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10047   void UnPackTo(LeakyReluOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10048   static flatbuffers::Offset<LeakyReluOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10049 };
10050 
10051 struct LeakyReluOptionsBuilder {
10052   typedef LeakyReluOptions Table;
10053   flatbuffers::FlatBufferBuilder &fbb_;
10054   flatbuffers::uoffset_t start_;
10055   void add_alpha(float alpha) {
10056     fbb_.AddElement<float>(LeakyReluOptions::VT_ALPHA, alpha, 0.0f);
10057   }
10058   explicit LeakyReluOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10059         : fbb_(_fbb) {
10060     start_ = fbb_.StartTable();
10061   }
10062   flatbuffers::Offset<LeakyReluOptions> Finish() {
10063     const auto end = fbb_.EndTable(start_);
10064     auto o = flatbuffers::Offset<LeakyReluOptions>(end);
10065     return o;
10066   }
10067 };
10068 
10069 inline flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(
10070     flatbuffers::FlatBufferBuilder &_fbb,
10071     float alpha = 0.0f) {
10072   LeakyReluOptionsBuilder builder_(_fbb);
10073   builder_.add_alpha(alpha);
10074   return builder_.Finish();
10075 }
10076 
10077 flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10078 
10079 struct SquaredDifferenceOptionsT : public flatbuffers::NativeTable {
10080   typedef SquaredDifferenceOptions TableType;
10081 };
10082 
10083 struct SquaredDifferenceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10084   typedef SquaredDifferenceOptionsT NativeTableType;
10085   typedef SquaredDifferenceOptionsBuilder Builder;
10086   bool Verify(flatbuffers::Verifier &verifier) const {
10087     return VerifyTableStart(verifier) &&
10088            verifier.EndTable();
10089   }
10090   SquaredDifferenceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10091   void UnPackTo(SquaredDifferenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10092   static flatbuffers::Offset<SquaredDifferenceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10093 };
10094 
10095 struct SquaredDifferenceOptionsBuilder {
10096   typedef SquaredDifferenceOptions Table;
10097   flatbuffers::FlatBufferBuilder &fbb_;
10098   flatbuffers::uoffset_t start_;
10099   explicit SquaredDifferenceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10100         : fbb_(_fbb) {
10101     start_ = fbb_.StartTable();
10102   }
10103   flatbuffers::Offset<SquaredDifferenceOptions> Finish() {
10104     const auto end = fbb_.EndTable(start_);
10105     auto o = flatbuffers::Offset<SquaredDifferenceOptions>(end);
10106     return o;
10107   }
10108 };
10109 
10110 inline flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(
10111     flatbuffers::FlatBufferBuilder &_fbb) {
10112   SquaredDifferenceOptionsBuilder builder_(_fbb);
10113   return builder_.Finish();
10114 }
10115 
10116 flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10117 
10118 struct MirrorPadOptionsT : public flatbuffers::NativeTable {
10119   typedef MirrorPadOptions TableType;
10120   tflite::MirrorPadMode mode = tflite::MirrorPadMode_REFLECT;
10121 };
10122 
10123 struct MirrorPadOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10124   typedef MirrorPadOptionsT NativeTableType;
10125   typedef MirrorPadOptionsBuilder Builder;
10126   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10127     VT_MODE = 4
10128   };
10129   tflite::MirrorPadMode mode() const {
10130     return static_cast<tflite::MirrorPadMode>(GetField<int8_t>(VT_MODE, 0));
10131   }
10132   bool mutate_mode(tflite::MirrorPadMode _mode = static_cast<tflite::MirrorPadMode>(0)) {
10133     return SetField<int8_t>(VT_MODE, static_cast<int8_t>(_mode), 0);
10134   }
10135   bool Verify(flatbuffers::Verifier &verifier) const {
10136     return VerifyTableStart(verifier) &&
10137            VerifyField<int8_t>(verifier, VT_MODE, 1) &&
10138            verifier.EndTable();
10139   }
10140   MirrorPadOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10141   void UnPackTo(MirrorPadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10142   static flatbuffers::Offset<MirrorPadOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10143 };
10144 
10145 struct MirrorPadOptionsBuilder {
10146   typedef MirrorPadOptions Table;
10147   flatbuffers::FlatBufferBuilder &fbb_;
10148   flatbuffers::uoffset_t start_;
10149   void add_mode(tflite::MirrorPadMode mode) {
10150     fbb_.AddElement<int8_t>(MirrorPadOptions::VT_MODE, static_cast<int8_t>(mode), 0);
10151   }
10152   explicit MirrorPadOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10153         : fbb_(_fbb) {
10154     start_ = fbb_.StartTable();
10155   }
10156   flatbuffers::Offset<MirrorPadOptions> Finish() {
10157     const auto end = fbb_.EndTable(start_);
10158     auto o = flatbuffers::Offset<MirrorPadOptions>(end);
10159     return o;
10160   }
10161 };
10162 
10163 inline flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(
10164     flatbuffers::FlatBufferBuilder &_fbb,
10165     tflite::MirrorPadMode mode = tflite::MirrorPadMode_REFLECT) {
10166   MirrorPadOptionsBuilder builder_(_fbb);
10167   builder_.add_mode(mode);
10168   return builder_.Finish();
10169 }
10170 
10171 flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10172 
10173 struct UniqueOptionsT : public flatbuffers::NativeTable {
10174   typedef UniqueOptions TableType;
10175   tflite::TensorType idx_out_type = tflite::TensorType_INT32;
10176 };
10177 
10178 struct UniqueOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10179   typedef UniqueOptionsT NativeTableType;
10180   typedef UniqueOptionsBuilder Builder;
10181   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10182     VT_IDX_OUT_TYPE = 4
10183   };
10184   tflite::TensorType idx_out_type() const {
10185     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_IDX_OUT_TYPE, 2));
10186   }
10187   bool mutate_idx_out_type(tflite::TensorType _idx_out_type = static_cast<tflite::TensorType>(2)) {
10188     return SetField<int8_t>(VT_IDX_OUT_TYPE, static_cast<int8_t>(_idx_out_type), 2);
10189   }
10190   bool Verify(flatbuffers::Verifier &verifier) const {
10191     return VerifyTableStart(verifier) &&
10192            VerifyField<int8_t>(verifier, VT_IDX_OUT_TYPE, 1) &&
10193            verifier.EndTable();
10194   }
10195   UniqueOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10196   void UnPackTo(UniqueOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10197   static flatbuffers::Offset<UniqueOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10198 };
10199 
10200 struct UniqueOptionsBuilder {
10201   typedef UniqueOptions Table;
10202   flatbuffers::FlatBufferBuilder &fbb_;
10203   flatbuffers::uoffset_t start_;
10204   void add_idx_out_type(tflite::TensorType idx_out_type) {
10205     fbb_.AddElement<int8_t>(UniqueOptions::VT_IDX_OUT_TYPE, static_cast<int8_t>(idx_out_type), 2);
10206   }
10207   explicit UniqueOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10208         : fbb_(_fbb) {
10209     start_ = fbb_.StartTable();
10210   }
10211   flatbuffers::Offset<UniqueOptions> Finish() {
10212     const auto end = fbb_.EndTable(start_);
10213     auto o = flatbuffers::Offset<UniqueOptions>(end);
10214     return o;
10215   }
10216 };
10217 
10218 inline flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(
10219     flatbuffers::FlatBufferBuilder &_fbb,
10220     tflite::TensorType idx_out_type = tflite::TensorType_INT32) {
10221   UniqueOptionsBuilder builder_(_fbb);
10222   builder_.add_idx_out_type(idx_out_type);
10223   return builder_.Finish();
10224 }
10225 
10226 flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10227 
10228 struct ReverseV2OptionsT : public flatbuffers::NativeTable {
10229   typedef ReverseV2Options TableType;
10230 };
10231 
10232 struct ReverseV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10233   typedef ReverseV2OptionsT NativeTableType;
10234   typedef ReverseV2OptionsBuilder Builder;
10235   bool Verify(flatbuffers::Verifier &verifier) const {
10236     return VerifyTableStart(verifier) &&
10237            verifier.EndTable();
10238   }
10239   ReverseV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10240   void UnPackTo(ReverseV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10241   static flatbuffers::Offset<ReverseV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10242 };
10243 
10244 struct ReverseV2OptionsBuilder {
10245   typedef ReverseV2Options Table;
10246   flatbuffers::FlatBufferBuilder &fbb_;
10247   flatbuffers::uoffset_t start_;
10248   explicit ReverseV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10249         : fbb_(_fbb) {
10250     start_ = fbb_.StartTable();
10251   }
10252   flatbuffers::Offset<ReverseV2Options> Finish() {
10253     const auto end = fbb_.EndTable(start_);
10254     auto o = flatbuffers::Offset<ReverseV2Options>(end);
10255     return o;
10256   }
10257 };
10258 
10259 inline flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(
10260     flatbuffers::FlatBufferBuilder &_fbb) {
10261   ReverseV2OptionsBuilder builder_(_fbb);
10262   return builder_.Finish();
10263 }
10264 
10265 flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10266 
10267 struct AddNOptionsT : public flatbuffers::NativeTable {
10268   typedef AddNOptions TableType;
10269 };
10270 
10271 struct AddNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10272   typedef AddNOptionsT NativeTableType;
10273   typedef AddNOptionsBuilder Builder;
10274   bool Verify(flatbuffers::Verifier &verifier) const {
10275     return VerifyTableStart(verifier) &&
10276            verifier.EndTable();
10277   }
10278   AddNOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10279   void UnPackTo(AddNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10280   static flatbuffers::Offset<AddNOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10281 };
10282 
10283 struct AddNOptionsBuilder {
10284   typedef AddNOptions Table;
10285   flatbuffers::FlatBufferBuilder &fbb_;
10286   flatbuffers::uoffset_t start_;
10287   explicit AddNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10288         : fbb_(_fbb) {
10289     start_ = fbb_.StartTable();
10290   }
10291   flatbuffers::Offset<AddNOptions> Finish() {
10292     const auto end = fbb_.EndTable(start_);
10293     auto o = flatbuffers::Offset<AddNOptions>(end);
10294     return o;
10295   }
10296 };
10297 
10298 inline flatbuffers::Offset<AddNOptions> CreateAddNOptions(
10299     flatbuffers::FlatBufferBuilder &_fbb) {
10300   AddNOptionsBuilder builder_(_fbb);
10301   return builder_.Finish();
10302 }
10303 
10304 flatbuffers::Offset<AddNOptions> CreateAddNOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10305 
10306 struct GatherNdOptionsT : public flatbuffers::NativeTable {
10307   typedef GatherNdOptions TableType;
10308 };
10309 
10310 struct GatherNdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10311   typedef GatherNdOptionsT NativeTableType;
10312   typedef GatherNdOptionsBuilder Builder;
10313   bool Verify(flatbuffers::Verifier &verifier) const {
10314     return VerifyTableStart(verifier) &&
10315            verifier.EndTable();
10316   }
10317   GatherNdOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10318   void UnPackTo(GatherNdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10319   static flatbuffers::Offset<GatherNdOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10320 };
10321 
10322 struct GatherNdOptionsBuilder {
10323   typedef GatherNdOptions Table;
10324   flatbuffers::FlatBufferBuilder &fbb_;
10325   flatbuffers::uoffset_t start_;
10326   explicit GatherNdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10327         : fbb_(_fbb) {
10328     start_ = fbb_.StartTable();
10329   }
10330   flatbuffers::Offset<GatherNdOptions> Finish() {
10331     const auto end = fbb_.EndTable(start_);
10332     auto o = flatbuffers::Offset<GatherNdOptions>(end);
10333     return o;
10334   }
10335 };
10336 
10337 inline flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(
10338     flatbuffers::FlatBufferBuilder &_fbb) {
10339   GatherNdOptionsBuilder builder_(_fbb);
10340   return builder_.Finish();
10341 }
10342 
10343 flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10344 
10345 struct WhereOptionsT : public flatbuffers::NativeTable {
10346   typedef WhereOptions TableType;
10347 };
10348 
10349 struct WhereOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10350   typedef WhereOptionsT NativeTableType;
10351   typedef WhereOptionsBuilder Builder;
10352   bool Verify(flatbuffers::Verifier &verifier) const {
10353     return VerifyTableStart(verifier) &&
10354            verifier.EndTable();
10355   }
10356   WhereOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10357   void UnPackTo(WhereOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10358   static flatbuffers::Offset<WhereOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10359 };
10360 
10361 struct WhereOptionsBuilder {
10362   typedef WhereOptions Table;
10363   flatbuffers::FlatBufferBuilder &fbb_;
10364   flatbuffers::uoffset_t start_;
10365   explicit WhereOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10366         : fbb_(_fbb) {
10367     start_ = fbb_.StartTable();
10368   }
10369   flatbuffers::Offset<WhereOptions> Finish() {
10370     const auto end = fbb_.EndTable(start_);
10371     auto o = flatbuffers::Offset<WhereOptions>(end);
10372     return o;
10373   }
10374 };
10375 
10376 inline flatbuffers::Offset<WhereOptions> CreateWhereOptions(
10377     flatbuffers::FlatBufferBuilder &_fbb) {
10378   WhereOptionsBuilder builder_(_fbb);
10379   return builder_.Finish();
10380 }
10381 
10382 flatbuffers::Offset<WhereOptions> CreateWhereOptions(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10383 
10384 struct ReverseSequenceOptionsT : public flatbuffers::NativeTable {
10385   typedef ReverseSequenceOptions TableType;
10386   int32_t seq_dim = 0;
10387   int32_t batch_dim = 0;
10388 };
10389 
10390 struct ReverseSequenceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10391   typedef ReverseSequenceOptionsT NativeTableType;
10392   typedef ReverseSequenceOptionsBuilder Builder;
10393   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10394     VT_SEQ_DIM = 4,
10395     VT_BATCH_DIM = 6
10396   };
10397   int32_t seq_dim() const {
10398     return GetField<int32_t>(VT_SEQ_DIM, 0);
10399   }
10400   bool mutate_seq_dim(int32_t _seq_dim = 0) {
10401     return SetField<int32_t>(VT_SEQ_DIM, _seq_dim, 0);
10402   }
10403   int32_t batch_dim() const {
10404     return GetField<int32_t>(VT_BATCH_DIM, 0);
10405   }
10406   bool mutate_batch_dim(int32_t _batch_dim = 0) {
10407     return SetField<int32_t>(VT_BATCH_DIM, _batch_dim, 0);
10408   }
10409   bool Verify(flatbuffers::Verifier &verifier) const {
10410     return VerifyTableStart(verifier) &&
10411            VerifyField<int32_t>(verifier, VT_SEQ_DIM, 4) &&
10412            VerifyField<int32_t>(verifier, VT_BATCH_DIM, 4) &&
10413            verifier.EndTable();
10414   }
10415   ReverseSequenceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10416   void UnPackTo(ReverseSequenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10417   static flatbuffers::Offset<ReverseSequenceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10418 };
10419 
10420 struct ReverseSequenceOptionsBuilder {
10421   typedef ReverseSequenceOptions Table;
10422   flatbuffers::FlatBufferBuilder &fbb_;
10423   flatbuffers::uoffset_t start_;
10424   void add_seq_dim(int32_t seq_dim) {
10425     fbb_.AddElement<int32_t>(ReverseSequenceOptions::VT_SEQ_DIM, seq_dim, 0);
10426   }
10427   void add_batch_dim(int32_t batch_dim) {
10428     fbb_.AddElement<int32_t>(ReverseSequenceOptions::VT_BATCH_DIM, batch_dim, 0);
10429   }
10430   explicit ReverseSequenceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10431         : fbb_(_fbb) {
10432     start_ = fbb_.StartTable();
10433   }
10434   flatbuffers::Offset<ReverseSequenceOptions> Finish() {
10435     const auto end = fbb_.EndTable(start_);
10436     auto o = flatbuffers::Offset<ReverseSequenceOptions>(end);
10437     return o;
10438   }
10439 };
10440 
10441 inline flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(
10442     flatbuffers::FlatBufferBuilder &_fbb,
10443     int32_t seq_dim = 0,
10444     int32_t batch_dim = 0) {
10445   ReverseSequenceOptionsBuilder builder_(_fbb);
10446   builder_.add_batch_dim(batch_dim);
10447   builder_.add_seq_dim(seq_dim);
10448   return builder_.Finish();
10449 }
10450 
10451 flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10452 
10453 struct MatrixDiagOptionsT : public flatbuffers::NativeTable {
10454   typedef MatrixDiagOptions TableType;
10455 };
10456 
10457 struct MatrixDiagOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10458   typedef MatrixDiagOptionsT NativeTableType;
10459   typedef MatrixDiagOptionsBuilder Builder;
10460   bool Verify(flatbuffers::Verifier &verifier) const {
10461     return VerifyTableStart(verifier) &&
10462            verifier.EndTable();
10463   }
10464   MatrixDiagOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10465   void UnPackTo(MatrixDiagOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10466   static flatbuffers::Offset<MatrixDiagOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MatrixDiagOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10467 };
10468 
10469 struct MatrixDiagOptionsBuilder {
10470   typedef MatrixDiagOptions Table;
10471   flatbuffers::FlatBufferBuilder &fbb_;
10472   flatbuffers::uoffset_t start_;
10473   explicit MatrixDiagOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10474         : fbb_(_fbb) {
10475     start_ = fbb_.StartTable();
10476   }
10477   flatbuffers::Offset<MatrixDiagOptions> Finish() {
10478     const auto end = fbb_.EndTable(start_);
10479     auto o = flatbuffers::Offset<MatrixDiagOptions>(end);
10480     return o;
10481   }
10482 };
10483 
10484 inline flatbuffers::Offset<MatrixDiagOptions> CreateMatrixDiagOptions(
10485     flatbuffers::FlatBufferBuilder &_fbb) {
10486   MatrixDiagOptionsBuilder builder_(_fbb);
10487   return builder_.Finish();
10488 }
10489 
10490 flatbuffers::Offset<MatrixDiagOptions> CreateMatrixDiagOptions(flatbuffers::FlatBufferBuilder &_fbb, const MatrixDiagOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10491 
10492 struct QuantizeOptionsT : public flatbuffers::NativeTable {
10493   typedef QuantizeOptions TableType;
10494 };
10495 
10496 struct QuantizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10497   typedef QuantizeOptionsT NativeTableType;
10498   typedef QuantizeOptionsBuilder Builder;
10499   bool Verify(flatbuffers::Verifier &verifier) const {
10500     return VerifyTableStart(verifier) &&
10501            verifier.EndTable();
10502   }
10503   QuantizeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10504   void UnPackTo(QuantizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10505   static flatbuffers::Offset<QuantizeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuantizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10506 };
10507 
10508 struct QuantizeOptionsBuilder {
10509   typedef QuantizeOptions Table;
10510   flatbuffers::FlatBufferBuilder &fbb_;
10511   flatbuffers::uoffset_t start_;
10512   explicit QuantizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10513         : fbb_(_fbb) {
10514     start_ = fbb_.StartTable();
10515   }
10516   flatbuffers::Offset<QuantizeOptions> Finish() {
10517     const auto end = fbb_.EndTable(start_);
10518     auto o = flatbuffers::Offset<QuantizeOptions>(end);
10519     return o;
10520   }
10521 };
10522 
10523 inline flatbuffers::Offset<QuantizeOptions> CreateQuantizeOptions(
10524     flatbuffers::FlatBufferBuilder &_fbb) {
10525   QuantizeOptionsBuilder builder_(_fbb);
10526   return builder_.Finish();
10527 }
10528 
10529 flatbuffers::Offset<QuantizeOptions> CreateQuantizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const QuantizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10530 
10531 struct MatrixSetDiagOptionsT : public flatbuffers::NativeTable {
10532   typedef MatrixSetDiagOptions TableType;
10533 };
10534 
10535 struct MatrixSetDiagOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10536   typedef MatrixSetDiagOptionsT NativeTableType;
10537   typedef MatrixSetDiagOptionsBuilder Builder;
10538   bool Verify(flatbuffers::Verifier &verifier) const {
10539     return VerifyTableStart(verifier) &&
10540            verifier.EndTable();
10541   }
10542   MatrixSetDiagOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10543   void UnPackTo(MatrixSetDiagOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10544   static flatbuffers::Offset<MatrixSetDiagOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MatrixSetDiagOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10545 };
10546 
10547 struct MatrixSetDiagOptionsBuilder {
10548   typedef MatrixSetDiagOptions Table;
10549   flatbuffers::FlatBufferBuilder &fbb_;
10550   flatbuffers::uoffset_t start_;
10551   explicit MatrixSetDiagOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10552         : fbb_(_fbb) {
10553     start_ = fbb_.StartTable();
10554   }
10555   flatbuffers::Offset<MatrixSetDiagOptions> Finish() {
10556     const auto end = fbb_.EndTable(start_);
10557     auto o = flatbuffers::Offset<MatrixSetDiagOptions>(end);
10558     return o;
10559   }
10560 };
10561 
10562 inline flatbuffers::Offset<MatrixSetDiagOptions> CreateMatrixSetDiagOptions(
10563     flatbuffers::FlatBufferBuilder &_fbb) {
10564   MatrixSetDiagOptionsBuilder builder_(_fbb);
10565   return builder_.Finish();
10566 }
10567 
10568 flatbuffers::Offset<MatrixSetDiagOptions> CreateMatrixSetDiagOptions(flatbuffers::FlatBufferBuilder &_fbb, const MatrixSetDiagOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10569 
10570 struct IfOptionsT : public flatbuffers::NativeTable {
10571   typedef IfOptions TableType;
10572   int32_t then_subgraph_index = 0;
10573   int32_t else_subgraph_index = 0;
10574 };
10575 
10576 struct IfOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10577   typedef IfOptionsT NativeTableType;
10578   typedef IfOptionsBuilder Builder;
10579   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10580     VT_THEN_SUBGRAPH_INDEX = 4,
10581     VT_ELSE_SUBGRAPH_INDEX = 6
10582   };
10583   int32_t then_subgraph_index() const {
10584     return GetField<int32_t>(VT_THEN_SUBGRAPH_INDEX, 0);
10585   }
10586   bool mutate_then_subgraph_index(int32_t _then_subgraph_index = 0) {
10587     return SetField<int32_t>(VT_THEN_SUBGRAPH_INDEX, _then_subgraph_index, 0);
10588   }
10589   int32_t else_subgraph_index() const {
10590     return GetField<int32_t>(VT_ELSE_SUBGRAPH_INDEX, 0);
10591   }
10592   bool mutate_else_subgraph_index(int32_t _else_subgraph_index = 0) {
10593     return SetField<int32_t>(VT_ELSE_SUBGRAPH_INDEX, _else_subgraph_index, 0);
10594   }
10595   bool Verify(flatbuffers::Verifier &verifier) const {
10596     return VerifyTableStart(verifier) &&
10597            VerifyField<int32_t>(verifier, VT_THEN_SUBGRAPH_INDEX, 4) &&
10598            VerifyField<int32_t>(verifier, VT_ELSE_SUBGRAPH_INDEX, 4) &&
10599            verifier.EndTable();
10600   }
10601   IfOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10602   void UnPackTo(IfOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10603   static flatbuffers::Offset<IfOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const IfOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10604 };
10605 
10606 struct IfOptionsBuilder {
10607   typedef IfOptions Table;
10608   flatbuffers::FlatBufferBuilder &fbb_;
10609   flatbuffers::uoffset_t start_;
10610   void add_then_subgraph_index(int32_t then_subgraph_index) {
10611     fbb_.AddElement<int32_t>(IfOptions::VT_THEN_SUBGRAPH_INDEX, then_subgraph_index, 0);
10612   }
10613   void add_else_subgraph_index(int32_t else_subgraph_index) {
10614     fbb_.AddElement<int32_t>(IfOptions::VT_ELSE_SUBGRAPH_INDEX, else_subgraph_index, 0);
10615   }
10616   explicit IfOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10617         : fbb_(_fbb) {
10618     start_ = fbb_.StartTable();
10619   }
10620   flatbuffers::Offset<IfOptions> Finish() {
10621     const auto end = fbb_.EndTable(start_);
10622     auto o = flatbuffers::Offset<IfOptions>(end);
10623     return o;
10624   }
10625 };
10626 
10627 inline flatbuffers::Offset<IfOptions> CreateIfOptions(
10628     flatbuffers::FlatBufferBuilder &_fbb,
10629     int32_t then_subgraph_index = 0,
10630     int32_t else_subgraph_index = 0) {
10631   IfOptionsBuilder builder_(_fbb);
10632   builder_.add_else_subgraph_index(else_subgraph_index);
10633   builder_.add_then_subgraph_index(then_subgraph_index);
10634   return builder_.Finish();
10635 }
10636 
10637 flatbuffers::Offset<IfOptions> CreateIfOptions(flatbuffers::FlatBufferBuilder &_fbb, const IfOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10638 
10639 struct CallOnceOptionsT : public flatbuffers::NativeTable {
10640   typedef CallOnceOptions TableType;
10641   int32_t init_subgraph_index = 0;
10642 };
10643 
10644 struct CallOnceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10645   typedef CallOnceOptionsT NativeTableType;
10646   typedef CallOnceOptionsBuilder Builder;
10647   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10648     VT_INIT_SUBGRAPH_INDEX = 4
10649   };
10650   int32_t init_subgraph_index() const {
10651     return GetField<int32_t>(VT_INIT_SUBGRAPH_INDEX, 0);
10652   }
10653   bool mutate_init_subgraph_index(int32_t _init_subgraph_index = 0) {
10654     return SetField<int32_t>(VT_INIT_SUBGRAPH_INDEX, _init_subgraph_index, 0);
10655   }
10656   bool Verify(flatbuffers::Verifier &verifier) const {
10657     return VerifyTableStart(verifier) &&
10658            VerifyField<int32_t>(verifier, VT_INIT_SUBGRAPH_INDEX, 4) &&
10659            verifier.EndTable();
10660   }
10661   CallOnceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10662   void UnPackTo(CallOnceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10663   static flatbuffers::Offset<CallOnceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CallOnceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10664 };
10665 
10666 struct CallOnceOptionsBuilder {
10667   typedef CallOnceOptions Table;
10668   flatbuffers::FlatBufferBuilder &fbb_;
10669   flatbuffers::uoffset_t start_;
10670   void add_init_subgraph_index(int32_t init_subgraph_index) {
10671     fbb_.AddElement<int32_t>(CallOnceOptions::VT_INIT_SUBGRAPH_INDEX, init_subgraph_index, 0);
10672   }
10673   explicit CallOnceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10674         : fbb_(_fbb) {
10675     start_ = fbb_.StartTable();
10676   }
10677   flatbuffers::Offset<CallOnceOptions> Finish() {
10678     const auto end = fbb_.EndTable(start_);
10679     auto o = flatbuffers::Offset<CallOnceOptions>(end);
10680     return o;
10681   }
10682 };
10683 
10684 inline flatbuffers::Offset<CallOnceOptions> CreateCallOnceOptions(
10685     flatbuffers::FlatBufferBuilder &_fbb,
10686     int32_t init_subgraph_index = 0) {
10687   CallOnceOptionsBuilder builder_(_fbb);
10688   builder_.add_init_subgraph_index(init_subgraph_index);
10689   return builder_.Finish();
10690 }
10691 
10692 flatbuffers::Offset<CallOnceOptions> CreateCallOnceOptions(flatbuffers::FlatBufferBuilder &_fbb, const CallOnceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10693 
10694 struct WhileOptionsT : public flatbuffers::NativeTable {
10695   typedef WhileOptions TableType;
10696   int32_t cond_subgraph_index = 0;
10697   int32_t body_subgraph_index = 0;
10698 };
10699 
10700 struct WhileOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10701   typedef WhileOptionsT NativeTableType;
10702   typedef WhileOptionsBuilder Builder;
10703   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
10704     VT_COND_SUBGRAPH_INDEX = 4,
10705     VT_BODY_SUBGRAPH_INDEX = 6
10706   };
10707   int32_t cond_subgraph_index() const {
10708     return GetField<int32_t>(VT_COND_SUBGRAPH_INDEX, 0);
10709   }
10710   bool mutate_cond_subgraph_index(int32_t _cond_subgraph_index = 0) {
10711     return SetField<int32_t>(VT_COND_SUBGRAPH_INDEX, _cond_subgraph_index, 0);
10712   }
10713   int32_t body_subgraph_index() const {
10714     return GetField<int32_t>(VT_BODY_SUBGRAPH_INDEX, 0);
10715   }
10716   bool mutate_body_subgraph_index(int32_t _body_subgraph_index = 0) {
10717     return SetField<int32_t>(VT_BODY_SUBGRAPH_INDEX, _body_subgraph_index, 0);
10718   }
10719   bool Verify(flatbuffers::Verifier &verifier) const {
10720     return VerifyTableStart(verifier) &&
10721            VerifyField<int32_t>(verifier, VT_COND_SUBGRAPH_INDEX, 4) &&
10722            VerifyField<int32_t>(verifier, VT_BODY_SUBGRAPH_INDEX, 4) &&
10723            verifier.EndTable();
10724   }
10725   WhileOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10726   void UnPackTo(WhileOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10727   static flatbuffers::Offset<WhileOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const WhileOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10728 };
10729 
10730 struct WhileOptionsBuilder {
10731   typedef WhileOptions Table;
10732   flatbuffers::FlatBufferBuilder &fbb_;
10733   flatbuffers::uoffset_t start_;
10734   void add_cond_subgraph_index(int32_t cond_subgraph_index) {
10735     fbb_.AddElement<int32_t>(WhileOptions::VT_COND_SUBGRAPH_INDEX, cond_subgraph_index, 0);
10736   }
10737   void add_body_subgraph_index(int32_t body_subgraph_index) {
10738     fbb_.AddElement<int32_t>(WhileOptions::VT_BODY_SUBGRAPH_INDEX, body_subgraph_index, 0);
10739   }
10740   explicit WhileOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10741         : fbb_(_fbb) {
10742     start_ = fbb_.StartTable();
10743   }
10744   flatbuffers::Offset<WhileOptions> Finish() {
10745     const auto end = fbb_.EndTable(start_);
10746     auto o = flatbuffers::Offset<WhileOptions>(end);
10747     return o;
10748   }
10749 };
10750 
10751 inline flatbuffers::Offset<WhileOptions> CreateWhileOptions(
10752     flatbuffers::FlatBufferBuilder &_fbb,
10753     int32_t cond_subgraph_index = 0,
10754     int32_t body_subgraph_index = 0) {
10755   WhileOptionsBuilder builder_(_fbb);
10756   builder_.add_body_subgraph_index(body_subgraph_index);
10757   builder_.add_cond_subgraph_index(cond_subgraph_index);
10758   return builder_.Finish();
10759 }
10760 
10761 flatbuffers::Offset<WhileOptions> CreateWhileOptions(flatbuffers::FlatBufferBuilder &_fbb, const WhileOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10762 
10763 struct NonMaxSuppressionV4OptionsT : public flatbuffers::NativeTable {
10764   typedef NonMaxSuppressionV4Options TableType;
10765 };
10766 
10767 struct NonMaxSuppressionV4Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10768   typedef NonMaxSuppressionV4OptionsT NativeTableType;
10769   typedef NonMaxSuppressionV4OptionsBuilder Builder;
10770   bool Verify(flatbuffers::Verifier &verifier) const {
10771     return VerifyTableStart(verifier) &&
10772            verifier.EndTable();
10773   }
10774   NonMaxSuppressionV4OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10775   void UnPackTo(NonMaxSuppressionV4OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10776   static flatbuffers::Offset<NonMaxSuppressionV4Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV4OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10777 };
10778 
10779 struct NonMaxSuppressionV4OptionsBuilder {
10780   typedef NonMaxSuppressionV4Options Table;
10781   flatbuffers::FlatBufferBuilder &fbb_;
10782   flatbuffers::uoffset_t start_;
10783   explicit NonMaxSuppressionV4OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10784         : fbb_(_fbb) {
10785     start_ = fbb_.StartTable();
10786   }
10787   flatbuffers::Offset<NonMaxSuppressionV4Options> Finish() {
10788     const auto end = fbb_.EndTable(start_);
10789     auto o = flatbuffers::Offset<NonMaxSuppressionV4Options>(end);
10790     return o;
10791   }
10792 };
10793 
10794 inline flatbuffers::Offset<NonMaxSuppressionV4Options> CreateNonMaxSuppressionV4Options(
10795     flatbuffers::FlatBufferBuilder &_fbb) {
10796   NonMaxSuppressionV4OptionsBuilder builder_(_fbb);
10797   return builder_.Finish();
10798 }
10799 
10800 flatbuffers::Offset<NonMaxSuppressionV4Options> CreateNonMaxSuppressionV4Options(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV4OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10801 
10802 struct NonMaxSuppressionV5OptionsT : public flatbuffers::NativeTable {
10803   typedef NonMaxSuppressionV5Options TableType;
10804 };
10805 
10806 struct NonMaxSuppressionV5Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10807   typedef NonMaxSuppressionV5OptionsT NativeTableType;
10808   typedef NonMaxSuppressionV5OptionsBuilder Builder;
10809   bool Verify(flatbuffers::Verifier &verifier) const {
10810     return VerifyTableStart(verifier) &&
10811            verifier.EndTable();
10812   }
10813   NonMaxSuppressionV5OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10814   void UnPackTo(NonMaxSuppressionV5OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10815   static flatbuffers::Offset<NonMaxSuppressionV5Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV5OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10816 };
10817 
10818 struct NonMaxSuppressionV5OptionsBuilder {
10819   typedef NonMaxSuppressionV5Options Table;
10820   flatbuffers::FlatBufferBuilder &fbb_;
10821   flatbuffers::uoffset_t start_;
10822   explicit NonMaxSuppressionV5OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10823         : fbb_(_fbb) {
10824     start_ = fbb_.StartTable();
10825   }
10826   flatbuffers::Offset<NonMaxSuppressionV5Options> Finish() {
10827     const auto end = fbb_.EndTable(start_);
10828     auto o = flatbuffers::Offset<NonMaxSuppressionV5Options>(end);
10829     return o;
10830   }
10831 };
10832 
10833 inline flatbuffers::Offset<NonMaxSuppressionV5Options> CreateNonMaxSuppressionV5Options(
10834     flatbuffers::FlatBufferBuilder &_fbb) {
10835   NonMaxSuppressionV5OptionsBuilder builder_(_fbb);
10836   return builder_.Finish();
10837 }
10838 
10839 flatbuffers::Offset<NonMaxSuppressionV5Options> CreateNonMaxSuppressionV5Options(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV5OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10840 
10841 struct ScatterNdOptionsT : public flatbuffers::NativeTable {
10842   typedef ScatterNdOptions TableType;
10843 };
10844 
10845 struct ScatterNdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10846   typedef ScatterNdOptionsT NativeTableType;
10847   typedef ScatterNdOptionsBuilder Builder;
10848   bool Verify(flatbuffers::Verifier &verifier) const {
10849     return VerifyTableStart(verifier) &&
10850            verifier.EndTable();
10851   }
10852   ScatterNdOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10853   void UnPackTo(ScatterNdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10854   static flatbuffers::Offset<ScatterNdOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScatterNdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10855 };
10856 
10857 struct ScatterNdOptionsBuilder {
10858   typedef ScatterNdOptions Table;
10859   flatbuffers::FlatBufferBuilder &fbb_;
10860   flatbuffers::uoffset_t start_;
10861   explicit ScatterNdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10862         : fbb_(_fbb) {
10863     start_ = fbb_.StartTable();
10864   }
10865   flatbuffers::Offset<ScatterNdOptions> Finish() {
10866     const auto end = fbb_.EndTable(start_);
10867     auto o = flatbuffers::Offset<ScatterNdOptions>(end);
10868     return o;
10869   }
10870 };
10871 
10872 inline flatbuffers::Offset<ScatterNdOptions> CreateScatterNdOptions(
10873     flatbuffers::FlatBufferBuilder &_fbb) {
10874   ScatterNdOptionsBuilder builder_(_fbb);
10875   return builder_.Finish();
10876 }
10877 
10878 flatbuffers::Offset<ScatterNdOptions> CreateScatterNdOptions(flatbuffers::FlatBufferBuilder &_fbb, const ScatterNdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10879 
10880 struct SelectV2OptionsT : public flatbuffers::NativeTable {
10881   typedef SelectV2Options TableType;
10882 };
10883 
10884 struct SelectV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10885   typedef SelectV2OptionsT NativeTableType;
10886   typedef SelectV2OptionsBuilder Builder;
10887   bool Verify(flatbuffers::Verifier &verifier) const {
10888     return VerifyTableStart(verifier) &&
10889            verifier.EndTable();
10890   }
10891   SelectV2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10892   void UnPackTo(SelectV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10893   static flatbuffers::Offset<SelectV2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelectV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10894 };
10895 
10896 struct SelectV2OptionsBuilder {
10897   typedef SelectV2Options Table;
10898   flatbuffers::FlatBufferBuilder &fbb_;
10899   flatbuffers::uoffset_t start_;
10900   explicit SelectV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10901         : fbb_(_fbb) {
10902     start_ = fbb_.StartTable();
10903   }
10904   flatbuffers::Offset<SelectV2Options> Finish() {
10905     const auto end = fbb_.EndTable(start_);
10906     auto o = flatbuffers::Offset<SelectV2Options>(end);
10907     return o;
10908   }
10909 };
10910 
10911 inline flatbuffers::Offset<SelectV2Options> CreateSelectV2Options(
10912     flatbuffers::FlatBufferBuilder &_fbb) {
10913   SelectV2OptionsBuilder builder_(_fbb);
10914   return builder_.Finish();
10915 }
10916 
10917 flatbuffers::Offset<SelectV2Options> CreateSelectV2Options(flatbuffers::FlatBufferBuilder &_fbb, const SelectV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10918 
10919 struct DensifyOptionsT : public flatbuffers::NativeTable {
10920   typedef DensifyOptions TableType;
10921 };
10922 
10923 struct DensifyOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10924   typedef DensifyOptionsT NativeTableType;
10925   typedef DensifyOptionsBuilder Builder;
10926   bool Verify(flatbuffers::Verifier &verifier) const {
10927     return VerifyTableStart(verifier) &&
10928            verifier.EndTable();
10929   }
10930   DensifyOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10931   void UnPackTo(DensifyOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10932   static flatbuffers::Offset<DensifyOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DensifyOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10933 };
10934 
10935 struct DensifyOptionsBuilder {
10936   typedef DensifyOptions Table;
10937   flatbuffers::FlatBufferBuilder &fbb_;
10938   flatbuffers::uoffset_t start_;
10939   explicit DensifyOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10940         : fbb_(_fbb) {
10941     start_ = fbb_.StartTable();
10942   }
10943   flatbuffers::Offset<DensifyOptions> Finish() {
10944     const auto end = fbb_.EndTable(start_);
10945     auto o = flatbuffers::Offset<DensifyOptions>(end);
10946     return o;
10947   }
10948 };
10949 
10950 inline flatbuffers::Offset<DensifyOptions> CreateDensifyOptions(
10951     flatbuffers::FlatBufferBuilder &_fbb) {
10952   DensifyOptionsBuilder builder_(_fbb);
10953   return builder_.Finish();
10954 }
10955 
10956 flatbuffers::Offset<DensifyOptions> CreateDensifyOptions(flatbuffers::FlatBufferBuilder &_fbb, const DensifyOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10957 
10958 struct SegmentSumOptionsT : public flatbuffers::NativeTable {
10959   typedef SegmentSumOptions TableType;
10960 };
10961 
10962 struct SegmentSumOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
10963   typedef SegmentSumOptionsT NativeTableType;
10964   typedef SegmentSumOptionsBuilder Builder;
10965   bool Verify(flatbuffers::Verifier &verifier) const {
10966     return VerifyTableStart(verifier) &&
10967            verifier.EndTable();
10968   }
10969   SegmentSumOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10970   void UnPackTo(SegmentSumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
10971   static flatbuffers::Offset<SegmentSumOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SegmentSumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10972 };
10973 
10974 struct SegmentSumOptionsBuilder {
10975   typedef SegmentSumOptions Table;
10976   flatbuffers::FlatBufferBuilder &fbb_;
10977   flatbuffers::uoffset_t start_;
10978   explicit SegmentSumOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
10979         : fbb_(_fbb) {
10980     start_ = fbb_.StartTable();
10981   }
10982   flatbuffers::Offset<SegmentSumOptions> Finish() {
10983     const auto end = fbb_.EndTable(start_);
10984     auto o = flatbuffers::Offset<SegmentSumOptions>(end);
10985     return o;
10986   }
10987 };
10988 
10989 inline flatbuffers::Offset<SegmentSumOptions> CreateSegmentSumOptions(
10990     flatbuffers::FlatBufferBuilder &_fbb) {
10991   SegmentSumOptionsBuilder builder_(_fbb);
10992   return builder_.Finish();
10993 }
10994 
10995 flatbuffers::Offset<SegmentSumOptions> CreateSegmentSumOptions(flatbuffers::FlatBufferBuilder &_fbb, const SegmentSumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
10996 
10997 struct BatchMatMulOptionsT : public flatbuffers::NativeTable {
10998   typedef BatchMatMulOptions TableType;
10999   bool adj_x = false;
11000   bool adj_y = false;
11001   bool asymmetric_quantize_inputs = false;
11002 };
11003 
11004 struct BatchMatMulOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11005   typedef BatchMatMulOptionsT NativeTableType;
11006   typedef BatchMatMulOptionsBuilder Builder;
11007   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11008     VT_ADJ_X = 4,
11009     VT_ADJ_Y = 6,
11010     VT_ASYMMETRIC_QUANTIZE_INPUTS = 8
11011   };
11012   bool adj_x() const {
11013     return GetField<uint8_t>(VT_ADJ_X, 0) != 0;
11014   }
11015   bool mutate_adj_x(bool _adj_x = 0) {
11016     return SetField<uint8_t>(VT_ADJ_X, static_cast<uint8_t>(_adj_x), 0);
11017   }
11018   bool adj_y() const {
11019     return GetField<uint8_t>(VT_ADJ_Y, 0) != 0;
11020   }
11021   bool mutate_adj_y(bool _adj_y = 0) {
11022     return SetField<uint8_t>(VT_ADJ_Y, static_cast<uint8_t>(_adj_y), 0);
11023   }
11024   bool asymmetric_quantize_inputs() const {
11025     return GetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, 0) != 0;
11026   }
11027   bool mutate_asymmetric_quantize_inputs(bool _asymmetric_quantize_inputs = 0) {
11028     return SetField<uint8_t>(VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(_asymmetric_quantize_inputs), 0);
11029   }
11030   bool Verify(flatbuffers::Verifier &verifier) const {
11031     return VerifyTableStart(verifier) &&
11032            VerifyField<uint8_t>(verifier, VT_ADJ_X, 1) &&
11033            VerifyField<uint8_t>(verifier, VT_ADJ_Y, 1) &&
11034            VerifyField<uint8_t>(verifier, VT_ASYMMETRIC_QUANTIZE_INPUTS, 1) &&
11035            verifier.EndTable();
11036   }
11037   BatchMatMulOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11038   void UnPackTo(BatchMatMulOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11039   static flatbuffers::Offset<BatchMatMulOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchMatMulOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11040 };
11041 
11042 struct BatchMatMulOptionsBuilder {
11043   typedef BatchMatMulOptions Table;
11044   flatbuffers::FlatBufferBuilder &fbb_;
11045   flatbuffers::uoffset_t start_;
11046   void add_adj_x(bool adj_x) {
11047     fbb_.AddElement<uint8_t>(BatchMatMulOptions::VT_ADJ_X, static_cast<uint8_t>(adj_x), 0);
11048   }
11049   void add_adj_y(bool adj_y) {
11050     fbb_.AddElement<uint8_t>(BatchMatMulOptions::VT_ADJ_Y, static_cast<uint8_t>(adj_y), 0);
11051   }
11052   void add_asymmetric_quantize_inputs(bool asymmetric_quantize_inputs) {
11053     fbb_.AddElement<uint8_t>(BatchMatMulOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, static_cast<uint8_t>(asymmetric_quantize_inputs), 0);
11054   }
11055   explicit BatchMatMulOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11056         : fbb_(_fbb) {
11057     start_ = fbb_.StartTable();
11058   }
11059   flatbuffers::Offset<BatchMatMulOptions> Finish() {
11060     const auto end = fbb_.EndTable(start_);
11061     auto o = flatbuffers::Offset<BatchMatMulOptions>(end);
11062     return o;
11063   }
11064 };
11065 
11066 inline flatbuffers::Offset<BatchMatMulOptions> CreateBatchMatMulOptions(
11067     flatbuffers::FlatBufferBuilder &_fbb,
11068     bool adj_x = false,
11069     bool adj_y = false,
11070     bool asymmetric_quantize_inputs = false) {
11071   BatchMatMulOptionsBuilder builder_(_fbb);
11072   builder_.add_asymmetric_quantize_inputs(asymmetric_quantize_inputs);
11073   builder_.add_adj_y(adj_y);
11074   builder_.add_adj_x(adj_x);
11075   return builder_.Finish();
11076 }
11077 
11078 flatbuffers::Offset<BatchMatMulOptions> CreateBatchMatMulOptions(flatbuffers::FlatBufferBuilder &_fbb, const BatchMatMulOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11079 
11080 struct CumsumOptionsT : public flatbuffers::NativeTable {
11081   typedef CumsumOptions TableType;
11082   bool exclusive = false;
11083   bool reverse = false;
11084 };
11085 
11086 struct CumsumOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11087   typedef CumsumOptionsT NativeTableType;
11088   typedef CumsumOptionsBuilder Builder;
11089   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11090     VT_EXCLUSIVE = 4,
11091     VT_REVERSE = 6
11092   };
11093   bool exclusive() const {
11094     return GetField<uint8_t>(VT_EXCLUSIVE, 0) != 0;
11095   }
11096   bool mutate_exclusive(bool _exclusive = 0) {
11097     return SetField<uint8_t>(VT_EXCLUSIVE, static_cast<uint8_t>(_exclusive), 0);
11098   }
11099   bool reverse() const {
11100     return GetField<uint8_t>(VT_REVERSE, 0) != 0;
11101   }
11102   bool mutate_reverse(bool _reverse = 0) {
11103     return SetField<uint8_t>(VT_REVERSE, static_cast<uint8_t>(_reverse), 0);
11104   }
11105   bool Verify(flatbuffers::Verifier &verifier) const {
11106     return VerifyTableStart(verifier) &&
11107            VerifyField<uint8_t>(verifier, VT_EXCLUSIVE, 1) &&
11108            VerifyField<uint8_t>(verifier, VT_REVERSE, 1) &&
11109            verifier.EndTable();
11110   }
11111   CumsumOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11112   void UnPackTo(CumsumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11113   static flatbuffers::Offset<CumsumOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const CumsumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11114 };
11115 
11116 struct CumsumOptionsBuilder {
11117   typedef CumsumOptions Table;
11118   flatbuffers::FlatBufferBuilder &fbb_;
11119   flatbuffers::uoffset_t start_;
11120   void add_exclusive(bool exclusive) {
11121     fbb_.AddElement<uint8_t>(CumsumOptions::VT_EXCLUSIVE, static_cast<uint8_t>(exclusive), 0);
11122   }
11123   void add_reverse(bool reverse) {
11124     fbb_.AddElement<uint8_t>(CumsumOptions::VT_REVERSE, static_cast<uint8_t>(reverse), 0);
11125   }
11126   explicit CumsumOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11127         : fbb_(_fbb) {
11128     start_ = fbb_.StartTable();
11129   }
11130   flatbuffers::Offset<CumsumOptions> Finish() {
11131     const auto end = fbb_.EndTable(start_);
11132     auto o = flatbuffers::Offset<CumsumOptions>(end);
11133     return o;
11134   }
11135 };
11136 
11137 inline flatbuffers::Offset<CumsumOptions> CreateCumsumOptions(
11138     flatbuffers::FlatBufferBuilder &_fbb,
11139     bool exclusive = false,
11140     bool reverse = false) {
11141   CumsumOptionsBuilder builder_(_fbb);
11142   builder_.add_reverse(reverse);
11143   builder_.add_exclusive(exclusive);
11144   return builder_.Finish();
11145 }
11146 
11147 flatbuffers::Offset<CumsumOptions> CreateCumsumOptions(flatbuffers::FlatBufferBuilder &_fbb, const CumsumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11148 
11149 struct BroadcastToOptionsT : public flatbuffers::NativeTable {
11150   typedef BroadcastToOptions TableType;
11151 };
11152 
11153 struct BroadcastToOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11154   typedef BroadcastToOptionsT NativeTableType;
11155   typedef BroadcastToOptionsBuilder Builder;
11156   bool Verify(flatbuffers::Verifier &verifier) const {
11157     return VerifyTableStart(verifier) &&
11158            verifier.EndTable();
11159   }
11160   BroadcastToOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11161   void UnPackTo(BroadcastToOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11162   static flatbuffers::Offset<BroadcastToOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BroadcastToOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11163 };
11164 
11165 struct BroadcastToOptionsBuilder {
11166   typedef BroadcastToOptions Table;
11167   flatbuffers::FlatBufferBuilder &fbb_;
11168   flatbuffers::uoffset_t start_;
11169   explicit BroadcastToOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11170         : fbb_(_fbb) {
11171     start_ = fbb_.StartTable();
11172   }
11173   flatbuffers::Offset<BroadcastToOptions> Finish() {
11174     const auto end = fbb_.EndTable(start_);
11175     auto o = flatbuffers::Offset<BroadcastToOptions>(end);
11176     return o;
11177   }
11178 };
11179 
11180 inline flatbuffers::Offset<BroadcastToOptions> CreateBroadcastToOptions(
11181     flatbuffers::FlatBufferBuilder &_fbb) {
11182   BroadcastToOptionsBuilder builder_(_fbb);
11183   return builder_.Finish();
11184 }
11185 
11186 flatbuffers::Offset<BroadcastToOptions> CreateBroadcastToOptions(flatbuffers::FlatBufferBuilder &_fbb, const BroadcastToOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11187 
11188 struct Rfft2dOptionsT : public flatbuffers::NativeTable {
11189   typedef Rfft2dOptions TableType;
11190 };
11191 
11192 struct Rfft2dOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11193   typedef Rfft2dOptionsT NativeTableType;
11194   typedef Rfft2dOptionsBuilder Builder;
11195   bool Verify(flatbuffers::Verifier &verifier) const {
11196     return VerifyTableStart(verifier) &&
11197            verifier.EndTable();
11198   }
11199   Rfft2dOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11200   void UnPackTo(Rfft2dOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11201   static flatbuffers::Offset<Rfft2dOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const Rfft2dOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11202 };
11203 
11204 struct Rfft2dOptionsBuilder {
11205   typedef Rfft2dOptions Table;
11206   flatbuffers::FlatBufferBuilder &fbb_;
11207   flatbuffers::uoffset_t start_;
11208   explicit Rfft2dOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11209         : fbb_(_fbb) {
11210     start_ = fbb_.StartTable();
11211   }
11212   flatbuffers::Offset<Rfft2dOptions> Finish() {
11213     const auto end = fbb_.EndTable(start_);
11214     auto o = flatbuffers::Offset<Rfft2dOptions>(end);
11215     return o;
11216   }
11217 };
11218 
11219 inline flatbuffers::Offset<Rfft2dOptions> CreateRfft2dOptions(
11220     flatbuffers::FlatBufferBuilder &_fbb) {
11221   Rfft2dOptionsBuilder builder_(_fbb);
11222   return builder_.Finish();
11223 }
11224 
11225 flatbuffers::Offset<Rfft2dOptions> CreateRfft2dOptions(flatbuffers::FlatBufferBuilder &_fbb, const Rfft2dOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11226 
11227 struct HashtableOptionsT : public flatbuffers::NativeTable {
11228   typedef HashtableOptions TableType;
11229   int32_t table_id = 0;
11230   tflite::TensorType key_dtype = tflite::TensorType_FLOAT32;
11231   tflite::TensorType value_dtype = tflite::TensorType_FLOAT32;
11232 };
11233 
11234 struct HashtableOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11235   typedef HashtableOptionsT NativeTableType;
11236   typedef HashtableOptionsBuilder Builder;
11237   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11238     VT_TABLE_ID = 4,
11239     VT_KEY_DTYPE = 6,
11240     VT_VALUE_DTYPE = 8
11241   };
11242   int32_t table_id() const {
11243     return GetField<int32_t>(VT_TABLE_ID, 0);
11244   }
11245   bool mutate_table_id(int32_t _table_id = 0) {
11246     return SetField<int32_t>(VT_TABLE_ID, _table_id, 0);
11247   }
11248   tflite::TensorType key_dtype() const {
11249     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_KEY_DTYPE, 0));
11250   }
11251   bool mutate_key_dtype(tflite::TensorType _key_dtype = static_cast<tflite::TensorType>(0)) {
11252     return SetField<int8_t>(VT_KEY_DTYPE, static_cast<int8_t>(_key_dtype), 0);
11253   }
11254   tflite::TensorType value_dtype() const {
11255     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_VALUE_DTYPE, 0));
11256   }
11257   bool mutate_value_dtype(tflite::TensorType _value_dtype = static_cast<tflite::TensorType>(0)) {
11258     return SetField<int8_t>(VT_VALUE_DTYPE, static_cast<int8_t>(_value_dtype), 0);
11259   }
11260   bool Verify(flatbuffers::Verifier &verifier) const {
11261     return VerifyTableStart(verifier) &&
11262            VerifyField<int32_t>(verifier, VT_TABLE_ID, 4) &&
11263            VerifyField<int8_t>(verifier, VT_KEY_DTYPE, 1) &&
11264            VerifyField<int8_t>(verifier, VT_VALUE_DTYPE, 1) &&
11265            verifier.EndTable();
11266   }
11267   HashtableOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11268   void UnPackTo(HashtableOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11269   static flatbuffers::Offset<HashtableOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11270 };
11271 
11272 struct HashtableOptionsBuilder {
11273   typedef HashtableOptions Table;
11274   flatbuffers::FlatBufferBuilder &fbb_;
11275   flatbuffers::uoffset_t start_;
11276   void add_table_id(int32_t table_id) {
11277     fbb_.AddElement<int32_t>(HashtableOptions::VT_TABLE_ID, table_id, 0);
11278   }
11279   void add_key_dtype(tflite::TensorType key_dtype) {
11280     fbb_.AddElement<int8_t>(HashtableOptions::VT_KEY_DTYPE, static_cast<int8_t>(key_dtype), 0);
11281   }
11282   void add_value_dtype(tflite::TensorType value_dtype) {
11283     fbb_.AddElement<int8_t>(HashtableOptions::VT_VALUE_DTYPE, static_cast<int8_t>(value_dtype), 0);
11284   }
11285   explicit HashtableOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11286         : fbb_(_fbb) {
11287     start_ = fbb_.StartTable();
11288   }
11289   flatbuffers::Offset<HashtableOptions> Finish() {
11290     const auto end = fbb_.EndTable(start_);
11291     auto o = flatbuffers::Offset<HashtableOptions>(end);
11292     return o;
11293   }
11294 };
11295 
11296 inline flatbuffers::Offset<HashtableOptions> CreateHashtableOptions(
11297     flatbuffers::FlatBufferBuilder &_fbb,
11298     int32_t table_id = 0,
11299     tflite::TensorType key_dtype = tflite::TensorType_FLOAT32,
11300     tflite::TensorType value_dtype = tflite::TensorType_FLOAT32) {
11301   HashtableOptionsBuilder builder_(_fbb);
11302   builder_.add_table_id(table_id);
11303   builder_.add_value_dtype(value_dtype);
11304   builder_.add_key_dtype(key_dtype);
11305   return builder_.Finish();
11306 }
11307 
11308 flatbuffers::Offset<HashtableOptions> CreateHashtableOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11309 
11310 struct HashtableFindOptionsT : public flatbuffers::NativeTable {
11311   typedef HashtableFindOptions TableType;
11312 };
11313 
11314 struct HashtableFindOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11315   typedef HashtableFindOptionsT NativeTableType;
11316   typedef HashtableFindOptionsBuilder Builder;
11317   bool Verify(flatbuffers::Verifier &verifier) const {
11318     return VerifyTableStart(verifier) &&
11319            verifier.EndTable();
11320   }
11321   HashtableFindOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11322   void UnPackTo(HashtableFindOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11323   static flatbuffers::Offset<HashtableFindOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableFindOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11324 };
11325 
11326 struct HashtableFindOptionsBuilder {
11327   typedef HashtableFindOptions Table;
11328   flatbuffers::FlatBufferBuilder &fbb_;
11329   flatbuffers::uoffset_t start_;
11330   explicit HashtableFindOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11331         : fbb_(_fbb) {
11332     start_ = fbb_.StartTable();
11333   }
11334   flatbuffers::Offset<HashtableFindOptions> Finish() {
11335     const auto end = fbb_.EndTable(start_);
11336     auto o = flatbuffers::Offset<HashtableFindOptions>(end);
11337     return o;
11338   }
11339 };
11340 
11341 inline flatbuffers::Offset<HashtableFindOptions> CreateHashtableFindOptions(
11342     flatbuffers::FlatBufferBuilder &_fbb) {
11343   HashtableFindOptionsBuilder builder_(_fbb);
11344   return builder_.Finish();
11345 }
11346 
11347 flatbuffers::Offset<HashtableFindOptions> CreateHashtableFindOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableFindOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11348 
11349 struct HashtableImportOptionsT : public flatbuffers::NativeTable {
11350   typedef HashtableImportOptions TableType;
11351 };
11352 
11353 struct HashtableImportOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11354   typedef HashtableImportOptionsT NativeTableType;
11355   typedef HashtableImportOptionsBuilder Builder;
11356   bool Verify(flatbuffers::Verifier &verifier) const {
11357     return VerifyTableStart(verifier) &&
11358            verifier.EndTable();
11359   }
11360   HashtableImportOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11361   void UnPackTo(HashtableImportOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11362   static flatbuffers::Offset<HashtableImportOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableImportOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11363 };
11364 
11365 struct HashtableImportOptionsBuilder {
11366   typedef HashtableImportOptions Table;
11367   flatbuffers::FlatBufferBuilder &fbb_;
11368   flatbuffers::uoffset_t start_;
11369   explicit HashtableImportOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11370         : fbb_(_fbb) {
11371     start_ = fbb_.StartTable();
11372   }
11373   flatbuffers::Offset<HashtableImportOptions> Finish() {
11374     const auto end = fbb_.EndTable(start_);
11375     auto o = flatbuffers::Offset<HashtableImportOptions>(end);
11376     return o;
11377   }
11378 };
11379 
11380 inline flatbuffers::Offset<HashtableImportOptions> CreateHashtableImportOptions(
11381     flatbuffers::FlatBufferBuilder &_fbb) {
11382   HashtableImportOptionsBuilder builder_(_fbb);
11383   return builder_.Finish();
11384 }
11385 
11386 flatbuffers::Offset<HashtableImportOptions> CreateHashtableImportOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableImportOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11387 
11388 struct HashtableSizeOptionsT : public flatbuffers::NativeTable {
11389   typedef HashtableSizeOptions TableType;
11390 };
11391 
11392 struct HashtableSizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11393   typedef HashtableSizeOptionsT NativeTableType;
11394   typedef HashtableSizeOptionsBuilder Builder;
11395   bool Verify(flatbuffers::Verifier &verifier) const {
11396     return VerifyTableStart(verifier) &&
11397            verifier.EndTable();
11398   }
11399   HashtableSizeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11400   void UnPackTo(HashtableSizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11401   static flatbuffers::Offset<HashtableSizeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableSizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11402 };
11403 
11404 struct HashtableSizeOptionsBuilder {
11405   typedef HashtableSizeOptions Table;
11406   flatbuffers::FlatBufferBuilder &fbb_;
11407   flatbuffers::uoffset_t start_;
11408   explicit HashtableSizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11409         : fbb_(_fbb) {
11410     start_ = fbb_.StartTable();
11411   }
11412   flatbuffers::Offset<HashtableSizeOptions> Finish() {
11413     const auto end = fbb_.EndTable(start_);
11414     auto o = flatbuffers::Offset<HashtableSizeOptions>(end);
11415     return o;
11416   }
11417 };
11418 
11419 inline flatbuffers::Offset<HashtableSizeOptions> CreateHashtableSizeOptions(
11420     flatbuffers::FlatBufferBuilder &_fbb) {
11421   HashtableSizeOptionsBuilder builder_(_fbb);
11422   return builder_.Finish();
11423 }
11424 
11425 flatbuffers::Offset<HashtableSizeOptions> CreateHashtableSizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableSizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11426 
11427 struct VarHandleOptionsT : public flatbuffers::NativeTable {
11428   typedef VarHandleOptions TableType;
11429   std::string container{};
11430   std::string shared_name{};
11431 };
11432 
11433 struct VarHandleOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11434   typedef VarHandleOptionsT NativeTableType;
11435   typedef VarHandleOptionsBuilder Builder;
11436   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11437     VT_CONTAINER = 4,
11438     VT_SHARED_NAME = 6
11439   };
11440   const flatbuffers::String *container() const {
11441     return GetPointer<const flatbuffers::String *>(VT_CONTAINER);
11442   }
11443   flatbuffers::String *mutable_container() {
11444     return GetPointer<flatbuffers::String *>(VT_CONTAINER);
11445   }
11446   const flatbuffers::String *shared_name() const {
11447     return GetPointer<const flatbuffers::String *>(VT_SHARED_NAME);
11448   }
11449   flatbuffers::String *mutable_shared_name() {
11450     return GetPointer<flatbuffers::String *>(VT_SHARED_NAME);
11451   }
11452   bool Verify(flatbuffers::Verifier &verifier) const {
11453     return VerifyTableStart(verifier) &&
11454            VerifyOffset(verifier, VT_CONTAINER) &&
11455            verifier.VerifyString(container()) &&
11456            VerifyOffset(verifier, VT_SHARED_NAME) &&
11457            verifier.VerifyString(shared_name()) &&
11458            verifier.EndTable();
11459   }
11460   VarHandleOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11461   void UnPackTo(VarHandleOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11462   static flatbuffers::Offset<VarHandleOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const VarHandleOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11463 };
11464 
11465 struct VarHandleOptionsBuilder {
11466   typedef VarHandleOptions Table;
11467   flatbuffers::FlatBufferBuilder &fbb_;
11468   flatbuffers::uoffset_t start_;
11469   void add_container(flatbuffers::Offset<flatbuffers::String> container) {
11470     fbb_.AddOffset(VarHandleOptions::VT_CONTAINER, container);
11471   }
11472   void add_shared_name(flatbuffers::Offset<flatbuffers::String> shared_name) {
11473     fbb_.AddOffset(VarHandleOptions::VT_SHARED_NAME, shared_name);
11474   }
11475   explicit VarHandleOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11476         : fbb_(_fbb) {
11477     start_ = fbb_.StartTable();
11478   }
11479   flatbuffers::Offset<VarHandleOptions> Finish() {
11480     const auto end = fbb_.EndTable(start_);
11481     auto o = flatbuffers::Offset<VarHandleOptions>(end);
11482     return o;
11483   }
11484 };
11485 
11486 inline flatbuffers::Offset<VarHandleOptions> CreateVarHandleOptions(
11487     flatbuffers::FlatBufferBuilder &_fbb,
11488     flatbuffers::Offset<flatbuffers::String> container = 0,
11489     flatbuffers::Offset<flatbuffers::String> shared_name = 0) {
11490   VarHandleOptionsBuilder builder_(_fbb);
11491   builder_.add_shared_name(shared_name);
11492   builder_.add_container(container);
11493   return builder_.Finish();
11494 }
11495 
11496 inline flatbuffers::Offset<VarHandleOptions> CreateVarHandleOptionsDirect(
11497     flatbuffers::FlatBufferBuilder &_fbb,
11498     const char *container = nullptr,
11499     const char *shared_name = nullptr) {
11500   auto container__ = container ? _fbb.CreateString(container) : 0;
11501   auto shared_name__ = shared_name ? _fbb.CreateString(shared_name) : 0;
11502   return tflite::CreateVarHandleOptions(
11503       _fbb,
11504       container__,
11505       shared_name__);
11506 }
11507 
11508 flatbuffers::Offset<VarHandleOptions> CreateVarHandleOptions(flatbuffers::FlatBufferBuilder &_fbb, const VarHandleOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11509 
11510 struct ReadVariableOptionsT : public flatbuffers::NativeTable {
11511   typedef ReadVariableOptions TableType;
11512 };
11513 
11514 struct ReadVariableOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11515   typedef ReadVariableOptionsT NativeTableType;
11516   typedef ReadVariableOptionsBuilder Builder;
11517   bool Verify(flatbuffers::Verifier &verifier) const {
11518     return VerifyTableStart(verifier) &&
11519            verifier.EndTable();
11520   }
11521   ReadVariableOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11522   void UnPackTo(ReadVariableOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11523   static flatbuffers::Offset<ReadVariableOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReadVariableOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11524 };
11525 
11526 struct ReadVariableOptionsBuilder {
11527   typedef ReadVariableOptions Table;
11528   flatbuffers::FlatBufferBuilder &fbb_;
11529   flatbuffers::uoffset_t start_;
11530   explicit ReadVariableOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11531         : fbb_(_fbb) {
11532     start_ = fbb_.StartTable();
11533   }
11534   flatbuffers::Offset<ReadVariableOptions> Finish() {
11535     const auto end = fbb_.EndTable(start_);
11536     auto o = flatbuffers::Offset<ReadVariableOptions>(end);
11537     return o;
11538   }
11539 };
11540 
11541 inline flatbuffers::Offset<ReadVariableOptions> CreateReadVariableOptions(
11542     flatbuffers::FlatBufferBuilder &_fbb) {
11543   ReadVariableOptionsBuilder builder_(_fbb);
11544   return builder_.Finish();
11545 }
11546 
11547 flatbuffers::Offset<ReadVariableOptions> CreateReadVariableOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReadVariableOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11548 
11549 struct AssignVariableOptionsT : public flatbuffers::NativeTable {
11550   typedef AssignVariableOptions TableType;
11551 };
11552 
11553 struct AssignVariableOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11554   typedef AssignVariableOptionsT NativeTableType;
11555   typedef AssignVariableOptionsBuilder Builder;
11556   bool Verify(flatbuffers::Verifier &verifier) const {
11557     return VerifyTableStart(verifier) &&
11558            verifier.EndTable();
11559   }
11560   AssignVariableOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11561   void UnPackTo(AssignVariableOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11562   static flatbuffers::Offset<AssignVariableOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AssignVariableOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11563 };
11564 
11565 struct AssignVariableOptionsBuilder {
11566   typedef AssignVariableOptions Table;
11567   flatbuffers::FlatBufferBuilder &fbb_;
11568   flatbuffers::uoffset_t start_;
11569   explicit AssignVariableOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11570         : fbb_(_fbb) {
11571     start_ = fbb_.StartTable();
11572   }
11573   flatbuffers::Offset<AssignVariableOptions> Finish() {
11574     const auto end = fbb_.EndTable(start_);
11575     auto o = flatbuffers::Offset<AssignVariableOptions>(end);
11576     return o;
11577   }
11578 };
11579 
11580 inline flatbuffers::Offset<AssignVariableOptions> CreateAssignVariableOptions(
11581     flatbuffers::FlatBufferBuilder &_fbb) {
11582   AssignVariableOptionsBuilder builder_(_fbb);
11583   return builder_.Finish();
11584 }
11585 
11586 flatbuffers::Offset<AssignVariableOptions> CreateAssignVariableOptions(flatbuffers::FlatBufferBuilder &_fbb, const AssignVariableOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11587 
11588 struct RandomOptionsT : public flatbuffers::NativeTable {
11589   typedef RandomOptions TableType;
11590   int64_t seed = 0;
11591   int64_t seed2 = 0;
11592 };
11593 
11594 struct RandomOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11595   typedef RandomOptionsT NativeTableType;
11596   typedef RandomOptionsBuilder Builder;
11597   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11598     VT_SEED = 4,
11599     VT_SEED2 = 6
11600   };
11601   int64_t seed() const {
11602     return GetField<int64_t>(VT_SEED, 0);
11603   }
11604   bool mutate_seed(int64_t _seed = 0) {
11605     return SetField<int64_t>(VT_SEED, _seed, 0);
11606   }
11607   int64_t seed2() const {
11608     return GetField<int64_t>(VT_SEED2, 0);
11609   }
11610   bool mutate_seed2(int64_t _seed2 = 0) {
11611     return SetField<int64_t>(VT_SEED2, _seed2, 0);
11612   }
11613   bool Verify(flatbuffers::Verifier &verifier) const {
11614     return VerifyTableStart(verifier) &&
11615            VerifyField<int64_t>(verifier, VT_SEED, 8) &&
11616            VerifyField<int64_t>(verifier, VT_SEED2, 8) &&
11617            verifier.EndTable();
11618   }
11619   RandomOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11620   void UnPackTo(RandomOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11621   static flatbuffers::Offset<RandomOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RandomOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11622 };
11623 
11624 struct RandomOptionsBuilder {
11625   typedef RandomOptions Table;
11626   flatbuffers::FlatBufferBuilder &fbb_;
11627   flatbuffers::uoffset_t start_;
11628   void add_seed(int64_t seed) {
11629     fbb_.AddElement<int64_t>(RandomOptions::VT_SEED, seed, 0);
11630   }
11631   void add_seed2(int64_t seed2) {
11632     fbb_.AddElement<int64_t>(RandomOptions::VT_SEED2, seed2, 0);
11633   }
11634   explicit RandomOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11635         : fbb_(_fbb) {
11636     start_ = fbb_.StartTable();
11637   }
11638   flatbuffers::Offset<RandomOptions> Finish() {
11639     const auto end = fbb_.EndTable(start_);
11640     auto o = flatbuffers::Offset<RandomOptions>(end);
11641     return o;
11642   }
11643 };
11644 
11645 inline flatbuffers::Offset<RandomOptions> CreateRandomOptions(
11646     flatbuffers::FlatBufferBuilder &_fbb,
11647     int64_t seed = 0,
11648     int64_t seed2 = 0) {
11649   RandomOptionsBuilder builder_(_fbb);
11650   builder_.add_seed2(seed2);
11651   builder_.add_seed(seed);
11652   return builder_.Finish();
11653 }
11654 
11655 flatbuffers::Offset<RandomOptions> CreateRandomOptions(flatbuffers::FlatBufferBuilder &_fbb, const RandomOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11656 
11657 struct BucketizeOptionsT : public flatbuffers::NativeTable {
11658   typedef BucketizeOptions TableType;
11659   std::vector<float> boundaries{};
11660 };
11661 
11662 struct BucketizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11663   typedef BucketizeOptionsT NativeTableType;
11664   typedef BucketizeOptionsBuilder Builder;
11665   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11666     VT_BOUNDARIES = 4
11667   };
11668   const flatbuffers::Vector<float> *boundaries() const {
11669     return GetPointer<const flatbuffers::Vector<float> *>(VT_BOUNDARIES);
11670   }
11671   flatbuffers::Vector<float> *mutable_boundaries() {
11672     return GetPointer<flatbuffers::Vector<float> *>(VT_BOUNDARIES);
11673   }
11674   bool Verify(flatbuffers::Verifier &verifier) const {
11675     return VerifyTableStart(verifier) &&
11676            VerifyOffset(verifier, VT_BOUNDARIES) &&
11677            verifier.VerifyVector(boundaries()) &&
11678            verifier.EndTable();
11679   }
11680   BucketizeOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11681   void UnPackTo(BucketizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11682   static flatbuffers::Offset<BucketizeOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BucketizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11683 };
11684 
11685 struct BucketizeOptionsBuilder {
11686   typedef BucketizeOptions Table;
11687   flatbuffers::FlatBufferBuilder &fbb_;
11688   flatbuffers::uoffset_t start_;
11689   void add_boundaries(flatbuffers::Offset<flatbuffers::Vector<float>> boundaries) {
11690     fbb_.AddOffset(BucketizeOptions::VT_BOUNDARIES, boundaries);
11691   }
11692   explicit BucketizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11693         : fbb_(_fbb) {
11694     start_ = fbb_.StartTable();
11695   }
11696   flatbuffers::Offset<BucketizeOptions> Finish() {
11697     const auto end = fbb_.EndTable(start_);
11698     auto o = flatbuffers::Offset<BucketizeOptions>(end);
11699     return o;
11700   }
11701 };
11702 
11703 inline flatbuffers::Offset<BucketizeOptions> CreateBucketizeOptions(
11704     flatbuffers::FlatBufferBuilder &_fbb,
11705     flatbuffers::Offset<flatbuffers::Vector<float>> boundaries = 0) {
11706   BucketizeOptionsBuilder builder_(_fbb);
11707   builder_.add_boundaries(boundaries);
11708   return builder_.Finish();
11709 }
11710 
11711 inline flatbuffers::Offset<BucketizeOptions> CreateBucketizeOptionsDirect(
11712     flatbuffers::FlatBufferBuilder &_fbb,
11713     const std::vector<float> *boundaries = nullptr) {
11714   auto boundaries__ = boundaries ? _fbb.CreateVector<float>(*boundaries) : 0;
11715   return tflite::CreateBucketizeOptions(
11716       _fbb,
11717       boundaries__);
11718 }
11719 
11720 flatbuffers::Offset<BucketizeOptions> CreateBucketizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const BucketizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11721 
11722 struct GeluOptionsT : public flatbuffers::NativeTable {
11723   typedef GeluOptions TableType;
11724   bool approximate = false;
11725 };
11726 
11727 struct GeluOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11728   typedef GeluOptionsT NativeTableType;
11729   typedef GeluOptionsBuilder Builder;
11730   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
11731     VT_APPROXIMATE = 4
11732   };
11733   bool approximate() const {
11734     return GetField<uint8_t>(VT_APPROXIMATE, 0) != 0;
11735   }
11736   bool mutate_approximate(bool _approximate = 0) {
11737     return SetField<uint8_t>(VT_APPROXIMATE, static_cast<uint8_t>(_approximate), 0);
11738   }
11739   bool Verify(flatbuffers::Verifier &verifier) const {
11740     return VerifyTableStart(verifier) &&
11741            VerifyField<uint8_t>(verifier, VT_APPROXIMATE, 1) &&
11742            verifier.EndTable();
11743   }
11744   GeluOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11745   void UnPackTo(GeluOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11746   static flatbuffers::Offset<GeluOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GeluOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11747 };
11748 
11749 struct GeluOptionsBuilder {
11750   typedef GeluOptions Table;
11751   flatbuffers::FlatBufferBuilder &fbb_;
11752   flatbuffers::uoffset_t start_;
11753   void add_approximate(bool approximate) {
11754     fbb_.AddElement<uint8_t>(GeluOptions::VT_APPROXIMATE, static_cast<uint8_t>(approximate), 0);
11755   }
11756   explicit GeluOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11757         : fbb_(_fbb) {
11758     start_ = fbb_.StartTable();
11759   }
11760   flatbuffers::Offset<GeluOptions> Finish() {
11761     const auto end = fbb_.EndTable(start_);
11762     auto o = flatbuffers::Offset<GeluOptions>(end);
11763     return o;
11764   }
11765 };
11766 
11767 inline flatbuffers::Offset<GeluOptions> CreateGeluOptions(
11768     flatbuffers::FlatBufferBuilder &_fbb,
11769     bool approximate = false) {
11770   GeluOptionsBuilder builder_(_fbb);
11771   builder_.add_approximate(approximate);
11772   return builder_.Finish();
11773 }
11774 
11775 flatbuffers::Offset<GeluOptions> CreateGeluOptions(flatbuffers::FlatBufferBuilder &_fbb, const GeluOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11776 
11777 struct DynamicUpdateSliceOptionsT : public flatbuffers::NativeTable {
11778   typedef DynamicUpdateSliceOptions TableType;
11779 };
11780 
11781 struct DynamicUpdateSliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11782   typedef DynamicUpdateSliceOptionsT NativeTableType;
11783   typedef DynamicUpdateSliceOptionsBuilder Builder;
11784   bool Verify(flatbuffers::Verifier &verifier) const {
11785     return VerifyTableStart(verifier) &&
11786            verifier.EndTable();
11787   }
11788   DynamicUpdateSliceOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11789   void UnPackTo(DynamicUpdateSliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11790   static flatbuffers::Offset<DynamicUpdateSliceOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DynamicUpdateSliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11791 };
11792 
11793 struct DynamicUpdateSliceOptionsBuilder {
11794   typedef DynamicUpdateSliceOptions Table;
11795   flatbuffers::FlatBufferBuilder &fbb_;
11796   flatbuffers::uoffset_t start_;
11797   explicit DynamicUpdateSliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11798         : fbb_(_fbb) {
11799     start_ = fbb_.StartTable();
11800   }
11801   flatbuffers::Offset<DynamicUpdateSliceOptions> Finish() {
11802     const auto end = fbb_.EndTable(start_);
11803     auto o = flatbuffers::Offset<DynamicUpdateSliceOptions>(end);
11804     return o;
11805   }
11806 };
11807 
11808 inline flatbuffers::Offset<DynamicUpdateSliceOptions> CreateDynamicUpdateSliceOptions(
11809     flatbuffers::FlatBufferBuilder &_fbb) {
11810   DynamicUpdateSliceOptionsBuilder builder_(_fbb);
11811   return builder_.Finish();
11812 }
11813 
11814 flatbuffers::Offset<DynamicUpdateSliceOptions> CreateDynamicUpdateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const DynamicUpdateSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11815 
11816 struct UnsortedSegmentProdOptionsT : public flatbuffers::NativeTable {
11817   typedef UnsortedSegmentProdOptions TableType;
11818 };
11819 
11820 struct UnsortedSegmentProdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11821   typedef UnsortedSegmentProdOptionsT NativeTableType;
11822   typedef UnsortedSegmentProdOptionsBuilder Builder;
11823   bool Verify(flatbuffers::Verifier &verifier) const {
11824     return VerifyTableStart(verifier) &&
11825            verifier.EndTable();
11826   }
11827   UnsortedSegmentProdOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11828   void UnPackTo(UnsortedSegmentProdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11829   static flatbuffers::Offset<UnsortedSegmentProdOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11830 };
11831 
11832 struct UnsortedSegmentProdOptionsBuilder {
11833   typedef UnsortedSegmentProdOptions Table;
11834   flatbuffers::FlatBufferBuilder &fbb_;
11835   flatbuffers::uoffset_t start_;
11836   explicit UnsortedSegmentProdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11837         : fbb_(_fbb) {
11838     start_ = fbb_.StartTable();
11839   }
11840   flatbuffers::Offset<UnsortedSegmentProdOptions> Finish() {
11841     const auto end = fbb_.EndTable(start_);
11842     auto o = flatbuffers::Offset<UnsortedSegmentProdOptions>(end);
11843     return o;
11844   }
11845 };
11846 
11847 inline flatbuffers::Offset<UnsortedSegmentProdOptions> CreateUnsortedSegmentProdOptions(
11848     flatbuffers::FlatBufferBuilder &_fbb) {
11849   UnsortedSegmentProdOptionsBuilder builder_(_fbb);
11850   return builder_.Finish();
11851 }
11852 
11853 flatbuffers::Offset<UnsortedSegmentProdOptions> CreateUnsortedSegmentProdOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11854 
11855 struct UnsortedSegmentMaxOptionsT : public flatbuffers::NativeTable {
11856   typedef UnsortedSegmentMaxOptions TableType;
11857 };
11858 
11859 struct UnsortedSegmentMaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11860   typedef UnsortedSegmentMaxOptionsT NativeTableType;
11861   typedef UnsortedSegmentMaxOptionsBuilder Builder;
11862   bool Verify(flatbuffers::Verifier &verifier) const {
11863     return VerifyTableStart(verifier) &&
11864            verifier.EndTable();
11865   }
11866   UnsortedSegmentMaxOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11867   void UnPackTo(UnsortedSegmentMaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11868   static flatbuffers::Offset<UnsortedSegmentMaxOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11869 };
11870 
11871 struct UnsortedSegmentMaxOptionsBuilder {
11872   typedef UnsortedSegmentMaxOptions Table;
11873   flatbuffers::FlatBufferBuilder &fbb_;
11874   flatbuffers::uoffset_t start_;
11875   explicit UnsortedSegmentMaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11876         : fbb_(_fbb) {
11877     start_ = fbb_.StartTable();
11878   }
11879   flatbuffers::Offset<UnsortedSegmentMaxOptions> Finish() {
11880     const auto end = fbb_.EndTable(start_);
11881     auto o = flatbuffers::Offset<UnsortedSegmentMaxOptions>(end);
11882     return o;
11883   }
11884 };
11885 
11886 inline flatbuffers::Offset<UnsortedSegmentMaxOptions> CreateUnsortedSegmentMaxOptions(
11887     flatbuffers::FlatBufferBuilder &_fbb) {
11888   UnsortedSegmentMaxOptionsBuilder builder_(_fbb);
11889   return builder_.Finish();
11890 }
11891 
11892 flatbuffers::Offset<UnsortedSegmentMaxOptions> CreateUnsortedSegmentMaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11893 
11894 struct UnsortedSegmentSumOptionsT : public flatbuffers::NativeTable {
11895   typedef UnsortedSegmentSumOptions TableType;
11896 };
11897 
11898 struct UnsortedSegmentSumOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11899   typedef UnsortedSegmentSumOptionsT NativeTableType;
11900   typedef UnsortedSegmentSumOptionsBuilder Builder;
11901   bool Verify(flatbuffers::Verifier &verifier) const {
11902     return VerifyTableStart(verifier) &&
11903            verifier.EndTable();
11904   }
11905   UnsortedSegmentSumOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11906   void UnPackTo(UnsortedSegmentSumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11907   static flatbuffers::Offset<UnsortedSegmentSumOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentSumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11908 };
11909 
11910 struct UnsortedSegmentSumOptionsBuilder {
11911   typedef UnsortedSegmentSumOptions Table;
11912   flatbuffers::FlatBufferBuilder &fbb_;
11913   flatbuffers::uoffset_t start_;
11914   explicit UnsortedSegmentSumOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11915         : fbb_(_fbb) {
11916     start_ = fbb_.StartTable();
11917   }
11918   flatbuffers::Offset<UnsortedSegmentSumOptions> Finish() {
11919     const auto end = fbb_.EndTable(start_);
11920     auto o = flatbuffers::Offset<UnsortedSegmentSumOptions>(end);
11921     return o;
11922   }
11923 };
11924 
11925 inline flatbuffers::Offset<UnsortedSegmentSumOptions> CreateUnsortedSegmentSumOptions(
11926     flatbuffers::FlatBufferBuilder &_fbb) {
11927   UnsortedSegmentSumOptionsBuilder builder_(_fbb);
11928   return builder_.Finish();
11929 }
11930 
11931 flatbuffers::Offset<UnsortedSegmentSumOptions> CreateUnsortedSegmentSumOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentSumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11932 
11933 struct ATan2OptionsT : public flatbuffers::NativeTable {
11934   typedef ATan2Options TableType;
11935 };
11936 
11937 struct ATan2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11938   typedef ATan2OptionsT NativeTableType;
11939   typedef ATan2OptionsBuilder Builder;
11940   bool Verify(flatbuffers::Verifier &verifier) const {
11941     return VerifyTableStart(verifier) &&
11942            verifier.EndTable();
11943   }
11944   ATan2OptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11945   void UnPackTo(ATan2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11946   static flatbuffers::Offset<ATan2Options> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ATan2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11947 };
11948 
11949 struct ATan2OptionsBuilder {
11950   typedef ATan2Options Table;
11951   flatbuffers::FlatBufferBuilder &fbb_;
11952   flatbuffers::uoffset_t start_;
11953   explicit ATan2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11954         : fbb_(_fbb) {
11955     start_ = fbb_.StartTable();
11956   }
11957   flatbuffers::Offset<ATan2Options> Finish() {
11958     const auto end = fbb_.EndTable(start_);
11959     auto o = flatbuffers::Offset<ATan2Options>(end);
11960     return o;
11961   }
11962 };
11963 
11964 inline flatbuffers::Offset<ATan2Options> CreateATan2Options(
11965     flatbuffers::FlatBufferBuilder &_fbb) {
11966   ATan2OptionsBuilder builder_(_fbb);
11967   return builder_.Finish();
11968 }
11969 
11970 flatbuffers::Offset<ATan2Options> CreateATan2Options(flatbuffers::FlatBufferBuilder &_fbb, const ATan2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11971 
11972 struct UnsortedSegmentMinOptionsT : public flatbuffers::NativeTable {
11973   typedef UnsortedSegmentMinOptions TableType;
11974 };
11975 
11976 struct UnsortedSegmentMinOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
11977   typedef UnsortedSegmentMinOptionsT NativeTableType;
11978   typedef UnsortedSegmentMinOptionsBuilder Builder;
11979   bool Verify(flatbuffers::Verifier &verifier) const {
11980     return VerifyTableStart(verifier) &&
11981            verifier.EndTable();
11982   }
11983   UnsortedSegmentMinOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11984   void UnPackTo(UnsortedSegmentMinOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
11985   static flatbuffers::Offset<UnsortedSegmentMinOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMinOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
11986 };
11987 
11988 struct UnsortedSegmentMinOptionsBuilder {
11989   typedef UnsortedSegmentMinOptions Table;
11990   flatbuffers::FlatBufferBuilder &fbb_;
11991   flatbuffers::uoffset_t start_;
11992   explicit UnsortedSegmentMinOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
11993         : fbb_(_fbb) {
11994     start_ = fbb_.StartTable();
11995   }
11996   flatbuffers::Offset<UnsortedSegmentMinOptions> Finish() {
11997     const auto end = fbb_.EndTable(start_);
11998     auto o = flatbuffers::Offset<UnsortedSegmentMinOptions>(end);
11999     return o;
12000   }
12001 };
12002 
12003 inline flatbuffers::Offset<UnsortedSegmentMinOptions> CreateUnsortedSegmentMinOptions(
12004     flatbuffers::FlatBufferBuilder &_fbb) {
12005   UnsortedSegmentMinOptionsBuilder builder_(_fbb);
12006   return builder_.Finish();
12007 }
12008 
12009 flatbuffers::Offset<UnsortedSegmentMinOptions> CreateUnsortedSegmentMinOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMinOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
12010 
12011 struct SignOptionsT : public flatbuffers::NativeTable {
12012   typedef SignOptions TableType;
12013 };
12014 
12015 struct SignOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
12016   typedef SignOptionsT NativeTableType;
12017   typedef SignOptionsBuilder Builder;
12018   bool Verify(flatbuffers::Verifier &verifier) const {
12019     return VerifyTableStart(verifier) &&
12020            verifier.EndTable();
12021   }
12022   SignOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
12023   void UnPackTo(SignOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
12024   static flatbuffers::Offset<SignOptions> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SignOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
12025 };
12026 
12027 struct SignOptionsBuilder {
12028   typedef SignOptions Table;
12029   flatbuffers::FlatBufferBuilder &fbb_;
12030   flatbuffers::uoffset_t start_;
12031   explicit SignOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
12032         : fbb_(_fbb) {
12033     start_ = fbb_.StartTable();
12034   }
12035   flatbuffers::Offset<SignOptions> Finish() {
12036     const auto end = fbb_.EndTable(start_);
12037     auto o = flatbuffers::Offset<SignOptions>(end);
12038     return o;
12039   }
12040 };
12041 
12042 inline flatbuffers::Offset<SignOptions> CreateSignOptions(
12043     flatbuffers::FlatBufferBuilder &_fbb) {
12044   SignOptionsBuilder builder_(_fbb);
12045   return builder_.Finish();
12046 }
12047 
12048 flatbuffers::Offset<SignOptions> CreateSignOptions(flatbuffers::FlatBufferBuilder &_fbb, const SignOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
12049 
12050 struct OperatorCodeT : public flatbuffers::NativeTable {
12051   typedef OperatorCode TableType;
12052   int8_t deprecated_builtin_code = 0;
12053   std::string custom_code{};
12054   int32_t version = 1;
12055   tflite::BuiltinOperator builtin_code = tflite::BuiltinOperator_ADD;
12056 };
12057 
12058 struct OperatorCode FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
12059   typedef OperatorCodeT NativeTableType;
12060   typedef OperatorCodeBuilder Builder;
12061   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
12062     VT_DEPRECATED_BUILTIN_CODE = 4,
12063     VT_CUSTOM_CODE = 6,
12064     VT_VERSION = 8,
12065     VT_BUILTIN_CODE = 10
12066   };
12067   int8_t deprecated_builtin_code() const {
12068     return GetField<int8_t>(VT_DEPRECATED_BUILTIN_CODE, 0);
12069   }
12070   bool mutate_deprecated_builtin_code(int8_t _deprecated_builtin_code = 0) {
12071     return SetField<int8_t>(VT_DEPRECATED_BUILTIN_CODE, _deprecated_builtin_code, 0);
12072   }
12073   const flatbuffers::String *custom_code() const {
12074     return GetPointer<const flatbuffers::String *>(VT_CUSTOM_CODE);
12075   }
12076   flatbuffers::String *mutable_custom_code() {
12077     return GetPointer<flatbuffers::String *>(VT_CUSTOM_CODE);
12078   }
12079   int32_t version() const {
12080     return GetField<int32_t>(VT_VERSION, 1);
12081   }
12082   bool mutate_version(int32_t _version = 1) {
12083     return SetField<int32_t>(VT_VERSION, _version, 1);
12084   }
12085   tflite::BuiltinOperator builtin_code() const {
12086     return static_cast<tflite::BuiltinOperator>(GetField<int32_t>(VT_BUILTIN_CODE, 0));
12087   }
12088   bool mutate_builtin_code(tflite::BuiltinOperator _builtin_code = static_cast<tflite::BuiltinOperator>(0)) {
12089     return SetField<int32_t>(VT_BUILTIN_CODE, static_cast<int32_t>(_builtin_code), 0);
12090   }
12091   bool Verify(flatbuffers::Verifier &verifier) const {
12092     return VerifyTableStart(verifier) &&
12093            VerifyField<int8_t>(verifier, VT_DEPRECATED_BUILTIN_CODE, 1) &&
12094            VerifyOffset(verifier, VT_CUSTOM_CODE) &&
12095            verifier.VerifyString(custom_code()) &&
12096            VerifyField<int32_t>(verifier, VT_VERSION, 4) &&
12097            VerifyField<int32_t>(verifier, VT_BUILTIN_CODE, 4) &&
12098            verifier.EndTable();
12099   }
12100   OperatorCodeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
12101   void UnPackTo(OperatorCodeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
12102   static flatbuffers::Offset<OperatorCode> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
12103 };
12104 
12105 struct OperatorCodeBuilder {
12106   typedef OperatorCode Table;
12107   flatbuffers::FlatBufferBuilder &fbb_;
12108   flatbuffers::uoffset_t start_;
12109   void add_deprecated_builtin_code(int8_t deprecated_builtin_code) {
12110     fbb_.AddElement<int8_t>(OperatorCode::VT_DEPRECATED_BUILTIN_CODE, deprecated_builtin_code, 0);
12111   }
12112   void add_custom_code(flatbuffers::Offset<flatbuffers::String> custom_code) {
12113     fbb_.AddOffset(OperatorCode::VT_CUSTOM_CODE, custom_code);
12114   }
12115   void add_version(int32_t version) {
12116     fbb_.AddElement<int32_t>(OperatorCode::VT_VERSION, version, 1);
12117   }
12118   void add_builtin_code(tflite::BuiltinOperator builtin_code) {
12119     fbb_.AddElement<int32_t>(OperatorCode::VT_BUILTIN_CODE, static_cast<int32_t>(builtin_code), 0);
12120   }
12121   explicit OperatorCodeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
12122         : fbb_(_fbb) {
12123     start_ = fbb_.StartTable();
12124   }
12125   flatbuffers::Offset<OperatorCode> Finish() {
12126     const auto end = fbb_.EndTable(start_);
12127     auto o = flatbuffers::Offset<OperatorCode>(end);
12128     return o;
12129   }
12130 };
12131 
12132 inline flatbuffers::Offset<OperatorCode> CreateOperatorCode(
12133     flatbuffers::FlatBufferBuilder &_fbb,
12134     int8_t deprecated_builtin_code = 0,
12135     flatbuffers::Offset<flatbuffers::String> custom_code = 0,
12136     int32_t version = 1,
12137     tflite::BuiltinOperator builtin_code = tflite::BuiltinOperator_ADD) {
12138   OperatorCodeBuilder builder_(_fbb);
12139   builder_.add_builtin_code(builtin_code);
12140   builder_.add_version(version);
12141   builder_.add_custom_code(custom_code);
12142   builder_.add_deprecated_builtin_code(deprecated_builtin_code);
12143   return builder_.Finish();
12144 }
12145 
12146 inline flatbuffers::Offset<OperatorCode> CreateOperatorCodeDirect(
12147     flatbuffers::FlatBufferBuilder &_fbb,
12148     int8_t deprecated_builtin_code = 0,
12149     const char *custom_code = nullptr,
12150     int32_t version = 1,
12151     tflite::BuiltinOperator builtin_code = tflite::BuiltinOperator_ADD) {
12152   auto custom_code__ = custom_code ? _fbb.CreateString(custom_code) : 0;
12153   return tflite::CreateOperatorCode(
12154       _fbb,
12155       deprecated_builtin_code,
12156       custom_code__,
12157       version,
12158       builtin_code);
12159 }
12160 
12161 flatbuffers::Offset<OperatorCode> CreateOperatorCode(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
12162 
12163 struct OperatorT : public flatbuffers::NativeTable {
12164   typedef Operator TableType;
12165   uint32_t opcode_index = 0;
12166   std::vector<int32_t> inputs{};
12167   std::vector<int32_t> outputs{};
12168   tflite::BuiltinOptionsUnion builtin_options{};
12169   std::vector<uint8_t> custom_options{};
12170   tflite::CustomOptionsFormat custom_options_format = tflite::CustomOptionsFormat_FLEXBUFFERS;
12171   std::vector<bool> mutating_variable_inputs{};
12172   std::vector<int32_t> intermediates{};
12173 };
12174 
12175 struct Operator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
12176   typedef OperatorT NativeTableType;
12177   typedef OperatorBuilder Builder;
12178   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
12179     VT_OPCODE_INDEX = 4,
12180     VT_INPUTS = 6,
12181     VT_OUTPUTS = 8,
12182     VT_BUILTIN_OPTIONS_TYPE = 10,
12183     VT_BUILTIN_OPTIONS = 12,
12184     VT_CUSTOM_OPTIONS = 14,
12185     VT_CUSTOM_OPTIONS_FORMAT = 16,
12186     VT_MUTATING_VARIABLE_INPUTS = 18,
12187     VT_INTERMEDIATES = 20
12188   };
12189   uint32_t opcode_index() const {
12190     return GetField<uint32_t>(VT_OPCODE_INDEX, 0);
12191   }
12192   bool mutate_opcode_index(uint32_t _opcode_index = 0) {
12193     return SetField<uint32_t>(VT_OPCODE_INDEX, _opcode_index, 0);
12194   }
12195   const flatbuffers::Vector<int32_t> *inputs() const {
12196     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INPUTS);
12197   }
12198   flatbuffers::Vector<int32_t> *mutable_inputs() {
12199     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_INPUTS);
12200   }
12201   const flatbuffers::Vector<int32_t> *outputs() const {
12202     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
12203   }
12204   flatbuffers::Vector<int32_t> *mutable_outputs() {
12205     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
12206   }
12207   tflite::BuiltinOptions builtin_options_type() const {
12208     return static_cast<tflite::BuiltinOptions>(GetField<uint8_t>(VT_BUILTIN_OPTIONS_TYPE, 0));
12209   }
12210   const void *builtin_options() const {
12211     return GetPointer<const void *>(VT_BUILTIN_OPTIONS);
12212   }
12213   template<typename T> const T *builtin_options_as() const;
12214   const tflite::Conv2DOptions *builtin_options_as_Conv2DOptions() const {
12215     return builtin_options_type() == tflite::BuiltinOptions_Conv2DOptions ? static_cast<const tflite::Conv2DOptions *>(builtin_options()) : nullptr;
12216   }
12217   const tflite::DepthwiseConv2DOptions *builtin_options_as_DepthwiseConv2DOptions() const {
12218     return builtin_options_type() == tflite::BuiltinOptions_DepthwiseConv2DOptions ? static_cast<const tflite::DepthwiseConv2DOptions *>(builtin_options()) : nullptr;
12219   }
12220   const tflite::ConcatEmbeddingsOptions *builtin_options_as_ConcatEmbeddingsOptions() const {
12221     return builtin_options_type() == tflite::BuiltinOptions_ConcatEmbeddingsOptions ? static_cast<const tflite::ConcatEmbeddingsOptions *>(builtin_options()) : nullptr;
12222   }
12223   const tflite::LSHProjectionOptions *builtin_options_as_LSHProjectionOptions() const {
12224     return builtin_options_type() == tflite::BuiltinOptions_LSHProjectionOptions ? static_cast<const tflite::LSHProjectionOptions *>(builtin_options()) : nullptr;
12225   }
12226   const tflite::Pool2DOptions *builtin_options_as_Pool2DOptions() const {
12227     return builtin_options_type() == tflite::BuiltinOptions_Pool2DOptions ? static_cast<const tflite::Pool2DOptions *>(builtin_options()) : nullptr;
12228   }
12229   const tflite::SVDFOptions *builtin_options_as_SVDFOptions() const {
12230     return builtin_options_type() == tflite::BuiltinOptions_SVDFOptions ? static_cast<const tflite::SVDFOptions *>(builtin_options()) : nullptr;
12231   }
12232   const tflite::RNNOptions *builtin_options_as_RNNOptions() const {
12233     return builtin_options_type() == tflite::BuiltinOptions_RNNOptions ? static_cast<const tflite::RNNOptions *>(builtin_options()) : nullptr;
12234   }
12235   const tflite::FullyConnectedOptions *builtin_options_as_FullyConnectedOptions() const {
12236     return builtin_options_type() == tflite::BuiltinOptions_FullyConnectedOptions ? static_cast<const tflite::FullyConnectedOptions *>(builtin_options()) : nullptr;
12237   }
12238   const tflite::SoftmaxOptions *builtin_options_as_SoftmaxOptions() const {
12239     return builtin_options_type() == tflite::BuiltinOptions_SoftmaxOptions ? static_cast<const tflite::SoftmaxOptions *>(builtin_options()) : nullptr;
12240   }
12241   const tflite::ConcatenationOptions *builtin_options_as_ConcatenationOptions() const {
12242     return builtin_options_type() == tflite::BuiltinOptions_ConcatenationOptions ? static_cast<const tflite::ConcatenationOptions *>(builtin_options()) : nullptr;
12243   }
12244   const tflite::AddOptions *builtin_options_as_AddOptions() const {
12245     return builtin_options_type() == tflite::BuiltinOptions_AddOptions ? static_cast<const tflite::AddOptions *>(builtin_options()) : nullptr;
12246   }
12247   const tflite::L2NormOptions *builtin_options_as_L2NormOptions() const {
12248     return builtin_options_type() == tflite::BuiltinOptions_L2NormOptions ? static_cast<const tflite::L2NormOptions *>(builtin_options()) : nullptr;
12249   }
12250   const tflite::LocalResponseNormalizationOptions *builtin_options_as_LocalResponseNormalizationOptions() const {
12251     return builtin_options_type() == tflite::BuiltinOptions_LocalResponseNormalizationOptions ? static_cast<const tflite::LocalResponseNormalizationOptions *>(builtin_options()) : nullptr;
12252   }
12253   const tflite::LSTMOptions *builtin_options_as_LSTMOptions() const {
12254     return builtin_options_type() == tflite::BuiltinOptions_LSTMOptions ? static_cast<const tflite::LSTMOptions *>(builtin_options()) : nullptr;
12255   }
12256   const tflite::ResizeBilinearOptions *builtin_options_as_ResizeBilinearOptions() const {
12257     return builtin_options_type() == tflite::BuiltinOptions_ResizeBilinearOptions ? static_cast<const tflite::ResizeBilinearOptions *>(builtin_options()) : nullptr;
12258   }
12259   const tflite::CallOptions *builtin_options_as_CallOptions() const {
12260     return builtin_options_type() == tflite::BuiltinOptions_CallOptions ? static_cast<const tflite::CallOptions *>(builtin_options()) : nullptr;
12261   }
12262   const tflite::ReshapeOptions *builtin_options_as_ReshapeOptions() const {
12263     return builtin_options_type() == tflite::BuiltinOptions_ReshapeOptions ? static_cast<const tflite::ReshapeOptions *>(builtin_options()) : nullptr;
12264   }
12265   const tflite::SkipGramOptions *builtin_options_as_SkipGramOptions() const {
12266     return builtin_options_type() == tflite::BuiltinOptions_SkipGramOptions ? static_cast<const tflite::SkipGramOptions *>(builtin_options()) : nullptr;
12267   }
12268   const tflite::SpaceToDepthOptions *builtin_options_as_SpaceToDepthOptions() const {
12269     return builtin_options_type() == tflite::BuiltinOptions_SpaceToDepthOptions ? static_cast<const tflite::SpaceToDepthOptions *>(builtin_options()) : nullptr;
12270   }
12271   const tflite::EmbeddingLookupSparseOptions *builtin_options_as_EmbeddingLookupSparseOptions() const {
12272     return builtin_options_type() == tflite::BuiltinOptions_EmbeddingLookupSparseOptions ? static_cast<const tflite::EmbeddingLookupSparseOptions *>(builtin_options()) : nullptr;
12273   }
12274   const tflite::MulOptions *builtin_options_as_MulOptions() const {
12275     return builtin_options_type() == tflite::BuiltinOptions_MulOptions ? static_cast<const tflite::MulOptions *>(builtin_options()) : nullptr;
12276   }
12277   const tflite::PadOptions *builtin_options_as_PadOptions() const {
12278     return builtin_options_type() == tflite::BuiltinOptions_PadOptions ? static_cast<const tflite::PadOptions *>(builtin_options()) : nullptr;
12279   }
12280   const tflite::GatherOptions *builtin_options_as_GatherOptions() const {
12281     return builtin_options_type() == tflite::BuiltinOptions_GatherOptions ? static_cast<const tflite::GatherOptions *>(builtin_options()) : nullptr;
12282   }
12283   const tflite::BatchToSpaceNDOptions *builtin_options_as_BatchToSpaceNDOptions() const {
12284     return builtin_options_type() == tflite::BuiltinOptions_BatchToSpaceNDOptions ? static_cast<const tflite::BatchToSpaceNDOptions *>(builtin_options()) : nullptr;
12285   }
12286   const tflite::SpaceToBatchNDOptions *builtin_options_as_SpaceToBatchNDOptions() const {
12287     return builtin_options_type() == tflite::BuiltinOptions_SpaceToBatchNDOptions ? static_cast<const tflite::SpaceToBatchNDOptions *>(builtin_options()) : nullptr;
12288   }
12289   const tflite::TransposeOptions *builtin_options_as_TransposeOptions() const {
12290     return builtin_options_type() == tflite::BuiltinOptions_TransposeOptions ? static_cast<const tflite::TransposeOptions *>(builtin_options()) : nullptr;
12291   }
12292   const tflite::ReducerOptions *builtin_options_as_ReducerOptions() const {
12293     return builtin_options_type() == tflite::BuiltinOptions_ReducerOptions ? static_cast<const tflite::ReducerOptions *>(builtin_options()) : nullptr;
12294   }
12295   const tflite::SubOptions *builtin_options_as_SubOptions() const {
12296     return builtin_options_type() == tflite::BuiltinOptions_SubOptions ? static_cast<const tflite::SubOptions *>(builtin_options()) : nullptr;
12297   }
12298   const tflite::DivOptions *builtin_options_as_DivOptions() const {
12299     return builtin_options_type() == tflite::BuiltinOptions_DivOptions ? static_cast<const tflite::DivOptions *>(builtin_options()) : nullptr;
12300   }
12301   const tflite::SqueezeOptions *builtin_options_as_SqueezeOptions() const {
12302     return builtin_options_type() == tflite::BuiltinOptions_SqueezeOptions ? static_cast<const tflite::SqueezeOptions *>(builtin_options()) : nullptr;
12303   }
12304   const tflite::SequenceRNNOptions *builtin_options_as_SequenceRNNOptions() const {
12305     return builtin_options_type() == tflite::BuiltinOptions_SequenceRNNOptions ? static_cast<const tflite::SequenceRNNOptions *>(builtin_options()) : nullptr;
12306   }
12307   const tflite::StridedSliceOptions *builtin_options_as_StridedSliceOptions() const {
12308     return builtin_options_type() == tflite::BuiltinOptions_StridedSliceOptions ? static_cast<const tflite::StridedSliceOptions *>(builtin_options()) : nullptr;
12309   }
12310   const tflite::ExpOptions *builtin_options_as_ExpOptions() const {
12311     return builtin_options_type() == tflite::BuiltinOptions_ExpOptions ? static_cast<const tflite::ExpOptions *>(builtin_options()) : nullptr;
12312   }
12313   const tflite::TopKV2Options *builtin_options_as_TopKV2Options() const {
12314     return builtin_options_type() == tflite::BuiltinOptions_TopKV2Options ? static_cast<const tflite::TopKV2Options *>(builtin_options()) : nullptr;
12315   }
12316   const tflite::SplitOptions *builtin_options_as_SplitOptions() const {
12317     return builtin_options_type() == tflite::BuiltinOptions_SplitOptions ? static_cast<const tflite::SplitOptions *>(builtin_options()) : nullptr;
12318   }
12319   const tflite::LogSoftmaxOptions *builtin_options_as_LogSoftmaxOptions() const {
12320     return builtin_options_type() == tflite::BuiltinOptions_LogSoftmaxOptions ? static_cast<const tflite::LogSoftmaxOptions *>(builtin_options()) : nullptr;
12321   }
12322   const tflite::CastOptions *builtin_options_as_CastOptions() const {
12323     return builtin_options_type() == tflite::BuiltinOptions_CastOptions ? static_cast<const tflite::CastOptions *>(builtin_options()) : nullptr;
12324   }
12325   const tflite::DequantizeOptions *builtin_options_as_DequantizeOptions() const {
12326     return builtin_options_type() == tflite::BuiltinOptions_DequantizeOptions ? static_cast<const tflite::DequantizeOptions *>(builtin_options()) : nullptr;
12327   }
12328   const tflite::MaximumMinimumOptions *builtin_options_as_MaximumMinimumOptions() const {
12329     return builtin_options_type() == tflite::BuiltinOptions_MaximumMinimumOptions ? static_cast<const tflite::MaximumMinimumOptions *>(builtin_options()) : nullptr;
12330   }
12331   const tflite::ArgMaxOptions *builtin_options_as_ArgMaxOptions() const {
12332     return builtin_options_type() == tflite::BuiltinOptions_ArgMaxOptions ? static_cast<const tflite::ArgMaxOptions *>(builtin_options()) : nullptr;
12333   }
12334   const tflite::LessOptions *builtin_options_as_LessOptions() const {
12335     return builtin_options_type() == tflite::BuiltinOptions_LessOptions ? static_cast<const tflite::LessOptions *>(builtin_options()) : nullptr;
12336   }
12337   const tflite::NegOptions *builtin_options_as_NegOptions() const {
12338     return builtin_options_type() == tflite::BuiltinOptions_NegOptions ? static_cast<const tflite::NegOptions *>(builtin_options()) : nullptr;
12339   }
12340   const tflite::PadV2Options *builtin_options_as_PadV2Options() const {
12341     return builtin_options_type() == tflite::BuiltinOptions_PadV2Options ? static_cast<const tflite::PadV2Options *>(builtin_options()) : nullptr;
12342   }
12343   const tflite::GreaterOptions *builtin_options_as_GreaterOptions() const {
12344     return builtin_options_type() == tflite::BuiltinOptions_GreaterOptions ? static_cast<const tflite::GreaterOptions *>(builtin_options()) : nullptr;
12345   }
12346   const tflite::GreaterEqualOptions *builtin_options_as_GreaterEqualOptions() const {
12347     return builtin_options_type() == tflite::BuiltinOptions_GreaterEqualOptions ? static_cast<const tflite::GreaterEqualOptions *>(builtin_options()) : nullptr;
12348   }
12349   const tflite::LessEqualOptions *builtin_options_as_LessEqualOptions() const {
12350     return builtin_options_type() == tflite::BuiltinOptions_LessEqualOptions ? static_cast<const tflite::LessEqualOptions *>(builtin_options()) : nullptr;
12351   }
12352   const tflite::SelectOptions *builtin_options_as_SelectOptions() const {
12353     return builtin_options_type() == tflite::BuiltinOptions_SelectOptions ? static_cast<const tflite::SelectOptions *>(builtin_options()) : nullptr;
12354   }
12355   const tflite::SliceOptions *builtin_options_as_SliceOptions() const {
12356     return builtin_options_type() == tflite::BuiltinOptions_SliceOptions ? static_cast<const tflite::SliceOptions *>(builtin_options()) : nullptr;
12357   }
12358   const tflite::TransposeConvOptions *builtin_options_as_TransposeConvOptions() const {
12359     return builtin_options_type() == tflite::BuiltinOptions_TransposeConvOptions ? static_cast<const tflite::TransposeConvOptions *>(builtin_options()) : nullptr;
12360   }
12361   const tflite::SparseToDenseOptions *builtin_options_as_SparseToDenseOptions() const {
12362     return builtin_options_type() == tflite::BuiltinOptions_SparseToDenseOptions ? static_cast<const tflite::SparseToDenseOptions *>(builtin_options()) : nullptr;
12363   }
12364   const tflite::TileOptions *builtin_options_as_TileOptions() const {
12365     return builtin_options_type() == tflite::BuiltinOptions_TileOptions ? static_cast<const tflite::TileOptions *>(builtin_options()) : nullptr;
12366   }
12367   const tflite::ExpandDimsOptions *builtin_options_as_ExpandDimsOptions() const {
12368     return builtin_options_type() == tflite::BuiltinOptions_ExpandDimsOptions ? static_cast<const tflite::ExpandDimsOptions *>(builtin_options()) : nullptr;
12369   }
12370   const tflite::EqualOptions *builtin_options_as_EqualOptions() const {
12371     return builtin_options_type() == tflite::BuiltinOptions_EqualOptions ? static_cast<const tflite::EqualOptions *>(builtin_options()) : nullptr;
12372   }
12373   const tflite::NotEqualOptions *builtin_options_as_NotEqualOptions() const {
12374     return builtin_options_type() == tflite::BuiltinOptions_NotEqualOptions ? static_cast<const tflite::NotEqualOptions *>(builtin_options()) : nullptr;
12375   }
12376   const tflite::ShapeOptions *builtin_options_as_ShapeOptions() const {
12377     return builtin_options_type() == tflite::BuiltinOptions_ShapeOptions ? static_cast<const tflite::ShapeOptions *>(builtin_options()) : nullptr;
12378   }
12379   const tflite::PowOptions *builtin_options_as_PowOptions() const {
12380     return builtin_options_type() == tflite::BuiltinOptions_PowOptions ? static_cast<const tflite::PowOptions *>(builtin_options()) : nullptr;
12381   }
12382   const tflite::ArgMinOptions *builtin_options_as_ArgMinOptions() const {
12383     return builtin_options_type() == tflite::BuiltinOptions_ArgMinOptions ? static_cast<const tflite::ArgMinOptions *>(builtin_options()) : nullptr;
12384   }
12385   const tflite::FakeQuantOptions *builtin_options_as_FakeQuantOptions() const {
12386     return builtin_options_type() == tflite::BuiltinOptions_FakeQuantOptions ? static_cast<const tflite::FakeQuantOptions *>(builtin_options()) : nullptr;
12387   }
12388   const tflite::PackOptions *builtin_options_as_PackOptions() const {
12389     return builtin_options_type() == tflite::BuiltinOptions_PackOptions ? static_cast<const tflite::PackOptions *>(builtin_options()) : nullptr;
12390   }
12391   const tflite::LogicalOrOptions *builtin_options_as_LogicalOrOptions() const {
12392     return builtin_options_type() == tflite::BuiltinOptions_LogicalOrOptions ? static_cast<const tflite::LogicalOrOptions *>(builtin_options()) : nullptr;
12393   }
12394   const tflite::OneHotOptions *builtin_options_as_OneHotOptions() const {
12395     return builtin_options_type() == tflite::BuiltinOptions_OneHotOptions ? static_cast<const tflite::OneHotOptions *>(builtin_options()) : nullptr;
12396   }
12397   const tflite::LogicalAndOptions *builtin_options_as_LogicalAndOptions() const {
12398     return builtin_options_type() == tflite::BuiltinOptions_LogicalAndOptions ? static_cast<const tflite::LogicalAndOptions *>(builtin_options()) : nullptr;
12399   }
12400   const tflite::LogicalNotOptions *builtin_options_as_LogicalNotOptions() const {
12401     return builtin_options_type() == tflite::BuiltinOptions_LogicalNotOptions ? static_cast<const tflite::LogicalNotOptions *>(builtin_options()) : nullptr;
12402   }
12403   const tflite::UnpackOptions *builtin_options_as_UnpackOptions() const {
12404     return builtin_options_type() == tflite::BuiltinOptions_UnpackOptions ? static_cast<const tflite::UnpackOptions *>(builtin_options()) : nullptr;
12405   }
12406   const tflite::FloorDivOptions *builtin_options_as_FloorDivOptions() const {
12407     return builtin_options_type() == tflite::BuiltinOptions_FloorDivOptions ? static_cast<const tflite::FloorDivOptions *>(builtin_options()) : nullptr;
12408   }
12409   const tflite::SquareOptions *builtin_options_as_SquareOptions() const {
12410     return builtin_options_type() == tflite::BuiltinOptions_SquareOptions ? static_cast<const tflite::SquareOptions *>(builtin_options()) : nullptr;
12411   }
12412   const tflite::ZerosLikeOptions *builtin_options_as_ZerosLikeOptions() const {
12413     return builtin_options_type() == tflite::BuiltinOptions_ZerosLikeOptions ? static_cast<const tflite::ZerosLikeOptions *>(builtin_options()) : nullptr;
12414   }
12415   const tflite::FillOptions *builtin_options_as_FillOptions() const {
12416     return builtin_options_type() == tflite::BuiltinOptions_FillOptions ? static_cast<const tflite::FillOptions *>(builtin_options()) : nullptr;
12417   }
12418   const tflite::BidirectionalSequenceLSTMOptions *builtin_options_as_BidirectionalSequenceLSTMOptions() const {
12419     return builtin_options_type() == tflite::BuiltinOptions_BidirectionalSequenceLSTMOptions ? static_cast<const tflite::BidirectionalSequenceLSTMOptions *>(builtin_options()) : nullptr;
12420   }
12421   const tflite::BidirectionalSequenceRNNOptions *builtin_options_as_BidirectionalSequenceRNNOptions() const {
12422     return builtin_options_type() == tflite::BuiltinOptions_BidirectionalSequenceRNNOptions ? static_cast<const tflite::BidirectionalSequenceRNNOptions *>(builtin_options()) : nullptr;
12423   }
12424   const tflite::UnidirectionalSequenceLSTMOptions *builtin_options_as_UnidirectionalSequenceLSTMOptions() const {
12425     return builtin_options_type() == tflite::BuiltinOptions_UnidirectionalSequenceLSTMOptions ? static_cast<const tflite::UnidirectionalSequenceLSTMOptions *>(builtin_options()) : nullptr;
12426   }
12427   const tflite::FloorModOptions *builtin_options_as_FloorModOptions() const {
12428     return builtin_options_type() == tflite::BuiltinOptions_FloorModOptions ? static_cast<const tflite::FloorModOptions *>(builtin_options()) : nullptr;
12429   }
12430   const tflite::RangeOptions *builtin_options_as_RangeOptions() const {
12431     return builtin_options_type() == tflite::BuiltinOptions_RangeOptions ? static_cast<const tflite::RangeOptions *>(builtin_options()) : nullptr;
12432   }
12433   const tflite::ResizeNearestNeighborOptions *builtin_options_as_ResizeNearestNeighborOptions() const {
12434     return builtin_options_type() == tflite::BuiltinOptions_ResizeNearestNeighborOptions ? static_cast<const tflite::ResizeNearestNeighborOptions *>(builtin_options()) : nullptr;
12435   }
12436   const tflite::LeakyReluOptions *builtin_options_as_LeakyReluOptions() const {
12437     return builtin_options_type() == tflite::BuiltinOptions_LeakyReluOptions ? static_cast<const tflite::LeakyReluOptions *>(builtin_options()) : nullptr;
12438   }
12439   const tflite::SquaredDifferenceOptions *builtin_options_as_SquaredDifferenceOptions() const {
12440     return builtin_options_type() == tflite::BuiltinOptions_SquaredDifferenceOptions ? static_cast<const tflite::SquaredDifferenceOptions *>(builtin_options()) : nullptr;
12441   }
12442   const tflite::MirrorPadOptions *builtin_options_as_MirrorPadOptions() const {
12443     return builtin_options_type() == tflite::BuiltinOptions_MirrorPadOptions ? static_cast<const tflite::MirrorPadOptions *>(builtin_options()) : nullptr;
12444   }
12445   const tflite::AbsOptions *builtin_options_as_AbsOptions() const {
12446     return builtin_options_type() == tflite::BuiltinOptions_AbsOptions ? static_cast<const tflite::AbsOptions *>(builtin_options()) : nullptr;
12447   }
12448   const tflite::SplitVOptions *builtin_options_as_SplitVOptions() const {
12449     return builtin_options_type() == tflite::BuiltinOptions_SplitVOptions ? static_cast<const tflite::SplitVOptions *>(builtin_options()) : nullptr;
12450   }
12451   const tflite::UniqueOptions *builtin_options_as_UniqueOptions() const {
12452     return builtin_options_type() == tflite::BuiltinOptions_UniqueOptions ? static_cast<const tflite::UniqueOptions *>(builtin_options()) : nullptr;
12453   }
12454   const tflite::ReverseV2Options *builtin_options_as_ReverseV2Options() const {
12455     return builtin_options_type() == tflite::BuiltinOptions_ReverseV2Options ? static_cast<const tflite::ReverseV2Options *>(builtin_options()) : nullptr;
12456   }
12457   const tflite::AddNOptions *builtin_options_as_AddNOptions() const {
12458     return builtin_options_type() == tflite::BuiltinOptions_AddNOptions ? static_cast<const tflite::AddNOptions *>(builtin_options()) : nullptr;
12459   }
12460   const tflite::GatherNdOptions *builtin_options_as_GatherNdOptions() const {
12461     return builtin_options_type() == tflite::BuiltinOptions_GatherNdOptions ? static_cast<const tflite::GatherNdOptions *>(builtin_options()) : nullptr;
12462   }
12463   const tflite::CosOptions *builtin_options_as_CosOptions() const {
12464     return builtin_options_type() == tflite::BuiltinOptions_CosOptions ? static_cast<const tflite::CosOptions *>(builtin_options()) : nullptr;
12465   }
12466   const tflite::WhereOptions *builtin_options_as_WhereOptions() const {
12467     return builtin_options_type() == tflite::BuiltinOptions_WhereOptions ? static_cast<const tflite::WhereOptions *>(builtin_options()) : nullptr;
12468   }
12469   const tflite::RankOptions *builtin_options_as_RankOptions() const {
12470     return builtin_options_type() == tflite::BuiltinOptions_RankOptions ? static_cast<const tflite::RankOptions *>(builtin_options()) : nullptr;
12471   }
12472   const tflite::ReverseSequenceOptions *builtin_options_as_ReverseSequenceOptions() const {
12473     return builtin_options_type() == tflite::BuiltinOptions_ReverseSequenceOptions ? static_cast<const tflite::ReverseSequenceOptions *>(builtin_options()) : nullptr;
12474   }
12475   const tflite::MatrixDiagOptions *builtin_options_as_MatrixDiagOptions() const {
12476     return builtin_options_type() == tflite::BuiltinOptions_MatrixDiagOptions ? static_cast<const tflite::MatrixDiagOptions *>(builtin_options()) : nullptr;
12477   }
12478   const tflite::QuantizeOptions *builtin_options_as_QuantizeOptions() const {
12479     return builtin_options_type() == tflite::BuiltinOptions_QuantizeOptions ? static_cast<const tflite::QuantizeOptions *>(builtin_options()) : nullptr;
12480   }
12481   const tflite::MatrixSetDiagOptions *builtin_options_as_MatrixSetDiagOptions() const {
12482     return builtin_options_type() == tflite::BuiltinOptions_MatrixSetDiagOptions ? static_cast<const tflite::MatrixSetDiagOptions *>(builtin_options()) : nullptr;
12483   }
12484   const tflite::HardSwishOptions *builtin_options_as_HardSwishOptions() const {
12485     return builtin_options_type() == tflite::BuiltinOptions_HardSwishOptions ? static_cast<const tflite::HardSwishOptions *>(builtin_options()) : nullptr;
12486   }
12487   const tflite::IfOptions *builtin_options_as_IfOptions() const {
12488     return builtin_options_type() == tflite::BuiltinOptions_IfOptions ? static_cast<const tflite::IfOptions *>(builtin_options()) : nullptr;
12489   }
12490   const tflite::WhileOptions *builtin_options_as_WhileOptions() const {
12491     return builtin_options_type() == tflite::BuiltinOptions_WhileOptions ? static_cast<const tflite::WhileOptions *>(builtin_options()) : nullptr;
12492   }
12493   const tflite::DepthToSpaceOptions *builtin_options_as_DepthToSpaceOptions() const {
12494     return builtin_options_type() == tflite::BuiltinOptions_DepthToSpaceOptions ? static_cast<const tflite::DepthToSpaceOptions *>(builtin_options()) : nullptr;
12495   }
12496   const tflite::NonMaxSuppressionV4Options *builtin_options_as_NonMaxSuppressionV4Options() const {
12497     return builtin_options_type() == tflite::BuiltinOptions_NonMaxSuppressionV4Options ? static_cast<const tflite::NonMaxSuppressionV4Options *>(builtin_options()) : nullptr;
12498   }
12499   const tflite::NonMaxSuppressionV5Options *builtin_options_as_NonMaxSuppressionV5Options() const {
12500     return builtin_options_type() == tflite::BuiltinOptions_NonMaxSuppressionV5Options ? static_cast<const tflite::NonMaxSuppressionV5Options *>(builtin_options()) : nullptr;
12501   }
12502   const tflite::ScatterNdOptions *builtin_options_as_ScatterNdOptions() const {
12503     return builtin_options_type() == tflite::BuiltinOptions_ScatterNdOptions ? static_cast<const tflite::ScatterNdOptions *>(builtin_options()) : nullptr;
12504   }
12505   const tflite::SelectV2Options *builtin_options_as_SelectV2Options() const {
12506     return builtin_options_type() == tflite::BuiltinOptions_SelectV2Options ? static_cast<const tflite::SelectV2Options *>(builtin_options()) : nullptr;
12507   }
12508   const tflite::DensifyOptions *builtin_options_as_DensifyOptions() const {
12509     return builtin_options_type() == tflite::BuiltinOptions_DensifyOptions ? static_cast<const tflite::DensifyOptions *>(builtin_options()) : nullptr;
12510   }
12511   const tflite::SegmentSumOptions *builtin_options_as_SegmentSumOptions() const {
12512     return builtin_options_type() == tflite::BuiltinOptions_SegmentSumOptions ? static_cast<const tflite::SegmentSumOptions *>(builtin_options()) : nullptr;
12513   }
12514   const tflite::BatchMatMulOptions *builtin_options_as_BatchMatMulOptions() const {
12515     return builtin_options_type() == tflite::BuiltinOptions_BatchMatMulOptions ? static_cast<const tflite::BatchMatMulOptions *>(builtin_options()) : nullptr;
12516   }
12517   const tflite::CumsumOptions *builtin_options_as_CumsumOptions() const {
12518     return builtin_options_type() == tflite::BuiltinOptions_CumsumOptions ? static_cast<const tflite::CumsumOptions *>(builtin_options()) : nullptr;
12519   }
12520   const tflite::CallOnceOptions *builtin_options_as_CallOnceOptions() const {
12521     return builtin_options_type() == tflite::BuiltinOptions_CallOnceOptions ? static_cast<const tflite::CallOnceOptions *>(builtin_options()) : nullptr;
12522   }
12523   const tflite::BroadcastToOptions *builtin_options_as_BroadcastToOptions() const {
12524     return builtin_options_type() == tflite::BuiltinOptions_BroadcastToOptions ? static_cast<const tflite::BroadcastToOptions *>(builtin_options()) : nullptr;
12525   }
12526   const tflite::Rfft2dOptions *builtin_options_as_Rfft2dOptions() const {
12527     return builtin_options_type() == tflite::BuiltinOptions_Rfft2dOptions ? static_cast<const tflite::Rfft2dOptions *>(builtin_options()) : nullptr;
12528   }
12529   const tflite::Conv3DOptions *builtin_options_as_Conv3DOptions() const {
12530     return builtin_options_type() == tflite::BuiltinOptions_Conv3DOptions ? static_cast<const tflite::Conv3DOptions *>(builtin_options()) : nullptr;
12531   }
12532   const tflite::HashtableOptions *builtin_options_as_HashtableOptions() const {
12533     return builtin_options_type() == tflite::BuiltinOptions_HashtableOptions ? static_cast<const tflite::HashtableOptions *>(builtin_options()) : nullptr;
12534   }
12535   const tflite::HashtableFindOptions *builtin_options_as_HashtableFindOptions() const {
12536     return builtin_options_type() == tflite::BuiltinOptions_HashtableFindOptions ? static_cast<const tflite::HashtableFindOptions *>(builtin_options()) : nullptr;
12537   }
12538   const tflite::HashtableImportOptions *builtin_options_as_HashtableImportOptions() const {
12539     return builtin_options_type() == tflite::BuiltinOptions_HashtableImportOptions ? static_cast<const tflite::HashtableImportOptions *>(builtin_options()) : nullptr;
12540   }
12541   const tflite::HashtableSizeOptions *builtin_options_as_HashtableSizeOptions() const {
12542     return builtin_options_type() == tflite::BuiltinOptions_HashtableSizeOptions ? static_cast<const tflite::HashtableSizeOptions *>(builtin_options()) : nullptr;
12543   }
12544   const tflite::VarHandleOptions *builtin_options_as_VarHandleOptions() const {
12545     return builtin_options_type() == tflite::BuiltinOptions_VarHandleOptions ? static_cast<const tflite::VarHandleOptions *>(builtin_options()) : nullptr;
12546   }
12547   const tflite::ReadVariableOptions *builtin_options_as_ReadVariableOptions() const {
12548     return builtin_options_type() == tflite::BuiltinOptions_ReadVariableOptions ? static_cast<const tflite::ReadVariableOptions *>(builtin_options()) : nullptr;
12549   }
12550   const tflite::AssignVariableOptions *builtin_options_as_AssignVariableOptions() const {
12551     return builtin_options_type() == tflite::BuiltinOptions_AssignVariableOptions ? static_cast<const tflite::AssignVariableOptions *>(builtin_options()) : nullptr;
12552   }
12553   const tflite::RandomOptions *builtin_options_as_RandomOptions() const {
12554     return builtin_options_type() == tflite::BuiltinOptions_RandomOptions ? static_cast<const tflite::RandomOptions *>(builtin_options()) : nullptr;
12555   }
12556   const tflite::BucketizeOptions *builtin_options_as_BucketizeOptions() const {
12557     return builtin_options_type() == tflite::BuiltinOptions_BucketizeOptions ? static_cast<const tflite::BucketizeOptions *>(builtin_options()) : nullptr;
12558   }
12559   const tflite::GeluOptions *builtin_options_as_GeluOptions() const {
12560     return builtin_options_type() == tflite::BuiltinOptions_GeluOptions ? static_cast<const tflite::GeluOptions *>(builtin_options()) : nullptr;
12561   }
12562   const tflite::DynamicUpdateSliceOptions *builtin_options_as_DynamicUpdateSliceOptions() const {
12563     return builtin_options_type() == tflite::BuiltinOptions_DynamicUpdateSliceOptions ? static_cast<const tflite::DynamicUpdateSliceOptions *>(builtin_options()) : nullptr;
12564   }
12565   const tflite::UnsortedSegmentProdOptions *builtin_options_as_UnsortedSegmentProdOptions() const {
12566     return builtin_options_type() == tflite::BuiltinOptions_UnsortedSegmentProdOptions ? static_cast<const tflite::UnsortedSegmentProdOptions *>(builtin_options()) : nullptr;
12567   }
12568   const tflite::UnsortedSegmentMaxOptions *builtin_options_as_UnsortedSegmentMaxOptions() const {
12569     return builtin_options_type() == tflite::BuiltinOptions_UnsortedSegmentMaxOptions ? static_cast<const tflite::UnsortedSegmentMaxOptions *>(builtin_options()) : nullptr;
12570   }
12571   const tflite::UnsortedSegmentMinOptions *builtin_options_as_UnsortedSegmentMinOptions() const {
12572     return builtin_options_type() == tflite::BuiltinOptions_UnsortedSegmentMinOptions ? static_cast<const tflite::UnsortedSegmentMinOptions *>(builtin_options()) : nullptr;
12573   }
12574   const tflite::UnsortedSegmentSumOptions *builtin_options_as_UnsortedSegmentSumOptions() const {
12575     return builtin_options_type() == tflite::BuiltinOptions_UnsortedSegmentSumOptions ? static_cast<const tflite::UnsortedSegmentSumOptions *>(builtin_options()) : nullptr;
12576   }
12577   const tflite::ATan2Options *builtin_options_as_ATan2Options() const {
12578     return builtin_options_type() == tflite::BuiltinOptions_ATan2Options ? static_cast<const tflite::ATan2Options *>(builtin_options()) : nullptr;
12579   }
12580   const tflite::SignOptions *builtin_options_as_SignOptions() const {
12581     return builtin_options_type() == tflite::BuiltinOptions_SignOptions ? static_cast<const tflite::SignOptions *>(builtin_options()) : nullptr;
12582   }
12583   void *mutable_builtin_options() {
12584     return GetPointer<void *>(VT_BUILTIN_OPTIONS);
12585   }
12586   const flatbuffers::Vector<uint8_t> *custom_options() const {
12587     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CUSTOM_OPTIONS);
12588   }
12589   flatbuffers::Vector<uint8_t> *mutable_custom_options() {
12590     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_CUSTOM_OPTIONS);
12591   }
12592   tflite::CustomOptionsFormat custom_options_format() const {
12593     return static_cast<tflite::CustomOptionsFormat>(GetField<int8_t>(VT_CUSTOM_OPTIONS_FORMAT, 0));
12594   }
12595   bool mutate_custom_options_format(tflite::CustomOptionsFormat _custom_options_format = static_cast<tflite::CustomOptionsFormat>(0)) {
12596     return SetField<int8_t>(VT_CUSTOM_OPTIONS_FORMAT, static_cast<int8_t>(_custom_options_format), 0);
12597   }
12598   const flatbuffers::Vector<uint8_t> *mutating_variable_inputs() const {
12599     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MUTATING_VARIABLE_INPUTS);
12600   }
12601   flatbuffers::Vector<uint8_t> *mutable_mutating_variable_inputs() {
12602     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_MUTATING_VARIABLE_INPUTS);
12603   }
12604   const flatbuffers::Vector<int32_t> *intermediates() const {
12605     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INTERMEDIATES);
12606   }
12607   flatbuffers::Vector<int32_t> *mutable_intermediates() {
12608     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_INTERMEDIATES);
12609   }
12610   bool Verify(flatbuffers::Verifier &verifier) const {
12611     return VerifyTableStart(verifier) &&
12612            VerifyField<uint32_t>(verifier, VT_OPCODE_INDEX, 4) &&
12613            VerifyOffset(verifier, VT_INPUTS) &&
12614            verifier.VerifyVector(inputs()) &&
12615            VerifyOffset(verifier, VT_OUTPUTS) &&
12616            verifier.VerifyVector(outputs()) &&
12617            VerifyField<uint8_t>(verifier, VT_BUILTIN_OPTIONS_TYPE, 1) &&
12618            VerifyOffset(verifier, VT_BUILTIN_OPTIONS) &&
12619            VerifyBuiltinOptions(verifier, builtin_options(), builtin_options_type()) &&
12620            VerifyOffset(verifier, VT_CUSTOM_OPTIONS) &&
12621            verifier.VerifyVector(custom_options()) &&
12622            VerifyField<int8_t>(verifier, VT_CUSTOM_OPTIONS_FORMAT, 1) &&
12623            VerifyOffset(verifier, VT_MUTATING_VARIABLE_INPUTS) &&
12624            verifier.VerifyVector(mutating_variable_inputs()) &&
12625            VerifyOffset(verifier, VT_INTERMEDIATES) &&
12626            verifier.VerifyVector(intermediates()) &&
12627            verifier.EndTable();
12628   }
12629   OperatorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
12630   void UnPackTo(OperatorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
12631   static flatbuffers::Offset<Operator> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
12632 };
12633 
12634 template<> inline const tflite::Conv2DOptions *Operator::builtin_options_as<tflite::Conv2DOptions>() const {
12635   return builtin_options_as_Conv2DOptions();
12636 }
12637 
12638 template<> inline const tflite::DepthwiseConv2DOptions *Operator::builtin_options_as<tflite::DepthwiseConv2DOptions>() const {
12639   return builtin_options_as_DepthwiseConv2DOptions();
12640 }
12641 
12642 template<> inline const tflite::ConcatEmbeddingsOptions *Operator::builtin_options_as<tflite::ConcatEmbeddingsOptions>() const {
12643   return builtin_options_as_ConcatEmbeddingsOptions();
12644 }
12645 
12646 template<> inline const tflite::LSHProjectionOptions *Operator::builtin_options_as<tflite::LSHProjectionOptions>() const {
12647   return builtin_options_as_LSHProjectionOptions();
12648 }
12649 
12650 template<> inline const tflite::Pool2DOptions *Operator::builtin_options_as<tflite::Pool2DOptions>() const {
12651   return builtin_options_as_Pool2DOptions();
12652 }
12653 
12654 template<> inline const tflite::SVDFOptions *Operator::builtin_options_as<tflite::SVDFOptions>() const {
12655   return builtin_options_as_SVDFOptions();
12656 }
12657 
12658 template<> inline const tflite::RNNOptions *Operator::builtin_options_as<tflite::RNNOptions>() const {
12659   return builtin_options_as_RNNOptions();
12660 }
12661 
12662 template<> inline const tflite::FullyConnectedOptions *Operator::builtin_options_as<tflite::FullyConnectedOptions>() const {
12663   return builtin_options_as_FullyConnectedOptions();
12664 }
12665 
12666 template<> inline const tflite::SoftmaxOptions *Operator::builtin_options_as<tflite::SoftmaxOptions>() const {
12667   return builtin_options_as_SoftmaxOptions();
12668 }
12669 
12670 template<> inline const tflite::ConcatenationOptions *Operator::builtin_options_as<tflite::ConcatenationOptions>() const {
12671   return builtin_options_as_ConcatenationOptions();
12672 }
12673 
12674 template<> inline const tflite::AddOptions *Operator::builtin_options_as<tflite::AddOptions>() const {
12675   return builtin_options_as_AddOptions();
12676 }
12677 
12678 template<> inline const tflite::L2NormOptions *Operator::builtin_options_as<tflite::L2NormOptions>() const {
12679   return builtin_options_as_L2NormOptions();
12680 }
12681 
12682 template<> inline const tflite::LocalResponseNormalizationOptions *Operator::builtin_options_as<tflite::LocalResponseNormalizationOptions>() const {
12683   return builtin_options_as_LocalResponseNormalizationOptions();
12684 }
12685 
12686 template<> inline const tflite::LSTMOptions *Operator::builtin_options_as<tflite::LSTMOptions>() const {
12687   return builtin_options_as_LSTMOptions();
12688 }
12689 
12690 template<> inline const tflite::ResizeBilinearOptions *Operator::builtin_options_as<tflite::ResizeBilinearOptions>() const {
12691   return builtin_options_as_ResizeBilinearOptions();
12692 }
12693 
12694 template<> inline const tflite::CallOptions *Operator::builtin_options_as<tflite::CallOptions>() const {
12695   return builtin_options_as_CallOptions();
12696 }
12697 
12698 template<> inline const tflite::ReshapeOptions *Operator::builtin_options_as<tflite::ReshapeOptions>() const {
12699   return builtin_options_as_ReshapeOptions();
12700 }
12701 
12702 template<> inline const tflite::SkipGramOptions *Operator::builtin_options_as<tflite::SkipGramOptions>() const {
12703   return builtin_options_as_SkipGramOptions();
12704 }
12705 
12706 template<> inline const tflite::SpaceToDepthOptions *Operator::builtin_options_as<tflite::SpaceToDepthOptions>() const {
12707   return builtin_options_as_SpaceToDepthOptions();
12708 }
12709 
12710 template<> inline const tflite::EmbeddingLookupSparseOptions *Operator::builtin_options_as<tflite::EmbeddingLookupSparseOptions>() const {
12711   return builtin_options_as_EmbeddingLookupSparseOptions();
12712 }
12713 
12714 template<> inline const tflite::MulOptions *Operator::builtin_options_as<tflite::MulOptions>() const {
12715   return builtin_options_as_MulOptions();
12716 }
12717 
12718 template<> inline const tflite::PadOptions *Operator::builtin_options_as<tflite::PadOptions>() const {
12719   return builtin_options_as_PadOptions();
12720 }
12721 
12722 template<> inline const tflite::GatherOptions *Operator::builtin_options_as<tflite::GatherOptions>() const {
12723   return builtin_options_as_GatherOptions();
12724 }
12725 
12726 template<> inline const tflite::BatchToSpaceNDOptions *Operator::builtin_options_as<tflite::BatchToSpaceNDOptions>() const {
12727   return builtin_options_as_BatchToSpaceNDOptions();
12728 }
12729 
12730 template<> inline const tflite::SpaceToBatchNDOptions *Operator::builtin_options_as<tflite::SpaceToBatchNDOptions>() const {
12731   return builtin_options_as_SpaceToBatchNDOptions();
12732 }
12733 
12734 template<> inline const tflite::TransposeOptions *Operator::builtin_options_as<tflite::TransposeOptions>() const {
12735   return builtin_options_as_TransposeOptions();
12736 }
12737 
12738 template<> inline const tflite::ReducerOptions *Operator::builtin_options_as<tflite::ReducerOptions>() const {
12739   return builtin_options_as_ReducerOptions();
12740 }
12741 
12742 template<> inline const tflite::SubOptions *Operator::builtin_options_as<tflite::SubOptions>() const {
12743   return builtin_options_as_SubOptions();
12744 }
12745 
12746 template<> inline const tflite::DivOptions *Operator::builtin_options_as<tflite::DivOptions>() const {
12747   return builtin_options_as_DivOptions();
12748 }
12749 
12750 template<> inline const tflite::SqueezeOptions *Operator::builtin_options_as<tflite::SqueezeOptions>() const {
12751   return builtin_options_as_SqueezeOptions();
12752 }
12753 
12754 template<> inline const tflite::SequenceRNNOptions *Operator::builtin_options_as<tflite::SequenceRNNOptions>() const {
12755   return builtin_options_as_SequenceRNNOptions();
12756 }
12757 
12758 template<> inline const tflite::StridedSliceOptions *Operator::builtin_options_as<tflite::StridedSliceOptions>() const {
12759   return builtin_options_as_StridedSliceOptions();
12760 }
12761 
12762 template<> inline const tflite::ExpOptions *Operator::builtin_options_as<tflite::ExpOptions>() const {
12763   return builtin_options_as_ExpOptions();
12764 }
12765 
12766 template<> inline const tflite::TopKV2Options *Operator::builtin_options_as<tflite::TopKV2Options>() const {
12767   return builtin_options_as_TopKV2Options();
12768 }
12769 
12770 template<> inline const tflite::SplitOptions *Operator::builtin_options_as<tflite::SplitOptions>() const {
12771   return builtin_options_as_SplitOptions();
12772 }
12773 
12774 template<> inline const tflite::LogSoftmaxOptions *Operator::builtin_options_as<tflite::LogSoftmaxOptions>() const {
12775   return builtin_options_as_LogSoftmaxOptions();
12776 }
12777 
12778 template<> inline const tflite::CastOptions *Operator::builtin_options_as<tflite::CastOptions>() const {
12779   return builtin_options_as_CastOptions();
12780 }
12781 
12782 template<> inline const tflite::DequantizeOptions *Operator::builtin_options_as<tflite::DequantizeOptions>() const {
12783   return builtin_options_as_DequantizeOptions();
12784 }
12785 
12786 template<> inline const tflite::MaximumMinimumOptions *Operator::builtin_options_as<tflite::MaximumMinimumOptions>() const {
12787   return builtin_options_as_MaximumMinimumOptions();
12788 }
12789 
12790 template<> inline const tflite::ArgMaxOptions *Operator::builtin_options_as<tflite::ArgMaxOptions>() const {
12791   return builtin_options_as_ArgMaxOptions();
12792 }
12793 
12794 template<> inline const tflite::LessOptions *Operator::builtin_options_as<tflite::LessOptions>() const {
12795   return builtin_options_as_LessOptions();
12796 }
12797 
12798 template<> inline const tflite::NegOptions *Operator::builtin_options_as<tflite::NegOptions>() const {
12799   return builtin_options_as_NegOptions();
12800 }
12801 
12802 template<> inline const tflite::PadV2Options *Operator::builtin_options_as<tflite::PadV2Options>() const {
12803   return builtin_options_as_PadV2Options();
12804 }
12805 
12806 template<> inline const tflite::GreaterOptions *Operator::builtin_options_as<tflite::GreaterOptions>() const {
12807   return builtin_options_as_GreaterOptions();
12808 }
12809 
12810 template<> inline const tflite::GreaterEqualOptions *Operator::builtin_options_as<tflite::GreaterEqualOptions>() const {
12811   return builtin_options_as_GreaterEqualOptions();
12812 }
12813 
12814 template<> inline const tflite::LessEqualOptions *Operator::builtin_options_as<tflite::LessEqualOptions>() const {
12815   return builtin_options_as_LessEqualOptions();
12816 }
12817 
12818 template<> inline const tflite::SelectOptions *Operator::builtin_options_as<tflite::SelectOptions>() const {
12819   return builtin_options_as_SelectOptions();
12820 }
12821 
12822 template<> inline const tflite::SliceOptions *Operator::builtin_options_as<tflite::SliceOptions>() const {
12823   return builtin_options_as_SliceOptions();
12824 }
12825 
12826 template<> inline const tflite::TransposeConvOptions *Operator::builtin_options_as<tflite::TransposeConvOptions>() const {
12827   return builtin_options_as_TransposeConvOptions();
12828 }
12829 
12830 template<> inline const tflite::SparseToDenseOptions *Operator::builtin_options_as<tflite::SparseToDenseOptions>() const {
12831   return builtin_options_as_SparseToDenseOptions();
12832 }
12833 
12834 template<> inline const tflite::TileOptions *Operator::builtin_options_as<tflite::TileOptions>() const {
12835   return builtin_options_as_TileOptions();
12836 }
12837 
12838 template<> inline const tflite::ExpandDimsOptions *Operator::builtin_options_as<tflite::ExpandDimsOptions>() const {
12839   return builtin_options_as_ExpandDimsOptions();
12840 }
12841 
12842 template<> inline const tflite::EqualOptions *Operator::builtin_options_as<tflite::EqualOptions>() const {
12843   return builtin_options_as_EqualOptions();
12844 }
12845 
12846 template<> inline const tflite::NotEqualOptions *Operator::builtin_options_as<tflite::NotEqualOptions>() const {
12847   return builtin_options_as_NotEqualOptions();
12848 }
12849 
12850 template<> inline const tflite::ShapeOptions *Operator::builtin_options_as<tflite::ShapeOptions>() const {
12851   return builtin_options_as_ShapeOptions();
12852 }
12853 
12854 template<> inline const tflite::PowOptions *Operator::builtin_options_as<tflite::PowOptions>() const {
12855   return builtin_options_as_PowOptions();
12856 }
12857 
12858 template<> inline const tflite::ArgMinOptions *Operator::builtin_options_as<tflite::ArgMinOptions>() const {
12859   return builtin_options_as_ArgMinOptions();
12860 }
12861 
12862 template<> inline const tflite::FakeQuantOptions *Operator::builtin_options_as<tflite::FakeQuantOptions>() const {
12863   return builtin_options_as_FakeQuantOptions();
12864 }
12865 
12866 template<> inline const tflite::PackOptions *Operator::builtin_options_as<tflite::PackOptions>() const {
12867   return builtin_options_as_PackOptions();
12868 }
12869 
12870 template<> inline const tflite::LogicalOrOptions *Operator::builtin_options_as<tflite::LogicalOrOptions>() const {
12871   return builtin_options_as_LogicalOrOptions();
12872 }
12873 
12874 template<> inline const tflite::OneHotOptions *Operator::builtin_options_as<tflite::OneHotOptions>() const {
12875   return builtin_options_as_OneHotOptions();
12876 }
12877 
12878 template<> inline const tflite::LogicalAndOptions *Operator::builtin_options_as<tflite::LogicalAndOptions>() const {
12879   return builtin_options_as_LogicalAndOptions();
12880 }
12881 
12882 template<> inline const tflite::LogicalNotOptions *Operator::builtin_options_as<tflite::LogicalNotOptions>() const {
12883   return builtin_options_as_LogicalNotOptions();
12884 }
12885 
12886 template<> inline const tflite::UnpackOptions *Operator::builtin_options_as<tflite::UnpackOptions>() const {
12887   return builtin_options_as_UnpackOptions();
12888 }
12889 
12890 template<> inline const tflite::FloorDivOptions *Operator::builtin_options_as<tflite::FloorDivOptions>() const {
12891   return builtin_options_as_FloorDivOptions();
12892 }
12893 
12894 template<> inline const tflite::SquareOptions *Operator::builtin_options_as<tflite::SquareOptions>() const {
12895   return builtin_options_as_SquareOptions();
12896 }
12897 
12898 template<> inline const tflite::ZerosLikeOptions *Operator::builtin_options_as<tflite::ZerosLikeOptions>() const {
12899   return builtin_options_as_ZerosLikeOptions();
12900 }
12901 
12902 template<> inline const tflite::FillOptions *Operator::builtin_options_as<tflite::FillOptions>() const {
12903   return builtin_options_as_FillOptions();
12904 }
12905 
12906 template<> inline const tflite::BidirectionalSequenceLSTMOptions *Operator::builtin_options_as<tflite::BidirectionalSequenceLSTMOptions>() const {
12907   return builtin_options_as_BidirectionalSequenceLSTMOptions();
12908 }
12909 
12910 template<> inline const tflite::BidirectionalSequenceRNNOptions *Operator::builtin_options_as<tflite::BidirectionalSequenceRNNOptions>() const {
12911   return builtin_options_as_BidirectionalSequenceRNNOptions();
12912 }
12913 
12914 template<> inline const tflite::UnidirectionalSequenceLSTMOptions *Operator::builtin_options_as<tflite::UnidirectionalSequenceLSTMOptions>() const {
12915   return builtin_options_as_UnidirectionalSequenceLSTMOptions();
12916 }
12917 
12918 template<> inline const tflite::FloorModOptions *Operator::builtin_options_as<tflite::FloorModOptions>() const {
12919   return builtin_options_as_FloorModOptions();
12920 }
12921 
12922 template<> inline const tflite::RangeOptions *Operator::builtin_options_as<tflite::RangeOptions>() const {
12923   return builtin_options_as_RangeOptions();
12924 }
12925 
12926 template<> inline const tflite::ResizeNearestNeighborOptions *Operator::builtin_options_as<tflite::ResizeNearestNeighborOptions>() const {
12927   return builtin_options_as_ResizeNearestNeighborOptions();
12928 }
12929 
12930 template<> inline const tflite::LeakyReluOptions *Operator::builtin_options_as<tflite::LeakyReluOptions>() const {
12931   return builtin_options_as_LeakyReluOptions();
12932 }
12933 
12934 template<> inline const tflite::SquaredDifferenceOptions *Operator::builtin_options_as<tflite::SquaredDifferenceOptions>() const {
12935   return builtin_options_as_SquaredDifferenceOptions();
12936 }
12937 
12938 template<> inline const tflite::MirrorPadOptions *Operator::builtin_options_as<tflite::MirrorPadOptions>() const {
12939   return builtin_options_as_MirrorPadOptions();
12940 }
12941 
12942 template<> inline const tflite::AbsOptions *Operator::builtin_options_as<tflite::AbsOptions>() const {
12943   return builtin_options_as_AbsOptions();
12944 }
12945 
12946 template<> inline const tflite::SplitVOptions *Operator::builtin_options_as<tflite::SplitVOptions>() const {
12947   return builtin_options_as_SplitVOptions();
12948 }
12949 
12950 template<> inline const tflite::UniqueOptions *Operator::builtin_options_as<tflite::UniqueOptions>() const {
12951   return builtin_options_as_UniqueOptions();
12952 }
12953 
12954 template<> inline const tflite::ReverseV2Options *Operator::builtin_options_as<tflite::ReverseV2Options>() const {
12955   return builtin_options_as_ReverseV2Options();
12956 }
12957 
12958 template<> inline const tflite::AddNOptions *Operator::builtin_options_as<tflite::AddNOptions>() const {
12959   return builtin_options_as_AddNOptions();
12960 }
12961 
12962 template<> inline const tflite::GatherNdOptions *Operator::builtin_options_as<tflite::GatherNdOptions>() const {
12963   return builtin_options_as_GatherNdOptions();
12964 }
12965 
12966 template<> inline const tflite::CosOptions *Operator::builtin_options_as<tflite::CosOptions>() const {
12967   return builtin_options_as_CosOptions();
12968 }
12969 
12970 template<> inline const tflite::WhereOptions *Operator::builtin_options_as<tflite::WhereOptions>() const {
12971   return builtin_options_as_WhereOptions();
12972 }
12973 
12974 template<> inline const tflite::RankOptions *Operator::builtin_options_as<tflite::RankOptions>() const {
12975   return builtin_options_as_RankOptions();
12976 }
12977 
12978 template<> inline const tflite::ReverseSequenceOptions *Operator::builtin_options_as<tflite::ReverseSequenceOptions>() const {
12979   return builtin_options_as_ReverseSequenceOptions();
12980 }
12981 
12982 template<> inline const tflite::MatrixDiagOptions *Operator::builtin_options_as<tflite::MatrixDiagOptions>() const {
12983   return builtin_options_as_MatrixDiagOptions();
12984 }
12985 
12986 template<> inline const tflite::QuantizeOptions *Operator::builtin_options_as<tflite::QuantizeOptions>() const {
12987   return builtin_options_as_QuantizeOptions();
12988 }
12989 
12990 template<> inline const tflite::MatrixSetDiagOptions *Operator::builtin_options_as<tflite::MatrixSetDiagOptions>() const {
12991   return builtin_options_as_MatrixSetDiagOptions();
12992 }
12993 
12994 template<> inline const tflite::HardSwishOptions *Operator::builtin_options_as<tflite::HardSwishOptions>() const {
12995   return builtin_options_as_HardSwishOptions();
12996 }
12997 
12998 template<> inline const tflite::IfOptions *Operator::builtin_options_as<tflite::IfOptions>() const {
12999   return builtin_options_as_IfOptions();
13000 }
13001 
13002 template<> inline const tflite::WhileOptions *Operator::builtin_options_as<tflite::WhileOptions>() const {
13003   return builtin_options_as_WhileOptions();
13004 }
13005 
13006 template<> inline const tflite::DepthToSpaceOptions *Operator::builtin_options_as<tflite::DepthToSpaceOptions>() const {
13007   return builtin_options_as_DepthToSpaceOptions();
13008 }
13009 
13010 template<> inline const tflite::NonMaxSuppressionV4Options *Operator::builtin_options_as<tflite::NonMaxSuppressionV4Options>() const {
13011   return builtin_options_as_NonMaxSuppressionV4Options();
13012 }
13013 
13014 template<> inline const tflite::NonMaxSuppressionV5Options *Operator::builtin_options_as<tflite::NonMaxSuppressionV5Options>() const {
13015   return builtin_options_as_NonMaxSuppressionV5Options();
13016 }
13017 
13018 template<> inline const tflite::ScatterNdOptions *Operator::builtin_options_as<tflite::ScatterNdOptions>() const {
13019   return builtin_options_as_ScatterNdOptions();
13020 }
13021 
13022 template<> inline const tflite::SelectV2Options *Operator::builtin_options_as<tflite::SelectV2Options>() const {
13023   return builtin_options_as_SelectV2Options();
13024 }
13025 
13026 template<> inline const tflite::DensifyOptions *Operator::builtin_options_as<tflite::DensifyOptions>() const {
13027   return builtin_options_as_DensifyOptions();
13028 }
13029 
13030 template<> inline const tflite::SegmentSumOptions *Operator::builtin_options_as<tflite::SegmentSumOptions>() const {
13031   return builtin_options_as_SegmentSumOptions();
13032 }
13033 
13034 template<> inline const tflite::BatchMatMulOptions *Operator::builtin_options_as<tflite::BatchMatMulOptions>() const {
13035   return builtin_options_as_BatchMatMulOptions();
13036 }
13037 
13038 template<> inline const tflite::CumsumOptions *Operator::builtin_options_as<tflite::CumsumOptions>() const {
13039   return builtin_options_as_CumsumOptions();
13040 }
13041 
13042 template<> inline const tflite::CallOnceOptions *Operator::builtin_options_as<tflite::CallOnceOptions>() const {
13043   return builtin_options_as_CallOnceOptions();
13044 }
13045 
13046 template<> inline const tflite::BroadcastToOptions *Operator::builtin_options_as<tflite::BroadcastToOptions>() const {
13047   return builtin_options_as_BroadcastToOptions();
13048 }
13049 
13050 template<> inline const tflite::Rfft2dOptions *Operator::builtin_options_as<tflite::Rfft2dOptions>() const {
13051   return builtin_options_as_Rfft2dOptions();
13052 }
13053 
13054 template<> inline const tflite::Conv3DOptions *Operator::builtin_options_as<tflite::Conv3DOptions>() const {
13055   return builtin_options_as_Conv3DOptions();
13056 }
13057 
13058 template<> inline const tflite::HashtableOptions *Operator::builtin_options_as<tflite::HashtableOptions>() const {
13059   return builtin_options_as_HashtableOptions();
13060 }
13061 
13062 template<> inline const tflite::HashtableFindOptions *Operator::builtin_options_as<tflite::HashtableFindOptions>() const {
13063   return builtin_options_as_HashtableFindOptions();
13064 }
13065 
13066 template<> inline const tflite::HashtableImportOptions *Operator::builtin_options_as<tflite::HashtableImportOptions>() const {
13067   return builtin_options_as_HashtableImportOptions();
13068 }
13069 
13070 template<> inline const tflite::HashtableSizeOptions *Operator::builtin_options_as<tflite::HashtableSizeOptions>() const {
13071   return builtin_options_as_HashtableSizeOptions();
13072 }
13073 
13074 template<> inline const tflite::VarHandleOptions *Operator::builtin_options_as<tflite::VarHandleOptions>() const {
13075   return builtin_options_as_VarHandleOptions();
13076 }
13077 
13078 template<> inline const tflite::ReadVariableOptions *Operator::builtin_options_as<tflite::ReadVariableOptions>() const {
13079   return builtin_options_as_ReadVariableOptions();
13080 }
13081 
13082 template<> inline const tflite::AssignVariableOptions *Operator::builtin_options_as<tflite::AssignVariableOptions>() const {
13083   return builtin_options_as_AssignVariableOptions();
13084 }
13085 
13086 template<> inline const tflite::RandomOptions *Operator::builtin_options_as<tflite::RandomOptions>() const {
13087   return builtin_options_as_RandomOptions();
13088 }
13089 
13090 template<> inline const tflite::BucketizeOptions *Operator::builtin_options_as<tflite::BucketizeOptions>() const {
13091   return builtin_options_as_BucketizeOptions();
13092 }
13093 
13094 template<> inline const tflite::GeluOptions *Operator::builtin_options_as<tflite::GeluOptions>() const {
13095   return builtin_options_as_GeluOptions();
13096 }
13097 
13098 template<> inline const tflite::DynamicUpdateSliceOptions *Operator::builtin_options_as<tflite::DynamicUpdateSliceOptions>() const {
13099   return builtin_options_as_DynamicUpdateSliceOptions();
13100 }
13101 
13102 template<> inline const tflite::UnsortedSegmentProdOptions *Operator::builtin_options_as<tflite::UnsortedSegmentProdOptions>() const {
13103   return builtin_options_as_UnsortedSegmentProdOptions();
13104 }
13105 
13106 template<> inline const tflite::UnsortedSegmentMaxOptions *Operator::builtin_options_as<tflite::UnsortedSegmentMaxOptions>() const {
13107   return builtin_options_as_UnsortedSegmentMaxOptions();
13108 }
13109 
13110 template<> inline const tflite::UnsortedSegmentMinOptions *Operator::builtin_options_as<tflite::UnsortedSegmentMinOptions>() const {
13111   return builtin_options_as_UnsortedSegmentMinOptions();
13112 }
13113 
13114 template<> inline const tflite::UnsortedSegmentSumOptions *Operator::builtin_options_as<tflite::UnsortedSegmentSumOptions>() const {
13115   return builtin_options_as_UnsortedSegmentSumOptions();
13116 }
13117 
13118 template<> inline const tflite::ATan2Options *Operator::builtin_options_as<tflite::ATan2Options>() const {
13119   return builtin_options_as_ATan2Options();
13120 }
13121 
13122 template<> inline const tflite::SignOptions *Operator::builtin_options_as<tflite::SignOptions>() const {
13123   return builtin_options_as_SignOptions();
13124 }
13125 
13126 struct OperatorBuilder {
13127   typedef Operator Table;
13128   flatbuffers::FlatBufferBuilder &fbb_;
13129   flatbuffers::uoffset_t start_;
13130   void add_opcode_index(uint32_t opcode_index) {
13131     fbb_.AddElement<uint32_t>(Operator::VT_OPCODE_INDEX, opcode_index, 0);
13132   }
13133   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs) {
13134     fbb_.AddOffset(Operator::VT_INPUTS, inputs);
13135   }
13136   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs) {
13137     fbb_.AddOffset(Operator::VT_OUTPUTS, outputs);
13138   }
13139   void add_builtin_options_type(tflite::BuiltinOptions builtin_options_type) {
13140     fbb_.AddElement<uint8_t>(Operator::VT_BUILTIN_OPTIONS_TYPE, static_cast<uint8_t>(builtin_options_type), 0);
13141   }
13142   void add_builtin_options(flatbuffers::Offset<void> builtin_options) {
13143     fbb_.AddOffset(Operator::VT_BUILTIN_OPTIONS, builtin_options);
13144   }
13145   void add_custom_options(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom_options) {
13146     fbb_.AddOffset(Operator::VT_CUSTOM_OPTIONS, custom_options);
13147   }
13148   void add_custom_options_format(tflite::CustomOptionsFormat custom_options_format) {
13149     fbb_.AddElement<int8_t>(Operator::VT_CUSTOM_OPTIONS_FORMAT, static_cast<int8_t>(custom_options_format), 0);
13150   }
13151   void add_mutating_variable_inputs(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> mutating_variable_inputs) {
13152     fbb_.AddOffset(Operator::VT_MUTATING_VARIABLE_INPUTS, mutating_variable_inputs);
13153   }
13154   void add_intermediates(flatbuffers::Offset<flatbuffers::Vector<int32_t>> intermediates) {
13155     fbb_.AddOffset(Operator::VT_INTERMEDIATES, intermediates);
13156   }
13157   explicit OperatorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13158         : fbb_(_fbb) {
13159     start_ = fbb_.StartTable();
13160   }
13161   flatbuffers::Offset<Operator> Finish() {
13162     const auto end = fbb_.EndTable(start_);
13163     auto o = flatbuffers::Offset<Operator>(end);
13164     return o;
13165   }
13166 };
13167 
13168 inline flatbuffers::Offset<Operator> CreateOperator(
13169     flatbuffers::FlatBufferBuilder &_fbb,
13170     uint32_t opcode_index = 0,
13171     flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs = 0,
13172     flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs = 0,
13173     tflite::BuiltinOptions builtin_options_type = tflite::BuiltinOptions_NONE,
13174     flatbuffers::Offset<void> builtin_options = 0,
13175     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom_options = 0,
13176     tflite::CustomOptionsFormat custom_options_format = tflite::CustomOptionsFormat_FLEXBUFFERS,
13177     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> mutating_variable_inputs = 0,
13178     flatbuffers::Offset<flatbuffers::Vector<int32_t>> intermediates = 0) {
13179   OperatorBuilder builder_(_fbb);
13180   builder_.add_intermediates(intermediates);
13181   builder_.add_mutating_variable_inputs(mutating_variable_inputs);
13182   builder_.add_custom_options(custom_options);
13183   builder_.add_builtin_options(builtin_options);
13184   builder_.add_outputs(outputs);
13185   builder_.add_inputs(inputs);
13186   builder_.add_opcode_index(opcode_index);
13187   builder_.add_custom_options_format(custom_options_format);
13188   builder_.add_builtin_options_type(builtin_options_type);
13189   return builder_.Finish();
13190 }
13191 
13192 inline flatbuffers::Offset<Operator> CreateOperatorDirect(
13193     flatbuffers::FlatBufferBuilder &_fbb,
13194     uint32_t opcode_index = 0,
13195     const std::vector<int32_t> *inputs = nullptr,
13196     const std::vector<int32_t> *outputs = nullptr,
13197     tflite::BuiltinOptions builtin_options_type = tflite::BuiltinOptions_NONE,
13198     flatbuffers::Offset<void> builtin_options = 0,
13199     const std::vector<uint8_t> *custom_options = nullptr,
13200     tflite::CustomOptionsFormat custom_options_format = tflite::CustomOptionsFormat_FLEXBUFFERS,
13201     const std::vector<uint8_t> *mutating_variable_inputs = nullptr,
13202     const std::vector<int32_t> *intermediates = nullptr) {
13203   auto inputs__ = inputs ? _fbb.CreateVector<int32_t>(*inputs) : 0;
13204   auto outputs__ = outputs ? _fbb.CreateVector<int32_t>(*outputs) : 0;
13205   auto custom_options__ = custom_options ? _fbb.CreateVector<uint8_t>(*custom_options) : 0;
13206   auto mutating_variable_inputs__ = mutating_variable_inputs ? _fbb.CreateVector<uint8_t>(*mutating_variable_inputs) : 0;
13207   auto intermediates__ = intermediates ? _fbb.CreateVector<int32_t>(*intermediates) : 0;
13208   return tflite::CreateOperator(
13209       _fbb,
13210       opcode_index,
13211       inputs__,
13212       outputs__,
13213       builtin_options_type,
13214       builtin_options,
13215       custom_options__,
13216       custom_options_format,
13217       mutating_variable_inputs__,
13218       intermediates__);
13219 }
13220 
13221 flatbuffers::Offset<Operator> CreateOperator(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13222 
13223 struct SubGraphT : public flatbuffers::NativeTable {
13224   typedef SubGraph TableType;
13225   std::vector<std::unique_ptr<tflite::TensorT>> tensors{};
13226   std::vector<int32_t> inputs{};
13227   std::vector<int32_t> outputs{};
13228   std::vector<std::unique_ptr<tflite::OperatorT>> operators{};
13229   std::string name{};
13230   SubGraphT() = default;
13231   SubGraphT(const SubGraphT &o);
13232   SubGraphT(SubGraphT&&) FLATBUFFERS_NOEXCEPT = default;
13233   SubGraphT &operator=(SubGraphT o) FLATBUFFERS_NOEXCEPT;
13234 };
13235 
13236 struct SubGraph FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
13237   typedef SubGraphT NativeTableType;
13238   typedef SubGraphBuilder Builder;
13239   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
13240     VT_TENSORS = 4,
13241     VT_INPUTS = 6,
13242     VT_OUTPUTS = 8,
13243     VT_OPERATORS = 10,
13244     VT_NAME = 12
13245   };
13246   const flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>> *tensors() const {
13247     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>> *>(VT_TENSORS);
13248   }
13249   flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>> *mutable_tensors() {
13250     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>> *>(VT_TENSORS);
13251   }
13252   const flatbuffers::Vector<int32_t> *inputs() const {
13253     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INPUTS);
13254   }
13255   flatbuffers::Vector<int32_t> *mutable_inputs() {
13256     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_INPUTS);
13257   }
13258   const flatbuffers::Vector<int32_t> *outputs() const {
13259     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
13260   }
13261   flatbuffers::Vector<int32_t> *mutable_outputs() {
13262     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
13263   }
13264   const flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>> *operators() const {
13265     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>> *>(VT_OPERATORS);
13266   }
13267   flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>> *mutable_operators() {
13268     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>> *>(VT_OPERATORS);
13269   }
13270   const flatbuffers::String *name() const {
13271     return GetPointer<const flatbuffers::String *>(VT_NAME);
13272   }
13273   flatbuffers::String *mutable_name() {
13274     return GetPointer<flatbuffers::String *>(VT_NAME);
13275   }
13276   bool Verify(flatbuffers::Verifier &verifier) const {
13277     return VerifyTableStart(verifier) &&
13278            VerifyOffset(verifier, VT_TENSORS) &&
13279            verifier.VerifyVector(tensors()) &&
13280            verifier.VerifyVectorOfTables(tensors()) &&
13281            VerifyOffset(verifier, VT_INPUTS) &&
13282            verifier.VerifyVector(inputs()) &&
13283            VerifyOffset(verifier, VT_OUTPUTS) &&
13284            verifier.VerifyVector(outputs()) &&
13285            VerifyOffset(verifier, VT_OPERATORS) &&
13286            verifier.VerifyVector(operators()) &&
13287            verifier.VerifyVectorOfTables(operators()) &&
13288            VerifyOffset(verifier, VT_NAME) &&
13289            verifier.VerifyString(name()) &&
13290            verifier.EndTable();
13291   }
13292   SubGraphT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13293   void UnPackTo(SubGraphT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13294   static flatbuffers::Offset<SubGraph> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13295 };
13296 
13297 struct SubGraphBuilder {
13298   typedef SubGraph Table;
13299   flatbuffers::FlatBufferBuilder &fbb_;
13300   flatbuffers::uoffset_t start_;
13301   void add_tensors(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>>> tensors) {
13302     fbb_.AddOffset(SubGraph::VT_TENSORS, tensors);
13303   }
13304   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs) {
13305     fbb_.AddOffset(SubGraph::VT_INPUTS, inputs);
13306   }
13307   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs) {
13308     fbb_.AddOffset(SubGraph::VT_OUTPUTS, outputs);
13309   }
13310   void add_operators(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>>> operators) {
13311     fbb_.AddOffset(SubGraph::VT_OPERATORS, operators);
13312   }
13313   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
13314     fbb_.AddOffset(SubGraph::VT_NAME, name);
13315   }
13316   explicit SubGraphBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13317         : fbb_(_fbb) {
13318     start_ = fbb_.StartTable();
13319   }
13320   flatbuffers::Offset<SubGraph> Finish() {
13321     const auto end = fbb_.EndTable(start_);
13322     auto o = flatbuffers::Offset<SubGraph>(end);
13323     return o;
13324   }
13325 };
13326 
13327 inline flatbuffers::Offset<SubGraph> CreateSubGraph(
13328     flatbuffers::FlatBufferBuilder &_fbb,
13329     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>>> tensors = 0,
13330     flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs = 0,
13331     flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs = 0,
13332     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>>> operators = 0,
13333     flatbuffers::Offset<flatbuffers::String> name = 0) {
13334   SubGraphBuilder builder_(_fbb);
13335   builder_.add_name(name);
13336   builder_.add_operators(operators);
13337   builder_.add_outputs(outputs);
13338   builder_.add_inputs(inputs);
13339   builder_.add_tensors(tensors);
13340   return builder_.Finish();
13341 }
13342 
13343 inline flatbuffers::Offset<SubGraph> CreateSubGraphDirect(
13344     flatbuffers::FlatBufferBuilder &_fbb,
13345     const std::vector<flatbuffers::Offset<tflite::Tensor>> *tensors = nullptr,
13346     const std::vector<int32_t> *inputs = nullptr,
13347     const std::vector<int32_t> *outputs = nullptr,
13348     const std::vector<flatbuffers::Offset<tflite::Operator>> *operators = nullptr,
13349     const char *name = nullptr) {
13350   auto tensors__ = tensors ? _fbb.CreateVector<flatbuffers::Offset<tflite::Tensor>>(*tensors) : 0;
13351   auto inputs__ = inputs ? _fbb.CreateVector<int32_t>(*inputs) : 0;
13352   auto outputs__ = outputs ? _fbb.CreateVector<int32_t>(*outputs) : 0;
13353   auto operators__ = operators ? _fbb.CreateVector<flatbuffers::Offset<tflite::Operator>>(*operators) : 0;
13354   auto name__ = name ? _fbb.CreateString(name) : 0;
13355   return tflite::CreateSubGraph(
13356       _fbb,
13357       tensors__,
13358       inputs__,
13359       outputs__,
13360       operators__,
13361       name__);
13362 }
13363 
13364 flatbuffers::Offset<SubGraph> CreateSubGraph(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13365 
13366 struct BufferT : public flatbuffers::NativeTable {
13367   typedef Buffer TableType;
13368   std::vector<uint8_t> data{};
13369 };
13370 
13371 struct Buffer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
13372   typedef BufferT NativeTableType;
13373   typedef BufferBuilder Builder;
13374   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
13375     VT_DATA = 4
13376   };
13377   const flatbuffers::Vector<uint8_t> *data() const {
13378     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_DATA);
13379   }
13380   flatbuffers::Vector<uint8_t> *mutable_data() {
13381     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_DATA);
13382   }
13383   bool Verify(flatbuffers::Verifier &verifier) const {
13384     return VerifyTableStart(verifier) &&
13385            VerifyOffset(verifier, VT_DATA) &&
13386            verifier.VerifyVector(data()) &&
13387            verifier.EndTable();
13388   }
13389   BufferT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13390   void UnPackTo(BufferT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13391   static flatbuffers::Offset<Buffer> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BufferT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13392 };
13393 
13394 struct BufferBuilder {
13395   typedef Buffer Table;
13396   flatbuffers::FlatBufferBuilder &fbb_;
13397   flatbuffers::uoffset_t start_;
13398   void add_data(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data) {
13399     fbb_.AddOffset(Buffer::VT_DATA, data);
13400   }
13401   explicit BufferBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13402         : fbb_(_fbb) {
13403     start_ = fbb_.StartTable();
13404   }
13405   flatbuffers::Offset<Buffer> Finish() {
13406     const auto end = fbb_.EndTable(start_);
13407     auto o = flatbuffers::Offset<Buffer>(end);
13408     return o;
13409   }
13410 };
13411 
13412 inline flatbuffers::Offset<Buffer> CreateBuffer(
13413     flatbuffers::FlatBufferBuilder &_fbb,
13414     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data = 0) {
13415   BufferBuilder builder_(_fbb);
13416   builder_.add_data(data);
13417   return builder_.Finish();
13418 }
13419 
13420 inline flatbuffers::Offset<Buffer> CreateBufferDirect(
13421     flatbuffers::FlatBufferBuilder &_fbb,
13422     const std::vector<uint8_t> *data = nullptr) {
13423   if (data) { _fbb.ForceVectorAlignment(data->size(), sizeof(uint8_t), 16); }
13424   auto data__ = data ? _fbb.CreateVector<uint8_t>(*data) : 0;
13425   return tflite::CreateBuffer(
13426       _fbb,
13427       data__);
13428 }
13429 
13430 flatbuffers::Offset<Buffer> CreateBuffer(flatbuffers::FlatBufferBuilder &_fbb, const BufferT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13431 
13432 struct MetadataT : public flatbuffers::NativeTable {
13433   typedef Metadata TableType;
13434   std::string name{};
13435   uint32_t buffer = 0;
13436 };
13437 
13438 struct Metadata FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
13439   typedef MetadataT NativeTableType;
13440   typedef MetadataBuilder Builder;
13441   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
13442     VT_NAME = 4,
13443     VT_BUFFER = 6
13444   };
13445   const flatbuffers::String *name() const {
13446     return GetPointer<const flatbuffers::String *>(VT_NAME);
13447   }
13448   flatbuffers::String *mutable_name() {
13449     return GetPointer<flatbuffers::String *>(VT_NAME);
13450   }
13451   uint32_t buffer() const {
13452     return GetField<uint32_t>(VT_BUFFER, 0);
13453   }
13454   bool mutate_buffer(uint32_t _buffer = 0) {
13455     return SetField<uint32_t>(VT_BUFFER, _buffer, 0);
13456   }
13457   bool Verify(flatbuffers::Verifier &verifier) const {
13458     return VerifyTableStart(verifier) &&
13459            VerifyOffset(verifier, VT_NAME) &&
13460            verifier.VerifyString(name()) &&
13461            VerifyField<uint32_t>(verifier, VT_BUFFER, 4) &&
13462            verifier.EndTable();
13463   }
13464   MetadataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13465   void UnPackTo(MetadataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13466   static flatbuffers::Offset<Metadata> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MetadataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13467 };
13468 
13469 struct MetadataBuilder {
13470   typedef Metadata Table;
13471   flatbuffers::FlatBufferBuilder &fbb_;
13472   flatbuffers::uoffset_t start_;
13473   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
13474     fbb_.AddOffset(Metadata::VT_NAME, name);
13475   }
13476   void add_buffer(uint32_t buffer) {
13477     fbb_.AddElement<uint32_t>(Metadata::VT_BUFFER, buffer, 0);
13478   }
13479   explicit MetadataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13480         : fbb_(_fbb) {
13481     start_ = fbb_.StartTable();
13482   }
13483   flatbuffers::Offset<Metadata> Finish() {
13484     const auto end = fbb_.EndTable(start_);
13485     auto o = flatbuffers::Offset<Metadata>(end);
13486     return o;
13487   }
13488 };
13489 
13490 inline flatbuffers::Offset<Metadata> CreateMetadata(
13491     flatbuffers::FlatBufferBuilder &_fbb,
13492     flatbuffers::Offset<flatbuffers::String> name = 0,
13493     uint32_t buffer = 0) {
13494   MetadataBuilder builder_(_fbb);
13495   builder_.add_buffer(buffer);
13496   builder_.add_name(name);
13497   return builder_.Finish();
13498 }
13499 
13500 inline flatbuffers::Offset<Metadata> CreateMetadataDirect(
13501     flatbuffers::FlatBufferBuilder &_fbb,
13502     const char *name = nullptr,
13503     uint32_t buffer = 0) {
13504   auto name__ = name ? _fbb.CreateString(name) : 0;
13505   return tflite::CreateMetadata(
13506       _fbb,
13507       name__,
13508       buffer);
13509 }
13510 
13511 flatbuffers::Offset<Metadata> CreateMetadata(flatbuffers::FlatBufferBuilder &_fbb, const MetadataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13512 
13513 struct TensorMapT : public flatbuffers::NativeTable {
13514   typedef TensorMap TableType;
13515   std::string name{};
13516   uint32_t tensor_index = 0;
13517 };
13518 
13519 struct TensorMap FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
13520   typedef TensorMapT NativeTableType;
13521   typedef TensorMapBuilder Builder;
13522   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
13523     VT_NAME = 4,
13524     VT_TENSOR_INDEX = 6
13525   };
13526   const flatbuffers::String *name() const {
13527     return GetPointer<const flatbuffers::String *>(VT_NAME);
13528   }
13529   flatbuffers::String *mutable_name() {
13530     return GetPointer<flatbuffers::String *>(VT_NAME);
13531   }
13532   uint32_t tensor_index() const {
13533     return GetField<uint32_t>(VT_TENSOR_INDEX, 0);
13534   }
13535   bool mutate_tensor_index(uint32_t _tensor_index = 0) {
13536     return SetField<uint32_t>(VT_TENSOR_INDEX, _tensor_index, 0);
13537   }
13538   bool Verify(flatbuffers::Verifier &verifier) const {
13539     return VerifyTableStart(verifier) &&
13540            VerifyOffset(verifier, VT_NAME) &&
13541            verifier.VerifyString(name()) &&
13542            VerifyField<uint32_t>(verifier, VT_TENSOR_INDEX, 4) &&
13543            verifier.EndTable();
13544   }
13545   TensorMapT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13546   void UnPackTo(TensorMapT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13547   static flatbuffers::Offset<TensorMap> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TensorMapT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13548 };
13549 
13550 struct TensorMapBuilder {
13551   typedef TensorMap Table;
13552   flatbuffers::FlatBufferBuilder &fbb_;
13553   flatbuffers::uoffset_t start_;
13554   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
13555     fbb_.AddOffset(TensorMap::VT_NAME, name);
13556   }
13557   void add_tensor_index(uint32_t tensor_index) {
13558     fbb_.AddElement<uint32_t>(TensorMap::VT_TENSOR_INDEX, tensor_index, 0);
13559   }
13560   explicit TensorMapBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13561         : fbb_(_fbb) {
13562     start_ = fbb_.StartTable();
13563   }
13564   flatbuffers::Offset<TensorMap> Finish() {
13565     const auto end = fbb_.EndTable(start_);
13566     auto o = flatbuffers::Offset<TensorMap>(end);
13567     return o;
13568   }
13569 };
13570 
13571 inline flatbuffers::Offset<TensorMap> CreateTensorMap(
13572     flatbuffers::FlatBufferBuilder &_fbb,
13573     flatbuffers::Offset<flatbuffers::String> name = 0,
13574     uint32_t tensor_index = 0) {
13575   TensorMapBuilder builder_(_fbb);
13576   builder_.add_tensor_index(tensor_index);
13577   builder_.add_name(name);
13578   return builder_.Finish();
13579 }
13580 
13581 inline flatbuffers::Offset<TensorMap> CreateTensorMapDirect(
13582     flatbuffers::FlatBufferBuilder &_fbb,
13583     const char *name = nullptr,
13584     uint32_t tensor_index = 0) {
13585   auto name__ = name ? _fbb.CreateString(name) : 0;
13586   return tflite::CreateTensorMap(
13587       _fbb,
13588       name__,
13589       tensor_index);
13590 }
13591 
13592 flatbuffers::Offset<TensorMap> CreateTensorMap(flatbuffers::FlatBufferBuilder &_fbb, const TensorMapT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13593 
13594 struct SignatureDefT : public flatbuffers::NativeTable {
13595   typedef SignatureDef TableType;
13596   std::vector<std::unique_ptr<tflite::TensorMapT>> inputs{};
13597   std::vector<std::unique_ptr<tflite::TensorMapT>> outputs{};
13598   std::string signature_key{};
13599   uint32_t subgraph_index = 0;
13600   SignatureDefT() = default;
13601   SignatureDefT(const SignatureDefT &o);
13602   SignatureDefT(SignatureDefT&&) FLATBUFFERS_NOEXCEPT = default;
13603   SignatureDefT &operator=(SignatureDefT o) FLATBUFFERS_NOEXCEPT;
13604 };
13605 
13606 struct SignatureDef FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
13607   typedef SignatureDefT NativeTableType;
13608   typedef SignatureDefBuilder Builder;
13609   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
13610     VT_INPUTS = 4,
13611     VT_OUTPUTS = 6,
13612     VT_SIGNATURE_KEY = 8,
13613     VT_SUBGRAPH_INDEX = 12
13614   };
13615   const flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *inputs() const {
13616     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *>(VT_INPUTS);
13617   }
13618   flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *mutable_inputs() {
13619     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *>(VT_INPUTS);
13620   }
13621   const flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *outputs() const {
13622     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *>(VT_OUTPUTS);
13623   }
13624   flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *mutable_outputs() {
13625     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *>(VT_OUTPUTS);
13626   }
13627   const flatbuffers::String *signature_key() const {
13628     return GetPointer<const flatbuffers::String *>(VT_SIGNATURE_KEY);
13629   }
13630   flatbuffers::String *mutable_signature_key() {
13631     return GetPointer<flatbuffers::String *>(VT_SIGNATURE_KEY);
13632   }
13633   uint32_t subgraph_index() const {
13634     return GetField<uint32_t>(VT_SUBGRAPH_INDEX, 0);
13635   }
13636   bool mutate_subgraph_index(uint32_t _subgraph_index = 0) {
13637     return SetField<uint32_t>(VT_SUBGRAPH_INDEX, _subgraph_index, 0);
13638   }
13639   bool Verify(flatbuffers::Verifier &verifier) const {
13640     return VerifyTableStart(verifier) &&
13641            VerifyOffset(verifier, VT_INPUTS) &&
13642            verifier.VerifyVector(inputs()) &&
13643            verifier.VerifyVectorOfTables(inputs()) &&
13644            VerifyOffset(verifier, VT_OUTPUTS) &&
13645            verifier.VerifyVector(outputs()) &&
13646            verifier.VerifyVectorOfTables(outputs()) &&
13647            VerifyOffset(verifier, VT_SIGNATURE_KEY) &&
13648            verifier.VerifyString(signature_key()) &&
13649            VerifyField<uint32_t>(verifier, VT_SUBGRAPH_INDEX, 4) &&
13650            verifier.EndTable();
13651   }
13652   SignatureDefT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13653   void UnPackTo(SignatureDefT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13654   static flatbuffers::Offset<SignatureDef> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SignatureDefT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13655 };
13656 
13657 struct SignatureDefBuilder {
13658   typedef SignatureDef Table;
13659   flatbuffers::FlatBufferBuilder &fbb_;
13660   flatbuffers::uoffset_t start_;
13661   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>>> inputs) {
13662     fbb_.AddOffset(SignatureDef::VT_INPUTS, inputs);
13663   }
13664   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>>> outputs) {
13665     fbb_.AddOffset(SignatureDef::VT_OUTPUTS, outputs);
13666   }
13667   void add_signature_key(flatbuffers::Offset<flatbuffers::String> signature_key) {
13668     fbb_.AddOffset(SignatureDef::VT_SIGNATURE_KEY, signature_key);
13669   }
13670   void add_subgraph_index(uint32_t subgraph_index) {
13671     fbb_.AddElement<uint32_t>(SignatureDef::VT_SUBGRAPH_INDEX, subgraph_index, 0);
13672   }
13673   explicit SignatureDefBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13674         : fbb_(_fbb) {
13675     start_ = fbb_.StartTable();
13676   }
13677   flatbuffers::Offset<SignatureDef> Finish() {
13678     const auto end = fbb_.EndTable(start_);
13679     auto o = flatbuffers::Offset<SignatureDef>(end);
13680     return o;
13681   }
13682 };
13683 
13684 inline flatbuffers::Offset<SignatureDef> CreateSignatureDef(
13685     flatbuffers::FlatBufferBuilder &_fbb,
13686     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>>> inputs = 0,
13687     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>>> outputs = 0,
13688     flatbuffers::Offset<flatbuffers::String> signature_key = 0,
13689     uint32_t subgraph_index = 0) {
13690   SignatureDefBuilder builder_(_fbb);
13691   builder_.add_subgraph_index(subgraph_index);
13692   builder_.add_signature_key(signature_key);
13693   builder_.add_outputs(outputs);
13694   builder_.add_inputs(inputs);
13695   return builder_.Finish();
13696 }
13697 
13698 inline flatbuffers::Offset<SignatureDef> CreateSignatureDefDirect(
13699     flatbuffers::FlatBufferBuilder &_fbb,
13700     const std::vector<flatbuffers::Offset<tflite::TensorMap>> *inputs = nullptr,
13701     const std::vector<flatbuffers::Offset<tflite::TensorMap>> *outputs = nullptr,
13702     const char *signature_key = nullptr,
13703     uint32_t subgraph_index = 0) {
13704   auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>>(*inputs) : 0;
13705   auto outputs__ = outputs ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>>(*outputs) : 0;
13706   auto signature_key__ = signature_key ? _fbb.CreateString(signature_key) : 0;
13707   return tflite::CreateSignatureDef(
13708       _fbb,
13709       inputs__,
13710       outputs__,
13711       signature_key__,
13712       subgraph_index);
13713 }
13714 
13715 flatbuffers::Offset<SignatureDef> CreateSignatureDef(flatbuffers::FlatBufferBuilder &_fbb, const SignatureDefT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13716 
13717 struct ModelT : public flatbuffers::NativeTable {
13718   typedef Model TableType;
13719   uint32_t version = 0;
13720   std::vector<std::unique_ptr<tflite::OperatorCodeT>> operator_codes{};
13721   std::vector<std::unique_ptr<tflite::SubGraphT>> subgraphs{};
13722   std::string description{};
13723   std::vector<std::unique_ptr<tflite::BufferT>> buffers{};
13724   std::vector<int32_t> metadata_buffer{};
13725   std::vector<std::unique_ptr<tflite::MetadataT>> metadata{};
13726   std::vector<std::unique_ptr<tflite::SignatureDefT>> signature_defs{};
13727   ModelT() = default;
13728   ModelT(const ModelT &o);
13729   ModelT(ModelT&&) FLATBUFFERS_NOEXCEPT = default;
13730   ModelT &operator=(ModelT o) FLATBUFFERS_NOEXCEPT;
13731 };
13732 
13733 struct Model FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
13734   typedef ModelT NativeTableType;
13735   typedef ModelBuilder Builder;
13736   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
13737     VT_VERSION = 4,
13738     VT_OPERATOR_CODES = 6,
13739     VT_SUBGRAPHS = 8,
13740     VT_DESCRIPTION = 10,
13741     VT_BUFFERS = 12,
13742     VT_METADATA_BUFFER = 14,
13743     VT_METADATA = 16,
13744     VT_SIGNATURE_DEFS = 18
13745   };
13746   uint32_t version() const {
13747     return GetField<uint32_t>(VT_VERSION, 0);
13748   }
13749   bool mutate_version(uint32_t _version = 0) {
13750     return SetField<uint32_t>(VT_VERSION, _version, 0);
13751   }
13752   const flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>> *operator_codes() const {
13753     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>> *>(VT_OPERATOR_CODES);
13754   }
13755   flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>> *mutable_operator_codes() {
13756     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>> *>(VT_OPERATOR_CODES);
13757   }
13758   const flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>> *subgraphs() const {
13759     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>> *>(VT_SUBGRAPHS);
13760   }
13761   flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>> *mutable_subgraphs() {
13762     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>> *>(VT_SUBGRAPHS);
13763   }
13764   const flatbuffers::String *description() const {
13765     return GetPointer<const flatbuffers::String *>(VT_DESCRIPTION);
13766   }
13767   flatbuffers::String *mutable_description() {
13768     return GetPointer<flatbuffers::String *>(VT_DESCRIPTION);
13769   }
13770   const flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>> *buffers() const {
13771     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>> *>(VT_BUFFERS);
13772   }
13773   flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>> *mutable_buffers() {
13774     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>> *>(VT_BUFFERS);
13775   }
13776   const flatbuffers::Vector<int32_t> *metadata_buffer() const {
13777     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_METADATA_BUFFER);
13778   }
13779   flatbuffers::Vector<int32_t> *mutable_metadata_buffer() {
13780     return GetPointer<flatbuffers::Vector<int32_t> *>(VT_METADATA_BUFFER);
13781   }
13782   const flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>> *metadata() const {
13783     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>> *>(VT_METADATA);
13784   }
13785   flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>> *mutable_metadata() {
13786     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>> *>(VT_METADATA);
13787   }
13788   const flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>> *signature_defs() const {
13789     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>> *>(VT_SIGNATURE_DEFS);
13790   }
13791   flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>> *mutable_signature_defs() {
13792     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>> *>(VT_SIGNATURE_DEFS);
13793   }
13794   bool Verify(flatbuffers::Verifier &verifier) const {
13795     return VerifyTableStart(verifier) &&
13796            VerifyField<uint32_t>(verifier, VT_VERSION, 4) &&
13797            VerifyOffset(verifier, VT_OPERATOR_CODES) &&
13798            verifier.VerifyVector(operator_codes()) &&
13799            verifier.VerifyVectorOfTables(operator_codes()) &&
13800            VerifyOffset(verifier, VT_SUBGRAPHS) &&
13801            verifier.VerifyVector(subgraphs()) &&
13802            verifier.VerifyVectorOfTables(subgraphs()) &&
13803            VerifyOffset(verifier, VT_DESCRIPTION) &&
13804            verifier.VerifyString(description()) &&
13805            VerifyOffset(verifier, VT_BUFFERS) &&
13806            verifier.VerifyVector(buffers()) &&
13807            verifier.VerifyVectorOfTables(buffers()) &&
13808            VerifyOffset(verifier, VT_METADATA_BUFFER) &&
13809            verifier.VerifyVector(metadata_buffer()) &&
13810            VerifyOffset(verifier, VT_METADATA) &&
13811            verifier.VerifyVector(metadata()) &&
13812            verifier.VerifyVectorOfTables(metadata()) &&
13813            VerifyOffset(verifier, VT_SIGNATURE_DEFS) &&
13814            verifier.VerifyVector(signature_defs()) &&
13815            verifier.VerifyVectorOfTables(signature_defs()) &&
13816            verifier.EndTable();
13817   }
13818   ModelT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13819   void UnPackTo(ModelT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
13820   static flatbuffers::Offset<Model> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ModelT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13821 };
13822 
13823 struct ModelBuilder {
13824   typedef Model Table;
13825   flatbuffers::FlatBufferBuilder &fbb_;
13826   flatbuffers::uoffset_t start_;
13827   void add_version(uint32_t version) {
13828     fbb_.AddElement<uint32_t>(Model::VT_VERSION, version, 0);
13829   }
13830   void add_operator_codes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>>> operator_codes) {
13831     fbb_.AddOffset(Model::VT_OPERATOR_CODES, operator_codes);
13832   }
13833   void add_subgraphs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>>> subgraphs) {
13834     fbb_.AddOffset(Model::VT_SUBGRAPHS, subgraphs);
13835   }
13836   void add_description(flatbuffers::Offset<flatbuffers::String> description) {
13837     fbb_.AddOffset(Model::VT_DESCRIPTION, description);
13838   }
13839   void add_buffers(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>>> buffers) {
13840     fbb_.AddOffset(Model::VT_BUFFERS, buffers);
13841   }
13842   void add_metadata_buffer(flatbuffers::Offset<flatbuffers::Vector<int32_t>> metadata_buffer) {
13843     fbb_.AddOffset(Model::VT_METADATA_BUFFER, metadata_buffer);
13844   }
13845   void add_metadata(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>>> metadata) {
13846     fbb_.AddOffset(Model::VT_METADATA, metadata);
13847   }
13848   void add_signature_defs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>>> signature_defs) {
13849     fbb_.AddOffset(Model::VT_SIGNATURE_DEFS, signature_defs);
13850   }
13851   explicit ModelBuilder(flatbuffers::FlatBufferBuilder &_fbb)
13852         : fbb_(_fbb) {
13853     start_ = fbb_.StartTable();
13854   }
13855   flatbuffers::Offset<Model> Finish() {
13856     const auto end = fbb_.EndTable(start_);
13857     auto o = flatbuffers::Offset<Model>(end);
13858     return o;
13859   }
13860 };
13861 
13862 inline flatbuffers::Offset<Model> CreateModel(
13863     flatbuffers::FlatBufferBuilder &_fbb,
13864     uint32_t version = 0,
13865     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>>> operator_codes = 0,
13866     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>>> subgraphs = 0,
13867     flatbuffers::Offset<flatbuffers::String> description = 0,
13868     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>>> buffers = 0,
13869     flatbuffers::Offset<flatbuffers::Vector<int32_t>> metadata_buffer = 0,
13870     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>>> metadata = 0,
13871     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>>> signature_defs = 0) {
13872   ModelBuilder builder_(_fbb);
13873   builder_.add_signature_defs(signature_defs);
13874   builder_.add_metadata(metadata);
13875   builder_.add_metadata_buffer(metadata_buffer);
13876   builder_.add_buffers(buffers);
13877   builder_.add_description(description);
13878   builder_.add_subgraphs(subgraphs);
13879   builder_.add_operator_codes(operator_codes);
13880   builder_.add_version(version);
13881   return builder_.Finish();
13882 }
13883 
13884 inline flatbuffers::Offset<Model> CreateModelDirect(
13885     flatbuffers::FlatBufferBuilder &_fbb,
13886     uint32_t version = 0,
13887     const std::vector<flatbuffers::Offset<tflite::OperatorCode>> *operator_codes = nullptr,
13888     const std::vector<flatbuffers::Offset<tflite::SubGraph>> *subgraphs = nullptr,
13889     const char *description = nullptr,
13890     const std::vector<flatbuffers::Offset<tflite::Buffer>> *buffers = nullptr,
13891     const std::vector<int32_t> *metadata_buffer = nullptr,
13892     const std::vector<flatbuffers::Offset<tflite::Metadata>> *metadata = nullptr,
13893     const std::vector<flatbuffers::Offset<tflite::SignatureDef>> *signature_defs = nullptr) {
13894   auto operator_codes__ = operator_codes ? _fbb.CreateVector<flatbuffers::Offset<tflite::OperatorCode>>(*operator_codes) : 0;
13895   auto subgraphs__ = subgraphs ? _fbb.CreateVector<flatbuffers::Offset<tflite::SubGraph>>(*subgraphs) : 0;
13896   auto description__ = description ? _fbb.CreateString(description) : 0;
13897   auto buffers__ = buffers ? _fbb.CreateVector<flatbuffers::Offset<tflite::Buffer>>(*buffers) : 0;
13898   auto metadata_buffer__ = metadata_buffer ? _fbb.CreateVector<int32_t>(*metadata_buffer) : 0;
13899   auto metadata__ = metadata ? _fbb.CreateVector<flatbuffers::Offset<tflite::Metadata>>(*metadata) : 0;
13900   auto signature_defs__ = signature_defs ? _fbb.CreateVector<flatbuffers::Offset<tflite::SignatureDef>>(*signature_defs) : 0;
13901   return tflite::CreateModel(
13902       _fbb,
13903       version,
13904       operator_codes__,
13905       subgraphs__,
13906       description__,
13907       buffers__,
13908       metadata_buffer__,
13909       metadata__,
13910       signature_defs__);
13911 }
13912 
13913 flatbuffers::Offset<Model> CreateModel(flatbuffers::FlatBufferBuilder &_fbb, const ModelT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
13914 
13915 inline CustomQuantizationT *CustomQuantization::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
13916   auto _o = std::unique_ptr<CustomQuantizationT>(new CustomQuantizationT());
13917   UnPackTo(_o.get(), _resolver);
13918   return _o.release();
13919 }
13920 
13921 inline void CustomQuantization::UnPackTo(CustomQuantizationT *_o, const flatbuffers::resolver_function_t *_resolver) const {
13922   (void)_o;
13923   (void)_resolver;
13924   { auto _e = custom(); if (_e) { _o->custom.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->custom.begin()); } }
13925 }
13926 
13927 inline flatbuffers::Offset<CustomQuantization> CustomQuantization::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
13928   return CreateCustomQuantization(_fbb, _o, _rehasher);
13929 }
13930 
13931 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(flatbuffers::FlatBufferBuilder &_fbb, const CustomQuantizationT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
13932   (void)_rehasher;
13933   (void)_o;
13934   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CustomQuantizationT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
13935   _fbb.ForceVectorAlignment(_o->custom.size(), sizeof(uint8_t), 16);
13936   auto _custom = _o->custom.size() ? _fbb.CreateVector(_o->custom) : 0;
13937   return tflite::CreateCustomQuantization(
13938       _fbb,
13939       _custom);
13940 }
13941 
13942 inline QuantizationParametersT *QuantizationParameters::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
13943   auto _o = std::unique_ptr<QuantizationParametersT>(new QuantizationParametersT());
13944   UnPackTo(_o.get(), _resolver);
13945   return _o.release();
13946 }
13947 
13948 inline void QuantizationParameters::UnPackTo(QuantizationParametersT *_o, const flatbuffers::resolver_function_t *_resolver) const {
13949   (void)_o;
13950   (void)_resolver;
13951   { auto _e = min(); if (_e) { _o->min.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->min[_i] = _e->Get(_i); } } }
13952   { auto _e = max(); if (_e) { _o->max.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->max[_i] = _e->Get(_i); } } }
13953   { auto _e = scale(); if (_e) { _o->scale.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scale[_i] = _e->Get(_i); } } }
13954   { auto _e = zero_point(); if (_e) { _o->zero_point.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->zero_point[_i] = _e->Get(_i); } } }
13955   { auto _e = details_type(); _o->details.type = _e; }
13956   { auto _e = details(); if (_e) _o->details.value = tflite::QuantizationDetailsUnion::UnPack(_e, details_type(), _resolver); }
13957   { auto _e = quantized_dimension(); _o->quantized_dimension = _e; }
13958 }
13959 
13960 inline flatbuffers::Offset<QuantizationParameters> QuantizationParameters::Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
13961   return CreateQuantizationParameters(_fbb, _o, _rehasher);
13962 }
13963 
13964 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(flatbuffers::FlatBufferBuilder &_fbb, const QuantizationParametersT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
13965   (void)_rehasher;
13966   (void)_o;
13967   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const QuantizationParametersT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
13968   auto _min = _o->min.size() ? _fbb.CreateVector(_o->min) : 0;
13969   auto _max = _o->max.size() ? _fbb.CreateVector(_o->max) : 0;
13970   auto _scale = _o->scale.size() ? _fbb.CreateVector(_o->scale) : 0;
13971   auto _zero_point = _o->zero_point.size() ? _fbb.CreateVector(_o->zero_point) : 0;
13972   auto _details_type = _o->details.type;
13973   auto _details = _o->details.Pack(_fbb);
13974   auto _quantized_dimension = _o->quantized_dimension;
13975   return tflite::CreateQuantizationParameters(
13976       _fbb,
13977       _min,
13978       _max,
13979       _scale,
13980       _zero_point,
13981       _details_type,
13982       _details,
13983       _quantized_dimension);
13984 }
13985 
13986 inline Int32VectorT *Int32Vector::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
13987   auto _o = std::unique_ptr<Int32VectorT>(new Int32VectorT());
13988   UnPackTo(_o.get(), _resolver);
13989   return _o.release();
13990 }
13991 
13992 inline void Int32Vector::UnPackTo(Int32VectorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
13993   (void)_o;
13994   (void)_resolver;
13995   { auto _e = values(); if (_e) { _o->values.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->values[_i] = _e->Get(_i); } } }
13996 }
13997 
13998 inline flatbuffers::Offset<Int32Vector> Int32Vector::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Int32VectorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
13999   return CreateInt32Vector(_fbb, _o, _rehasher);
14000 }
14001 
14002 inline flatbuffers::Offset<Int32Vector> CreateInt32Vector(flatbuffers::FlatBufferBuilder &_fbb, const Int32VectorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14003   (void)_rehasher;
14004   (void)_o;
14005   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Int32VectorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14006   auto _values = _o->values.size() ? _fbb.CreateVector(_o->values) : 0;
14007   return tflite::CreateInt32Vector(
14008       _fbb,
14009       _values);
14010 }
14011 
14012 inline Uint16VectorT *Uint16Vector::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14013   auto _o = std::unique_ptr<Uint16VectorT>(new Uint16VectorT());
14014   UnPackTo(_o.get(), _resolver);
14015   return _o.release();
14016 }
14017 
14018 inline void Uint16Vector::UnPackTo(Uint16VectorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14019   (void)_o;
14020   (void)_resolver;
14021   { auto _e = values(); if (_e) { _o->values.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->values[_i] = _e->Get(_i); } } }
14022 }
14023 
14024 inline flatbuffers::Offset<Uint16Vector> Uint16Vector::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Uint16VectorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14025   return CreateUint16Vector(_fbb, _o, _rehasher);
14026 }
14027 
14028 inline flatbuffers::Offset<Uint16Vector> CreateUint16Vector(flatbuffers::FlatBufferBuilder &_fbb, const Uint16VectorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14029   (void)_rehasher;
14030   (void)_o;
14031   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Uint16VectorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14032   _fbb.ForceVectorAlignment(_o->values.size(), sizeof(uint16_t), 4);
14033   auto _values = _o->values.size() ? _fbb.CreateVector(_o->values) : 0;
14034   return tflite::CreateUint16Vector(
14035       _fbb,
14036       _values);
14037 }
14038 
14039 inline Uint8VectorT *Uint8Vector::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14040   auto _o = std::unique_ptr<Uint8VectorT>(new Uint8VectorT());
14041   UnPackTo(_o.get(), _resolver);
14042   return _o.release();
14043 }
14044 
14045 inline void Uint8Vector::UnPackTo(Uint8VectorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14046   (void)_o;
14047   (void)_resolver;
14048   { auto _e = values(); if (_e) { _o->values.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->values.begin()); } }
14049 }
14050 
14051 inline flatbuffers::Offset<Uint8Vector> Uint8Vector::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Uint8VectorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14052   return CreateUint8Vector(_fbb, _o, _rehasher);
14053 }
14054 
14055 inline flatbuffers::Offset<Uint8Vector> CreateUint8Vector(flatbuffers::FlatBufferBuilder &_fbb, const Uint8VectorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14056   (void)_rehasher;
14057   (void)_o;
14058   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Uint8VectorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14059   _fbb.ForceVectorAlignment(_o->values.size(), sizeof(uint8_t), 4);
14060   auto _values = _o->values.size() ? _fbb.CreateVector(_o->values) : 0;
14061   return tflite::CreateUint8Vector(
14062       _fbb,
14063       _values);
14064 }
14065 
14066 inline DimensionMetadataT *DimensionMetadata::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14067   auto _o = std::unique_ptr<DimensionMetadataT>(new DimensionMetadataT());
14068   UnPackTo(_o.get(), _resolver);
14069   return _o.release();
14070 }
14071 
14072 inline void DimensionMetadata::UnPackTo(DimensionMetadataT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14073   (void)_o;
14074   (void)_resolver;
14075   { auto _e = format(); _o->format = _e; }
14076   { auto _e = dense_size(); _o->dense_size = _e; }
14077   { auto _e = array_segments_type(); _o->array_segments.type = _e; }
14078   { auto _e = array_segments(); if (_e) _o->array_segments.value = tflite::SparseIndexVectorUnion::UnPack(_e, array_segments_type(), _resolver); }
14079   { auto _e = array_indices_type(); _o->array_indices.type = _e; }
14080   { auto _e = array_indices(); if (_e) _o->array_indices.value = tflite::SparseIndexVectorUnion::UnPack(_e, array_indices_type(), _resolver); }
14081 }
14082 
14083 inline flatbuffers::Offset<DimensionMetadata> DimensionMetadata::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DimensionMetadataT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14084   return CreateDimensionMetadata(_fbb, _o, _rehasher);
14085 }
14086 
14087 inline flatbuffers::Offset<DimensionMetadata> CreateDimensionMetadata(flatbuffers::FlatBufferBuilder &_fbb, const DimensionMetadataT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14088   (void)_rehasher;
14089   (void)_o;
14090   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DimensionMetadataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14091   auto _format = _o->format;
14092   auto _dense_size = _o->dense_size;
14093   auto _array_segments_type = _o->array_segments.type;
14094   auto _array_segments = _o->array_segments.Pack(_fbb);
14095   auto _array_indices_type = _o->array_indices.type;
14096   auto _array_indices = _o->array_indices.Pack(_fbb);
14097   return tflite::CreateDimensionMetadata(
14098       _fbb,
14099       _format,
14100       _dense_size,
14101       _array_segments_type,
14102       _array_segments,
14103       _array_indices_type,
14104       _array_indices);
14105 }
14106 
14107 inline SparsityParametersT::SparsityParametersT(const SparsityParametersT &o)
14108       : traversal_order(o.traversal_order),
14109         block_map(o.block_map) {
14110   dim_metadata.reserve(o.dim_metadata.size());
14111   for (const auto &dim_metadata_ : o.dim_metadata) { dim_metadata.emplace_back((dim_metadata_) ? new tflite::DimensionMetadataT(*dim_metadata_) : nullptr); }
14112 }
14113 
14114 inline SparsityParametersT &SparsityParametersT::operator=(SparsityParametersT o) FLATBUFFERS_NOEXCEPT {
14115   std::swap(traversal_order, o.traversal_order);
14116   std::swap(block_map, o.block_map);
14117   std::swap(dim_metadata, o.dim_metadata);
14118   return *this;
14119 }
14120 
14121 inline SparsityParametersT *SparsityParameters::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14122   auto _o = std::unique_ptr<SparsityParametersT>(new SparsityParametersT());
14123   UnPackTo(_o.get(), _resolver);
14124   return _o.release();
14125 }
14126 
14127 inline void SparsityParameters::UnPackTo(SparsityParametersT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14128   (void)_o;
14129   (void)_resolver;
14130   { auto _e = traversal_order(); if (_e) { _o->traversal_order.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->traversal_order[_i] = _e->Get(_i); } } }
14131   { auto _e = block_map(); if (_e) { _o->block_map.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->block_map[_i] = _e->Get(_i); } } }
14132   { auto _e = dim_metadata(); if (_e) { _o->dim_metadata.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->dim_metadata[_i] = std::unique_ptr<tflite::DimensionMetadataT>(_e->Get(_i)->UnPack(_resolver)); } } }
14133 }
14134 
14135 inline flatbuffers::Offset<SparsityParameters> SparsityParameters::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SparsityParametersT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14136   return CreateSparsityParameters(_fbb, _o, _rehasher);
14137 }
14138 
14139 inline flatbuffers::Offset<SparsityParameters> CreateSparsityParameters(flatbuffers::FlatBufferBuilder &_fbb, const SparsityParametersT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14140   (void)_rehasher;
14141   (void)_o;
14142   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SparsityParametersT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14143   auto _traversal_order = _o->traversal_order.size() ? _fbb.CreateVector(_o->traversal_order) : 0;
14144   auto _block_map = _o->block_map.size() ? _fbb.CreateVector(_o->block_map) : 0;
14145   auto _dim_metadata = _o->dim_metadata.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::DimensionMetadata>> (_o->dim_metadata.size(), [](size_t i, _VectorArgs *__va) { return CreateDimensionMetadata(*__va->__fbb, __va->__o->dim_metadata[i].get(), __va->__rehasher); }, &_va ) : 0;
14146   return tflite::CreateSparsityParameters(
14147       _fbb,
14148       _traversal_order,
14149       _block_map,
14150       _dim_metadata);
14151 }
14152 
14153 inline VariantSubTypeT *VariantSubType::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14154   auto _o = std::unique_ptr<VariantSubTypeT>(new VariantSubTypeT());
14155   UnPackTo(_o.get(), _resolver);
14156   return _o.release();
14157 }
14158 
14159 inline void VariantSubType::UnPackTo(VariantSubTypeT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14160   (void)_o;
14161   (void)_resolver;
14162   { auto _e = shape(); if (_e) { _o->shape.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->shape[_i] = _e->Get(_i); } } }
14163   { auto _e = type(); _o->type = _e; }
14164   { auto _e = has_rank(); _o->has_rank = _e; }
14165 }
14166 
14167 inline flatbuffers::Offset<VariantSubType> VariantSubType::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VariantSubTypeT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14168   return CreateVariantSubType(_fbb, _o, _rehasher);
14169 }
14170 
14171 inline flatbuffers::Offset<VariantSubType> CreateVariantSubType(flatbuffers::FlatBufferBuilder &_fbb, const VariantSubTypeT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14172   (void)_rehasher;
14173   (void)_o;
14174   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VariantSubTypeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14175   auto _shape = _o->shape.size() ? _fbb.CreateVector(_o->shape) : 0;
14176   auto _type = _o->type;
14177   auto _has_rank = _o->has_rank;
14178   return tflite::CreateVariantSubType(
14179       _fbb,
14180       _shape,
14181       _type,
14182       _has_rank);
14183 }
14184 
14185 inline TensorT::TensorT(const TensorT &o)
14186       : shape(o.shape),
14187         type(o.type),
14188         buffer(o.buffer),
14189         name(o.name),
14190         quantization((o.quantization) ? new tflite::QuantizationParametersT(*o.quantization) : nullptr),
14191         is_variable(o.is_variable),
14192         sparsity((o.sparsity) ? new tflite::SparsityParametersT(*o.sparsity) : nullptr),
14193         shape_signature(o.shape_signature),
14194         has_rank(o.has_rank) {
14195   variant_tensors.reserve(o.variant_tensors.size());
14196   for (const auto &variant_tensors_ : o.variant_tensors) { variant_tensors.emplace_back((variant_tensors_) ? new tflite::VariantSubTypeT(*variant_tensors_) : nullptr); }
14197 }
14198 
14199 inline TensorT &TensorT::operator=(TensorT o) FLATBUFFERS_NOEXCEPT {
14200   std::swap(shape, o.shape);
14201   std::swap(type, o.type);
14202   std::swap(buffer, o.buffer);
14203   std::swap(name, o.name);
14204   std::swap(quantization, o.quantization);
14205   std::swap(is_variable, o.is_variable);
14206   std::swap(sparsity, o.sparsity);
14207   std::swap(shape_signature, o.shape_signature);
14208   std::swap(has_rank, o.has_rank);
14209   std::swap(variant_tensors, o.variant_tensors);
14210   return *this;
14211 }
14212 
14213 inline TensorT *Tensor::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14214   auto _o = std::unique_ptr<TensorT>(new TensorT());
14215   UnPackTo(_o.get(), _resolver);
14216   return _o.release();
14217 }
14218 
14219 inline void Tensor::UnPackTo(TensorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14220   (void)_o;
14221   (void)_resolver;
14222   { auto _e = shape(); if (_e) { _o->shape.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->shape[_i] = _e->Get(_i); } } }
14223   { auto _e = type(); _o->type = _e; }
14224   { auto _e = buffer(); _o->buffer = _e; }
14225   { auto _e = name(); if (_e) _o->name = _e->str(); }
14226   { auto _e = quantization(); if (_e) _o->quantization = std::unique_ptr<tflite::QuantizationParametersT>(_e->UnPack(_resolver)); }
14227   { auto _e = is_variable(); _o->is_variable = _e; }
14228   { auto _e = sparsity(); if (_e) _o->sparsity = std::unique_ptr<tflite::SparsityParametersT>(_e->UnPack(_resolver)); }
14229   { auto _e = shape_signature(); if (_e) { _o->shape_signature.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->shape_signature[_i] = _e->Get(_i); } } }
14230   { auto _e = has_rank(); _o->has_rank = _e; }
14231   { auto _e = variant_tensors(); if (_e) { _o->variant_tensors.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->variant_tensors[_i] = std::unique_ptr<tflite::VariantSubTypeT>(_e->Get(_i)->UnPack(_resolver)); } } }
14232 }
14233 
14234 inline flatbuffers::Offset<Tensor> Tensor::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TensorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14235   return CreateTensor(_fbb, _o, _rehasher);
14236 }
14237 
14238 inline flatbuffers::Offset<Tensor> CreateTensor(flatbuffers::FlatBufferBuilder &_fbb, const TensorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14239   (void)_rehasher;
14240   (void)_o;
14241   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TensorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14242   auto _shape = _o->shape.size() ? _fbb.CreateVector(_o->shape) : 0;
14243   auto _type = _o->type;
14244   auto _buffer = _o->buffer;
14245   auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name);
14246   auto _quantization = _o->quantization ? CreateQuantizationParameters(_fbb, _o->quantization.get(), _rehasher) : 0;
14247   auto _is_variable = _o->is_variable;
14248   auto _sparsity = _o->sparsity ? CreateSparsityParameters(_fbb, _o->sparsity.get(), _rehasher) : 0;
14249   auto _shape_signature = _o->shape_signature.size() ? _fbb.CreateVector(_o->shape_signature) : 0;
14250   auto _has_rank = _o->has_rank;
14251   auto _variant_tensors = _o->variant_tensors.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::VariantSubType>> (_o->variant_tensors.size(), [](size_t i, _VectorArgs *__va) { return CreateVariantSubType(*__va->__fbb, __va->__o->variant_tensors[i].get(), __va->__rehasher); }, &_va ) : 0;
14252   return tflite::CreateTensor(
14253       _fbb,
14254       _shape,
14255       _type,
14256       _buffer,
14257       _name,
14258       _quantization,
14259       _is_variable,
14260       _sparsity,
14261       _shape_signature,
14262       _has_rank,
14263       _variant_tensors);
14264 }
14265 
14266 inline Conv2DOptionsT *Conv2DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14267   auto _o = std::unique_ptr<Conv2DOptionsT>(new Conv2DOptionsT());
14268   UnPackTo(_o.get(), _resolver);
14269   return _o.release();
14270 }
14271 
14272 inline void Conv2DOptions::UnPackTo(Conv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14273   (void)_o;
14274   (void)_resolver;
14275   { auto _e = padding(); _o->padding = _e; }
14276   { auto _e = stride_w(); _o->stride_w = _e; }
14277   { auto _e = stride_h(); _o->stride_h = _e; }
14278   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14279   { auto _e = dilation_w_factor(); _o->dilation_w_factor = _e; }
14280   { auto _e = dilation_h_factor(); _o->dilation_h_factor = _e; }
14281 }
14282 
14283 inline flatbuffers::Offset<Conv2DOptions> Conv2DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14284   return CreateConv2DOptions(_fbb, _o, _rehasher);
14285 }
14286 
14287 inline flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Conv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14288   (void)_rehasher;
14289   (void)_o;
14290   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Conv2DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14291   auto _padding = _o->padding;
14292   auto _stride_w = _o->stride_w;
14293   auto _stride_h = _o->stride_h;
14294   auto _fused_activation_function = _o->fused_activation_function;
14295   auto _dilation_w_factor = _o->dilation_w_factor;
14296   auto _dilation_h_factor = _o->dilation_h_factor;
14297   return tflite::CreateConv2DOptions(
14298       _fbb,
14299       _padding,
14300       _stride_w,
14301       _stride_h,
14302       _fused_activation_function,
14303       _dilation_w_factor,
14304       _dilation_h_factor);
14305 }
14306 
14307 inline Conv3DOptionsT *Conv3DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14308   auto _o = std::unique_ptr<Conv3DOptionsT>(new Conv3DOptionsT());
14309   UnPackTo(_o.get(), _resolver);
14310   return _o.release();
14311 }
14312 
14313 inline void Conv3DOptions::UnPackTo(Conv3DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14314   (void)_o;
14315   (void)_resolver;
14316   { auto _e = padding(); _o->padding = _e; }
14317   { auto _e = stride_d(); _o->stride_d = _e; }
14318   { auto _e = stride_w(); _o->stride_w = _e; }
14319   { auto _e = stride_h(); _o->stride_h = _e; }
14320   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14321   { auto _e = dilation_d_factor(); _o->dilation_d_factor = _e; }
14322   { auto _e = dilation_w_factor(); _o->dilation_w_factor = _e; }
14323   { auto _e = dilation_h_factor(); _o->dilation_h_factor = _e; }
14324 }
14325 
14326 inline flatbuffers::Offset<Conv3DOptions> Conv3DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Conv3DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14327   return CreateConv3DOptions(_fbb, _o, _rehasher);
14328 }
14329 
14330 inline flatbuffers::Offset<Conv3DOptions> CreateConv3DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Conv3DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14331   (void)_rehasher;
14332   (void)_o;
14333   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Conv3DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14334   auto _padding = _o->padding;
14335   auto _stride_d = _o->stride_d;
14336   auto _stride_w = _o->stride_w;
14337   auto _stride_h = _o->stride_h;
14338   auto _fused_activation_function = _o->fused_activation_function;
14339   auto _dilation_d_factor = _o->dilation_d_factor;
14340   auto _dilation_w_factor = _o->dilation_w_factor;
14341   auto _dilation_h_factor = _o->dilation_h_factor;
14342   return tflite::CreateConv3DOptions(
14343       _fbb,
14344       _padding,
14345       _stride_d,
14346       _stride_w,
14347       _stride_h,
14348       _fused_activation_function,
14349       _dilation_d_factor,
14350       _dilation_w_factor,
14351       _dilation_h_factor);
14352 }
14353 
14354 inline Pool2DOptionsT *Pool2DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14355   auto _o = std::unique_ptr<Pool2DOptionsT>(new Pool2DOptionsT());
14356   UnPackTo(_o.get(), _resolver);
14357   return _o.release();
14358 }
14359 
14360 inline void Pool2DOptions::UnPackTo(Pool2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14361   (void)_o;
14362   (void)_resolver;
14363   { auto _e = padding(); _o->padding = _e; }
14364   { auto _e = stride_w(); _o->stride_w = _e; }
14365   { auto _e = stride_h(); _o->stride_h = _e; }
14366   { auto _e = filter_width(); _o->filter_width = _e; }
14367   { auto _e = filter_height(); _o->filter_height = _e; }
14368   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14369 }
14370 
14371 inline flatbuffers::Offset<Pool2DOptions> Pool2DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14372   return CreatePool2DOptions(_fbb, _o, _rehasher);
14373 }
14374 
14375 inline flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const Pool2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14376   (void)_rehasher;
14377   (void)_o;
14378   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Pool2DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14379   auto _padding = _o->padding;
14380   auto _stride_w = _o->stride_w;
14381   auto _stride_h = _o->stride_h;
14382   auto _filter_width = _o->filter_width;
14383   auto _filter_height = _o->filter_height;
14384   auto _fused_activation_function = _o->fused_activation_function;
14385   return tflite::CreatePool2DOptions(
14386       _fbb,
14387       _padding,
14388       _stride_w,
14389       _stride_h,
14390       _filter_width,
14391       _filter_height,
14392       _fused_activation_function);
14393 }
14394 
14395 inline DepthwiseConv2DOptionsT *DepthwiseConv2DOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14396   auto _o = std::unique_ptr<DepthwiseConv2DOptionsT>(new DepthwiseConv2DOptionsT());
14397   UnPackTo(_o.get(), _resolver);
14398   return _o.release();
14399 }
14400 
14401 inline void DepthwiseConv2DOptions::UnPackTo(DepthwiseConv2DOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14402   (void)_o;
14403   (void)_resolver;
14404   { auto _e = padding(); _o->padding = _e; }
14405   { auto _e = stride_w(); _o->stride_w = _e; }
14406   { auto _e = stride_h(); _o->stride_h = _e; }
14407   { auto _e = depth_multiplier(); _o->depth_multiplier = _e; }
14408   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14409   { auto _e = dilation_w_factor(); _o->dilation_w_factor = _e; }
14410   { auto _e = dilation_h_factor(); _o->dilation_h_factor = _e; }
14411 }
14412 
14413 inline flatbuffers::Offset<DepthwiseConv2DOptions> DepthwiseConv2DOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14414   return CreateDepthwiseConv2DOptions(_fbb, _o, _rehasher);
14415 }
14416 
14417 inline flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(flatbuffers::FlatBufferBuilder &_fbb, const DepthwiseConv2DOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14418   (void)_rehasher;
14419   (void)_o;
14420   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DepthwiseConv2DOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14421   auto _padding = _o->padding;
14422   auto _stride_w = _o->stride_w;
14423   auto _stride_h = _o->stride_h;
14424   auto _depth_multiplier = _o->depth_multiplier;
14425   auto _fused_activation_function = _o->fused_activation_function;
14426   auto _dilation_w_factor = _o->dilation_w_factor;
14427   auto _dilation_h_factor = _o->dilation_h_factor;
14428   return tflite::CreateDepthwiseConv2DOptions(
14429       _fbb,
14430       _padding,
14431       _stride_w,
14432       _stride_h,
14433       _depth_multiplier,
14434       _fused_activation_function,
14435       _dilation_w_factor,
14436       _dilation_h_factor);
14437 }
14438 
14439 inline ConcatEmbeddingsOptionsT *ConcatEmbeddingsOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14440   auto _o = std::unique_ptr<ConcatEmbeddingsOptionsT>(new ConcatEmbeddingsOptionsT());
14441   UnPackTo(_o.get(), _resolver);
14442   return _o.release();
14443 }
14444 
14445 inline void ConcatEmbeddingsOptions::UnPackTo(ConcatEmbeddingsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14446   (void)_o;
14447   (void)_resolver;
14448   { auto _e = num_channels(); _o->num_channels = _e; }
14449   { auto _e = num_columns_per_channel(); if (_e) { _o->num_columns_per_channel.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->num_columns_per_channel[_i] = _e->Get(_i); } } }
14450   { auto _e = embedding_dim_per_channel(); if (_e) { _o->embedding_dim_per_channel.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->embedding_dim_per_channel[_i] = _e->Get(_i); } } }
14451 }
14452 
14453 inline flatbuffers::Offset<ConcatEmbeddingsOptions> ConcatEmbeddingsOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14454   return CreateConcatEmbeddingsOptions(_fbb, _o, _rehasher);
14455 }
14456 
14457 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatEmbeddingsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14458   (void)_rehasher;
14459   (void)_o;
14460   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ConcatEmbeddingsOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14461   auto _num_channels = _o->num_channels;
14462   auto _num_columns_per_channel = _o->num_columns_per_channel.size() ? _fbb.CreateVector(_o->num_columns_per_channel) : 0;
14463   auto _embedding_dim_per_channel = _o->embedding_dim_per_channel.size() ? _fbb.CreateVector(_o->embedding_dim_per_channel) : 0;
14464   return tflite::CreateConcatEmbeddingsOptions(
14465       _fbb,
14466       _num_channels,
14467       _num_columns_per_channel,
14468       _embedding_dim_per_channel);
14469 }
14470 
14471 inline LSHProjectionOptionsT *LSHProjectionOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14472   auto _o = std::unique_ptr<LSHProjectionOptionsT>(new LSHProjectionOptionsT());
14473   UnPackTo(_o.get(), _resolver);
14474   return _o.release();
14475 }
14476 
14477 inline void LSHProjectionOptions::UnPackTo(LSHProjectionOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14478   (void)_o;
14479   (void)_resolver;
14480   { auto _e = type(); _o->type = _e; }
14481 }
14482 
14483 inline flatbuffers::Offset<LSHProjectionOptions> LSHProjectionOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14484   return CreateLSHProjectionOptions(_fbb, _o, _rehasher);
14485 }
14486 
14487 inline flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSHProjectionOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14488   (void)_rehasher;
14489   (void)_o;
14490   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LSHProjectionOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14491   auto _type = _o->type;
14492   return tflite::CreateLSHProjectionOptions(
14493       _fbb,
14494       _type);
14495 }
14496 
14497 inline SVDFOptionsT *SVDFOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14498   auto _o = std::unique_ptr<SVDFOptionsT>(new SVDFOptionsT());
14499   UnPackTo(_o.get(), _resolver);
14500   return _o.release();
14501 }
14502 
14503 inline void SVDFOptions::UnPackTo(SVDFOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14504   (void)_o;
14505   (void)_resolver;
14506   { auto _e = rank(); _o->rank = _e; }
14507   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14508   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14509 }
14510 
14511 inline flatbuffers::Offset<SVDFOptions> SVDFOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14512   return CreateSVDFOptions(_fbb, _o, _rehasher);
14513 }
14514 
14515 inline flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(flatbuffers::FlatBufferBuilder &_fbb, const SVDFOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14516   (void)_rehasher;
14517   (void)_o;
14518   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SVDFOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14519   auto _rank = _o->rank;
14520   auto _fused_activation_function = _o->fused_activation_function;
14521   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14522   return tflite::CreateSVDFOptions(
14523       _fbb,
14524       _rank,
14525       _fused_activation_function,
14526       _asymmetric_quantize_inputs);
14527 }
14528 
14529 inline RNNOptionsT *RNNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14530   auto _o = std::unique_ptr<RNNOptionsT>(new RNNOptionsT());
14531   UnPackTo(_o.get(), _resolver);
14532   return _o.release();
14533 }
14534 
14535 inline void RNNOptions::UnPackTo(RNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14536   (void)_o;
14537   (void)_resolver;
14538   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14539   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14540 }
14541 
14542 inline flatbuffers::Offset<RNNOptions> RNNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14543   return CreateRNNOptions(_fbb, _o, _rehasher);
14544 }
14545 
14546 inline flatbuffers::Offset<RNNOptions> CreateRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const RNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14547   (void)_rehasher;
14548   (void)_o;
14549   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RNNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14550   auto _fused_activation_function = _o->fused_activation_function;
14551   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14552   return tflite::CreateRNNOptions(
14553       _fbb,
14554       _fused_activation_function,
14555       _asymmetric_quantize_inputs);
14556 }
14557 
14558 inline SequenceRNNOptionsT *SequenceRNNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14559   auto _o = std::unique_ptr<SequenceRNNOptionsT>(new SequenceRNNOptionsT());
14560   UnPackTo(_o.get(), _resolver);
14561   return _o.release();
14562 }
14563 
14564 inline void SequenceRNNOptions::UnPackTo(SequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14565   (void)_o;
14566   (void)_resolver;
14567   { auto _e = time_major(); _o->time_major = _e; }
14568   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14569   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14570 }
14571 
14572 inline flatbuffers::Offset<SequenceRNNOptions> SequenceRNNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14573   return CreateSequenceRNNOptions(_fbb, _o, _rehasher);
14574 }
14575 
14576 inline flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const SequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14577   (void)_rehasher;
14578   (void)_o;
14579   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SequenceRNNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14580   auto _time_major = _o->time_major;
14581   auto _fused_activation_function = _o->fused_activation_function;
14582   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14583   return tflite::CreateSequenceRNNOptions(
14584       _fbb,
14585       _time_major,
14586       _fused_activation_function,
14587       _asymmetric_quantize_inputs);
14588 }
14589 
14590 inline BidirectionalSequenceRNNOptionsT *BidirectionalSequenceRNNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14591   auto _o = std::unique_ptr<BidirectionalSequenceRNNOptionsT>(new BidirectionalSequenceRNNOptionsT());
14592   UnPackTo(_o.get(), _resolver);
14593   return _o.release();
14594 }
14595 
14596 inline void BidirectionalSequenceRNNOptions::UnPackTo(BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14597   (void)_o;
14598   (void)_resolver;
14599   { auto _e = time_major(); _o->time_major = _e; }
14600   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14601   { auto _e = merge_outputs(); _o->merge_outputs = _e; }
14602   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14603 }
14604 
14605 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> BidirectionalSequenceRNNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14606   return CreateBidirectionalSequenceRNNOptions(_fbb, _o, _rehasher);
14607 }
14608 
14609 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceRNNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14610   (void)_rehasher;
14611   (void)_o;
14612   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BidirectionalSequenceRNNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14613   auto _time_major = _o->time_major;
14614   auto _fused_activation_function = _o->fused_activation_function;
14615   auto _merge_outputs = _o->merge_outputs;
14616   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14617   return tflite::CreateBidirectionalSequenceRNNOptions(
14618       _fbb,
14619       _time_major,
14620       _fused_activation_function,
14621       _merge_outputs,
14622       _asymmetric_quantize_inputs);
14623 }
14624 
14625 inline FullyConnectedOptionsT *FullyConnectedOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14626   auto _o = std::unique_ptr<FullyConnectedOptionsT>(new FullyConnectedOptionsT());
14627   UnPackTo(_o.get(), _resolver);
14628   return _o.release();
14629 }
14630 
14631 inline void FullyConnectedOptions::UnPackTo(FullyConnectedOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14632   (void)_o;
14633   (void)_resolver;
14634   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14635   { auto _e = weights_format(); _o->weights_format = _e; }
14636   { auto _e = keep_num_dims(); _o->keep_num_dims = _e; }
14637   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14638 }
14639 
14640 inline flatbuffers::Offset<FullyConnectedOptions> FullyConnectedOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14641   return CreateFullyConnectedOptions(_fbb, _o, _rehasher);
14642 }
14643 
14644 inline flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(flatbuffers::FlatBufferBuilder &_fbb, const FullyConnectedOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14645   (void)_rehasher;
14646   (void)_o;
14647   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FullyConnectedOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14648   auto _fused_activation_function = _o->fused_activation_function;
14649   auto _weights_format = _o->weights_format;
14650   auto _keep_num_dims = _o->keep_num_dims;
14651   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14652   return tflite::CreateFullyConnectedOptions(
14653       _fbb,
14654       _fused_activation_function,
14655       _weights_format,
14656       _keep_num_dims,
14657       _asymmetric_quantize_inputs);
14658 }
14659 
14660 inline SoftmaxOptionsT *SoftmaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14661   auto _o = std::unique_ptr<SoftmaxOptionsT>(new SoftmaxOptionsT());
14662   UnPackTo(_o.get(), _resolver);
14663   return _o.release();
14664 }
14665 
14666 inline void SoftmaxOptions::UnPackTo(SoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14667   (void)_o;
14668   (void)_resolver;
14669   { auto _e = beta(); _o->beta = _e; }
14670 }
14671 
14672 inline flatbuffers::Offset<SoftmaxOptions> SoftmaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14673   return CreateSoftmaxOptions(_fbb, _o, _rehasher);
14674 }
14675 
14676 inline flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const SoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14677   (void)_rehasher;
14678   (void)_o;
14679   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SoftmaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14680   auto _beta = _o->beta;
14681   return tflite::CreateSoftmaxOptions(
14682       _fbb,
14683       _beta);
14684 }
14685 
14686 inline ConcatenationOptionsT *ConcatenationOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14687   auto _o = std::unique_ptr<ConcatenationOptionsT>(new ConcatenationOptionsT());
14688   UnPackTo(_o.get(), _resolver);
14689   return _o.release();
14690 }
14691 
14692 inline void ConcatenationOptions::UnPackTo(ConcatenationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14693   (void)_o;
14694   (void)_resolver;
14695   { auto _e = axis(); _o->axis = _e; }
14696   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14697 }
14698 
14699 inline flatbuffers::Offset<ConcatenationOptions> ConcatenationOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14700   return CreateConcatenationOptions(_fbb, _o, _rehasher);
14701 }
14702 
14703 inline flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(flatbuffers::FlatBufferBuilder &_fbb, const ConcatenationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14704   (void)_rehasher;
14705   (void)_o;
14706   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ConcatenationOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14707   auto _axis = _o->axis;
14708   auto _fused_activation_function = _o->fused_activation_function;
14709   return tflite::CreateConcatenationOptions(
14710       _fbb,
14711       _axis,
14712       _fused_activation_function);
14713 }
14714 
14715 inline AddOptionsT *AddOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14716   auto _o = std::unique_ptr<AddOptionsT>(new AddOptionsT());
14717   UnPackTo(_o.get(), _resolver);
14718   return _o.release();
14719 }
14720 
14721 inline void AddOptions::UnPackTo(AddOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14722   (void)_o;
14723   (void)_resolver;
14724   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14725   { auto _e = pot_scale_int16(); _o->pot_scale_int16 = _e; }
14726 }
14727 
14728 inline flatbuffers::Offset<AddOptions> AddOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14729   return CreateAddOptions(_fbb, _o, _rehasher);
14730 }
14731 
14732 inline flatbuffers::Offset<AddOptions> CreateAddOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14733   (void)_rehasher;
14734   (void)_o;
14735   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AddOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14736   auto _fused_activation_function = _o->fused_activation_function;
14737   auto _pot_scale_int16 = _o->pot_scale_int16;
14738   return tflite::CreateAddOptions(
14739       _fbb,
14740       _fused_activation_function,
14741       _pot_scale_int16);
14742 }
14743 
14744 inline MulOptionsT *MulOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14745   auto _o = std::unique_ptr<MulOptionsT>(new MulOptionsT());
14746   UnPackTo(_o.get(), _resolver);
14747   return _o.release();
14748 }
14749 
14750 inline void MulOptions::UnPackTo(MulOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14751   (void)_o;
14752   (void)_resolver;
14753   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14754 }
14755 
14756 inline flatbuffers::Offset<MulOptions> MulOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14757   return CreateMulOptions(_fbb, _o, _rehasher);
14758 }
14759 
14760 inline flatbuffers::Offset<MulOptions> CreateMulOptions(flatbuffers::FlatBufferBuilder &_fbb, const MulOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14761   (void)_rehasher;
14762   (void)_o;
14763   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MulOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14764   auto _fused_activation_function = _o->fused_activation_function;
14765   return tflite::CreateMulOptions(
14766       _fbb,
14767       _fused_activation_function);
14768 }
14769 
14770 inline L2NormOptionsT *L2NormOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14771   auto _o = std::unique_ptr<L2NormOptionsT>(new L2NormOptionsT());
14772   UnPackTo(_o.get(), _resolver);
14773   return _o.release();
14774 }
14775 
14776 inline void L2NormOptions::UnPackTo(L2NormOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14777   (void)_o;
14778   (void)_resolver;
14779   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14780 }
14781 
14782 inline flatbuffers::Offset<L2NormOptions> L2NormOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14783   return CreateL2NormOptions(_fbb, _o, _rehasher);
14784 }
14785 
14786 inline flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(flatbuffers::FlatBufferBuilder &_fbb, const L2NormOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14787   (void)_rehasher;
14788   (void)_o;
14789   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const L2NormOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14790   auto _fused_activation_function = _o->fused_activation_function;
14791   return tflite::CreateL2NormOptions(
14792       _fbb,
14793       _fused_activation_function);
14794 }
14795 
14796 inline LocalResponseNormalizationOptionsT *LocalResponseNormalizationOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14797   auto _o = std::unique_ptr<LocalResponseNormalizationOptionsT>(new LocalResponseNormalizationOptionsT());
14798   UnPackTo(_o.get(), _resolver);
14799   return _o.release();
14800 }
14801 
14802 inline void LocalResponseNormalizationOptions::UnPackTo(LocalResponseNormalizationOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14803   (void)_o;
14804   (void)_resolver;
14805   { auto _e = radius(); _o->radius = _e; }
14806   { auto _e = bias(); _o->bias = _e; }
14807   { auto _e = alpha(); _o->alpha = _e; }
14808   { auto _e = beta(); _o->beta = _e; }
14809 }
14810 
14811 inline flatbuffers::Offset<LocalResponseNormalizationOptions> LocalResponseNormalizationOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14812   return CreateLocalResponseNormalizationOptions(_fbb, _o, _rehasher);
14813 }
14814 
14815 inline flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(flatbuffers::FlatBufferBuilder &_fbb, const LocalResponseNormalizationOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14816   (void)_rehasher;
14817   (void)_o;
14818   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LocalResponseNormalizationOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14819   auto _radius = _o->radius;
14820   auto _bias = _o->bias;
14821   auto _alpha = _o->alpha;
14822   auto _beta = _o->beta;
14823   return tflite::CreateLocalResponseNormalizationOptions(
14824       _fbb,
14825       _radius,
14826       _bias,
14827       _alpha,
14828       _beta);
14829 }
14830 
14831 inline LSTMOptionsT *LSTMOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14832   auto _o = std::unique_ptr<LSTMOptionsT>(new LSTMOptionsT());
14833   UnPackTo(_o.get(), _resolver);
14834   return _o.release();
14835 }
14836 
14837 inline void LSTMOptions::UnPackTo(LSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14838   (void)_o;
14839   (void)_resolver;
14840   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14841   { auto _e = cell_clip(); _o->cell_clip = _e; }
14842   { auto _e = proj_clip(); _o->proj_clip = _e; }
14843   { auto _e = kernel_type(); _o->kernel_type = _e; }
14844   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14845 }
14846 
14847 inline flatbuffers::Offset<LSTMOptions> LSTMOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14848   return CreateLSTMOptions(_fbb, _o, _rehasher);
14849 }
14850 
14851 inline flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const LSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14852   (void)_rehasher;
14853   (void)_o;
14854   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LSTMOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14855   auto _fused_activation_function = _o->fused_activation_function;
14856   auto _cell_clip = _o->cell_clip;
14857   auto _proj_clip = _o->proj_clip;
14858   auto _kernel_type = _o->kernel_type;
14859   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14860   return tflite::CreateLSTMOptions(
14861       _fbb,
14862       _fused_activation_function,
14863       _cell_clip,
14864       _proj_clip,
14865       _kernel_type,
14866       _asymmetric_quantize_inputs);
14867 }
14868 
14869 inline UnidirectionalSequenceLSTMOptionsT *UnidirectionalSequenceLSTMOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14870   auto _o = std::unique_ptr<UnidirectionalSequenceLSTMOptionsT>(new UnidirectionalSequenceLSTMOptionsT());
14871   UnPackTo(_o.get(), _resolver);
14872   return _o.release();
14873 }
14874 
14875 inline void UnidirectionalSequenceLSTMOptions::UnPackTo(UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14876   (void)_o;
14877   (void)_resolver;
14878   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14879   { auto _e = cell_clip(); _o->cell_clip = _e; }
14880   { auto _e = proj_clip(); _o->proj_clip = _e; }
14881   { auto _e = time_major(); _o->time_major = _e; }
14882   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14883 }
14884 
14885 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> UnidirectionalSequenceLSTMOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14886   return CreateUnidirectionalSequenceLSTMOptions(_fbb, _o, _rehasher);
14887 }
14888 
14889 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14890   (void)_rehasher;
14891   (void)_o;
14892   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnidirectionalSequenceLSTMOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14893   auto _fused_activation_function = _o->fused_activation_function;
14894   auto _cell_clip = _o->cell_clip;
14895   auto _proj_clip = _o->proj_clip;
14896   auto _time_major = _o->time_major;
14897   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14898   return tflite::CreateUnidirectionalSequenceLSTMOptions(
14899       _fbb,
14900       _fused_activation_function,
14901       _cell_clip,
14902       _proj_clip,
14903       _time_major,
14904       _asymmetric_quantize_inputs);
14905 }
14906 
14907 inline BidirectionalSequenceLSTMOptionsT *BidirectionalSequenceLSTMOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14908   auto _o = std::unique_ptr<BidirectionalSequenceLSTMOptionsT>(new BidirectionalSequenceLSTMOptionsT());
14909   UnPackTo(_o.get(), _resolver);
14910   return _o.release();
14911 }
14912 
14913 inline void BidirectionalSequenceLSTMOptions::UnPackTo(BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14914   (void)_o;
14915   (void)_resolver;
14916   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
14917   { auto _e = cell_clip(); _o->cell_clip = _e; }
14918   { auto _e = proj_clip(); _o->proj_clip = _e; }
14919   { auto _e = merge_outputs(); _o->merge_outputs = _e; }
14920   { auto _e = time_major(); _o->time_major = _e; }
14921   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
14922 }
14923 
14924 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> BidirectionalSequenceLSTMOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14925   return CreateBidirectionalSequenceLSTMOptions(_fbb, _o, _rehasher);
14926 }
14927 
14928 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(flatbuffers::FlatBufferBuilder &_fbb, const BidirectionalSequenceLSTMOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14929   (void)_rehasher;
14930   (void)_o;
14931   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BidirectionalSequenceLSTMOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14932   auto _fused_activation_function = _o->fused_activation_function;
14933   auto _cell_clip = _o->cell_clip;
14934   auto _proj_clip = _o->proj_clip;
14935   auto _merge_outputs = _o->merge_outputs;
14936   auto _time_major = _o->time_major;
14937   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
14938   return tflite::CreateBidirectionalSequenceLSTMOptions(
14939       _fbb,
14940       _fused_activation_function,
14941       _cell_clip,
14942       _proj_clip,
14943       _merge_outputs,
14944       _time_major,
14945       _asymmetric_quantize_inputs);
14946 }
14947 
14948 inline ResizeBilinearOptionsT *ResizeBilinearOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14949   auto _o = std::unique_ptr<ResizeBilinearOptionsT>(new ResizeBilinearOptionsT());
14950   UnPackTo(_o.get(), _resolver);
14951   return _o.release();
14952 }
14953 
14954 inline void ResizeBilinearOptions::UnPackTo(ResizeBilinearOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14955   (void)_o;
14956   (void)_resolver;
14957   { auto _e = align_corners(); _o->align_corners = _e; }
14958   { auto _e = half_pixel_centers(); _o->half_pixel_centers = _e; }
14959 }
14960 
14961 inline flatbuffers::Offset<ResizeBilinearOptions> ResizeBilinearOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14962   return CreateResizeBilinearOptions(_fbb, _o, _rehasher);
14963 }
14964 
14965 inline flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeBilinearOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14966   (void)_rehasher;
14967   (void)_o;
14968   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ResizeBilinearOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14969   auto _align_corners = _o->align_corners;
14970   auto _half_pixel_centers = _o->half_pixel_centers;
14971   return tflite::CreateResizeBilinearOptions(
14972       _fbb,
14973       _align_corners,
14974       _half_pixel_centers);
14975 }
14976 
14977 inline ResizeNearestNeighborOptionsT *ResizeNearestNeighborOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
14978   auto _o = std::unique_ptr<ResizeNearestNeighborOptionsT>(new ResizeNearestNeighborOptionsT());
14979   UnPackTo(_o.get(), _resolver);
14980   return _o.release();
14981 }
14982 
14983 inline void ResizeNearestNeighborOptions::UnPackTo(ResizeNearestNeighborOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
14984   (void)_o;
14985   (void)_resolver;
14986   { auto _e = align_corners(); _o->align_corners = _e; }
14987   { auto _e = half_pixel_centers(); _o->half_pixel_centers = _e; }
14988 }
14989 
14990 inline flatbuffers::Offset<ResizeNearestNeighborOptions> ResizeNearestNeighborOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
14991   return CreateResizeNearestNeighborOptions(_fbb, _o, _rehasher);
14992 }
14993 
14994 inline flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(flatbuffers::FlatBufferBuilder &_fbb, const ResizeNearestNeighborOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
14995   (void)_rehasher;
14996   (void)_o;
14997   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ResizeNearestNeighborOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
14998   auto _align_corners = _o->align_corners;
14999   auto _half_pixel_centers = _o->half_pixel_centers;
15000   return tflite::CreateResizeNearestNeighborOptions(
15001       _fbb,
15002       _align_corners,
15003       _half_pixel_centers);
15004 }
15005 
15006 inline CallOptionsT *CallOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15007   auto _o = std::unique_ptr<CallOptionsT>(new CallOptionsT());
15008   UnPackTo(_o.get(), _resolver);
15009   return _o.release();
15010 }
15011 
15012 inline void CallOptions::UnPackTo(CallOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15013   (void)_o;
15014   (void)_resolver;
15015   { auto _e = subgraph(); _o->subgraph = _e; }
15016 }
15017 
15018 inline flatbuffers::Offset<CallOptions> CallOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15019   return CreateCallOptions(_fbb, _o, _rehasher);
15020 }
15021 
15022 inline flatbuffers::Offset<CallOptions> CreateCallOptions(flatbuffers::FlatBufferBuilder &_fbb, const CallOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15023   (void)_rehasher;
15024   (void)_o;
15025   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CallOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15026   auto _subgraph = _o->subgraph;
15027   return tflite::CreateCallOptions(
15028       _fbb,
15029       _subgraph);
15030 }
15031 
15032 inline PadOptionsT *PadOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15033   auto _o = std::unique_ptr<PadOptionsT>(new PadOptionsT());
15034   UnPackTo(_o.get(), _resolver);
15035   return _o.release();
15036 }
15037 
15038 inline void PadOptions::UnPackTo(PadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15039   (void)_o;
15040   (void)_resolver;
15041 }
15042 
15043 inline flatbuffers::Offset<PadOptions> PadOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15044   return CreatePadOptions(_fbb, _o, _rehasher);
15045 }
15046 
15047 inline flatbuffers::Offset<PadOptions> CreatePadOptions(flatbuffers::FlatBufferBuilder &_fbb, const PadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15048   (void)_rehasher;
15049   (void)_o;
15050   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PadOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15051   return tflite::CreatePadOptions(
15052       _fbb);
15053 }
15054 
15055 inline PadV2OptionsT *PadV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15056   auto _o = std::unique_ptr<PadV2OptionsT>(new PadV2OptionsT());
15057   UnPackTo(_o.get(), _resolver);
15058   return _o.release();
15059 }
15060 
15061 inline void PadV2Options::UnPackTo(PadV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15062   (void)_o;
15063   (void)_resolver;
15064 }
15065 
15066 inline flatbuffers::Offset<PadV2Options> PadV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15067   return CreatePadV2Options(_fbb, _o, _rehasher);
15068 }
15069 
15070 inline flatbuffers::Offset<PadV2Options> CreatePadV2Options(flatbuffers::FlatBufferBuilder &_fbb, const PadV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15071   (void)_rehasher;
15072   (void)_o;
15073   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PadV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15074   return tflite::CreatePadV2Options(
15075       _fbb);
15076 }
15077 
15078 inline ReshapeOptionsT *ReshapeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15079   auto _o = std::unique_ptr<ReshapeOptionsT>(new ReshapeOptionsT());
15080   UnPackTo(_o.get(), _resolver);
15081   return _o.release();
15082 }
15083 
15084 inline void ReshapeOptions::UnPackTo(ReshapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15085   (void)_o;
15086   (void)_resolver;
15087   { auto _e = new_shape(); if (_e) { _o->new_shape.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->new_shape[_i] = _e->Get(_i); } } }
15088 }
15089 
15090 inline flatbuffers::Offset<ReshapeOptions> ReshapeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15091   return CreateReshapeOptions(_fbb, _o, _rehasher);
15092 }
15093 
15094 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReshapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15095   (void)_rehasher;
15096   (void)_o;
15097   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReshapeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15098   auto _new_shape = _o->new_shape.size() ? _fbb.CreateVector(_o->new_shape) : 0;
15099   return tflite::CreateReshapeOptions(
15100       _fbb,
15101       _new_shape);
15102 }
15103 
15104 inline SpaceToBatchNDOptionsT *SpaceToBatchNDOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15105   auto _o = std::unique_ptr<SpaceToBatchNDOptionsT>(new SpaceToBatchNDOptionsT());
15106   UnPackTo(_o.get(), _resolver);
15107   return _o.release();
15108 }
15109 
15110 inline void SpaceToBatchNDOptions::UnPackTo(SpaceToBatchNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15111   (void)_o;
15112   (void)_resolver;
15113 }
15114 
15115 inline flatbuffers::Offset<SpaceToBatchNDOptions> SpaceToBatchNDOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15116   return CreateSpaceToBatchNDOptions(_fbb, _o, _rehasher);
15117 }
15118 
15119 inline flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToBatchNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15120   (void)_rehasher;
15121   (void)_o;
15122   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SpaceToBatchNDOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15123   return tflite::CreateSpaceToBatchNDOptions(
15124       _fbb);
15125 }
15126 
15127 inline BatchToSpaceNDOptionsT *BatchToSpaceNDOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15128   auto _o = std::unique_ptr<BatchToSpaceNDOptionsT>(new BatchToSpaceNDOptionsT());
15129   UnPackTo(_o.get(), _resolver);
15130   return _o.release();
15131 }
15132 
15133 inline void BatchToSpaceNDOptions::UnPackTo(BatchToSpaceNDOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15134   (void)_o;
15135   (void)_resolver;
15136 }
15137 
15138 inline flatbuffers::Offset<BatchToSpaceNDOptions> BatchToSpaceNDOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15139   return CreateBatchToSpaceNDOptions(_fbb, _o, _rehasher);
15140 }
15141 
15142 inline flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(flatbuffers::FlatBufferBuilder &_fbb, const BatchToSpaceNDOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15143   (void)_rehasher;
15144   (void)_o;
15145   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BatchToSpaceNDOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15146   return tflite::CreateBatchToSpaceNDOptions(
15147       _fbb);
15148 }
15149 
15150 inline SkipGramOptionsT *SkipGramOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15151   auto _o = std::unique_ptr<SkipGramOptionsT>(new SkipGramOptionsT());
15152   UnPackTo(_o.get(), _resolver);
15153   return _o.release();
15154 }
15155 
15156 inline void SkipGramOptions::UnPackTo(SkipGramOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15157   (void)_o;
15158   (void)_resolver;
15159   { auto _e = ngram_size(); _o->ngram_size = _e; }
15160   { auto _e = max_skip_size(); _o->max_skip_size = _e; }
15161   { auto _e = include_all_ngrams(); _o->include_all_ngrams = _e; }
15162 }
15163 
15164 inline flatbuffers::Offset<SkipGramOptions> SkipGramOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15165   return CreateSkipGramOptions(_fbb, _o, _rehasher);
15166 }
15167 
15168 inline flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(flatbuffers::FlatBufferBuilder &_fbb, const SkipGramOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15169   (void)_rehasher;
15170   (void)_o;
15171   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SkipGramOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15172   auto _ngram_size = _o->ngram_size;
15173   auto _max_skip_size = _o->max_skip_size;
15174   auto _include_all_ngrams = _o->include_all_ngrams;
15175   return tflite::CreateSkipGramOptions(
15176       _fbb,
15177       _ngram_size,
15178       _max_skip_size,
15179       _include_all_ngrams);
15180 }
15181 
15182 inline SpaceToDepthOptionsT *SpaceToDepthOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15183   auto _o = std::unique_ptr<SpaceToDepthOptionsT>(new SpaceToDepthOptionsT());
15184   UnPackTo(_o.get(), _resolver);
15185   return _o.release();
15186 }
15187 
15188 inline void SpaceToDepthOptions::UnPackTo(SpaceToDepthOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15189   (void)_o;
15190   (void)_resolver;
15191   { auto _e = block_size(); _o->block_size = _e; }
15192 }
15193 
15194 inline flatbuffers::Offset<SpaceToDepthOptions> SpaceToDepthOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15195   return CreateSpaceToDepthOptions(_fbb, _o, _rehasher);
15196 }
15197 
15198 inline flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(flatbuffers::FlatBufferBuilder &_fbb, const SpaceToDepthOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15199   (void)_rehasher;
15200   (void)_o;
15201   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SpaceToDepthOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15202   auto _block_size = _o->block_size;
15203   return tflite::CreateSpaceToDepthOptions(
15204       _fbb,
15205       _block_size);
15206 }
15207 
15208 inline DepthToSpaceOptionsT *DepthToSpaceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15209   auto _o = std::unique_ptr<DepthToSpaceOptionsT>(new DepthToSpaceOptionsT());
15210   UnPackTo(_o.get(), _resolver);
15211   return _o.release();
15212 }
15213 
15214 inline void DepthToSpaceOptions::UnPackTo(DepthToSpaceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15215   (void)_o;
15216   (void)_resolver;
15217   { auto _e = block_size(); _o->block_size = _e; }
15218 }
15219 
15220 inline flatbuffers::Offset<DepthToSpaceOptions> DepthToSpaceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DepthToSpaceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15221   return CreateDepthToSpaceOptions(_fbb, _o, _rehasher);
15222 }
15223 
15224 inline flatbuffers::Offset<DepthToSpaceOptions> CreateDepthToSpaceOptions(flatbuffers::FlatBufferBuilder &_fbb, const DepthToSpaceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15225   (void)_rehasher;
15226   (void)_o;
15227   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DepthToSpaceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15228   auto _block_size = _o->block_size;
15229   return tflite::CreateDepthToSpaceOptions(
15230       _fbb,
15231       _block_size);
15232 }
15233 
15234 inline SubOptionsT *SubOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15235   auto _o = std::unique_ptr<SubOptionsT>(new SubOptionsT());
15236   UnPackTo(_o.get(), _resolver);
15237   return _o.release();
15238 }
15239 
15240 inline void SubOptions::UnPackTo(SubOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15241   (void)_o;
15242   (void)_resolver;
15243   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
15244   { auto _e = pot_scale_int16(); _o->pot_scale_int16 = _e; }
15245 }
15246 
15247 inline flatbuffers::Offset<SubOptions> SubOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15248   return CreateSubOptions(_fbb, _o, _rehasher);
15249 }
15250 
15251 inline flatbuffers::Offset<SubOptions> CreateSubOptions(flatbuffers::FlatBufferBuilder &_fbb, const SubOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15252   (void)_rehasher;
15253   (void)_o;
15254   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SubOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15255   auto _fused_activation_function = _o->fused_activation_function;
15256   auto _pot_scale_int16 = _o->pot_scale_int16;
15257   return tflite::CreateSubOptions(
15258       _fbb,
15259       _fused_activation_function,
15260       _pot_scale_int16);
15261 }
15262 
15263 inline DivOptionsT *DivOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15264   auto _o = std::unique_ptr<DivOptionsT>(new DivOptionsT());
15265   UnPackTo(_o.get(), _resolver);
15266   return _o.release();
15267 }
15268 
15269 inline void DivOptions::UnPackTo(DivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15270   (void)_o;
15271   (void)_resolver;
15272   { auto _e = fused_activation_function(); _o->fused_activation_function = _e; }
15273 }
15274 
15275 inline flatbuffers::Offset<DivOptions> DivOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15276   return CreateDivOptions(_fbb, _o, _rehasher);
15277 }
15278 
15279 inline flatbuffers::Offset<DivOptions> CreateDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const DivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15280   (void)_rehasher;
15281   (void)_o;
15282   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DivOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15283   auto _fused_activation_function = _o->fused_activation_function;
15284   return tflite::CreateDivOptions(
15285       _fbb,
15286       _fused_activation_function);
15287 }
15288 
15289 inline TopKV2OptionsT *TopKV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15290   auto _o = std::unique_ptr<TopKV2OptionsT>(new TopKV2OptionsT());
15291   UnPackTo(_o.get(), _resolver);
15292   return _o.release();
15293 }
15294 
15295 inline void TopKV2Options::UnPackTo(TopKV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15296   (void)_o;
15297   (void)_resolver;
15298 }
15299 
15300 inline flatbuffers::Offset<TopKV2Options> TopKV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15301   return CreateTopKV2Options(_fbb, _o, _rehasher);
15302 }
15303 
15304 inline flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(flatbuffers::FlatBufferBuilder &_fbb, const TopKV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15305   (void)_rehasher;
15306   (void)_o;
15307   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TopKV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15308   return tflite::CreateTopKV2Options(
15309       _fbb);
15310 }
15311 
15312 inline EmbeddingLookupSparseOptionsT *EmbeddingLookupSparseOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15313   auto _o = std::unique_ptr<EmbeddingLookupSparseOptionsT>(new EmbeddingLookupSparseOptionsT());
15314   UnPackTo(_o.get(), _resolver);
15315   return _o.release();
15316 }
15317 
15318 inline void EmbeddingLookupSparseOptions::UnPackTo(EmbeddingLookupSparseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15319   (void)_o;
15320   (void)_resolver;
15321   { auto _e = combiner(); _o->combiner = _e; }
15322 }
15323 
15324 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> EmbeddingLookupSparseOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15325   return CreateEmbeddingLookupSparseOptions(_fbb, _o, _rehasher);
15326 }
15327 
15328 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(flatbuffers::FlatBufferBuilder &_fbb, const EmbeddingLookupSparseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15329   (void)_rehasher;
15330   (void)_o;
15331   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EmbeddingLookupSparseOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15332   auto _combiner = _o->combiner;
15333   return tflite::CreateEmbeddingLookupSparseOptions(
15334       _fbb,
15335       _combiner);
15336 }
15337 
15338 inline GatherOptionsT *GatherOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15339   auto _o = std::unique_ptr<GatherOptionsT>(new GatherOptionsT());
15340   UnPackTo(_o.get(), _resolver);
15341   return _o.release();
15342 }
15343 
15344 inline void GatherOptions::UnPackTo(GatherOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15345   (void)_o;
15346   (void)_resolver;
15347   { auto _e = axis(); _o->axis = _e; }
15348   { auto _e = batch_dims(); _o->batch_dims = _e; }
15349 }
15350 
15351 inline flatbuffers::Offset<GatherOptions> GatherOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15352   return CreateGatherOptions(_fbb, _o, _rehasher);
15353 }
15354 
15355 inline flatbuffers::Offset<GatherOptions> CreateGatherOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15356   (void)_rehasher;
15357   (void)_o;
15358   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GatherOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15359   auto _axis = _o->axis;
15360   auto _batch_dims = _o->batch_dims;
15361   return tflite::CreateGatherOptions(
15362       _fbb,
15363       _axis,
15364       _batch_dims);
15365 }
15366 
15367 inline TransposeOptionsT *TransposeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15368   auto _o = std::unique_ptr<TransposeOptionsT>(new TransposeOptionsT());
15369   UnPackTo(_o.get(), _resolver);
15370   return _o.release();
15371 }
15372 
15373 inline void TransposeOptions::UnPackTo(TransposeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15374   (void)_o;
15375   (void)_resolver;
15376 }
15377 
15378 inline flatbuffers::Offset<TransposeOptions> TransposeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15379   return CreateTransposeOptions(_fbb, _o, _rehasher);
15380 }
15381 
15382 inline flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15383   (void)_rehasher;
15384   (void)_o;
15385   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TransposeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15386   return tflite::CreateTransposeOptions(
15387       _fbb);
15388 }
15389 
15390 inline ExpOptionsT *ExpOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15391   auto _o = std::unique_ptr<ExpOptionsT>(new ExpOptionsT());
15392   UnPackTo(_o.get(), _resolver);
15393   return _o.release();
15394 }
15395 
15396 inline void ExpOptions::UnPackTo(ExpOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15397   (void)_o;
15398   (void)_resolver;
15399 }
15400 
15401 inline flatbuffers::Offset<ExpOptions> ExpOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15402   return CreateExpOptions(_fbb, _o, _rehasher);
15403 }
15404 
15405 inline flatbuffers::Offset<ExpOptions> CreateExpOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15406   (void)_rehasher;
15407   (void)_o;
15408   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ExpOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15409   return tflite::CreateExpOptions(
15410       _fbb);
15411 }
15412 
15413 inline CosOptionsT *CosOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15414   auto _o = std::unique_ptr<CosOptionsT>(new CosOptionsT());
15415   UnPackTo(_o.get(), _resolver);
15416   return _o.release();
15417 }
15418 
15419 inline void CosOptions::UnPackTo(CosOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15420   (void)_o;
15421   (void)_resolver;
15422 }
15423 
15424 inline flatbuffers::Offset<CosOptions> CosOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15425   return CreateCosOptions(_fbb, _o, _rehasher);
15426 }
15427 
15428 inline flatbuffers::Offset<CosOptions> CreateCosOptions(flatbuffers::FlatBufferBuilder &_fbb, const CosOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15429   (void)_rehasher;
15430   (void)_o;
15431   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CosOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15432   return tflite::CreateCosOptions(
15433       _fbb);
15434 }
15435 
15436 inline ReducerOptionsT *ReducerOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15437   auto _o = std::unique_ptr<ReducerOptionsT>(new ReducerOptionsT());
15438   UnPackTo(_o.get(), _resolver);
15439   return _o.release();
15440 }
15441 
15442 inline void ReducerOptions::UnPackTo(ReducerOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15443   (void)_o;
15444   (void)_resolver;
15445   { auto _e = keep_dims(); _o->keep_dims = _e; }
15446 }
15447 
15448 inline flatbuffers::Offset<ReducerOptions> ReducerOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15449   return CreateReducerOptions(_fbb, _o, _rehasher);
15450 }
15451 
15452 inline flatbuffers::Offset<ReducerOptions> CreateReducerOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReducerOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15453   (void)_rehasher;
15454   (void)_o;
15455   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReducerOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15456   auto _keep_dims = _o->keep_dims;
15457   return tflite::CreateReducerOptions(
15458       _fbb,
15459       _keep_dims);
15460 }
15461 
15462 inline SqueezeOptionsT *SqueezeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15463   auto _o = std::unique_ptr<SqueezeOptionsT>(new SqueezeOptionsT());
15464   UnPackTo(_o.get(), _resolver);
15465   return _o.release();
15466 }
15467 
15468 inline void SqueezeOptions::UnPackTo(SqueezeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15469   (void)_o;
15470   (void)_resolver;
15471   { auto _e = squeeze_dims(); if (_e) { _o->squeeze_dims.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->squeeze_dims[_i] = _e->Get(_i); } } }
15472 }
15473 
15474 inline flatbuffers::Offset<SqueezeOptions> SqueezeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15475   return CreateSqueezeOptions(_fbb, _o, _rehasher);
15476 }
15477 
15478 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(flatbuffers::FlatBufferBuilder &_fbb, const SqueezeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15479   (void)_rehasher;
15480   (void)_o;
15481   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SqueezeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15482   auto _squeeze_dims = _o->squeeze_dims.size() ? _fbb.CreateVector(_o->squeeze_dims) : 0;
15483   return tflite::CreateSqueezeOptions(
15484       _fbb,
15485       _squeeze_dims);
15486 }
15487 
15488 inline SplitOptionsT *SplitOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15489   auto _o = std::unique_ptr<SplitOptionsT>(new SplitOptionsT());
15490   UnPackTo(_o.get(), _resolver);
15491   return _o.release();
15492 }
15493 
15494 inline void SplitOptions::UnPackTo(SplitOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15495   (void)_o;
15496   (void)_resolver;
15497   { auto _e = num_splits(); _o->num_splits = _e; }
15498 }
15499 
15500 inline flatbuffers::Offset<SplitOptions> SplitOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15501   return CreateSplitOptions(_fbb, _o, _rehasher);
15502 }
15503 
15504 inline flatbuffers::Offset<SplitOptions> CreateSplitOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15505   (void)_rehasher;
15506   (void)_o;
15507   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SplitOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15508   auto _num_splits = _o->num_splits;
15509   return tflite::CreateSplitOptions(
15510       _fbb,
15511       _num_splits);
15512 }
15513 
15514 inline SplitVOptionsT *SplitVOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15515   auto _o = std::unique_ptr<SplitVOptionsT>(new SplitVOptionsT());
15516   UnPackTo(_o.get(), _resolver);
15517   return _o.release();
15518 }
15519 
15520 inline void SplitVOptions::UnPackTo(SplitVOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15521   (void)_o;
15522   (void)_resolver;
15523   { auto _e = num_splits(); _o->num_splits = _e; }
15524 }
15525 
15526 inline flatbuffers::Offset<SplitVOptions> SplitVOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15527   return CreateSplitVOptions(_fbb, _o, _rehasher);
15528 }
15529 
15530 inline flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(flatbuffers::FlatBufferBuilder &_fbb, const SplitVOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15531   (void)_rehasher;
15532   (void)_o;
15533   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SplitVOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15534   auto _num_splits = _o->num_splits;
15535   return tflite::CreateSplitVOptions(
15536       _fbb,
15537       _num_splits);
15538 }
15539 
15540 inline StridedSliceOptionsT *StridedSliceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15541   auto _o = std::unique_ptr<StridedSliceOptionsT>(new StridedSliceOptionsT());
15542   UnPackTo(_o.get(), _resolver);
15543   return _o.release();
15544 }
15545 
15546 inline void StridedSliceOptions::UnPackTo(StridedSliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15547   (void)_o;
15548   (void)_resolver;
15549   { auto _e = begin_mask(); _o->begin_mask = _e; }
15550   { auto _e = end_mask(); _o->end_mask = _e; }
15551   { auto _e = ellipsis_mask(); _o->ellipsis_mask = _e; }
15552   { auto _e = new_axis_mask(); _o->new_axis_mask = _e; }
15553   { auto _e = shrink_axis_mask(); _o->shrink_axis_mask = _e; }
15554 }
15555 
15556 inline flatbuffers::Offset<StridedSliceOptions> StridedSliceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15557   return CreateStridedSliceOptions(_fbb, _o, _rehasher);
15558 }
15559 
15560 inline flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const StridedSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15561   (void)_rehasher;
15562   (void)_o;
15563   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const StridedSliceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15564   auto _begin_mask = _o->begin_mask;
15565   auto _end_mask = _o->end_mask;
15566   auto _ellipsis_mask = _o->ellipsis_mask;
15567   auto _new_axis_mask = _o->new_axis_mask;
15568   auto _shrink_axis_mask = _o->shrink_axis_mask;
15569   return tflite::CreateStridedSliceOptions(
15570       _fbb,
15571       _begin_mask,
15572       _end_mask,
15573       _ellipsis_mask,
15574       _new_axis_mask,
15575       _shrink_axis_mask);
15576 }
15577 
15578 inline LogSoftmaxOptionsT *LogSoftmaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15579   auto _o = std::unique_ptr<LogSoftmaxOptionsT>(new LogSoftmaxOptionsT());
15580   UnPackTo(_o.get(), _resolver);
15581   return _o.release();
15582 }
15583 
15584 inline void LogSoftmaxOptions::UnPackTo(LogSoftmaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15585   (void)_o;
15586   (void)_resolver;
15587 }
15588 
15589 inline flatbuffers::Offset<LogSoftmaxOptions> LogSoftmaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15590   return CreateLogSoftmaxOptions(_fbb, _o, _rehasher);
15591 }
15592 
15593 inline flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogSoftmaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15594   (void)_rehasher;
15595   (void)_o;
15596   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogSoftmaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15597   return tflite::CreateLogSoftmaxOptions(
15598       _fbb);
15599 }
15600 
15601 inline CastOptionsT *CastOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15602   auto _o = std::unique_ptr<CastOptionsT>(new CastOptionsT());
15603   UnPackTo(_o.get(), _resolver);
15604   return _o.release();
15605 }
15606 
15607 inline void CastOptions::UnPackTo(CastOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15608   (void)_o;
15609   (void)_resolver;
15610   { auto _e = in_data_type(); _o->in_data_type = _e; }
15611   { auto _e = out_data_type(); _o->out_data_type = _e; }
15612 }
15613 
15614 inline flatbuffers::Offset<CastOptions> CastOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15615   return CreateCastOptions(_fbb, _o, _rehasher);
15616 }
15617 
15618 inline flatbuffers::Offset<CastOptions> CreateCastOptions(flatbuffers::FlatBufferBuilder &_fbb, const CastOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15619   (void)_rehasher;
15620   (void)_o;
15621   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CastOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15622   auto _in_data_type = _o->in_data_type;
15623   auto _out_data_type = _o->out_data_type;
15624   return tflite::CreateCastOptions(
15625       _fbb,
15626       _in_data_type,
15627       _out_data_type);
15628 }
15629 
15630 inline DequantizeOptionsT *DequantizeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15631   auto _o = std::unique_ptr<DequantizeOptionsT>(new DequantizeOptionsT());
15632   UnPackTo(_o.get(), _resolver);
15633   return _o.release();
15634 }
15635 
15636 inline void DequantizeOptions::UnPackTo(DequantizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15637   (void)_o;
15638   (void)_resolver;
15639 }
15640 
15641 inline flatbuffers::Offset<DequantizeOptions> DequantizeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15642   return CreateDequantizeOptions(_fbb, _o, _rehasher);
15643 }
15644 
15645 inline flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const DequantizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15646   (void)_rehasher;
15647   (void)_o;
15648   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DequantizeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15649   return tflite::CreateDequantizeOptions(
15650       _fbb);
15651 }
15652 
15653 inline MaximumMinimumOptionsT *MaximumMinimumOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15654   auto _o = std::unique_ptr<MaximumMinimumOptionsT>(new MaximumMinimumOptionsT());
15655   UnPackTo(_o.get(), _resolver);
15656   return _o.release();
15657 }
15658 
15659 inline void MaximumMinimumOptions::UnPackTo(MaximumMinimumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15660   (void)_o;
15661   (void)_resolver;
15662 }
15663 
15664 inline flatbuffers::Offset<MaximumMinimumOptions> MaximumMinimumOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15665   return CreateMaximumMinimumOptions(_fbb, _o, _rehasher);
15666 }
15667 
15668 inline flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(flatbuffers::FlatBufferBuilder &_fbb, const MaximumMinimumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15669   (void)_rehasher;
15670   (void)_o;
15671   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MaximumMinimumOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15672   return tflite::CreateMaximumMinimumOptions(
15673       _fbb);
15674 }
15675 
15676 inline TileOptionsT *TileOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15677   auto _o = std::unique_ptr<TileOptionsT>(new TileOptionsT());
15678   UnPackTo(_o.get(), _resolver);
15679   return _o.release();
15680 }
15681 
15682 inline void TileOptions::UnPackTo(TileOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15683   (void)_o;
15684   (void)_resolver;
15685 }
15686 
15687 inline flatbuffers::Offset<TileOptions> TileOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15688   return CreateTileOptions(_fbb, _o, _rehasher);
15689 }
15690 
15691 inline flatbuffers::Offset<TileOptions> CreateTileOptions(flatbuffers::FlatBufferBuilder &_fbb, const TileOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15692   (void)_rehasher;
15693   (void)_o;
15694   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TileOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15695   return tflite::CreateTileOptions(
15696       _fbb);
15697 }
15698 
15699 inline ArgMaxOptionsT *ArgMaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15700   auto _o = std::unique_ptr<ArgMaxOptionsT>(new ArgMaxOptionsT());
15701   UnPackTo(_o.get(), _resolver);
15702   return _o.release();
15703 }
15704 
15705 inline void ArgMaxOptions::UnPackTo(ArgMaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15706   (void)_o;
15707   (void)_resolver;
15708   { auto _e = output_type(); _o->output_type = _e; }
15709 }
15710 
15711 inline flatbuffers::Offset<ArgMaxOptions> ArgMaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15712   return CreateArgMaxOptions(_fbb, _o, _rehasher);
15713 }
15714 
15715 inline flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15716   (void)_rehasher;
15717   (void)_o;
15718   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ArgMaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15719   auto _output_type = _o->output_type;
15720   return tflite::CreateArgMaxOptions(
15721       _fbb,
15722       _output_type);
15723 }
15724 
15725 inline ArgMinOptionsT *ArgMinOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15726   auto _o = std::unique_ptr<ArgMinOptionsT>(new ArgMinOptionsT());
15727   UnPackTo(_o.get(), _resolver);
15728   return _o.release();
15729 }
15730 
15731 inline void ArgMinOptions::UnPackTo(ArgMinOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15732   (void)_o;
15733   (void)_resolver;
15734   { auto _e = output_type(); _o->output_type = _e; }
15735 }
15736 
15737 inline flatbuffers::Offset<ArgMinOptions> ArgMinOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15738   return CreateArgMinOptions(_fbb, _o, _rehasher);
15739 }
15740 
15741 inline flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(flatbuffers::FlatBufferBuilder &_fbb, const ArgMinOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15742   (void)_rehasher;
15743   (void)_o;
15744   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ArgMinOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15745   auto _output_type = _o->output_type;
15746   return tflite::CreateArgMinOptions(
15747       _fbb,
15748       _output_type);
15749 }
15750 
15751 inline GreaterOptionsT *GreaterOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15752   auto _o = std::unique_ptr<GreaterOptionsT>(new GreaterOptionsT());
15753   UnPackTo(_o.get(), _resolver);
15754   return _o.release();
15755 }
15756 
15757 inline void GreaterOptions::UnPackTo(GreaterOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15758   (void)_o;
15759   (void)_resolver;
15760 }
15761 
15762 inline flatbuffers::Offset<GreaterOptions> GreaterOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15763   return CreateGreaterOptions(_fbb, _o, _rehasher);
15764 }
15765 
15766 inline flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15767   (void)_rehasher;
15768   (void)_o;
15769   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GreaterOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15770   return tflite::CreateGreaterOptions(
15771       _fbb);
15772 }
15773 
15774 inline GreaterEqualOptionsT *GreaterEqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15775   auto _o = std::unique_ptr<GreaterEqualOptionsT>(new GreaterEqualOptionsT());
15776   UnPackTo(_o.get(), _resolver);
15777   return _o.release();
15778 }
15779 
15780 inline void GreaterEqualOptions::UnPackTo(GreaterEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15781   (void)_o;
15782   (void)_resolver;
15783 }
15784 
15785 inline flatbuffers::Offset<GreaterEqualOptions> GreaterEqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15786   return CreateGreaterEqualOptions(_fbb, _o, _rehasher);
15787 }
15788 
15789 inline flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const GreaterEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15790   (void)_rehasher;
15791   (void)_o;
15792   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GreaterEqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15793   return tflite::CreateGreaterEqualOptions(
15794       _fbb);
15795 }
15796 
15797 inline LessOptionsT *LessOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15798   auto _o = std::unique_ptr<LessOptionsT>(new LessOptionsT());
15799   UnPackTo(_o.get(), _resolver);
15800   return _o.release();
15801 }
15802 
15803 inline void LessOptions::UnPackTo(LessOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15804   (void)_o;
15805   (void)_resolver;
15806 }
15807 
15808 inline flatbuffers::Offset<LessOptions> LessOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15809   return CreateLessOptions(_fbb, _o, _rehasher);
15810 }
15811 
15812 inline flatbuffers::Offset<LessOptions> CreateLessOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15813   (void)_rehasher;
15814   (void)_o;
15815   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LessOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15816   return tflite::CreateLessOptions(
15817       _fbb);
15818 }
15819 
15820 inline LessEqualOptionsT *LessEqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15821   auto _o = std::unique_ptr<LessEqualOptionsT>(new LessEqualOptionsT());
15822   UnPackTo(_o.get(), _resolver);
15823   return _o.release();
15824 }
15825 
15826 inline void LessEqualOptions::UnPackTo(LessEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15827   (void)_o;
15828   (void)_resolver;
15829 }
15830 
15831 inline flatbuffers::Offset<LessEqualOptions> LessEqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15832   return CreateLessEqualOptions(_fbb, _o, _rehasher);
15833 }
15834 
15835 inline flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const LessEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15836   (void)_rehasher;
15837   (void)_o;
15838   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LessEqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15839   return tflite::CreateLessEqualOptions(
15840       _fbb);
15841 }
15842 
15843 inline NegOptionsT *NegOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15844   auto _o = std::unique_ptr<NegOptionsT>(new NegOptionsT());
15845   UnPackTo(_o.get(), _resolver);
15846   return _o.release();
15847 }
15848 
15849 inline void NegOptions::UnPackTo(NegOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15850   (void)_o;
15851   (void)_resolver;
15852 }
15853 
15854 inline flatbuffers::Offset<NegOptions> NegOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15855   return CreateNegOptions(_fbb, _o, _rehasher);
15856 }
15857 
15858 inline flatbuffers::Offset<NegOptions> CreateNegOptions(flatbuffers::FlatBufferBuilder &_fbb, const NegOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15859   (void)_rehasher;
15860   (void)_o;
15861   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NegOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15862   return tflite::CreateNegOptions(
15863       _fbb);
15864 }
15865 
15866 inline SelectOptionsT *SelectOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15867   auto _o = std::unique_ptr<SelectOptionsT>(new SelectOptionsT());
15868   UnPackTo(_o.get(), _resolver);
15869   return _o.release();
15870 }
15871 
15872 inline void SelectOptions::UnPackTo(SelectOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15873   (void)_o;
15874   (void)_resolver;
15875 }
15876 
15877 inline flatbuffers::Offset<SelectOptions> SelectOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15878   return CreateSelectOptions(_fbb, _o, _rehasher);
15879 }
15880 
15881 inline flatbuffers::Offset<SelectOptions> CreateSelectOptions(flatbuffers::FlatBufferBuilder &_fbb, const SelectOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15882   (void)_rehasher;
15883   (void)_o;
15884   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelectOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15885   return tflite::CreateSelectOptions(
15886       _fbb);
15887 }
15888 
15889 inline SliceOptionsT *SliceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15890   auto _o = std::unique_ptr<SliceOptionsT>(new SliceOptionsT());
15891   UnPackTo(_o.get(), _resolver);
15892   return _o.release();
15893 }
15894 
15895 inline void SliceOptions::UnPackTo(SliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15896   (void)_o;
15897   (void)_resolver;
15898 }
15899 
15900 inline flatbuffers::Offset<SliceOptions> SliceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15901   return CreateSliceOptions(_fbb, _o, _rehasher);
15902 }
15903 
15904 inline flatbuffers::Offset<SliceOptions> CreateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15905   (void)_rehasher;
15906   (void)_o;
15907   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SliceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15908   return tflite::CreateSliceOptions(
15909       _fbb);
15910 }
15911 
15912 inline TransposeConvOptionsT *TransposeConvOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15913   auto _o = std::unique_ptr<TransposeConvOptionsT>(new TransposeConvOptionsT());
15914   UnPackTo(_o.get(), _resolver);
15915   return _o.release();
15916 }
15917 
15918 inline void TransposeConvOptions::UnPackTo(TransposeConvOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15919   (void)_o;
15920   (void)_resolver;
15921   { auto _e = padding(); _o->padding = _e; }
15922   { auto _e = stride_w(); _o->stride_w = _e; }
15923   { auto _e = stride_h(); _o->stride_h = _e; }
15924 }
15925 
15926 inline flatbuffers::Offset<TransposeConvOptions> TransposeConvOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15927   return CreateTransposeConvOptions(_fbb, _o, _rehasher);
15928 }
15929 
15930 inline flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(flatbuffers::FlatBufferBuilder &_fbb, const TransposeConvOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15931   (void)_rehasher;
15932   (void)_o;
15933   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TransposeConvOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15934   auto _padding = _o->padding;
15935   auto _stride_w = _o->stride_w;
15936   auto _stride_h = _o->stride_h;
15937   return tflite::CreateTransposeConvOptions(
15938       _fbb,
15939       _padding,
15940       _stride_w,
15941       _stride_h);
15942 }
15943 
15944 inline ExpandDimsOptionsT *ExpandDimsOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15945   auto _o = std::unique_ptr<ExpandDimsOptionsT>(new ExpandDimsOptionsT());
15946   UnPackTo(_o.get(), _resolver);
15947   return _o.release();
15948 }
15949 
15950 inline void ExpandDimsOptions::UnPackTo(ExpandDimsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15951   (void)_o;
15952   (void)_resolver;
15953 }
15954 
15955 inline flatbuffers::Offset<ExpandDimsOptions> ExpandDimsOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15956   return CreateExpandDimsOptions(_fbb, _o, _rehasher);
15957 }
15958 
15959 inline flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(flatbuffers::FlatBufferBuilder &_fbb, const ExpandDimsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15960   (void)_rehasher;
15961   (void)_o;
15962   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ExpandDimsOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15963   return tflite::CreateExpandDimsOptions(
15964       _fbb);
15965 }
15966 
15967 inline SparseToDenseOptionsT *SparseToDenseOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15968   auto _o = std::unique_ptr<SparseToDenseOptionsT>(new SparseToDenseOptionsT());
15969   UnPackTo(_o.get(), _resolver);
15970   return _o.release();
15971 }
15972 
15973 inline void SparseToDenseOptions::UnPackTo(SparseToDenseOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
15974   (void)_o;
15975   (void)_resolver;
15976   { auto _e = validate_indices(); _o->validate_indices = _e; }
15977 }
15978 
15979 inline flatbuffers::Offset<SparseToDenseOptions> SparseToDenseOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
15980   return CreateSparseToDenseOptions(_fbb, _o, _rehasher);
15981 }
15982 
15983 inline flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(flatbuffers::FlatBufferBuilder &_fbb, const SparseToDenseOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
15984   (void)_rehasher;
15985   (void)_o;
15986   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SparseToDenseOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
15987   auto _validate_indices = _o->validate_indices;
15988   return tflite::CreateSparseToDenseOptions(
15989       _fbb,
15990       _validate_indices);
15991 }
15992 
15993 inline EqualOptionsT *EqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
15994   auto _o = std::unique_ptr<EqualOptionsT>(new EqualOptionsT());
15995   UnPackTo(_o.get(), _resolver);
15996   return _o.release();
15997 }
15998 
15999 inline void EqualOptions::UnPackTo(EqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16000   (void)_o;
16001   (void)_resolver;
16002 }
16003 
16004 inline flatbuffers::Offset<EqualOptions> EqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16005   return CreateEqualOptions(_fbb, _o, _rehasher);
16006 }
16007 
16008 inline flatbuffers::Offset<EqualOptions> CreateEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const EqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16009   (void)_rehasher;
16010   (void)_o;
16011   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16012   return tflite::CreateEqualOptions(
16013       _fbb);
16014 }
16015 
16016 inline NotEqualOptionsT *NotEqualOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16017   auto _o = std::unique_ptr<NotEqualOptionsT>(new NotEqualOptionsT());
16018   UnPackTo(_o.get(), _resolver);
16019   return _o.release();
16020 }
16021 
16022 inline void NotEqualOptions::UnPackTo(NotEqualOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16023   (void)_o;
16024   (void)_resolver;
16025 }
16026 
16027 inline flatbuffers::Offset<NotEqualOptions> NotEqualOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16028   return CreateNotEqualOptions(_fbb, _o, _rehasher);
16029 }
16030 
16031 inline flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(flatbuffers::FlatBufferBuilder &_fbb, const NotEqualOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16032   (void)_rehasher;
16033   (void)_o;
16034   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NotEqualOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16035   return tflite::CreateNotEqualOptions(
16036       _fbb);
16037 }
16038 
16039 inline ShapeOptionsT *ShapeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16040   auto _o = std::unique_ptr<ShapeOptionsT>(new ShapeOptionsT());
16041   UnPackTo(_o.get(), _resolver);
16042   return _o.release();
16043 }
16044 
16045 inline void ShapeOptions::UnPackTo(ShapeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16046   (void)_o;
16047   (void)_resolver;
16048   { auto _e = out_type(); _o->out_type = _e; }
16049 }
16050 
16051 inline flatbuffers::Offset<ShapeOptions> ShapeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16052   return CreateShapeOptions(_fbb, _o, _rehasher);
16053 }
16054 
16055 inline flatbuffers::Offset<ShapeOptions> CreateShapeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ShapeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16056   (void)_rehasher;
16057   (void)_o;
16058   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ShapeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16059   auto _out_type = _o->out_type;
16060   return tflite::CreateShapeOptions(
16061       _fbb,
16062       _out_type);
16063 }
16064 
16065 inline RankOptionsT *RankOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16066   auto _o = std::unique_ptr<RankOptionsT>(new RankOptionsT());
16067   UnPackTo(_o.get(), _resolver);
16068   return _o.release();
16069 }
16070 
16071 inline void RankOptions::UnPackTo(RankOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16072   (void)_o;
16073   (void)_resolver;
16074 }
16075 
16076 inline flatbuffers::Offset<RankOptions> RankOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16077   return CreateRankOptions(_fbb, _o, _rehasher);
16078 }
16079 
16080 inline flatbuffers::Offset<RankOptions> CreateRankOptions(flatbuffers::FlatBufferBuilder &_fbb, const RankOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16081   (void)_rehasher;
16082   (void)_o;
16083   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RankOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16084   return tflite::CreateRankOptions(
16085       _fbb);
16086 }
16087 
16088 inline PowOptionsT *PowOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16089   auto _o = std::unique_ptr<PowOptionsT>(new PowOptionsT());
16090   UnPackTo(_o.get(), _resolver);
16091   return _o.release();
16092 }
16093 
16094 inline void PowOptions::UnPackTo(PowOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16095   (void)_o;
16096   (void)_resolver;
16097 }
16098 
16099 inline flatbuffers::Offset<PowOptions> PowOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16100   return CreatePowOptions(_fbb, _o, _rehasher);
16101 }
16102 
16103 inline flatbuffers::Offset<PowOptions> CreatePowOptions(flatbuffers::FlatBufferBuilder &_fbb, const PowOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16104   (void)_rehasher;
16105   (void)_o;
16106   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PowOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16107   return tflite::CreatePowOptions(
16108       _fbb);
16109 }
16110 
16111 inline FakeQuantOptionsT *FakeQuantOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16112   auto _o = std::unique_ptr<FakeQuantOptionsT>(new FakeQuantOptionsT());
16113   UnPackTo(_o.get(), _resolver);
16114   return _o.release();
16115 }
16116 
16117 inline void FakeQuantOptions::UnPackTo(FakeQuantOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16118   (void)_o;
16119   (void)_resolver;
16120   { auto _e = min(); _o->min = _e; }
16121   { auto _e = max(); _o->max = _e; }
16122   { auto _e = num_bits(); _o->num_bits = _e; }
16123   { auto _e = narrow_range(); _o->narrow_range = _e; }
16124 }
16125 
16126 inline flatbuffers::Offset<FakeQuantOptions> FakeQuantOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16127   return CreateFakeQuantOptions(_fbb, _o, _rehasher);
16128 }
16129 
16130 inline flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(flatbuffers::FlatBufferBuilder &_fbb, const FakeQuantOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16131   (void)_rehasher;
16132   (void)_o;
16133   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FakeQuantOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16134   auto _min = _o->min;
16135   auto _max = _o->max;
16136   auto _num_bits = _o->num_bits;
16137   auto _narrow_range = _o->narrow_range;
16138   return tflite::CreateFakeQuantOptions(
16139       _fbb,
16140       _min,
16141       _max,
16142       _num_bits,
16143       _narrow_range);
16144 }
16145 
16146 inline PackOptionsT *PackOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16147   auto _o = std::unique_ptr<PackOptionsT>(new PackOptionsT());
16148   UnPackTo(_o.get(), _resolver);
16149   return _o.release();
16150 }
16151 
16152 inline void PackOptions::UnPackTo(PackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16153   (void)_o;
16154   (void)_resolver;
16155   { auto _e = values_count(); _o->values_count = _e; }
16156   { auto _e = axis(); _o->axis = _e; }
16157 }
16158 
16159 inline flatbuffers::Offset<PackOptions> PackOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16160   return CreatePackOptions(_fbb, _o, _rehasher);
16161 }
16162 
16163 inline flatbuffers::Offset<PackOptions> CreatePackOptions(flatbuffers::FlatBufferBuilder &_fbb, const PackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16164   (void)_rehasher;
16165   (void)_o;
16166   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PackOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16167   auto _values_count = _o->values_count;
16168   auto _axis = _o->axis;
16169   return tflite::CreatePackOptions(
16170       _fbb,
16171       _values_count,
16172       _axis);
16173 }
16174 
16175 inline LogicalOrOptionsT *LogicalOrOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16176   auto _o = std::unique_ptr<LogicalOrOptionsT>(new LogicalOrOptionsT());
16177   UnPackTo(_o.get(), _resolver);
16178   return _o.release();
16179 }
16180 
16181 inline void LogicalOrOptions::UnPackTo(LogicalOrOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16182   (void)_o;
16183   (void)_resolver;
16184 }
16185 
16186 inline flatbuffers::Offset<LogicalOrOptions> LogicalOrOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16187   return CreateLogicalOrOptions(_fbb, _o, _rehasher);
16188 }
16189 
16190 inline flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalOrOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16191   (void)_rehasher;
16192   (void)_o;
16193   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogicalOrOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16194   return tflite::CreateLogicalOrOptions(
16195       _fbb);
16196 }
16197 
16198 inline OneHotOptionsT *OneHotOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16199   auto _o = std::unique_ptr<OneHotOptionsT>(new OneHotOptionsT());
16200   UnPackTo(_o.get(), _resolver);
16201   return _o.release();
16202 }
16203 
16204 inline void OneHotOptions::UnPackTo(OneHotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16205   (void)_o;
16206   (void)_resolver;
16207   { auto _e = axis(); _o->axis = _e; }
16208 }
16209 
16210 inline flatbuffers::Offset<OneHotOptions> OneHotOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16211   return CreateOneHotOptions(_fbb, _o, _rehasher);
16212 }
16213 
16214 inline flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(flatbuffers::FlatBufferBuilder &_fbb, const OneHotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16215   (void)_rehasher;
16216   (void)_o;
16217   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OneHotOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16218   auto _axis = _o->axis;
16219   return tflite::CreateOneHotOptions(
16220       _fbb,
16221       _axis);
16222 }
16223 
16224 inline AbsOptionsT *AbsOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16225   auto _o = std::unique_ptr<AbsOptionsT>(new AbsOptionsT());
16226   UnPackTo(_o.get(), _resolver);
16227   return _o.release();
16228 }
16229 
16230 inline void AbsOptions::UnPackTo(AbsOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16231   (void)_o;
16232   (void)_resolver;
16233 }
16234 
16235 inline flatbuffers::Offset<AbsOptions> AbsOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16236   return CreateAbsOptions(_fbb, _o, _rehasher);
16237 }
16238 
16239 inline flatbuffers::Offset<AbsOptions> CreateAbsOptions(flatbuffers::FlatBufferBuilder &_fbb, const AbsOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16240   (void)_rehasher;
16241   (void)_o;
16242   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AbsOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16243   return tflite::CreateAbsOptions(
16244       _fbb);
16245 }
16246 
16247 inline HardSwishOptionsT *HardSwishOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16248   auto _o = std::unique_ptr<HardSwishOptionsT>(new HardSwishOptionsT());
16249   UnPackTo(_o.get(), _resolver);
16250   return _o.release();
16251 }
16252 
16253 inline void HardSwishOptions::UnPackTo(HardSwishOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16254   (void)_o;
16255   (void)_resolver;
16256 }
16257 
16258 inline flatbuffers::Offset<HardSwishOptions> HardSwishOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HardSwishOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16259   return CreateHardSwishOptions(_fbb, _o, _rehasher);
16260 }
16261 
16262 inline flatbuffers::Offset<HardSwishOptions> CreateHardSwishOptions(flatbuffers::FlatBufferBuilder &_fbb, const HardSwishOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16263   (void)_rehasher;
16264   (void)_o;
16265   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HardSwishOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16266   return tflite::CreateHardSwishOptions(
16267       _fbb);
16268 }
16269 
16270 inline LogicalAndOptionsT *LogicalAndOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16271   auto _o = std::unique_ptr<LogicalAndOptionsT>(new LogicalAndOptionsT());
16272   UnPackTo(_o.get(), _resolver);
16273   return _o.release();
16274 }
16275 
16276 inline void LogicalAndOptions::UnPackTo(LogicalAndOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16277   (void)_o;
16278   (void)_resolver;
16279 }
16280 
16281 inline flatbuffers::Offset<LogicalAndOptions> LogicalAndOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16282   return CreateLogicalAndOptions(_fbb, _o, _rehasher);
16283 }
16284 
16285 inline flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalAndOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16286   (void)_rehasher;
16287   (void)_o;
16288   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogicalAndOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16289   return tflite::CreateLogicalAndOptions(
16290       _fbb);
16291 }
16292 
16293 inline LogicalNotOptionsT *LogicalNotOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16294   auto _o = std::unique_ptr<LogicalNotOptionsT>(new LogicalNotOptionsT());
16295   UnPackTo(_o.get(), _resolver);
16296   return _o.release();
16297 }
16298 
16299 inline void LogicalNotOptions::UnPackTo(LogicalNotOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16300   (void)_o;
16301   (void)_resolver;
16302 }
16303 
16304 inline flatbuffers::Offset<LogicalNotOptions> LogicalNotOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16305   return CreateLogicalNotOptions(_fbb, _o, _rehasher);
16306 }
16307 
16308 inline flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(flatbuffers::FlatBufferBuilder &_fbb, const LogicalNotOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16309   (void)_rehasher;
16310   (void)_o;
16311   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogicalNotOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16312   return tflite::CreateLogicalNotOptions(
16313       _fbb);
16314 }
16315 
16316 inline UnpackOptionsT *UnpackOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16317   auto _o = std::unique_ptr<UnpackOptionsT>(new UnpackOptionsT());
16318   UnPackTo(_o.get(), _resolver);
16319   return _o.release();
16320 }
16321 
16322 inline void UnpackOptions::UnPackTo(UnpackOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16323   (void)_o;
16324   (void)_resolver;
16325   { auto _e = num(); _o->num = _e; }
16326   { auto _e = axis(); _o->axis = _e; }
16327 }
16328 
16329 inline flatbuffers::Offset<UnpackOptions> UnpackOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16330   return CreateUnpackOptions(_fbb, _o, _rehasher);
16331 }
16332 
16333 inline flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnpackOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16334   (void)_rehasher;
16335   (void)_o;
16336   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnpackOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16337   auto _num = _o->num;
16338   auto _axis = _o->axis;
16339   return tflite::CreateUnpackOptions(
16340       _fbb,
16341       _num,
16342       _axis);
16343 }
16344 
16345 inline FloorDivOptionsT *FloorDivOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16346   auto _o = std::unique_ptr<FloorDivOptionsT>(new FloorDivOptionsT());
16347   UnPackTo(_o.get(), _resolver);
16348   return _o.release();
16349 }
16350 
16351 inline void FloorDivOptions::UnPackTo(FloorDivOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16352   (void)_o;
16353   (void)_resolver;
16354 }
16355 
16356 inline flatbuffers::Offset<FloorDivOptions> FloorDivOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16357   return CreateFloorDivOptions(_fbb, _o, _rehasher);
16358 }
16359 
16360 inline flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorDivOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16361   (void)_rehasher;
16362   (void)_o;
16363   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FloorDivOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16364   return tflite::CreateFloorDivOptions(
16365       _fbb);
16366 }
16367 
16368 inline SquareOptionsT *SquareOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16369   auto _o = std::unique_ptr<SquareOptionsT>(new SquareOptionsT());
16370   UnPackTo(_o.get(), _resolver);
16371   return _o.release();
16372 }
16373 
16374 inline void SquareOptions::UnPackTo(SquareOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16375   (void)_o;
16376   (void)_resolver;
16377 }
16378 
16379 inline flatbuffers::Offset<SquareOptions> SquareOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16380   return CreateSquareOptions(_fbb, _o, _rehasher);
16381 }
16382 
16383 inline flatbuffers::Offset<SquareOptions> CreateSquareOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquareOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16384   (void)_rehasher;
16385   (void)_o;
16386   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SquareOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16387   return tflite::CreateSquareOptions(
16388       _fbb);
16389 }
16390 
16391 inline ZerosLikeOptionsT *ZerosLikeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16392   auto _o = std::unique_ptr<ZerosLikeOptionsT>(new ZerosLikeOptionsT());
16393   UnPackTo(_o.get(), _resolver);
16394   return _o.release();
16395 }
16396 
16397 inline void ZerosLikeOptions::UnPackTo(ZerosLikeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16398   (void)_o;
16399   (void)_resolver;
16400 }
16401 
16402 inline flatbuffers::Offset<ZerosLikeOptions> ZerosLikeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16403   return CreateZerosLikeOptions(_fbb, _o, _rehasher);
16404 }
16405 
16406 inline flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(flatbuffers::FlatBufferBuilder &_fbb, const ZerosLikeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16407   (void)_rehasher;
16408   (void)_o;
16409   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ZerosLikeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16410   return tflite::CreateZerosLikeOptions(
16411       _fbb);
16412 }
16413 
16414 inline FillOptionsT *FillOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16415   auto _o = std::unique_ptr<FillOptionsT>(new FillOptionsT());
16416   UnPackTo(_o.get(), _resolver);
16417   return _o.release();
16418 }
16419 
16420 inline void FillOptions::UnPackTo(FillOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16421   (void)_o;
16422   (void)_resolver;
16423 }
16424 
16425 inline flatbuffers::Offset<FillOptions> FillOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16426   return CreateFillOptions(_fbb, _o, _rehasher);
16427 }
16428 
16429 inline flatbuffers::Offset<FillOptions> CreateFillOptions(flatbuffers::FlatBufferBuilder &_fbb, const FillOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16430   (void)_rehasher;
16431   (void)_o;
16432   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FillOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16433   return tflite::CreateFillOptions(
16434       _fbb);
16435 }
16436 
16437 inline FloorModOptionsT *FloorModOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16438   auto _o = std::unique_ptr<FloorModOptionsT>(new FloorModOptionsT());
16439   UnPackTo(_o.get(), _resolver);
16440   return _o.release();
16441 }
16442 
16443 inline void FloorModOptions::UnPackTo(FloorModOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16444   (void)_o;
16445   (void)_resolver;
16446 }
16447 
16448 inline flatbuffers::Offset<FloorModOptions> FloorModOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16449   return CreateFloorModOptions(_fbb, _o, _rehasher);
16450 }
16451 
16452 inline flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(flatbuffers::FlatBufferBuilder &_fbb, const FloorModOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16453   (void)_rehasher;
16454   (void)_o;
16455   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FloorModOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16456   return tflite::CreateFloorModOptions(
16457       _fbb);
16458 }
16459 
16460 inline RangeOptionsT *RangeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16461   auto _o = std::unique_ptr<RangeOptionsT>(new RangeOptionsT());
16462   UnPackTo(_o.get(), _resolver);
16463   return _o.release();
16464 }
16465 
16466 inline void RangeOptions::UnPackTo(RangeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16467   (void)_o;
16468   (void)_resolver;
16469 }
16470 
16471 inline flatbuffers::Offset<RangeOptions> RangeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16472   return CreateRangeOptions(_fbb, _o, _rehasher);
16473 }
16474 
16475 inline flatbuffers::Offset<RangeOptions> CreateRangeOptions(flatbuffers::FlatBufferBuilder &_fbb, const RangeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16476   (void)_rehasher;
16477   (void)_o;
16478   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RangeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16479   return tflite::CreateRangeOptions(
16480       _fbb);
16481 }
16482 
16483 inline LeakyReluOptionsT *LeakyReluOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16484   auto _o = std::unique_ptr<LeakyReluOptionsT>(new LeakyReluOptionsT());
16485   UnPackTo(_o.get(), _resolver);
16486   return _o.release();
16487 }
16488 
16489 inline void LeakyReluOptions::UnPackTo(LeakyReluOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16490   (void)_o;
16491   (void)_resolver;
16492   { auto _e = alpha(); _o->alpha = _e; }
16493 }
16494 
16495 inline flatbuffers::Offset<LeakyReluOptions> LeakyReluOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16496   return CreateLeakyReluOptions(_fbb, _o, _rehasher);
16497 }
16498 
16499 inline flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(flatbuffers::FlatBufferBuilder &_fbb, const LeakyReluOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16500   (void)_rehasher;
16501   (void)_o;
16502   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LeakyReluOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16503   auto _alpha = _o->alpha;
16504   return tflite::CreateLeakyReluOptions(
16505       _fbb,
16506       _alpha);
16507 }
16508 
16509 inline SquaredDifferenceOptionsT *SquaredDifferenceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16510   auto _o = std::unique_ptr<SquaredDifferenceOptionsT>(new SquaredDifferenceOptionsT());
16511   UnPackTo(_o.get(), _resolver);
16512   return _o.release();
16513 }
16514 
16515 inline void SquaredDifferenceOptions::UnPackTo(SquaredDifferenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16516   (void)_o;
16517   (void)_resolver;
16518 }
16519 
16520 inline flatbuffers::Offset<SquaredDifferenceOptions> SquaredDifferenceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16521   return CreateSquaredDifferenceOptions(_fbb, _o, _rehasher);
16522 }
16523 
16524 inline flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const SquaredDifferenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16525   (void)_rehasher;
16526   (void)_o;
16527   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SquaredDifferenceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16528   return tflite::CreateSquaredDifferenceOptions(
16529       _fbb);
16530 }
16531 
16532 inline MirrorPadOptionsT *MirrorPadOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16533   auto _o = std::unique_ptr<MirrorPadOptionsT>(new MirrorPadOptionsT());
16534   UnPackTo(_o.get(), _resolver);
16535   return _o.release();
16536 }
16537 
16538 inline void MirrorPadOptions::UnPackTo(MirrorPadOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16539   (void)_o;
16540   (void)_resolver;
16541   { auto _e = mode(); _o->mode = _e; }
16542 }
16543 
16544 inline flatbuffers::Offset<MirrorPadOptions> MirrorPadOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16545   return CreateMirrorPadOptions(_fbb, _o, _rehasher);
16546 }
16547 
16548 inline flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(flatbuffers::FlatBufferBuilder &_fbb, const MirrorPadOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16549   (void)_rehasher;
16550   (void)_o;
16551   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MirrorPadOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16552   auto _mode = _o->mode;
16553   return tflite::CreateMirrorPadOptions(
16554       _fbb,
16555       _mode);
16556 }
16557 
16558 inline UniqueOptionsT *UniqueOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16559   auto _o = std::unique_ptr<UniqueOptionsT>(new UniqueOptionsT());
16560   UnPackTo(_o.get(), _resolver);
16561   return _o.release();
16562 }
16563 
16564 inline void UniqueOptions::UnPackTo(UniqueOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16565   (void)_o;
16566   (void)_resolver;
16567   { auto _e = idx_out_type(); _o->idx_out_type = _e; }
16568 }
16569 
16570 inline flatbuffers::Offset<UniqueOptions> UniqueOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16571   return CreateUniqueOptions(_fbb, _o, _rehasher);
16572 }
16573 
16574 inline flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(flatbuffers::FlatBufferBuilder &_fbb, const UniqueOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16575   (void)_rehasher;
16576   (void)_o;
16577   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UniqueOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16578   auto _idx_out_type = _o->idx_out_type;
16579   return tflite::CreateUniqueOptions(
16580       _fbb,
16581       _idx_out_type);
16582 }
16583 
16584 inline ReverseV2OptionsT *ReverseV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16585   auto _o = std::unique_ptr<ReverseV2OptionsT>(new ReverseV2OptionsT());
16586   UnPackTo(_o.get(), _resolver);
16587   return _o.release();
16588 }
16589 
16590 inline void ReverseV2Options::UnPackTo(ReverseV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16591   (void)_o;
16592   (void)_resolver;
16593 }
16594 
16595 inline flatbuffers::Offset<ReverseV2Options> ReverseV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16596   return CreateReverseV2Options(_fbb, _o, _rehasher);
16597 }
16598 
16599 inline flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(flatbuffers::FlatBufferBuilder &_fbb, const ReverseV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16600   (void)_rehasher;
16601   (void)_o;
16602   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReverseV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16603   return tflite::CreateReverseV2Options(
16604       _fbb);
16605 }
16606 
16607 inline AddNOptionsT *AddNOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16608   auto _o = std::unique_ptr<AddNOptionsT>(new AddNOptionsT());
16609   UnPackTo(_o.get(), _resolver);
16610   return _o.release();
16611 }
16612 
16613 inline void AddNOptions::UnPackTo(AddNOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16614   (void)_o;
16615   (void)_resolver;
16616 }
16617 
16618 inline flatbuffers::Offset<AddNOptions> AddNOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16619   return CreateAddNOptions(_fbb, _o, _rehasher);
16620 }
16621 
16622 inline flatbuffers::Offset<AddNOptions> CreateAddNOptions(flatbuffers::FlatBufferBuilder &_fbb, const AddNOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16623   (void)_rehasher;
16624   (void)_o;
16625   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AddNOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16626   return tflite::CreateAddNOptions(
16627       _fbb);
16628 }
16629 
16630 inline GatherNdOptionsT *GatherNdOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16631   auto _o = std::unique_ptr<GatherNdOptionsT>(new GatherNdOptionsT());
16632   UnPackTo(_o.get(), _resolver);
16633   return _o.release();
16634 }
16635 
16636 inline void GatherNdOptions::UnPackTo(GatherNdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16637   (void)_o;
16638   (void)_resolver;
16639 }
16640 
16641 inline flatbuffers::Offset<GatherNdOptions> GatherNdOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16642   return CreateGatherNdOptions(_fbb, _o, _rehasher);
16643 }
16644 
16645 inline flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(flatbuffers::FlatBufferBuilder &_fbb, const GatherNdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16646   (void)_rehasher;
16647   (void)_o;
16648   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GatherNdOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16649   return tflite::CreateGatherNdOptions(
16650       _fbb);
16651 }
16652 
16653 inline WhereOptionsT *WhereOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16654   auto _o = std::unique_ptr<WhereOptionsT>(new WhereOptionsT());
16655   UnPackTo(_o.get(), _resolver);
16656   return _o.release();
16657 }
16658 
16659 inline void WhereOptions::UnPackTo(WhereOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16660   (void)_o;
16661   (void)_resolver;
16662 }
16663 
16664 inline flatbuffers::Offset<WhereOptions> WhereOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16665   return CreateWhereOptions(_fbb, _o, _rehasher);
16666 }
16667 
16668 inline flatbuffers::Offset<WhereOptions> CreateWhereOptions(flatbuffers::FlatBufferBuilder &_fbb, const WhereOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16669   (void)_rehasher;
16670   (void)_o;
16671   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WhereOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16672   return tflite::CreateWhereOptions(
16673       _fbb);
16674 }
16675 
16676 inline ReverseSequenceOptionsT *ReverseSequenceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16677   auto _o = std::unique_ptr<ReverseSequenceOptionsT>(new ReverseSequenceOptionsT());
16678   UnPackTo(_o.get(), _resolver);
16679   return _o.release();
16680 }
16681 
16682 inline void ReverseSequenceOptions::UnPackTo(ReverseSequenceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16683   (void)_o;
16684   (void)_resolver;
16685   { auto _e = seq_dim(); _o->seq_dim = _e; }
16686   { auto _e = batch_dim(); _o->batch_dim = _e; }
16687 }
16688 
16689 inline flatbuffers::Offset<ReverseSequenceOptions> ReverseSequenceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16690   return CreateReverseSequenceOptions(_fbb, _o, _rehasher);
16691 }
16692 
16693 inline flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReverseSequenceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16694   (void)_rehasher;
16695   (void)_o;
16696   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReverseSequenceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16697   auto _seq_dim = _o->seq_dim;
16698   auto _batch_dim = _o->batch_dim;
16699   return tflite::CreateReverseSequenceOptions(
16700       _fbb,
16701       _seq_dim,
16702       _batch_dim);
16703 }
16704 
16705 inline MatrixDiagOptionsT *MatrixDiagOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16706   auto _o = std::unique_ptr<MatrixDiagOptionsT>(new MatrixDiagOptionsT());
16707   UnPackTo(_o.get(), _resolver);
16708   return _o.release();
16709 }
16710 
16711 inline void MatrixDiagOptions::UnPackTo(MatrixDiagOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16712   (void)_o;
16713   (void)_resolver;
16714 }
16715 
16716 inline flatbuffers::Offset<MatrixDiagOptions> MatrixDiagOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MatrixDiagOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16717   return CreateMatrixDiagOptions(_fbb, _o, _rehasher);
16718 }
16719 
16720 inline flatbuffers::Offset<MatrixDiagOptions> CreateMatrixDiagOptions(flatbuffers::FlatBufferBuilder &_fbb, const MatrixDiagOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16721   (void)_rehasher;
16722   (void)_o;
16723   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MatrixDiagOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16724   return tflite::CreateMatrixDiagOptions(
16725       _fbb);
16726 }
16727 
16728 inline QuantizeOptionsT *QuantizeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16729   auto _o = std::unique_ptr<QuantizeOptionsT>(new QuantizeOptionsT());
16730   UnPackTo(_o.get(), _resolver);
16731   return _o.release();
16732 }
16733 
16734 inline void QuantizeOptions::UnPackTo(QuantizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16735   (void)_o;
16736   (void)_resolver;
16737 }
16738 
16739 inline flatbuffers::Offset<QuantizeOptions> QuantizeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuantizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16740   return CreateQuantizeOptions(_fbb, _o, _rehasher);
16741 }
16742 
16743 inline flatbuffers::Offset<QuantizeOptions> CreateQuantizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const QuantizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16744   (void)_rehasher;
16745   (void)_o;
16746   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const QuantizeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16747   return tflite::CreateQuantizeOptions(
16748       _fbb);
16749 }
16750 
16751 inline MatrixSetDiagOptionsT *MatrixSetDiagOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16752   auto _o = std::unique_ptr<MatrixSetDiagOptionsT>(new MatrixSetDiagOptionsT());
16753   UnPackTo(_o.get(), _resolver);
16754   return _o.release();
16755 }
16756 
16757 inline void MatrixSetDiagOptions::UnPackTo(MatrixSetDiagOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16758   (void)_o;
16759   (void)_resolver;
16760 }
16761 
16762 inline flatbuffers::Offset<MatrixSetDiagOptions> MatrixSetDiagOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MatrixSetDiagOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16763   return CreateMatrixSetDiagOptions(_fbb, _o, _rehasher);
16764 }
16765 
16766 inline flatbuffers::Offset<MatrixSetDiagOptions> CreateMatrixSetDiagOptions(flatbuffers::FlatBufferBuilder &_fbb, const MatrixSetDiagOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16767   (void)_rehasher;
16768   (void)_o;
16769   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MatrixSetDiagOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16770   return tflite::CreateMatrixSetDiagOptions(
16771       _fbb);
16772 }
16773 
16774 inline IfOptionsT *IfOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16775   auto _o = std::unique_ptr<IfOptionsT>(new IfOptionsT());
16776   UnPackTo(_o.get(), _resolver);
16777   return _o.release();
16778 }
16779 
16780 inline void IfOptions::UnPackTo(IfOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16781   (void)_o;
16782   (void)_resolver;
16783   { auto _e = then_subgraph_index(); _o->then_subgraph_index = _e; }
16784   { auto _e = else_subgraph_index(); _o->else_subgraph_index = _e; }
16785 }
16786 
16787 inline flatbuffers::Offset<IfOptions> IfOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const IfOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16788   return CreateIfOptions(_fbb, _o, _rehasher);
16789 }
16790 
16791 inline flatbuffers::Offset<IfOptions> CreateIfOptions(flatbuffers::FlatBufferBuilder &_fbb, const IfOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16792   (void)_rehasher;
16793   (void)_o;
16794   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const IfOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16795   auto _then_subgraph_index = _o->then_subgraph_index;
16796   auto _else_subgraph_index = _o->else_subgraph_index;
16797   return tflite::CreateIfOptions(
16798       _fbb,
16799       _then_subgraph_index,
16800       _else_subgraph_index);
16801 }
16802 
16803 inline CallOnceOptionsT *CallOnceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16804   auto _o = std::unique_ptr<CallOnceOptionsT>(new CallOnceOptionsT());
16805   UnPackTo(_o.get(), _resolver);
16806   return _o.release();
16807 }
16808 
16809 inline void CallOnceOptions::UnPackTo(CallOnceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16810   (void)_o;
16811   (void)_resolver;
16812   { auto _e = init_subgraph_index(); _o->init_subgraph_index = _e; }
16813 }
16814 
16815 inline flatbuffers::Offset<CallOnceOptions> CallOnceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CallOnceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16816   return CreateCallOnceOptions(_fbb, _o, _rehasher);
16817 }
16818 
16819 inline flatbuffers::Offset<CallOnceOptions> CreateCallOnceOptions(flatbuffers::FlatBufferBuilder &_fbb, const CallOnceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16820   (void)_rehasher;
16821   (void)_o;
16822   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CallOnceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16823   auto _init_subgraph_index = _o->init_subgraph_index;
16824   return tflite::CreateCallOnceOptions(
16825       _fbb,
16826       _init_subgraph_index);
16827 }
16828 
16829 inline WhileOptionsT *WhileOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16830   auto _o = std::unique_ptr<WhileOptionsT>(new WhileOptionsT());
16831   UnPackTo(_o.get(), _resolver);
16832   return _o.release();
16833 }
16834 
16835 inline void WhileOptions::UnPackTo(WhileOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16836   (void)_o;
16837   (void)_resolver;
16838   { auto _e = cond_subgraph_index(); _o->cond_subgraph_index = _e; }
16839   { auto _e = body_subgraph_index(); _o->body_subgraph_index = _e; }
16840 }
16841 
16842 inline flatbuffers::Offset<WhileOptions> WhileOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WhileOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16843   return CreateWhileOptions(_fbb, _o, _rehasher);
16844 }
16845 
16846 inline flatbuffers::Offset<WhileOptions> CreateWhileOptions(flatbuffers::FlatBufferBuilder &_fbb, const WhileOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16847   (void)_rehasher;
16848   (void)_o;
16849   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WhileOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16850   auto _cond_subgraph_index = _o->cond_subgraph_index;
16851   auto _body_subgraph_index = _o->body_subgraph_index;
16852   return tflite::CreateWhileOptions(
16853       _fbb,
16854       _cond_subgraph_index,
16855       _body_subgraph_index);
16856 }
16857 
16858 inline NonMaxSuppressionV4OptionsT *NonMaxSuppressionV4Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16859   auto _o = std::unique_ptr<NonMaxSuppressionV4OptionsT>(new NonMaxSuppressionV4OptionsT());
16860   UnPackTo(_o.get(), _resolver);
16861   return _o.release();
16862 }
16863 
16864 inline void NonMaxSuppressionV4Options::UnPackTo(NonMaxSuppressionV4OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16865   (void)_o;
16866   (void)_resolver;
16867 }
16868 
16869 inline flatbuffers::Offset<NonMaxSuppressionV4Options> NonMaxSuppressionV4Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV4OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16870   return CreateNonMaxSuppressionV4Options(_fbb, _o, _rehasher);
16871 }
16872 
16873 inline flatbuffers::Offset<NonMaxSuppressionV4Options> CreateNonMaxSuppressionV4Options(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV4OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16874   (void)_rehasher;
16875   (void)_o;
16876   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NonMaxSuppressionV4OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16877   return tflite::CreateNonMaxSuppressionV4Options(
16878       _fbb);
16879 }
16880 
16881 inline NonMaxSuppressionV5OptionsT *NonMaxSuppressionV5Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16882   auto _o = std::unique_ptr<NonMaxSuppressionV5OptionsT>(new NonMaxSuppressionV5OptionsT());
16883   UnPackTo(_o.get(), _resolver);
16884   return _o.release();
16885 }
16886 
16887 inline void NonMaxSuppressionV5Options::UnPackTo(NonMaxSuppressionV5OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16888   (void)_o;
16889   (void)_resolver;
16890 }
16891 
16892 inline flatbuffers::Offset<NonMaxSuppressionV5Options> NonMaxSuppressionV5Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV5OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16893   return CreateNonMaxSuppressionV5Options(_fbb, _o, _rehasher);
16894 }
16895 
16896 inline flatbuffers::Offset<NonMaxSuppressionV5Options> CreateNonMaxSuppressionV5Options(flatbuffers::FlatBufferBuilder &_fbb, const NonMaxSuppressionV5OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16897   (void)_rehasher;
16898   (void)_o;
16899   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NonMaxSuppressionV5OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16900   return tflite::CreateNonMaxSuppressionV5Options(
16901       _fbb);
16902 }
16903 
16904 inline ScatterNdOptionsT *ScatterNdOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16905   auto _o = std::unique_ptr<ScatterNdOptionsT>(new ScatterNdOptionsT());
16906   UnPackTo(_o.get(), _resolver);
16907   return _o.release();
16908 }
16909 
16910 inline void ScatterNdOptions::UnPackTo(ScatterNdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16911   (void)_o;
16912   (void)_resolver;
16913 }
16914 
16915 inline flatbuffers::Offset<ScatterNdOptions> ScatterNdOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScatterNdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16916   return CreateScatterNdOptions(_fbb, _o, _rehasher);
16917 }
16918 
16919 inline flatbuffers::Offset<ScatterNdOptions> CreateScatterNdOptions(flatbuffers::FlatBufferBuilder &_fbb, const ScatterNdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16920   (void)_rehasher;
16921   (void)_o;
16922   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ScatterNdOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16923   return tflite::CreateScatterNdOptions(
16924       _fbb);
16925 }
16926 
16927 inline SelectV2OptionsT *SelectV2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16928   auto _o = std::unique_ptr<SelectV2OptionsT>(new SelectV2OptionsT());
16929   UnPackTo(_o.get(), _resolver);
16930   return _o.release();
16931 }
16932 
16933 inline void SelectV2Options::UnPackTo(SelectV2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16934   (void)_o;
16935   (void)_resolver;
16936 }
16937 
16938 inline flatbuffers::Offset<SelectV2Options> SelectV2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelectV2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16939   return CreateSelectV2Options(_fbb, _o, _rehasher);
16940 }
16941 
16942 inline flatbuffers::Offset<SelectV2Options> CreateSelectV2Options(flatbuffers::FlatBufferBuilder &_fbb, const SelectV2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16943   (void)_rehasher;
16944   (void)_o;
16945   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelectV2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16946   return tflite::CreateSelectV2Options(
16947       _fbb);
16948 }
16949 
16950 inline DensifyOptionsT *DensifyOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16951   auto _o = std::unique_ptr<DensifyOptionsT>(new DensifyOptionsT());
16952   UnPackTo(_o.get(), _resolver);
16953   return _o.release();
16954 }
16955 
16956 inline void DensifyOptions::UnPackTo(DensifyOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16957   (void)_o;
16958   (void)_resolver;
16959 }
16960 
16961 inline flatbuffers::Offset<DensifyOptions> DensifyOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DensifyOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16962   return CreateDensifyOptions(_fbb, _o, _rehasher);
16963 }
16964 
16965 inline flatbuffers::Offset<DensifyOptions> CreateDensifyOptions(flatbuffers::FlatBufferBuilder &_fbb, const DensifyOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16966   (void)_rehasher;
16967   (void)_o;
16968   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DensifyOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16969   return tflite::CreateDensifyOptions(
16970       _fbb);
16971 }
16972 
16973 inline SegmentSumOptionsT *SegmentSumOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16974   auto _o = std::unique_ptr<SegmentSumOptionsT>(new SegmentSumOptionsT());
16975   UnPackTo(_o.get(), _resolver);
16976   return _o.release();
16977 }
16978 
16979 inline void SegmentSumOptions::UnPackTo(SegmentSumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
16980   (void)_o;
16981   (void)_resolver;
16982 }
16983 
16984 inline flatbuffers::Offset<SegmentSumOptions> SegmentSumOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SegmentSumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
16985   return CreateSegmentSumOptions(_fbb, _o, _rehasher);
16986 }
16987 
16988 inline flatbuffers::Offset<SegmentSumOptions> CreateSegmentSumOptions(flatbuffers::FlatBufferBuilder &_fbb, const SegmentSumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
16989   (void)_rehasher;
16990   (void)_o;
16991   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SegmentSumOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
16992   return tflite::CreateSegmentSumOptions(
16993       _fbb);
16994 }
16995 
16996 inline BatchMatMulOptionsT *BatchMatMulOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
16997   auto _o = std::unique_ptr<BatchMatMulOptionsT>(new BatchMatMulOptionsT());
16998   UnPackTo(_o.get(), _resolver);
16999   return _o.release();
17000 }
17001 
17002 inline void BatchMatMulOptions::UnPackTo(BatchMatMulOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17003   (void)_o;
17004   (void)_resolver;
17005   { auto _e = adj_x(); _o->adj_x = _e; }
17006   { auto _e = adj_y(); _o->adj_y = _e; }
17007   { auto _e = asymmetric_quantize_inputs(); _o->asymmetric_quantize_inputs = _e; }
17008 }
17009 
17010 inline flatbuffers::Offset<BatchMatMulOptions> BatchMatMulOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchMatMulOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17011   return CreateBatchMatMulOptions(_fbb, _o, _rehasher);
17012 }
17013 
17014 inline flatbuffers::Offset<BatchMatMulOptions> CreateBatchMatMulOptions(flatbuffers::FlatBufferBuilder &_fbb, const BatchMatMulOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17015   (void)_rehasher;
17016   (void)_o;
17017   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BatchMatMulOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17018   auto _adj_x = _o->adj_x;
17019   auto _adj_y = _o->adj_y;
17020   auto _asymmetric_quantize_inputs = _o->asymmetric_quantize_inputs;
17021   return tflite::CreateBatchMatMulOptions(
17022       _fbb,
17023       _adj_x,
17024       _adj_y,
17025       _asymmetric_quantize_inputs);
17026 }
17027 
17028 inline CumsumOptionsT *CumsumOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17029   auto _o = std::unique_ptr<CumsumOptionsT>(new CumsumOptionsT());
17030   UnPackTo(_o.get(), _resolver);
17031   return _o.release();
17032 }
17033 
17034 inline void CumsumOptions::UnPackTo(CumsumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17035   (void)_o;
17036   (void)_resolver;
17037   { auto _e = exclusive(); _o->exclusive = _e; }
17038   { auto _e = reverse(); _o->reverse = _e; }
17039 }
17040 
17041 inline flatbuffers::Offset<CumsumOptions> CumsumOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CumsumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17042   return CreateCumsumOptions(_fbb, _o, _rehasher);
17043 }
17044 
17045 inline flatbuffers::Offset<CumsumOptions> CreateCumsumOptions(flatbuffers::FlatBufferBuilder &_fbb, const CumsumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17046   (void)_rehasher;
17047   (void)_o;
17048   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CumsumOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17049   auto _exclusive = _o->exclusive;
17050   auto _reverse = _o->reverse;
17051   return tflite::CreateCumsumOptions(
17052       _fbb,
17053       _exclusive,
17054       _reverse);
17055 }
17056 
17057 inline BroadcastToOptionsT *BroadcastToOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17058   auto _o = std::unique_ptr<BroadcastToOptionsT>(new BroadcastToOptionsT());
17059   UnPackTo(_o.get(), _resolver);
17060   return _o.release();
17061 }
17062 
17063 inline void BroadcastToOptions::UnPackTo(BroadcastToOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17064   (void)_o;
17065   (void)_resolver;
17066 }
17067 
17068 inline flatbuffers::Offset<BroadcastToOptions> BroadcastToOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BroadcastToOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17069   return CreateBroadcastToOptions(_fbb, _o, _rehasher);
17070 }
17071 
17072 inline flatbuffers::Offset<BroadcastToOptions> CreateBroadcastToOptions(flatbuffers::FlatBufferBuilder &_fbb, const BroadcastToOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17073   (void)_rehasher;
17074   (void)_o;
17075   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BroadcastToOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17076   return tflite::CreateBroadcastToOptions(
17077       _fbb);
17078 }
17079 
17080 inline Rfft2dOptionsT *Rfft2dOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17081   auto _o = std::unique_ptr<Rfft2dOptionsT>(new Rfft2dOptionsT());
17082   UnPackTo(_o.get(), _resolver);
17083   return _o.release();
17084 }
17085 
17086 inline void Rfft2dOptions::UnPackTo(Rfft2dOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17087   (void)_o;
17088   (void)_resolver;
17089 }
17090 
17091 inline flatbuffers::Offset<Rfft2dOptions> Rfft2dOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const Rfft2dOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17092   return CreateRfft2dOptions(_fbb, _o, _rehasher);
17093 }
17094 
17095 inline flatbuffers::Offset<Rfft2dOptions> CreateRfft2dOptions(flatbuffers::FlatBufferBuilder &_fbb, const Rfft2dOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17096   (void)_rehasher;
17097   (void)_o;
17098   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const Rfft2dOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17099   return tflite::CreateRfft2dOptions(
17100       _fbb);
17101 }
17102 
17103 inline HashtableOptionsT *HashtableOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17104   auto _o = std::unique_ptr<HashtableOptionsT>(new HashtableOptionsT());
17105   UnPackTo(_o.get(), _resolver);
17106   return _o.release();
17107 }
17108 
17109 inline void HashtableOptions::UnPackTo(HashtableOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17110   (void)_o;
17111   (void)_resolver;
17112   { auto _e = table_id(); _o->table_id = _e; }
17113   { auto _e = key_dtype(); _o->key_dtype = _e; }
17114   { auto _e = value_dtype(); _o->value_dtype = _e; }
17115 }
17116 
17117 inline flatbuffers::Offset<HashtableOptions> HashtableOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17118   return CreateHashtableOptions(_fbb, _o, _rehasher);
17119 }
17120 
17121 inline flatbuffers::Offset<HashtableOptions> CreateHashtableOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17122   (void)_rehasher;
17123   (void)_o;
17124   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HashtableOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17125   auto _table_id = _o->table_id;
17126   auto _key_dtype = _o->key_dtype;
17127   auto _value_dtype = _o->value_dtype;
17128   return tflite::CreateHashtableOptions(
17129       _fbb,
17130       _table_id,
17131       _key_dtype,
17132       _value_dtype);
17133 }
17134 
17135 inline HashtableFindOptionsT *HashtableFindOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17136   auto _o = std::unique_ptr<HashtableFindOptionsT>(new HashtableFindOptionsT());
17137   UnPackTo(_o.get(), _resolver);
17138   return _o.release();
17139 }
17140 
17141 inline void HashtableFindOptions::UnPackTo(HashtableFindOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17142   (void)_o;
17143   (void)_resolver;
17144 }
17145 
17146 inline flatbuffers::Offset<HashtableFindOptions> HashtableFindOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableFindOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17147   return CreateHashtableFindOptions(_fbb, _o, _rehasher);
17148 }
17149 
17150 inline flatbuffers::Offset<HashtableFindOptions> CreateHashtableFindOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableFindOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17151   (void)_rehasher;
17152   (void)_o;
17153   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HashtableFindOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17154   return tflite::CreateHashtableFindOptions(
17155       _fbb);
17156 }
17157 
17158 inline HashtableImportOptionsT *HashtableImportOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17159   auto _o = std::unique_ptr<HashtableImportOptionsT>(new HashtableImportOptionsT());
17160   UnPackTo(_o.get(), _resolver);
17161   return _o.release();
17162 }
17163 
17164 inline void HashtableImportOptions::UnPackTo(HashtableImportOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17165   (void)_o;
17166   (void)_resolver;
17167 }
17168 
17169 inline flatbuffers::Offset<HashtableImportOptions> HashtableImportOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableImportOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17170   return CreateHashtableImportOptions(_fbb, _o, _rehasher);
17171 }
17172 
17173 inline flatbuffers::Offset<HashtableImportOptions> CreateHashtableImportOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableImportOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17174   (void)_rehasher;
17175   (void)_o;
17176   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HashtableImportOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17177   return tflite::CreateHashtableImportOptions(
17178       _fbb);
17179 }
17180 
17181 inline HashtableSizeOptionsT *HashtableSizeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17182   auto _o = std::unique_ptr<HashtableSizeOptionsT>(new HashtableSizeOptionsT());
17183   UnPackTo(_o.get(), _resolver);
17184   return _o.release();
17185 }
17186 
17187 inline void HashtableSizeOptions::UnPackTo(HashtableSizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17188   (void)_o;
17189   (void)_resolver;
17190 }
17191 
17192 inline flatbuffers::Offset<HashtableSizeOptions> HashtableSizeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HashtableSizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17193   return CreateHashtableSizeOptions(_fbb, _o, _rehasher);
17194 }
17195 
17196 inline flatbuffers::Offset<HashtableSizeOptions> CreateHashtableSizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const HashtableSizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17197   (void)_rehasher;
17198   (void)_o;
17199   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HashtableSizeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17200   return tflite::CreateHashtableSizeOptions(
17201       _fbb);
17202 }
17203 
17204 inline VarHandleOptionsT *VarHandleOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17205   auto _o = std::unique_ptr<VarHandleOptionsT>(new VarHandleOptionsT());
17206   UnPackTo(_o.get(), _resolver);
17207   return _o.release();
17208 }
17209 
17210 inline void VarHandleOptions::UnPackTo(VarHandleOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17211   (void)_o;
17212   (void)_resolver;
17213   { auto _e = container(); if (_e) _o->container = _e->str(); }
17214   { auto _e = shared_name(); if (_e) _o->shared_name = _e->str(); }
17215 }
17216 
17217 inline flatbuffers::Offset<VarHandleOptions> VarHandleOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VarHandleOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17218   return CreateVarHandleOptions(_fbb, _o, _rehasher);
17219 }
17220 
17221 inline flatbuffers::Offset<VarHandleOptions> CreateVarHandleOptions(flatbuffers::FlatBufferBuilder &_fbb, const VarHandleOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17222   (void)_rehasher;
17223   (void)_o;
17224   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VarHandleOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17225   auto _container = _o->container.empty() ? 0 : _fbb.CreateString(_o->container);
17226   auto _shared_name = _o->shared_name.empty() ? 0 : _fbb.CreateString(_o->shared_name);
17227   return tflite::CreateVarHandleOptions(
17228       _fbb,
17229       _container,
17230       _shared_name);
17231 }
17232 
17233 inline ReadVariableOptionsT *ReadVariableOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17234   auto _o = std::unique_ptr<ReadVariableOptionsT>(new ReadVariableOptionsT());
17235   UnPackTo(_o.get(), _resolver);
17236   return _o.release();
17237 }
17238 
17239 inline void ReadVariableOptions::UnPackTo(ReadVariableOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17240   (void)_o;
17241   (void)_resolver;
17242 }
17243 
17244 inline flatbuffers::Offset<ReadVariableOptions> ReadVariableOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReadVariableOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17245   return CreateReadVariableOptions(_fbb, _o, _rehasher);
17246 }
17247 
17248 inline flatbuffers::Offset<ReadVariableOptions> CreateReadVariableOptions(flatbuffers::FlatBufferBuilder &_fbb, const ReadVariableOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17249   (void)_rehasher;
17250   (void)_o;
17251   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReadVariableOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17252   return tflite::CreateReadVariableOptions(
17253       _fbb);
17254 }
17255 
17256 inline AssignVariableOptionsT *AssignVariableOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17257   auto _o = std::unique_ptr<AssignVariableOptionsT>(new AssignVariableOptionsT());
17258   UnPackTo(_o.get(), _resolver);
17259   return _o.release();
17260 }
17261 
17262 inline void AssignVariableOptions::UnPackTo(AssignVariableOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17263   (void)_o;
17264   (void)_resolver;
17265 }
17266 
17267 inline flatbuffers::Offset<AssignVariableOptions> AssignVariableOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AssignVariableOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17268   return CreateAssignVariableOptions(_fbb, _o, _rehasher);
17269 }
17270 
17271 inline flatbuffers::Offset<AssignVariableOptions> CreateAssignVariableOptions(flatbuffers::FlatBufferBuilder &_fbb, const AssignVariableOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17272   (void)_rehasher;
17273   (void)_o;
17274   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AssignVariableOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17275   return tflite::CreateAssignVariableOptions(
17276       _fbb);
17277 }
17278 
17279 inline RandomOptionsT *RandomOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17280   auto _o = std::unique_ptr<RandomOptionsT>(new RandomOptionsT());
17281   UnPackTo(_o.get(), _resolver);
17282   return _o.release();
17283 }
17284 
17285 inline void RandomOptions::UnPackTo(RandomOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17286   (void)_o;
17287   (void)_resolver;
17288   { auto _e = seed(); _o->seed = _e; }
17289   { auto _e = seed2(); _o->seed2 = _e; }
17290 }
17291 
17292 inline flatbuffers::Offset<RandomOptions> RandomOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RandomOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17293   return CreateRandomOptions(_fbb, _o, _rehasher);
17294 }
17295 
17296 inline flatbuffers::Offset<RandomOptions> CreateRandomOptions(flatbuffers::FlatBufferBuilder &_fbb, const RandomOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17297   (void)_rehasher;
17298   (void)_o;
17299   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RandomOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17300   auto _seed = _o->seed;
17301   auto _seed2 = _o->seed2;
17302   return tflite::CreateRandomOptions(
17303       _fbb,
17304       _seed,
17305       _seed2);
17306 }
17307 
17308 inline BucketizeOptionsT *BucketizeOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17309   auto _o = std::unique_ptr<BucketizeOptionsT>(new BucketizeOptionsT());
17310   UnPackTo(_o.get(), _resolver);
17311   return _o.release();
17312 }
17313 
17314 inline void BucketizeOptions::UnPackTo(BucketizeOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17315   (void)_o;
17316   (void)_resolver;
17317   { auto _e = boundaries(); if (_e) { _o->boundaries.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->boundaries[_i] = _e->Get(_i); } } }
17318 }
17319 
17320 inline flatbuffers::Offset<BucketizeOptions> BucketizeOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BucketizeOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17321   return CreateBucketizeOptions(_fbb, _o, _rehasher);
17322 }
17323 
17324 inline flatbuffers::Offset<BucketizeOptions> CreateBucketizeOptions(flatbuffers::FlatBufferBuilder &_fbb, const BucketizeOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17325   (void)_rehasher;
17326   (void)_o;
17327   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BucketizeOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17328   auto _boundaries = _o->boundaries.size() ? _fbb.CreateVector(_o->boundaries) : 0;
17329   return tflite::CreateBucketizeOptions(
17330       _fbb,
17331       _boundaries);
17332 }
17333 
17334 inline GeluOptionsT *GeluOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17335   auto _o = std::unique_ptr<GeluOptionsT>(new GeluOptionsT());
17336   UnPackTo(_o.get(), _resolver);
17337   return _o.release();
17338 }
17339 
17340 inline void GeluOptions::UnPackTo(GeluOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17341   (void)_o;
17342   (void)_resolver;
17343   { auto _e = approximate(); _o->approximate = _e; }
17344 }
17345 
17346 inline flatbuffers::Offset<GeluOptions> GeluOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GeluOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17347   return CreateGeluOptions(_fbb, _o, _rehasher);
17348 }
17349 
17350 inline flatbuffers::Offset<GeluOptions> CreateGeluOptions(flatbuffers::FlatBufferBuilder &_fbb, const GeluOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17351   (void)_rehasher;
17352   (void)_o;
17353   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GeluOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17354   auto _approximate = _o->approximate;
17355   return tflite::CreateGeluOptions(
17356       _fbb,
17357       _approximate);
17358 }
17359 
17360 inline DynamicUpdateSliceOptionsT *DynamicUpdateSliceOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17361   auto _o = std::unique_ptr<DynamicUpdateSliceOptionsT>(new DynamicUpdateSliceOptionsT());
17362   UnPackTo(_o.get(), _resolver);
17363   return _o.release();
17364 }
17365 
17366 inline void DynamicUpdateSliceOptions::UnPackTo(DynamicUpdateSliceOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17367   (void)_o;
17368   (void)_resolver;
17369 }
17370 
17371 inline flatbuffers::Offset<DynamicUpdateSliceOptions> DynamicUpdateSliceOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DynamicUpdateSliceOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17372   return CreateDynamicUpdateSliceOptions(_fbb, _o, _rehasher);
17373 }
17374 
17375 inline flatbuffers::Offset<DynamicUpdateSliceOptions> CreateDynamicUpdateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const DynamicUpdateSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17376   (void)_rehasher;
17377   (void)_o;
17378   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DynamicUpdateSliceOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17379   return tflite::CreateDynamicUpdateSliceOptions(
17380       _fbb);
17381 }
17382 
17383 inline UnsortedSegmentProdOptionsT *UnsortedSegmentProdOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17384   auto _o = std::unique_ptr<UnsortedSegmentProdOptionsT>(new UnsortedSegmentProdOptionsT());
17385   UnPackTo(_o.get(), _resolver);
17386   return _o.release();
17387 }
17388 
17389 inline void UnsortedSegmentProdOptions::UnPackTo(UnsortedSegmentProdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17390   (void)_o;
17391   (void)_resolver;
17392 }
17393 
17394 inline flatbuffers::Offset<UnsortedSegmentProdOptions> UnsortedSegmentProdOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17395   return CreateUnsortedSegmentProdOptions(_fbb, _o, _rehasher);
17396 }
17397 
17398 inline flatbuffers::Offset<UnsortedSegmentProdOptions> CreateUnsortedSegmentProdOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17399   (void)_rehasher;
17400   (void)_o;
17401   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnsortedSegmentProdOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17402   return tflite::CreateUnsortedSegmentProdOptions(
17403       _fbb);
17404 }
17405 
17406 inline UnsortedSegmentMaxOptionsT *UnsortedSegmentMaxOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17407   auto _o = std::unique_ptr<UnsortedSegmentMaxOptionsT>(new UnsortedSegmentMaxOptionsT());
17408   UnPackTo(_o.get(), _resolver);
17409   return _o.release();
17410 }
17411 
17412 inline void UnsortedSegmentMaxOptions::UnPackTo(UnsortedSegmentMaxOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17413   (void)_o;
17414   (void)_resolver;
17415 }
17416 
17417 inline flatbuffers::Offset<UnsortedSegmentMaxOptions> UnsortedSegmentMaxOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMaxOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17418   return CreateUnsortedSegmentMaxOptions(_fbb, _o, _rehasher);
17419 }
17420 
17421 inline flatbuffers::Offset<UnsortedSegmentMaxOptions> CreateUnsortedSegmentMaxOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMaxOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17422   (void)_rehasher;
17423   (void)_o;
17424   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnsortedSegmentMaxOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17425   return tflite::CreateUnsortedSegmentMaxOptions(
17426       _fbb);
17427 }
17428 
17429 inline UnsortedSegmentSumOptionsT *UnsortedSegmentSumOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17430   auto _o = std::unique_ptr<UnsortedSegmentSumOptionsT>(new UnsortedSegmentSumOptionsT());
17431   UnPackTo(_o.get(), _resolver);
17432   return _o.release();
17433 }
17434 
17435 inline void UnsortedSegmentSumOptions::UnPackTo(UnsortedSegmentSumOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17436   (void)_o;
17437   (void)_resolver;
17438 }
17439 
17440 inline flatbuffers::Offset<UnsortedSegmentSumOptions> UnsortedSegmentSumOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentSumOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17441   return CreateUnsortedSegmentSumOptions(_fbb, _o, _rehasher);
17442 }
17443 
17444 inline flatbuffers::Offset<UnsortedSegmentSumOptions> CreateUnsortedSegmentSumOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentSumOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17445   (void)_rehasher;
17446   (void)_o;
17447   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnsortedSegmentSumOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17448   return tflite::CreateUnsortedSegmentSumOptions(
17449       _fbb);
17450 }
17451 
17452 inline ATan2OptionsT *ATan2Options::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17453   auto _o = std::unique_ptr<ATan2OptionsT>(new ATan2OptionsT());
17454   UnPackTo(_o.get(), _resolver);
17455   return _o.release();
17456 }
17457 
17458 inline void ATan2Options::UnPackTo(ATan2OptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17459   (void)_o;
17460   (void)_resolver;
17461 }
17462 
17463 inline flatbuffers::Offset<ATan2Options> ATan2Options::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ATan2OptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17464   return CreateATan2Options(_fbb, _o, _rehasher);
17465 }
17466 
17467 inline flatbuffers::Offset<ATan2Options> CreateATan2Options(flatbuffers::FlatBufferBuilder &_fbb, const ATan2OptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17468   (void)_rehasher;
17469   (void)_o;
17470   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ATan2OptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17471   return tflite::CreateATan2Options(
17472       _fbb);
17473 }
17474 
17475 inline UnsortedSegmentMinOptionsT *UnsortedSegmentMinOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17476   auto _o = std::unique_ptr<UnsortedSegmentMinOptionsT>(new UnsortedSegmentMinOptionsT());
17477   UnPackTo(_o.get(), _resolver);
17478   return _o.release();
17479 }
17480 
17481 inline void UnsortedSegmentMinOptions::UnPackTo(UnsortedSegmentMinOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17482   (void)_o;
17483   (void)_resolver;
17484 }
17485 
17486 inline flatbuffers::Offset<UnsortedSegmentMinOptions> UnsortedSegmentMinOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMinOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17487   return CreateUnsortedSegmentMinOptions(_fbb, _o, _rehasher);
17488 }
17489 
17490 inline flatbuffers::Offset<UnsortedSegmentMinOptions> CreateUnsortedSegmentMinOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentMinOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17491   (void)_rehasher;
17492   (void)_o;
17493   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnsortedSegmentMinOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17494   return tflite::CreateUnsortedSegmentMinOptions(
17495       _fbb);
17496 }
17497 
17498 inline SignOptionsT *SignOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17499   auto _o = std::unique_ptr<SignOptionsT>(new SignOptionsT());
17500   UnPackTo(_o.get(), _resolver);
17501   return _o.release();
17502 }
17503 
17504 inline void SignOptions::UnPackTo(SignOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17505   (void)_o;
17506   (void)_resolver;
17507 }
17508 
17509 inline flatbuffers::Offset<SignOptions> SignOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SignOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17510   return CreateSignOptions(_fbb, _o, _rehasher);
17511 }
17512 
17513 inline flatbuffers::Offset<SignOptions> CreateSignOptions(flatbuffers::FlatBufferBuilder &_fbb, const SignOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17514   (void)_rehasher;
17515   (void)_o;
17516   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SignOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17517   return tflite::CreateSignOptions(
17518       _fbb);
17519 }
17520 
17521 inline OperatorCodeT *OperatorCode::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17522   auto _o = std::unique_ptr<OperatorCodeT>(new OperatorCodeT());
17523   UnPackTo(_o.get(), _resolver);
17524   return _o.release();
17525 }
17526 
17527 inline void OperatorCode::UnPackTo(OperatorCodeT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17528   (void)_o;
17529   (void)_resolver;
17530   { auto _e = deprecated_builtin_code(); _o->deprecated_builtin_code = _e; }
17531   { auto _e = custom_code(); if (_e) _o->custom_code = _e->str(); }
17532   { auto _e = version(); _o->version = _e; }
17533   { auto _e = builtin_code(); _o->builtin_code = _e; }
17534 }
17535 
17536 inline flatbuffers::Offset<OperatorCode> OperatorCode::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17537   return CreateOperatorCode(_fbb, _o, _rehasher);
17538 }
17539 
17540 inline flatbuffers::Offset<OperatorCode> CreateOperatorCode(flatbuffers::FlatBufferBuilder &_fbb, const OperatorCodeT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17541   (void)_rehasher;
17542   (void)_o;
17543   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OperatorCodeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17544   auto _deprecated_builtin_code = _o->deprecated_builtin_code;
17545   auto _custom_code = _o->custom_code.empty() ? 0 : _fbb.CreateString(_o->custom_code);
17546   auto _version = _o->version;
17547   auto _builtin_code = _o->builtin_code;
17548   return tflite::CreateOperatorCode(
17549       _fbb,
17550       _deprecated_builtin_code,
17551       _custom_code,
17552       _version,
17553       _builtin_code);
17554 }
17555 
17556 inline OperatorT *Operator::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17557   auto _o = std::unique_ptr<OperatorT>(new OperatorT());
17558   UnPackTo(_o.get(), _resolver);
17559   return _o.release();
17560 }
17561 
17562 inline void Operator::UnPackTo(OperatorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17563   (void)_o;
17564   (void)_resolver;
17565   { auto _e = opcode_index(); _o->opcode_index = _e; }
17566   { auto _e = inputs(); if (_e) { _o->inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inputs[_i] = _e->Get(_i); } } }
17567   { auto _e = outputs(); if (_e) { _o->outputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputs[_i] = _e->Get(_i); } } }
17568   { auto _e = builtin_options_type(); _o->builtin_options.type = _e; }
17569   { auto _e = builtin_options(); if (_e) _o->builtin_options.value = tflite::BuiltinOptionsUnion::UnPack(_e, builtin_options_type(), _resolver); }
17570   { auto _e = custom_options(); if (_e) { _o->custom_options.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->custom_options.begin()); } }
17571   { auto _e = custom_options_format(); _o->custom_options_format = _e; }
17572   { auto _e = mutating_variable_inputs(); if (_e) { _o->mutating_variable_inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->mutating_variable_inputs[_i] = _e->Get(_i) != 0; } } }
17573   { auto _e = intermediates(); if (_e) { _o->intermediates.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->intermediates[_i] = _e->Get(_i); } } }
17574 }
17575 
17576 inline flatbuffers::Offset<Operator> Operator::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17577   return CreateOperator(_fbb, _o, _rehasher);
17578 }
17579 
17580 inline flatbuffers::Offset<Operator> CreateOperator(flatbuffers::FlatBufferBuilder &_fbb, const OperatorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17581   (void)_rehasher;
17582   (void)_o;
17583   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OperatorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17584   auto _opcode_index = _o->opcode_index;
17585   auto _inputs = _o->inputs.size() ? _fbb.CreateVector(_o->inputs) : 0;
17586   auto _outputs = _o->outputs.size() ? _fbb.CreateVector(_o->outputs) : 0;
17587   auto _builtin_options_type = _o->builtin_options.type;
17588   auto _builtin_options = _o->builtin_options.Pack(_fbb);
17589   auto _custom_options = _o->custom_options.size() ? _fbb.CreateVector(_o->custom_options) : 0;
17590   auto _custom_options_format = _o->custom_options_format;
17591   auto _mutating_variable_inputs = _o->mutating_variable_inputs.size() ? _fbb.CreateVector(_o->mutating_variable_inputs) : 0;
17592   auto _intermediates = _o->intermediates.size() ? _fbb.CreateVector(_o->intermediates) : 0;
17593   return tflite::CreateOperator(
17594       _fbb,
17595       _opcode_index,
17596       _inputs,
17597       _outputs,
17598       _builtin_options_type,
17599       _builtin_options,
17600       _custom_options,
17601       _custom_options_format,
17602       _mutating_variable_inputs,
17603       _intermediates);
17604 }
17605 
17606 inline SubGraphT::SubGraphT(const SubGraphT &o)
17607       : inputs(o.inputs),
17608         outputs(o.outputs),
17609         name(o.name) {
17610   tensors.reserve(o.tensors.size());
17611   for (const auto &tensors_ : o.tensors) { tensors.emplace_back((tensors_) ? new tflite::TensorT(*tensors_) : nullptr); }
17612   operators.reserve(o.operators.size());
17613   for (const auto &operators_ : o.operators) { operators.emplace_back((operators_) ? new tflite::OperatorT(*operators_) : nullptr); }
17614 }
17615 
17616 inline SubGraphT &SubGraphT::operator=(SubGraphT o) FLATBUFFERS_NOEXCEPT {
17617   std::swap(tensors, o.tensors);
17618   std::swap(inputs, o.inputs);
17619   std::swap(outputs, o.outputs);
17620   std::swap(operators, o.operators);
17621   std::swap(name, o.name);
17622   return *this;
17623 }
17624 
17625 inline SubGraphT *SubGraph::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17626   auto _o = std::unique_ptr<SubGraphT>(new SubGraphT());
17627   UnPackTo(_o.get(), _resolver);
17628   return _o.release();
17629 }
17630 
17631 inline void SubGraph::UnPackTo(SubGraphT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17632   (void)_o;
17633   (void)_resolver;
17634   { auto _e = tensors(); if (_e) { _o->tensors.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->tensors[_i] = std::unique_ptr<tflite::TensorT>(_e->Get(_i)->UnPack(_resolver)); } } }
17635   { auto _e = inputs(); if (_e) { _o->inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inputs[_i] = _e->Get(_i); } } }
17636   { auto _e = outputs(); if (_e) { _o->outputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputs[_i] = _e->Get(_i); } } }
17637   { auto _e = operators(); if (_e) { _o->operators.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->operators[_i] = std::unique_ptr<tflite::OperatorT>(_e->Get(_i)->UnPack(_resolver)); } } }
17638   { auto _e = name(); if (_e) _o->name = _e->str(); }
17639 }
17640 
17641 inline flatbuffers::Offset<SubGraph> SubGraph::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17642   return CreateSubGraph(_fbb, _o, _rehasher);
17643 }
17644 
17645 inline flatbuffers::Offset<SubGraph> CreateSubGraph(flatbuffers::FlatBufferBuilder &_fbb, const SubGraphT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17646   (void)_rehasher;
17647   (void)_o;
17648   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SubGraphT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17649   auto _tensors = _o->tensors.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::Tensor>> (_o->tensors.size(), [](size_t i, _VectorArgs *__va) { return CreateTensor(*__va->__fbb, __va->__o->tensors[i].get(), __va->__rehasher); }, &_va ) : 0;
17650   auto _inputs = _o->inputs.size() ? _fbb.CreateVector(_o->inputs) : 0;
17651   auto _outputs = _o->outputs.size() ? _fbb.CreateVector(_o->outputs) : 0;
17652   auto _operators = _o->operators.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::Operator>> (_o->operators.size(), [](size_t i, _VectorArgs *__va) { return CreateOperator(*__va->__fbb, __va->__o->operators[i].get(), __va->__rehasher); }, &_va ) : 0;
17653   auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name);
17654   return tflite::CreateSubGraph(
17655       _fbb,
17656       _tensors,
17657       _inputs,
17658       _outputs,
17659       _operators,
17660       _name);
17661 }
17662 
17663 inline BufferT *Buffer::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17664   auto _o = std::unique_ptr<BufferT>(new BufferT());
17665   UnPackTo(_o.get(), _resolver);
17666   return _o.release();
17667 }
17668 
17669 inline void Buffer::UnPackTo(BufferT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17670   (void)_o;
17671   (void)_resolver;
17672   { auto _e = data(); if (_e) { _o->data.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->data.begin()); } }
17673 }
17674 
17675 inline flatbuffers::Offset<Buffer> Buffer::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BufferT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17676   return CreateBuffer(_fbb, _o, _rehasher);
17677 }
17678 
17679 inline flatbuffers::Offset<Buffer> CreateBuffer(flatbuffers::FlatBufferBuilder &_fbb, const BufferT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17680   (void)_rehasher;
17681   (void)_o;
17682   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BufferT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17683   _fbb.ForceVectorAlignment(_o->data.size(), sizeof(uint8_t), 16);
17684   auto _data = _o->data.size() ? _fbb.CreateVector(_o->data) : 0;
17685   return tflite::CreateBuffer(
17686       _fbb,
17687       _data);
17688 }
17689 
17690 inline MetadataT *Metadata::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17691   auto _o = std::unique_ptr<MetadataT>(new MetadataT());
17692   UnPackTo(_o.get(), _resolver);
17693   return _o.release();
17694 }
17695 
17696 inline void Metadata::UnPackTo(MetadataT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17697   (void)_o;
17698   (void)_resolver;
17699   { auto _e = name(); if (_e) _o->name = _e->str(); }
17700   { auto _e = buffer(); _o->buffer = _e; }
17701 }
17702 
17703 inline flatbuffers::Offset<Metadata> Metadata::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MetadataT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17704   return CreateMetadata(_fbb, _o, _rehasher);
17705 }
17706 
17707 inline flatbuffers::Offset<Metadata> CreateMetadata(flatbuffers::FlatBufferBuilder &_fbb, const MetadataT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17708   (void)_rehasher;
17709   (void)_o;
17710   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MetadataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17711   auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name);
17712   auto _buffer = _o->buffer;
17713   return tflite::CreateMetadata(
17714       _fbb,
17715       _name,
17716       _buffer);
17717 }
17718 
17719 inline TensorMapT *TensorMap::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17720   auto _o = std::unique_ptr<TensorMapT>(new TensorMapT());
17721   UnPackTo(_o.get(), _resolver);
17722   return _o.release();
17723 }
17724 
17725 inline void TensorMap::UnPackTo(TensorMapT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17726   (void)_o;
17727   (void)_resolver;
17728   { auto _e = name(); if (_e) _o->name = _e->str(); }
17729   { auto _e = tensor_index(); _o->tensor_index = _e; }
17730 }
17731 
17732 inline flatbuffers::Offset<TensorMap> TensorMap::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TensorMapT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17733   return CreateTensorMap(_fbb, _o, _rehasher);
17734 }
17735 
17736 inline flatbuffers::Offset<TensorMap> CreateTensorMap(flatbuffers::FlatBufferBuilder &_fbb, const TensorMapT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17737   (void)_rehasher;
17738   (void)_o;
17739   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TensorMapT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17740   auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name);
17741   auto _tensor_index = _o->tensor_index;
17742   return tflite::CreateTensorMap(
17743       _fbb,
17744       _name,
17745       _tensor_index);
17746 }
17747 
17748 inline SignatureDefT::SignatureDefT(const SignatureDefT &o)
17749       : signature_key(o.signature_key),
17750         subgraph_index(o.subgraph_index) {
17751   inputs.reserve(o.inputs.size());
17752   for (const auto &inputs_ : o.inputs) { inputs.emplace_back((inputs_) ? new tflite::TensorMapT(*inputs_) : nullptr); }
17753   outputs.reserve(o.outputs.size());
17754   for (const auto &outputs_ : o.outputs) { outputs.emplace_back((outputs_) ? new tflite::TensorMapT(*outputs_) : nullptr); }
17755 }
17756 
17757 inline SignatureDefT &SignatureDefT::operator=(SignatureDefT o) FLATBUFFERS_NOEXCEPT {
17758   std::swap(inputs, o.inputs);
17759   std::swap(outputs, o.outputs);
17760   std::swap(signature_key, o.signature_key);
17761   std::swap(subgraph_index, o.subgraph_index);
17762   return *this;
17763 }
17764 
17765 inline SignatureDefT *SignatureDef::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17766   auto _o = std::unique_ptr<SignatureDefT>(new SignatureDefT());
17767   UnPackTo(_o.get(), _resolver);
17768   return _o.release();
17769 }
17770 
17771 inline void SignatureDef::UnPackTo(SignatureDefT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17772   (void)_o;
17773   (void)_resolver;
17774   { auto _e = inputs(); if (_e) { _o->inputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inputs[_i] = std::unique_ptr<tflite::TensorMapT>(_e->Get(_i)->UnPack(_resolver)); } } }
17775   { auto _e = outputs(); if (_e) { _o->outputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputs[_i] = std::unique_ptr<tflite::TensorMapT>(_e->Get(_i)->UnPack(_resolver)); } } }
17776   { auto _e = signature_key(); if (_e) _o->signature_key = _e->str(); }
17777   { auto _e = subgraph_index(); _o->subgraph_index = _e; }
17778 }
17779 
17780 inline flatbuffers::Offset<SignatureDef> SignatureDef::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SignatureDefT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17781   return CreateSignatureDef(_fbb, _o, _rehasher);
17782 }
17783 
17784 inline flatbuffers::Offset<SignatureDef> CreateSignatureDef(flatbuffers::FlatBufferBuilder &_fbb, const SignatureDefT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17785   (void)_rehasher;
17786   (void)_o;
17787   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SignatureDefT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17788   auto _inputs = _o->inputs.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>> (_o->inputs.size(), [](size_t i, _VectorArgs *__va) { return CreateTensorMap(*__va->__fbb, __va->__o->inputs[i].get(), __va->__rehasher); }, &_va ) : 0;
17789   auto _outputs = _o->outputs.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>> (_o->outputs.size(), [](size_t i, _VectorArgs *__va) { return CreateTensorMap(*__va->__fbb, __va->__o->outputs[i].get(), __va->__rehasher); }, &_va ) : 0;
17790   auto _signature_key = _o->signature_key.empty() ? 0 : _fbb.CreateString(_o->signature_key);
17791   auto _subgraph_index = _o->subgraph_index;
17792   return tflite::CreateSignatureDef(
17793       _fbb,
17794       _inputs,
17795       _outputs,
17796       _signature_key,
17797       _subgraph_index);
17798 }
17799 
17800 inline ModelT::ModelT(const ModelT &o)
17801       : version(o.version),
17802         description(o.description),
17803         metadata_buffer(o.metadata_buffer) {
17804   operator_codes.reserve(o.operator_codes.size());
17805   for (const auto &operator_codes_ : o.operator_codes) { operator_codes.emplace_back((operator_codes_) ? new tflite::OperatorCodeT(*operator_codes_) : nullptr); }
17806   subgraphs.reserve(o.subgraphs.size());
17807   for (const auto &subgraphs_ : o.subgraphs) { subgraphs.emplace_back((subgraphs_) ? new tflite::SubGraphT(*subgraphs_) : nullptr); }
17808   buffers.reserve(o.buffers.size());
17809   for (const auto &buffers_ : o.buffers) { buffers.emplace_back((buffers_) ? new tflite::BufferT(*buffers_) : nullptr); }
17810   metadata.reserve(o.metadata.size());
17811   for (const auto &metadata_ : o.metadata) { metadata.emplace_back((metadata_) ? new tflite::MetadataT(*metadata_) : nullptr); }
17812   signature_defs.reserve(o.signature_defs.size());
17813   for (const auto &signature_defs_ : o.signature_defs) { signature_defs.emplace_back((signature_defs_) ? new tflite::SignatureDefT(*signature_defs_) : nullptr); }
17814 }
17815 
17816 inline ModelT &ModelT::operator=(ModelT o) FLATBUFFERS_NOEXCEPT {
17817   std::swap(version, o.version);
17818   std::swap(operator_codes, o.operator_codes);
17819   std::swap(subgraphs, o.subgraphs);
17820   std::swap(description, o.description);
17821   std::swap(buffers, o.buffers);
17822   std::swap(metadata_buffer, o.metadata_buffer);
17823   std::swap(metadata, o.metadata);
17824   std::swap(signature_defs, o.signature_defs);
17825   return *this;
17826 }
17827 
17828 inline ModelT *Model::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
17829   auto _o = std::unique_ptr<ModelT>(new ModelT());
17830   UnPackTo(_o.get(), _resolver);
17831   return _o.release();
17832 }
17833 
17834 inline void Model::UnPackTo(ModelT *_o, const flatbuffers::resolver_function_t *_resolver) const {
17835   (void)_o;
17836   (void)_resolver;
17837   { auto _e = version(); _o->version = _e; }
17838   { auto _e = operator_codes(); if (_e) { _o->operator_codes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->operator_codes[_i] = std::unique_ptr<tflite::OperatorCodeT>(_e->Get(_i)->UnPack(_resolver)); } } }
17839   { auto _e = subgraphs(); if (_e) { _o->subgraphs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->subgraphs[_i] = std::unique_ptr<tflite::SubGraphT>(_e->Get(_i)->UnPack(_resolver)); } } }
17840   { auto _e = description(); if (_e) _o->description = _e->str(); }
17841   { auto _e = buffers(); if (_e) { _o->buffers.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->buffers[_i] = std::unique_ptr<tflite::BufferT>(_e->Get(_i)->UnPack(_resolver)); } } }
17842   { auto _e = metadata_buffer(); if (_e) { _o->metadata_buffer.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->metadata_buffer[_i] = _e->Get(_i); } } }
17843   { auto _e = metadata(); if (_e) { _o->metadata.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->metadata[_i] = std::unique_ptr<tflite::MetadataT>(_e->Get(_i)->UnPack(_resolver)); } } }
17844   { auto _e = signature_defs(); if (_e) { _o->signature_defs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->signature_defs[_i] = std::unique_ptr<tflite::SignatureDefT>(_e->Get(_i)->UnPack(_resolver)); } } }
17845 }
17846 
17847 inline flatbuffers::Offset<Model> Model::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ModelT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
17848   return CreateModel(_fbb, _o, _rehasher);
17849 }
17850 
17851 inline flatbuffers::Offset<Model> CreateModel(flatbuffers::FlatBufferBuilder &_fbb, const ModelT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
17852   (void)_rehasher;
17853   (void)_o;
17854   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ModelT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
17855   auto _version = _o->version;
17856   auto _operator_codes = _o->operator_codes.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::OperatorCode>> (_o->operator_codes.size(), [](size_t i, _VectorArgs *__va) { return CreateOperatorCode(*__va->__fbb, __va->__o->operator_codes[i].get(), __va->__rehasher); }, &_va ) : 0;
17857   auto _subgraphs = _o->subgraphs.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::SubGraph>> (_o->subgraphs.size(), [](size_t i, _VectorArgs *__va) { return CreateSubGraph(*__va->__fbb, __va->__o->subgraphs[i].get(), __va->__rehasher); }, &_va ) : 0;
17858   auto _description = _o->description.empty() ? 0 : _fbb.CreateString(_o->description);
17859   auto _buffers = _o->buffers.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::Buffer>> (_o->buffers.size(), [](size_t i, _VectorArgs *__va) { return CreateBuffer(*__va->__fbb, __va->__o->buffers[i].get(), __va->__rehasher); }, &_va ) : 0;
17860   auto _metadata_buffer = _o->metadata_buffer.size() ? _fbb.CreateVector(_o->metadata_buffer) : 0;
17861   auto _metadata = _o->metadata.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::Metadata>> (_o->metadata.size(), [](size_t i, _VectorArgs *__va) { return CreateMetadata(*__va->__fbb, __va->__o->metadata[i].get(), __va->__rehasher); }, &_va ) : 0;
17862   auto _signature_defs = _o->signature_defs.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::SignatureDef>> (_o->signature_defs.size(), [](size_t i, _VectorArgs *__va) { return CreateSignatureDef(*__va->__fbb, __va->__o->signature_defs[i].get(), __va->__rehasher); }, &_va ) : 0;
17863   return tflite::CreateModel(
17864       _fbb,
17865       _version,
17866       _operator_codes,
17867       _subgraphs,
17868       _description,
17869       _buffers,
17870       _metadata_buffer,
17871       _metadata,
17872       _signature_defs);
17873 }
17874 
17875 inline bool VerifyQuantizationDetails(flatbuffers::Verifier &verifier, const void *obj, QuantizationDetails type) {
17876   switch (type) {
17877     case QuantizationDetails_NONE: {
17878       return true;
17879     }
17880     case QuantizationDetails_CustomQuantization: {
17881       auto ptr = reinterpret_cast<const tflite::CustomQuantization *>(obj);
17882       return verifier.VerifyTable(ptr);
17883     }
17884     default: return true;
17885   }
17886 }
17887 
17888 inline bool VerifyQuantizationDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
17889   if (!values || !types) return !values && !types;
17890   if (values->size() != types->size()) return false;
17891   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
17892     if (!VerifyQuantizationDetails(
17893         verifier,  values->Get(i), types->GetEnum<QuantizationDetails>(i))) {
17894       return false;
17895     }
17896   }
17897   return true;
17898 }
17899 
17900 inline void *QuantizationDetailsUnion::UnPack(const void *obj, QuantizationDetails type, const flatbuffers::resolver_function_t *resolver) {
17901   (void)resolver;
17902   switch (type) {
17903     case QuantizationDetails_CustomQuantization: {
17904       auto ptr = reinterpret_cast<const tflite::CustomQuantization *>(obj);
17905       return ptr->UnPack(resolver);
17906     }
17907     default: return nullptr;
17908   }
17909 }
17910 
17911 inline flatbuffers::Offset<void> QuantizationDetailsUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
17912   (void)_rehasher;
17913   switch (type) {
17914     case QuantizationDetails_CustomQuantization: {
17915       auto ptr = reinterpret_cast<const tflite::CustomQuantizationT *>(value);
17916       return CreateCustomQuantization(_fbb, ptr, _rehasher).Union();
17917     }
17918     default: return 0;
17919   }
17920 }
17921 
17922 inline QuantizationDetailsUnion::QuantizationDetailsUnion(const QuantizationDetailsUnion &u) : type(u.type), value(nullptr) {
17923   switch (type) {
17924     case QuantizationDetails_CustomQuantization: {
17925       value = new tflite::CustomQuantizationT(*reinterpret_cast<tflite::CustomQuantizationT *>(u.value));
17926       break;
17927     }
17928     default:
17929       break;
17930   }
17931 }
17932 
17933 inline void QuantizationDetailsUnion::Reset() {
17934   switch (type) {
17935     case QuantizationDetails_CustomQuantization: {
17936       auto ptr = reinterpret_cast<tflite::CustomQuantizationT *>(value);
17937       delete ptr;
17938       break;
17939     }
17940     default: break;
17941   }
17942   value = nullptr;
17943   type = QuantizationDetails_NONE;
17944 }
17945 
17946 inline bool VerifySparseIndexVector(flatbuffers::Verifier &verifier, const void *obj, SparseIndexVector type) {
17947   switch (type) {
17948     case SparseIndexVector_NONE: {
17949       return true;
17950     }
17951     case SparseIndexVector_Int32Vector: {
17952       auto ptr = reinterpret_cast<const tflite::Int32Vector *>(obj);
17953       return verifier.VerifyTable(ptr);
17954     }
17955     case SparseIndexVector_Uint16Vector: {
17956       auto ptr = reinterpret_cast<const tflite::Uint16Vector *>(obj);
17957       return verifier.VerifyTable(ptr);
17958     }
17959     case SparseIndexVector_Uint8Vector: {
17960       auto ptr = reinterpret_cast<const tflite::Uint8Vector *>(obj);
17961       return verifier.VerifyTable(ptr);
17962     }
17963     default: return true;
17964   }
17965 }
17966 
17967 inline bool VerifySparseIndexVectorVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
17968   if (!values || !types) return !values && !types;
17969   if (values->size() != types->size()) return false;
17970   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
17971     if (!VerifySparseIndexVector(
17972         verifier,  values->Get(i), types->GetEnum<SparseIndexVector>(i))) {
17973       return false;
17974     }
17975   }
17976   return true;
17977 }
17978 
17979 inline void *SparseIndexVectorUnion::UnPack(const void *obj, SparseIndexVector type, const flatbuffers::resolver_function_t *resolver) {
17980   (void)resolver;
17981   switch (type) {
17982     case SparseIndexVector_Int32Vector: {
17983       auto ptr = reinterpret_cast<const tflite::Int32Vector *>(obj);
17984       return ptr->UnPack(resolver);
17985     }
17986     case SparseIndexVector_Uint16Vector: {
17987       auto ptr = reinterpret_cast<const tflite::Uint16Vector *>(obj);
17988       return ptr->UnPack(resolver);
17989     }
17990     case SparseIndexVector_Uint8Vector: {
17991       auto ptr = reinterpret_cast<const tflite::Uint8Vector *>(obj);
17992       return ptr->UnPack(resolver);
17993     }
17994     default: return nullptr;
17995   }
17996 }
17997 
17998 inline flatbuffers::Offset<void> SparseIndexVectorUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
17999   (void)_rehasher;
18000   switch (type) {
18001     case SparseIndexVector_Int32Vector: {
18002       auto ptr = reinterpret_cast<const tflite::Int32VectorT *>(value);
18003       return CreateInt32Vector(_fbb, ptr, _rehasher).Union();
18004     }
18005     case SparseIndexVector_Uint16Vector: {
18006       auto ptr = reinterpret_cast<const tflite::Uint16VectorT *>(value);
18007       return CreateUint16Vector(_fbb, ptr, _rehasher).Union();
18008     }
18009     case SparseIndexVector_Uint8Vector: {
18010       auto ptr = reinterpret_cast<const tflite::Uint8VectorT *>(value);
18011       return CreateUint8Vector(_fbb, ptr, _rehasher).Union();
18012     }
18013     default: return 0;
18014   }
18015 }
18016 
18017 inline SparseIndexVectorUnion::SparseIndexVectorUnion(const SparseIndexVectorUnion &u) : type(u.type), value(nullptr) {
18018   switch (type) {
18019     case SparseIndexVector_Int32Vector: {
18020       value = new tflite::Int32VectorT(*reinterpret_cast<tflite::Int32VectorT *>(u.value));
18021       break;
18022     }
18023     case SparseIndexVector_Uint16Vector: {
18024       value = new tflite::Uint16VectorT(*reinterpret_cast<tflite::Uint16VectorT *>(u.value));
18025       break;
18026     }
18027     case SparseIndexVector_Uint8Vector: {
18028       value = new tflite::Uint8VectorT(*reinterpret_cast<tflite::Uint8VectorT *>(u.value));
18029       break;
18030     }
18031     default:
18032       break;
18033   }
18034 }
18035 
18036 inline void SparseIndexVectorUnion::Reset() {
18037   switch (type) {
18038     case SparseIndexVector_Int32Vector: {
18039       auto ptr = reinterpret_cast<tflite::Int32VectorT *>(value);
18040       delete ptr;
18041       break;
18042     }
18043     case SparseIndexVector_Uint16Vector: {
18044       auto ptr = reinterpret_cast<tflite::Uint16VectorT *>(value);
18045       delete ptr;
18046       break;
18047     }
18048     case SparseIndexVector_Uint8Vector: {
18049       auto ptr = reinterpret_cast<tflite::Uint8VectorT *>(value);
18050       delete ptr;
18051       break;
18052     }
18053     default: break;
18054   }
18055   value = nullptr;
18056   type = SparseIndexVector_NONE;
18057 }
18058 
18059 inline bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type) {
18060   switch (type) {
18061     case BuiltinOptions_NONE: {
18062       return true;
18063     }
18064     case BuiltinOptions_Conv2DOptions: {
18065       auto ptr = reinterpret_cast<const tflite::Conv2DOptions *>(obj);
18066       return verifier.VerifyTable(ptr);
18067     }
18068     case BuiltinOptions_DepthwiseConv2DOptions: {
18069       auto ptr = reinterpret_cast<const tflite::DepthwiseConv2DOptions *>(obj);
18070       return verifier.VerifyTable(ptr);
18071     }
18072     case BuiltinOptions_ConcatEmbeddingsOptions: {
18073       auto ptr = reinterpret_cast<const tflite::ConcatEmbeddingsOptions *>(obj);
18074       return verifier.VerifyTable(ptr);
18075     }
18076     case BuiltinOptions_LSHProjectionOptions: {
18077       auto ptr = reinterpret_cast<const tflite::LSHProjectionOptions *>(obj);
18078       return verifier.VerifyTable(ptr);
18079     }
18080     case BuiltinOptions_Pool2DOptions: {
18081       auto ptr = reinterpret_cast<const tflite::Pool2DOptions *>(obj);
18082       return verifier.VerifyTable(ptr);
18083     }
18084     case BuiltinOptions_SVDFOptions: {
18085       auto ptr = reinterpret_cast<const tflite::SVDFOptions *>(obj);
18086       return verifier.VerifyTable(ptr);
18087     }
18088     case BuiltinOptions_RNNOptions: {
18089       auto ptr = reinterpret_cast<const tflite::RNNOptions *>(obj);
18090       return verifier.VerifyTable(ptr);
18091     }
18092     case BuiltinOptions_FullyConnectedOptions: {
18093       auto ptr = reinterpret_cast<const tflite::FullyConnectedOptions *>(obj);
18094       return verifier.VerifyTable(ptr);
18095     }
18096     case BuiltinOptions_SoftmaxOptions: {
18097       auto ptr = reinterpret_cast<const tflite::SoftmaxOptions *>(obj);
18098       return verifier.VerifyTable(ptr);
18099     }
18100     case BuiltinOptions_ConcatenationOptions: {
18101       auto ptr = reinterpret_cast<const tflite::ConcatenationOptions *>(obj);
18102       return verifier.VerifyTable(ptr);
18103     }
18104     case BuiltinOptions_AddOptions: {
18105       auto ptr = reinterpret_cast<const tflite::AddOptions *>(obj);
18106       return verifier.VerifyTable(ptr);
18107     }
18108     case BuiltinOptions_L2NormOptions: {
18109       auto ptr = reinterpret_cast<const tflite::L2NormOptions *>(obj);
18110       return verifier.VerifyTable(ptr);
18111     }
18112     case BuiltinOptions_LocalResponseNormalizationOptions: {
18113       auto ptr = reinterpret_cast<const tflite::LocalResponseNormalizationOptions *>(obj);
18114       return verifier.VerifyTable(ptr);
18115     }
18116     case BuiltinOptions_LSTMOptions: {
18117       auto ptr = reinterpret_cast<const tflite::LSTMOptions *>(obj);
18118       return verifier.VerifyTable(ptr);
18119     }
18120     case BuiltinOptions_ResizeBilinearOptions: {
18121       auto ptr = reinterpret_cast<const tflite::ResizeBilinearOptions *>(obj);
18122       return verifier.VerifyTable(ptr);
18123     }
18124     case BuiltinOptions_CallOptions: {
18125       auto ptr = reinterpret_cast<const tflite::CallOptions *>(obj);
18126       return verifier.VerifyTable(ptr);
18127     }
18128     case BuiltinOptions_ReshapeOptions: {
18129       auto ptr = reinterpret_cast<const tflite::ReshapeOptions *>(obj);
18130       return verifier.VerifyTable(ptr);
18131     }
18132     case BuiltinOptions_SkipGramOptions: {
18133       auto ptr = reinterpret_cast<const tflite::SkipGramOptions *>(obj);
18134       return verifier.VerifyTable(ptr);
18135     }
18136     case BuiltinOptions_SpaceToDepthOptions: {
18137       auto ptr = reinterpret_cast<const tflite::SpaceToDepthOptions *>(obj);
18138       return verifier.VerifyTable(ptr);
18139     }
18140     case BuiltinOptions_EmbeddingLookupSparseOptions: {
18141       auto ptr = reinterpret_cast<const tflite::EmbeddingLookupSparseOptions *>(obj);
18142       return verifier.VerifyTable(ptr);
18143     }
18144     case BuiltinOptions_MulOptions: {
18145       auto ptr = reinterpret_cast<const tflite::MulOptions *>(obj);
18146       return verifier.VerifyTable(ptr);
18147     }
18148     case BuiltinOptions_PadOptions: {
18149       auto ptr = reinterpret_cast<const tflite::PadOptions *>(obj);
18150       return verifier.VerifyTable(ptr);
18151     }
18152     case BuiltinOptions_GatherOptions: {
18153       auto ptr = reinterpret_cast<const tflite::GatherOptions *>(obj);
18154       return verifier.VerifyTable(ptr);
18155     }
18156     case BuiltinOptions_BatchToSpaceNDOptions: {
18157       auto ptr = reinterpret_cast<const tflite::BatchToSpaceNDOptions *>(obj);
18158       return verifier.VerifyTable(ptr);
18159     }
18160     case BuiltinOptions_SpaceToBatchNDOptions: {
18161       auto ptr = reinterpret_cast<const tflite::SpaceToBatchNDOptions *>(obj);
18162       return verifier.VerifyTable(ptr);
18163     }
18164     case BuiltinOptions_TransposeOptions: {
18165       auto ptr = reinterpret_cast<const tflite::TransposeOptions *>(obj);
18166       return verifier.VerifyTable(ptr);
18167     }
18168     case BuiltinOptions_ReducerOptions: {
18169       auto ptr = reinterpret_cast<const tflite::ReducerOptions *>(obj);
18170       return verifier.VerifyTable(ptr);
18171     }
18172     case BuiltinOptions_SubOptions: {
18173       auto ptr = reinterpret_cast<const tflite::SubOptions *>(obj);
18174       return verifier.VerifyTable(ptr);
18175     }
18176     case BuiltinOptions_DivOptions: {
18177       auto ptr = reinterpret_cast<const tflite::DivOptions *>(obj);
18178       return verifier.VerifyTable(ptr);
18179     }
18180     case BuiltinOptions_SqueezeOptions: {
18181       auto ptr = reinterpret_cast<const tflite::SqueezeOptions *>(obj);
18182       return verifier.VerifyTable(ptr);
18183     }
18184     case BuiltinOptions_SequenceRNNOptions: {
18185       auto ptr = reinterpret_cast<const tflite::SequenceRNNOptions *>(obj);
18186       return verifier.VerifyTable(ptr);
18187     }
18188     case BuiltinOptions_StridedSliceOptions: {
18189       auto ptr = reinterpret_cast<const tflite::StridedSliceOptions *>(obj);
18190       return verifier.VerifyTable(ptr);
18191     }
18192     case BuiltinOptions_ExpOptions: {
18193       auto ptr = reinterpret_cast<const tflite::ExpOptions *>(obj);
18194       return verifier.VerifyTable(ptr);
18195     }
18196     case BuiltinOptions_TopKV2Options: {
18197       auto ptr = reinterpret_cast<const tflite::TopKV2Options *>(obj);
18198       return verifier.VerifyTable(ptr);
18199     }
18200     case BuiltinOptions_SplitOptions: {
18201       auto ptr = reinterpret_cast<const tflite::SplitOptions *>(obj);
18202       return verifier.VerifyTable(ptr);
18203     }
18204     case BuiltinOptions_LogSoftmaxOptions: {
18205       auto ptr = reinterpret_cast<const tflite::LogSoftmaxOptions *>(obj);
18206       return verifier.VerifyTable(ptr);
18207     }
18208     case BuiltinOptions_CastOptions: {
18209       auto ptr = reinterpret_cast<const tflite::CastOptions *>(obj);
18210       return verifier.VerifyTable(ptr);
18211     }
18212     case BuiltinOptions_DequantizeOptions: {
18213       auto ptr = reinterpret_cast<const tflite::DequantizeOptions *>(obj);
18214       return verifier.VerifyTable(ptr);
18215     }
18216     case BuiltinOptions_MaximumMinimumOptions: {
18217       auto ptr = reinterpret_cast<const tflite::MaximumMinimumOptions *>(obj);
18218       return verifier.VerifyTable(ptr);
18219     }
18220     case BuiltinOptions_ArgMaxOptions: {
18221       auto ptr = reinterpret_cast<const tflite::ArgMaxOptions *>(obj);
18222       return verifier.VerifyTable(ptr);
18223     }
18224     case BuiltinOptions_LessOptions: {
18225       auto ptr = reinterpret_cast<const tflite::LessOptions *>(obj);
18226       return verifier.VerifyTable(ptr);
18227     }
18228     case BuiltinOptions_NegOptions: {
18229       auto ptr = reinterpret_cast<const tflite::NegOptions *>(obj);
18230       return verifier.VerifyTable(ptr);
18231     }
18232     case BuiltinOptions_PadV2Options: {
18233       auto ptr = reinterpret_cast<const tflite::PadV2Options *>(obj);
18234       return verifier.VerifyTable(ptr);
18235     }
18236     case BuiltinOptions_GreaterOptions: {
18237       auto ptr = reinterpret_cast<const tflite::GreaterOptions *>(obj);
18238       return verifier.VerifyTable(ptr);
18239     }
18240     case BuiltinOptions_GreaterEqualOptions: {
18241       auto ptr = reinterpret_cast<const tflite::GreaterEqualOptions *>(obj);
18242       return verifier.VerifyTable(ptr);
18243     }
18244     case BuiltinOptions_LessEqualOptions: {
18245       auto ptr = reinterpret_cast<const tflite::LessEqualOptions *>(obj);
18246       return verifier.VerifyTable(ptr);
18247     }
18248     case BuiltinOptions_SelectOptions: {
18249       auto ptr = reinterpret_cast<const tflite::SelectOptions *>(obj);
18250       return verifier.VerifyTable(ptr);
18251     }
18252     case BuiltinOptions_SliceOptions: {
18253       auto ptr = reinterpret_cast<const tflite::SliceOptions *>(obj);
18254       return verifier.VerifyTable(ptr);
18255     }
18256     case BuiltinOptions_TransposeConvOptions: {
18257       auto ptr = reinterpret_cast<const tflite::TransposeConvOptions *>(obj);
18258       return verifier.VerifyTable(ptr);
18259     }
18260     case BuiltinOptions_SparseToDenseOptions: {
18261       auto ptr = reinterpret_cast<const tflite::SparseToDenseOptions *>(obj);
18262       return verifier.VerifyTable(ptr);
18263     }
18264     case BuiltinOptions_TileOptions: {
18265       auto ptr = reinterpret_cast<const tflite::TileOptions *>(obj);
18266       return verifier.VerifyTable(ptr);
18267     }
18268     case BuiltinOptions_ExpandDimsOptions: {
18269       auto ptr = reinterpret_cast<const tflite::ExpandDimsOptions *>(obj);
18270       return verifier.VerifyTable(ptr);
18271     }
18272     case BuiltinOptions_EqualOptions: {
18273       auto ptr = reinterpret_cast<const tflite::EqualOptions *>(obj);
18274       return verifier.VerifyTable(ptr);
18275     }
18276     case BuiltinOptions_NotEqualOptions: {
18277       auto ptr = reinterpret_cast<const tflite::NotEqualOptions *>(obj);
18278       return verifier.VerifyTable(ptr);
18279     }
18280     case BuiltinOptions_ShapeOptions: {
18281       auto ptr = reinterpret_cast<const tflite::ShapeOptions *>(obj);
18282       return verifier.VerifyTable(ptr);
18283     }
18284     case BuiltinOptions_PowOptions: {
18285       auto ptr = reinterpret_cast<const tflite::PowOptions *>(obj);
18286       return verifier.VerifyTable(ptr);
18287     }
18288     case BuiltinOptions_ArgMinOptions: {
18289       auto ptr = reinterpret_cast<const tflite::ArgMinOptions *>(obj);
18290       return verifier.VerifyTable(ptr);
18291     }
18292     case BuiltinOptions_FakeQuantOptions: {
18293       auto ptr = reinterpret_cast<const tflite::FakeQuantOptions *>(obj);
18294       return verifier.VerifyTable(ptr);
18295     }
18296     case BuiltinOptions_PackOptions: {
18297       auto ptr = reinterpret_cast<const tflite::PackOptions *>(obj);
18298       return verifier.VerifyTable(ptr);
18299     }
18300     case BuiltinOptions_LogicalOrOptions: {
18301       auto ptr = reinterpret_cast<const tflite::LogicalOrOptions *>(obj);
18302       return verifier.VerifyTable(ptr);
18303     }
18304     case BuiltinOptions_OneHotOptions: {
18305       auto ptr = reinterpret_cast<const tflite::OneHotOptions *>(obj);
18306       return verifier.VerifyTable(ptr);
18307     }
18308     case BuiltinOptions_LogicalAndOptions: {
18309       auto ptr = reinterpret_cast<const tflite::LogicalAndOptions *>(obj);
18310       return verifier.VerifyTable(ptr);
18311     }
18312     case BuiltinOptions_LogicalNotOptions: {
18313       auto ptr = reinterpret_cast<const tflite::LogicalNotOptions *>(obj);
18314       return verifier.VerifyTable(ptr);
18315     }
18316     case BuiltinOptions_UnpackOptions: {
18317       auto ptr = reinterpret_cast<const tflite::UnpackOptions *>(obj);
18318       return verifier.VerifyTable(ptr);
18319     }
18320     case BuiltinOptions_FloorDivOptions: {
18321       auto ptr = reinterpret_cast<const tflite::FloorDivOptions *>(obj);
18322       return verifier.VerifyTable(ptr);
18323     }
18324     case BuiltinOptions_SquareOptions: {
18325       auto ptr = reinterpret_cast<const tflite::SquareOptions *>(obj);
18326       return verifier.VerifyTable(ptr);
18327     }
18328     case BuiltinOptions_ZerosLikeOptions: {
18329       auto ptr = reinterpret_cast<const tflite::ZerosLikeOptions *>(obj);
18330       return verifier.VerifyTable(ptr);
18331     }
18332     case BuiltinOptions_FillOptions: {
18333       auto ptr = reinterpret_cast<const tflite::FillOptions *>(obj);
18334       return verifier.VerifyTable(ptr);
18335     }
18336     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
18337       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceLSTMOptions *>(obj);
18338       return verifier.VerifyTable(ptr);
18339     }
18340     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
18341       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceRNNOptions *>(obj);
18342       return verifier.VerifyTable(ptr);
18343     }
18344     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
18345       auto ptr = reinterpret_cast<const tflite::UnidirectionalSequenceLSTMOptions *>(obj);
18346       return verifier.VerifyTable(ptr);
18347     }
18348     case BuiltinOptions_FloorModOptions: {
18349       auto ptr = reinterpret_cast<const tflite::FloorModOptions *>(obj);
18350       return verifier.VerifyTable(ptr);
18351     }
18352     case BuiltinOptions_RangeOptions: {
18353       auto ptr = reinterpret_cast<const tflite::RangeOptions *>(obj);
18354       return verifier.VerifyTable(ptr);
18355     }
18356     case BuiltinOptions_ResizeNearestNeighborOptions: {
18357       auto ptr = reinterpret_cast<const tflite::ResizeNearestNeighborOptions *>(obj);
18358       return verifier.VerifyTable(ptr);
18359     }
18360     case BuiltinOptions_LeakyReluOptions: {
18361       auto ptr = reinterpret_cast<const tflite::LeakyReluOptions *>(obj);
18362       return verifier.VerifyTable(ptr);
18363     }
18364     case BuiltinOptions_SquaredDifferenceOptions: {
18365       auto ptr = reinterpret_cast<const tflite::SquaredDifferenceOptions *>(obj);
18366       return verifier.VerifyTable(ptr);
18367     }
18368     case BuiltinOptions_MirrorPadOptions: {
18369       auto ptr = reinterpret_cast<const tflite::MirrorPadOptions *>(obj);
18370       return verifier.VerifyTable(ptr);
18371     }
18372     case BuiltinOptions_AbsOptions: {
18373       auto ptr = reinterpret_cast<const tflite::AbsOptions *>(obj);
18374       return verifier.VerifyTable(ptr);
18375     }
18376     case BuiltinOptions_SplitVOptions: {
18377       auto ptr = reinterpret_cast<const tflite::SplitVOptions *>(obj);
18378       return verifier.VerifyTable(ptr);
18379     }
18380     case BuiltinOptions_UniqueOptions: {
18381       auto ptr = reinterpret_cast<const tflite::UniqueOptions *>(obj);
18382       return verifier.VerifyTable(ptr);
18383     }
18384     case BuiltinOptions_ReverseV2Options: {
18385       auto ptr = reinterpret_cast<const tflite::ReverseV2Options *>(obj);
18386       return verifier.VerifyTable(ptr);
18387     }
18388     case BuiltinOptions_AddNOptions: {
18389       auto ptr = reinterpret_cast<const tflite::AddNOptions *>(obj);
18390       return verifier.VerifyTable(ptr);
18391     }
18392     case BuiltinOptions_GatherNdOptions: {
18393       auto ptr = reinterpret_cast<const tflite::GatherNdOptions *>(obj);
18394       return verifier.VerifyTable(ptr);
18395     }
18396     case BuiltinOptions_CosOptions: {
18397       auto ptr = reinterpret_cast<const tflite::CosOptions *>(obj);
18398       return verifier.VerifyTable(ptr);
18399     }
18400     case BuiltinOptions_WhereOptions: {
18401       auto ptr = reinterpret_cast<const tflite::WhereOptions *>(obj);
18402       return verifier.VerifyTable(ptr);
18403     }
18404     case BuiltinOptions_RankOptions: {
18405       auto ptr = reinterpret_cast<const tflite::RankOptions *>(obj);
18406       return verifier.VerifyTable(ptr);
18407     }
18408     case BuiltinOptions_ReverseSequenceOptions: {
18409       auto ptr = reinterpret_cast<const tflite::ReverseSequenceOptions *>(obj);
18410       return verifier.VerifyTable(ptr);
18411     }
18412     case BuiltinOptions_MatrixDiagOptions: {
18413       auto ptr = reinterpret_cast<const tflite::MatrixDiagOptions *>(obj);
18414       return verifier.VerifyTable(ptr);
18415     }
18416     case BuiltinOptions_QuantizeOptions: {
18417       auto ptr = reinterpret_cast<const tflite::QuantizeOptions *>(obj);
18418       return verifier.VerifyTable(ptr);
18419     }
18420     case BuiltinOptions_MatrixSetDiagOptions: {
18421       auto ptr = reinterpret_cast<const tflite::MatrixSetDiagOptions *>(obj);
18422       return verifier.VerifyTable(ptr);
18423     }
18424     case BuiltinOptions_HardSwishOptions: {
18425       auto ptr = reinterpret_cast<const tflite::HardSwishOptions *>(obj);
18426       return verifier.VerifyTable(ptr);
18427     }
18428     case BuiltinOptions_IfOptions: {
18429       auto ptr = reinterpret_cast<const tflite::IfOptions *>(obj);
18430       return verifier.VerifyTable(ptr);
18431     }
18432     case BuiltinOptions_WhileOptions: {
18433       auto ptr = reinterpret_cast<const tflite::WhileOptions *>(obj);
18434       return verifier.VerifyTable(ptr);
18435     }
18436     case BuiltinOptions_DepthToSpaceOptions: {
18437       auto ptr = reinterpret_cast<const tflite::DepthToSpaceOptions *>(obj);
18438       return verifier.VerifyTable(ptr);
18439     }
18440     case BuiltinOptions_NonMaxSuppressionV4Options: {
18441       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV4Options *>(obj);
18442       return verifier.VerifyTable(ptr);
18443     }
18444     case BuiltinOptions_NonMaxSuppressionV5Options: {
18445       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV5Options *>(obj);
18446       return verifier.VerifyTable(ptr);
18447     }
18448     case BuiltinOptions_ScatterNdOptions: {
18449       auto ptr = reinterpret_cast<const tflite::ScatterNdOptions *>(obj);
18450       return verifier.VerifyTable(ptr);
18451     }
18452     case BuiltinOptions_SelectV2Options: {
18453       auto ptr = reinterpret_cast<const tflite::SelectV2Options *>(obj);
18454       return verifier.VerifyTable(ptr);
18455     }
18456     case BuiltinOptions_DensifyOptions: {
18457       auto ptr = reinterpret_cast<const tflite::DensifyOptions *>(obj);
18458       return verifier.VerifyTable(ptr);
18459     }
18460     case BuiltinOptions_SegmentSumOptions: {
18461       auto ptr = reinterpret_cast<const tflite::SegmentSumOptions *>(obj);
18462       return verifier.VerifyTable(ptr);
18463     }
18464     case BuiltinOptions_BatchMatMulOptions: {
18465       auto ptr = reinterpret_cast<const tflite::BatchMatMulOptions *>(obj);
18466       return verifier.VerifyTable(ptr);
18467     }
18468     case BuiltinOptions_CumsumOptions: {
18469       auto ptr = reinterpret_cast<const tflite::CumsumOptions *>(obj);
18470       return verifier.VerifyTable(ptr);
18471     }
18472     case BuiltinOptions_CallOnceOptions: {
18473       auto ptr = reinterpret_cast<const tflite::CallOnceOptions *>(obj);
18474       return verifier.VerifyTable(ptr);
18475     }
18476     case BuiltinOptions_BroadcastToOptions: {
18477       auto ptr = reinterpret_cast<const tflite::BroadcastToOptions *>(obj);
18478       return verifier.VerifyTable(ptr);
18479     }
18480     case BuiltinOptions_Rfft2dOptions: {
18481       auto ptr = reinterpret_cast<const tflite::Rfft2dOptions *>(obj);
18482       return verifier.VerifyTable(ptr);
18483     }
18484     case BuiltinOptions_Conv3DOptions: {
18485       auto ptr = reinterpret_cast<const tflite::Conv3DOptions *>(obj);
18486       return verifier.VerifyTable(ptr);
18487     }
18488     case BuiltinOptions_HashtableOptions: {
18489       auto ptr = reinterpret_cast<const tflite::HashtableOptions *>(obj);
18490       return verifier.VerifyTable(ptr);
18491     }
18492     case BuiltinOptions_HashtableFindOptions: {
18493       auto ptr = reinterpret_cast<const tflite::HashtableFindOptions *>(obj);
18494       return verifier.VerifyTable(ptr);
18495     }
18496     case BuiltinOptions_HashtableImportOptions: {
18497       auto ptr = reinterpret_cast<const tflite::HashtableImportOptions *>(obj);
18498       return verifier.VerifyTable(ptr);
18499     }
18500     case BuiltinOptions_HashtableSizeOptions: {
18501       auto ptr = reinterpret_cast<const tflite::HashtableSizeOptions *>(obj);
18502       return verifier.VerifyTable(ptr);
18503     }
18504     case BuiltinOptions_VarHandleOptions: {
18505       auto ptr = reinterpret_cast<const tflite::VarHandleOptions *>(obj);
18506       return verifier.VerifyTable(ptr);
18507     }
18508     case BuiltinOptions_ReadVariableOptions: {
18509       auto ptr = reinterpret_cast<const tflite::ReadVariableOptions *>(obj);
18510       return verifier.VerifyTable(ptr);
18511     }
18512     case BuiltinOptions_AssignVariableOptions: {
18513       auto ptr = reinterpret_cast<const tflite::AssignVariableOptions *>(obj);
18514       return verifier.VerifyTable(ptr);
18515     }
18516     case BuiltinOptions_RandomOptions: {
18517       auto ptr = reinterpret_cast<const tflite::RandomOptions *>(obj);
18518       return verifier.VerifyTable(ptr);
18519     }
18520     case BuiltinOptions_BucketizeOptions: {
18521       auto ptr = reinterpret_cast<const tflite::BucketizeOptions *>(obj);
18522       return verifier.VerifyTable(ptr);
18523     }
18524     case BuiltinOptions_GeluOptions: {
18525       auto ptr = reinterpret_cast<const tflite::GeluOptions *>(obj);
18526       return verifier.VerifyTable(ptr);
18527     }
18528     case BuiltinOptions_DynamicUpdateSliceOptions: {
18529       auto ptr = reinterpret_cast<const tflite::DynamicUpdateSliceOptions *>(obj);
18530       return verifier.VerifyTable(ptr);
18531     }
18532     case BuiltinOptions_UnsortedSegmentProdOptions: {
18533       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentProdOptions *>(obj);
18534       return verifier.VerifyTable(ptr);
18535     }
18536     case BuiltinOptions_UnsortedSegmentMaxOptions: {
18537       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentMaxOptions *>(obj);
18538       return verifier.VerifyTable(ptr);
18539     }
18540     case BuiltinOptions_UnsortedSegmentMinOptions: {
18541       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentMinOptions *>(obj);
18542       return verifier.VerifyTable(ptr);
18543     }
18544     case BuiltinOptions_UnsortedSegmentSumOptions: {
18545       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentSumOptions *>(obj);
18546       return verifier.VerifyTable(ptr);
18547     }
18548     case BuiltinOptions_ATan2Options: {
18549       auto ptr = reinterpret_cast<const tflite::ATan2Options *>(obj);
18550       return verifier.VerifyTable(ptr);
18551     }
18552     case BuiltinOptions_SignOptions: {
18553       auto ptr = reinterpret_cast<const tflite::SignOptions *>(obj);
18554       return verifier.VerifyTable(ptr);
18555     }
18556     default: return true;
18557   }
18558 }
18559 
18560 inline bool VerifyBuiltinOptionsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
18561   if (!values || !types) return !values && !types;
18562   if (values->size() != types->size()) return false;
18563   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
18564     if (!VerifyBuiltinOptions(
18565         verifier,  values->Get(i), types->GetEnum<BuiltinOptions>(i))) {
18566       return false;
18567     }
18568   }
18569   return true;
18570 }
18571 
18572 inline void *BuiltinOptionsUnion::UnPack(const void *obj, BuiltinOptions type, const flatbuffers::resolver_function_t *resolver) {
18573   (void)resolver;
18574   switch (type) {
18575     case BuiltinOptions_Conv2DOptions: {
18576       auto ptr = reinterpret_cast<const tflite::Conv2DOptions *>(obj);
18577       return ptr->UnPack(resolver);
18578     }
18579     case BuiltinOptions_DepthwiseConv2DOptions: {
18580       auto ptr = reinterpret_cast<const tflite::DepthwiseConv2DOptions *>(obj);
18581       return ptr->UnPack(resolver);
18582     }
18583     case BuiltinOptions_ConcatEmbeddingsOptions: {
18584       auto ptr = reinterpret_cast<const tflite::ConcatEmbeddingsOptions *>(obj);
18585       return ptr->UnPack(resolver);
18586     }
18587     case BuiltinOptions_LSHProjectionOptions: {
18588       auto ptr = reinterpret_cast<const tflite::LSHProjectionOptions *>(obj);
18589       return ptr->UnPack(resolver);
18590     }
18591     case BuiltinOptions_Pool2DOptions: {
18592       auto ptr = reinterpret_cast<const tflite::Pool2DOptions *>(obj);
18593       return ptr->UnPack(resolver);
18594     }
18595     case BuiltinOptions_SVDFOptions: {
18596       auto ptr = reinterpret_cast<const tflite::SVDFOptions *>(obj);
18597       return ptr->UnPack(resolver);
18598     }
18599     case BuiltinOptions_RNNOptions: {
18600       auto ptr = reinterpret_cast<const tflite::RNNOptions *>(obj);
18601       return ptr->UnPack(resolver);
18602     }
18603     case BuiltinOptions_FullyConnectedOptions: {
18604       auto ptr = reinterpret_cast<const tflite::FullyConnectedOptions *>(obj);
18605       return ptr->UnPack(resolver);
18606     }
18607     case BuiltinOptions_SoftmaxOptions: {
18608       auto ptr = reinterpret_cast<const tflite::SoftmaxOptions *>(obj);
18609       return ptr->UnPack(resolver);
18610     }
18611     case BuiltinOptions_ConcatenationOptions: {
18612       auto ptr = reinterpret_cast<const tflite::ConcatenationOptions *>(obj);
18613       return ptr->UnPack(resolver);
18614     }
18615     case BuiltinOptions_AddOptions: {
18616       auto ptr = reinterpret_cast<const tflite::AddOptions *>(obj);
18617       return ptr->UnPack(resolver);
18618     }
18619     case BuiltinOptions_L2NormOptions: {
18620       auto ptr = reinterpret_cast<const tflite::L2NormOptions *>(obj);
18621       return ptr->UnPack(resolver);
18622     }
18623     case BuiltinOptions_LocalResponseNormalizationOptions: {
18624       auto ptr = reinterpret_cast<const tflite::LocalResponseNormalizationOptions *>(obj);
18625       return ptr->UnPack(resolver);
18626     }
18627     case BuiltinOptions_LSTMOptions: {
18628       auto ptr = reinterpret_cast<const tflite::LSTMOptions *>(obj);
18629       return ptr->UnPack(resolver);
18630     }
18631     case BuiltinOptions_ResizeBilinearOptions: {
18632       auto ptr = reinterpret_cast<const tflite::ResizeBilinearOptions *>(obj);
18633       return ptr->UnPack(resolver);
18634     }
18635     case BuiltinOptions_CallOptions: {
18636       auto ptr = reinterpret_cast<const tflite::CallOptions *>(obj);
18637       return ptr->UnPack(resolver);
18638     }
18639     case BuiltinOptions_ReshapeOptions: {
18640       auto ptr = reinterpret_cast<const tflite::ReshapeOptions *>(obj);
18641       return ptr->UnPack(resolver);
18642     }
18643     case BuiltinOptions_SkipGramOptions: {
18644       auto ptr = reinterpret_cast<const tflite::SkipGramOptions *>(obj);
18645       return ptr->UnPack(resolver);
18646     }
18647     case BuiltinOptions_SpaceToDepthOptions: {
18648       auto ptr = reinterpret_cast<const tflite::SpaceToDepthOptions *>(obj);
18649       return ptr->UnPack(resolver);
18650     }
18651     case BuiltinOptions_EmbeddingLookupSparseOptions: {
18652       auto ptr = reinterpret_cast<const tflite::EmbeddingLookupSparseOptions *>(obj);
18653       return ptr->UnPack(resolver);
18654     }
18655     case BuiltinOptions_MulOptions: {
18656       auto ptr = reinterpret_cast<const tflite::MulOptions *>(obj);
18657       return ptr->UnPack(resolver);
18658     }
18659     case BuiltinOptions_PadOptions: {
18660       auto ptr = reinterpret_cast<const tflite::PadOptions *>(obj);
18661       return ptr->UnPack(resolver);
18662     }
18663     case BuiltinOptions_GatherOptions: {
18664       auto ptr = reinterpret_cast<const tflite::GatherOptions *>(obj);
18665       return ptr->UnPack(resolver);
18666     }
18667     case BuiltinOptions_BatchToSpaceNDOptions: {
18668       auto ptr = reinterpret_cast<const tflite::BatchToSpaceNDOptions *>(obj);
18669       return ptr->UnPack(resolver);
18670     }
18671     case BuiltinOptions_SpaceToBatchNDOptions: {
18672       auto ptr = reinterpret_cast<const tflite::SpaceToBatchNDOptions *>(obj);
18673       return ptr->UnPack(resolver);
18674     }
18675     case BuiltinOptions_TransposeOptions: {
18676       auto ptr = reinterpret_cast<const tflite::TransposeOptions *>(obj);
18677       return ptr->UnPack(resolver);
18678     }
18679     case BuiltinOptions_ReducerOptions: {
18680       auto ptr = reinterpret_cast<const tflite::ReducerOptions *>(obj);
18681       return ptr->UnPack(resolver);
18682     }
18683     case BuiltinOptions_SubOptions: {
18684       auto ptr = reinterpret_cast<const tflite::SubOptions *>(obj);
18685       return ptr->UnPack(resolver);
18686     }
18687     case BuiltinOptions_DivOptions: {
18688       auto ptr = reinterpret_cast<const tflite::DivOptions *>(obj);
18689       return ptr->UnPack(resolver);
18690     }
18691     case BuiltinOptions_SqueezeOptions: {
18692       auto ptr = reinterpret_cast<const tflite::SqueezeOptions *>(obj);
18693       return ptr->UnPack(resolver);
18694     }
18695     case BuiltinOptions_SequenceRNNOptions: {
18696       auto ptr = reinterpret_cast<const tflite::SequenceRNNOptions *>(obj);
18697       return ptr->UnPack(resolver);
18698     }
18699     case BuiltinOptions_StridedSliceOptions: {
18700       auto ptr = reinterpret_cast<const tflite::StridedSliceOptions *>(obj);
18701       return ptr->UnPack(resolver);
18702     }
18703     case BuiltinOptions_ExpOptions: {
18704       auto ptr = reinterpret_cast<const tflite::ExpOptions *>(obj);
18705       return ptr->UnPack(resolver);
18706     }
18707     case BuiltinOptions_TopKV2Options: {
18708       auto ptr = reinterpret_cast<const tflite::TopKV2Options *>(obj);
18709       return ptr->UnPack(resolver);
18710     }
18711     case BuiltinOptions_SplitOptions: {
18712       auto ptr = reinterpret_cast<const tflite::SplitOptions *>(obj);
18713       return ptr->UnPack(resolver);
18714     }
18715     case BuiltinOptions_LogSoftmaxOptions: {
18716       auto ptr = reinterpret_cast<const tflite::LogSoftmaxOptions *>(obj);
18717       return ptr->UnPack(resolver);
18718     }
18719     case BuiltinOptions_CastOptions: {
18720       auto ptr = reinterpret_cast<const tflite::CastOptions *>(obj);
18721       return ptr->UnPack(resolver);
18722     }
18723     case BuiltinOptions_DequantizeOptions: {
18724       auto ptr = reinterpret_cast<const tflite::DequantizeOptions *>(obj);
18725       return ptr->UnPack(resolver);
18726     }
18727     case BuiltinOptions_MaximumMinimumOptions: {
18728       auto ptr = reinterpret_cast<const tflite::MaximumMinimumOptions *>(obj);
18729       return ptr->UnPack(resolver);
18730     }
18731     case BuiltinOptions_ArgMaxOptions: {
18732       auto ptr = reinterpret_cast<const tflite::ArgMaxOptions *>(obj);
18733       return ptr->UnPack(resolver);
18734     }
18735     case BuiltinOptions_LessOptions: {
18736       auto ptr = reinterpret_cast<const tflite::LessOptions *>(obj);
18737       return ptr->UnPack(resolver);
18738     }
18739     case BuiltinOptions_NegOptions: {
18740       auto ptr = reinterpret_cast<const tflite::NegOptions *>(obj);
18741       return ptr->UnPack(resolver);
18742     }
18743     case BuiltinOptions_PadV2Options: {
18744       auto ptr = reinterpret_cast<const tflite::PadV2Options *>(obj);
18745       return ptr->UnPack(resolver);
18746     }
18747     case BuiltinOptions_GreaterOptions: {
18748       auto ptr = reinterpret_cast<const tflite::GreaterOptions *>(obj);
18749       return ptr->UnPack(resolver);
18750     }
18751     case BuiltinOptions_GreaterEqualOptions: {
18752       auto ptr = reinterpret_cast<const tflite::GreaterEqualOptions *>(obj);
18753       return ptr->UnPack(resolver);
18754     }
18755     case BuiltinOptions_LessEqualOptions: {
18756       auto ptr = reinterpret_cast<const tflite::LessEqualOptions *>(obj);
18757       return ptr->UnPack(resolver);
18758     }
18759     case BuiltinOptions_SelectOptions: {
18760       auto ptr = reinterpret_cast<const tflite::SelectOptions *>(obj);
18761       return ptr->UnPack(resolver);
18762     }
18763     case BuiltinOptions_SliceOptions: {
18764       auto ptr = reinterpret_cast<const tflite::SliceOptions *>(obj);
18765       return ptr->UnPack(resolver);
18766     }
18767     case BuiltinOptions_TransposeConvOptions: {
18768       auto ptr = reinterpret_cast<const tflite::TransposeConvOptions *>(obj);
18769       return ptr->UnPack(resolver);
18770     }
18771     case BuiltinOptions_SparseToDenseOptions: {
18772       auto ptr = reinterpret_cast<const tflite::SparseToDenseOptions *>(obj);
18773       return ptr->UnPack(resolver);
18774     }
18775     case BuiltinOptions_TileOptions: {
18776       auto ptr = reinterpret_cast<const tflite::TileOptions *>(obj);
18777       return ptr->UnPack(resolver);
18778     }
18779     case BuiltinOptions_ExpandDimsOptions: {
18780       auto ptr = reinterpret_cast<const tflite::ExpandDimsOptions *>(obj);
18781       return ptr->UnPack(resolver);
18782     }
18783     case BuiltinOptions_EqualOptions: {
18784       auto ptr = reinterpret_cast<const tflite::EqualOptions *>(obj);
18785       return ptr->UnPack(resolver);
18786     }
18787     case BuiltinOptions_NotEqualOptions: {
18788       auto ptr = reinterpret_cast<const tflite::NotEqualOptions *>(obj);
18789       return ptr->UnPack(resolver);
18790     }
18791     case BuiltinOptions_ShapeOptions: {
18792       auto ptr = reinterpret_cast<const tflite::ShapeOptions *>(obj);
18793       return ptr->UnPack(resolver);
18794     }
18795     case BuiltinOptions_PowOptions: {
18796       auto ptr = reinterpret_cast<const tflite::PowOptions *>(obj);
18797       return ptr->UnPack(resolver);
18798     }
18799     case BuiltinOptions_ArgMinOptions: {
18800       auto ptr = reinterpret_cast<const tflite::ArgMinOptions *>(obj);
18801       return ptr->UnPack(resolver);
18802     }
18803     case BuiltinOptions_FakeQuantOptions: {
18804       auto ptr = reinterpret_cast<const tflite::FakeQuantOptions *>(obj);
18805       return ptr->UnPack(resolver);
18806     }
18807     case BuiltinOptions_PackOptions: {
18808       auto ptr = reinterpret_cast<const tflite::PackOptions *>(obj);
18809       return ptr->UnPack(resolver);
18810     }
18811     case BuiltinOptions_LogicalOrOptions: {
18812       auto ptr = reinterpret_cast<const tflite::LogicalOrOptions *>(obj);
18813       return ptr->UnPack(resolver);
18814     }
18815     case BuiltinOptions_OneHotOptions: {
18816       auto ptr = reinterpret_cast<const tflite::OneHotOptions *>(obj);
18817       return ptr->UnPack(resolver);
18818     }
18819     case BuiltinOptions_LogicalAndOptions: {
18820       auto ptr = reinterpret_cast<const tflite::LogicalAndOptions *>(obj);
18821       return ptr->UnPack(resolver);
18822     }
18823     case BuiltinOptions_LogicalNotOptions: {
18824       auto ptr = reinterpret_cast<const tflite::LogicalNotOptions *>(obj);
18825       return ptr->UnPack(resolver);
18826     }
18827     case BuiltinOptions_UnpackOptions: {
18828       auto ptr = reinterpret_cast<const tflite::UnpackOptions *>(obj);
18829       return ptr->UnPack(resolver);
18830     }
18831     case BuiltinOptions_FloorDivOptions: {
18832       auto ptr = reinterpret_cast<const tflite::FloorDivOptions *>(obj);
18833       return ptr->UnPack(resolver);
18834     }
18835     case BuiltinOptions_SquareOptions: {
18836       auto ptr = reinterpret_cast<const tflite::SquareOptions *>(obj);
18837       return ptr->UnPack(resolver);
18838     }
18839     case BuiltinOptions_ZerosLikeOptions: {
18840       auto ptr = reinterpret_cast<const tflite::ZerosLikeOptions *>(obj);
18841       return ptr->UnPack(resolver);
18842     }
18843     case BuiltinOptions_FillOptions: {
18844       auto ptr = reinterpret_cast<const tflite::FillOptions *>(obj);
18845       return ptr->UnPack(resolver);
18846     }
18847     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
18848       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceLSTMOptions *>(obj);
18849       return ptr->UnPack(resolver);
18850     }
18851     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
18852       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceRNNOptions *>(obj);
18853       return ptr->UnPack(resolver);
18854     }
18855     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
18856       auto ptr = reinterpret_cast<const tflite::UnidirectionalSequenceLSTMOptions *>(obj);
18857       return ptr->UnPack(resolver);
18858     }
18859     case BuiltinOptions_FloorModOptions: {
18860       auto ptr = reinterpret_cast<const tflite::FloorModOptions *>(obj);
18861       return ptr->UnPack(resolver);
18862     }
18863     case BuiltinOptions_RangeOptions: {
18864       auto ptr = reinterpret_cast<const tflite::RangeOptions *>(obj);
18865       return ptr->UnPack(resolver);
18866     }
18867     case BuiltinOptions_ResizeNearestNeighborOptions: {
18868       auto ptr = reinterpret_cast<const tflite::ResizeNearestNeighborOptions *>(obj);
18869       return ptr->UnPack(resolver);
18870     }
18871     case BuiltinOptions_LeakyReluOptions: {
18872       auto ptr = reinterpret_cast<const tflite::LeakyReluOptions *>(obj);
18873       return ptr->UnPack(resolver);
18874     }
18875     case BuiltinOptions_SquaredDifferenceOptions: {
18876       auto ptr = reinterpret_cast<const tflite::SquaredDifferenceOptions *>(obj);
18877       return ptr->UnPack(resolver);
18878     }
18879     case BuiltinOptions_MirrorPadOptions: {
18880       auto ptr = reinterpret_cast<const tflite::MirrorPadOptions *>(obj);
18881       return ptr->UnPack(resolver);
18882     }
18883     case BuiltinOptions_AbsOptions: {
18884       auto ptr = reinterpret_cast<const tflite::AbsOptions *>(obj);
18885       return ptr->UnPack(resolver);
18886     }
18887     case BuiltinOptions_SplitVOptions: {
18888       auto ptr = reinterpret_cast<const tflite::SplitVOptions *>(obj);
18889       return ptr->UnPack(resolver);
18890     }
18891     case BuiltinOptions_UniqueOptions: {
18892       auto ptr = reinterpret_cast<const tflite::UniqueOptions *>(obj);
18893       return ptr->UnPack(resolver);
18894     }
18895     case BuiltinOptions_ReverseV2Options: {
18896       auto ptr = reinterpret_cast<const tflite::ReverseV2Options *>(obj);
18897       return ptr->UnPack(resolver);
18898     }
18899     case BuiltinOptions_AddNOptions: {
18900       auto ptr = reinterpret_cast<const tflite::AddNOptions *>(obj);
18901       return ptr->UnPack(resolver);
18902     }
18903     case BuiltinOptions_GatherNdOptions: {
18904       auto ptr = reinterpret_cast<const tflite::GatherNdOptions *>(obj);
18905       return ptr->UnPack(resolver);
18906     }
18907     case BuiltinOptions_CosOptions: {
18908       auto ptr = reinterpret_cast<const tflite::CosOptions *>(obj);
18909       return ptr->UnPack(resolver);
18910     }
18911     case BuiltinOptions_WhereOptions: {
18912       auto ptr = reinterpret_cast<const tflite::WhereOptions *>(obj);
18913       return ptr->UnPack(resolver);
18914     }
18915     case BuiltinOptions_RankOptions: {
18916       auto ptr = reinterpret_cast<const tflite::RankOptions *>(obj);
18917       return ptr->UnPack(resolver);
18918     }
18919     case BuiltinOptions_ReverseSequenceOptions: {
18920       auto ptr = reinterpret_cast<const tflite::ReverseSequenceOptions *>(obj);
18921       return ptr->UnPack(resolver);
18922     }
18923     case BuiltinOptions_MatrixDiagOptions: {
18924       auto ptr = reinterpret_cast<const tflite::MatrixDiagOptions *>(obj);
18925       return ptr->UnPack(resolver);
18926     }
18927     case BuiltinOptions_QuantizeOptions: {
18928       auto ptr = reinterpret_cast<const tflite::QuantizeOptions *>(obj);
18929       return ptr->UnPack(resolver);
18930     }
18931     case BuiltinOptions_MatrixSetDiagOptions: {
18932       auto ptr = reinterpret_cast<const tflite::MatrixSetDiagOptions *>(obj);
18933       return ptr->UnPack(resolver);
18934     }
18935     case BuiltinOptions_HardSwishOptions: {
18936       auto ptr = reinterpret_cast<const tflite::HardSwishOptions *>(obj);
18937       return ptr->UnPack(resolver);
18938     }
18939     case BuiltinOptions_IfOptions: {
18940       auto ptr = reinterpret_cast<const tflite::IfOptions *>(obj);
18941       return ptr->UnPack(resolver);
18942     }
18943     case BuiltinOptions_WhileOptions: {
18944       auto ptr = reinterpret_cast<const tflite::WhileOptions *>(obj);
18945       return ptr->UnPack(resolver);
18946     }
18947     case BuiltinOptions_DepthToSpaceOptions: {
18948       auto ptr = reinterpret_cast<const tflite::DepthToSpaceOptions *>(obj);
18949       return ptr->UnPack(resolver);
18950     }
18951     case BuiltinOptions_NonMaxSuppressionV4Options: {
18952       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV4Options *>(obj);
18953       return ptr->UnPack(resolver);
18954     }
18955     case BuiltinOptions_NonMaxSuppressionV5Options: {
18956       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV5Options *>(obj);
18957       return ptr->UnPack(resolver);
18958     }
18959     case BuiltinOptions_ScatterNdOptions: {
18960       auto ptr = reinterpret_cast<const tflite::ScatterNdOptions *>(obj);
18961       return ptr->UnPack(resolver);
18962     }
18963     case BuiltinOptions_SelectV2Options: {
18964       auto ptr = reinterpret_cast<const tflite::SelectV2Options *>(obj);
18965       return ptr->UnPack(resolver);
18966     }
18967     case BuiltinOptions_DensifyOptions: {
18968       auto ptr = reinterpret_cast<const tflite::DensifyOptions *>(obj);
18969       return ptr->UnPack(resolver);
18970     }
18971     case BuiltinOptions_SegmentSumOptions: {
18972       auto ptr = reinterpret_cast<const tflite::SegmentSumOptions *>(obj);
18973       return ptr->UnPack(resolver);
18974     }
18975     case BuiltinOptions_BatchMatMulOptions: {
18976       auto ptr = reinterpret_cast<const tflite::BatchMatMulOptions *>(obj);
18977       return ptr->UnPack(resolver);
18978     }
18979     case BuiltinOptions_CumsumOptions: {
18980       auto ptr = reinterpret_cast<const tflite::CumsumOptions *>(obj);
18981       return ptr->UnPack(resolver);
18982     }
18983     case BuiltinOptions_CallOnceOptions: {
18984       auto ptr = reinterpret_cast<const tflite::CallOnceOptions *>(obj);
18985       return ptr->UnPack(resolver);
18986     }
18987     case BuiltinOptions_BroadcastToOptions: {
18988       auto ptr = reinterpret_cast<const tflite::BroadcastToOptions *>(obj);
18989       return ptr->UnPack(resolver);
18990     }
18991     case BuiltinOptions_Rfft2dOptions: {
18992       auto ptr = reinterpret_cast<const tflite::Rfft2dOptions *>(obj);
18993       return ptr->UnPack(resolver);
18994     }
18995     case BuiltinOptions_Conv3DOptions: {
18996       auto ptr = reinterpret_cast<const tflite::Conv3DOptions *>(obj);
18997       return ptr->UnPack(resolver);
18998     }
18999     case BuiltinOptions_HashtableOptions: {
19000       auto ptr = reinterpret_cast<const tflite::HashtableOptions *>(obj);
19001       return ptr->UnPack(resolver);
19002     }
19003     case BuiltinOptions_HashtableFindOptions: {
19004       auto ptr = reinterpret_cast<const tflite::HashtableFindOptions *>(obj);
19005       return ptr->UnPack(resolver);
19006     }
19007     case BuiltinOptions_HashtableImportOptions: {
19008       auto ptr = reinterpret_cast<const tflite::HashtableImportOptions *>(obj);
19009       return ptr->UnPack(resolver);
19010     }
19011     case BuiltinOptions_HashtableSizeOptions: {
19012       auto ptr = reinterpret_cast<const tflite::HashtableSizeOptions *>(obj);
19013       return ptr->UnPack(resolver);
19014     }
19015     case BuiltinOptions_VarHandleOptions: {
19016       auto ptr = reinterpret_cast<const tflite::VarHandleOptions *>(obj);
19017       return ptr->UnPack(resolver);
19018     }
19019     case BuiltinOptions_ReadVariableOptions: {
19020       auto ptr = reinterpret_cast<const tflite::ReadVariableOptions *>(obj);
19021       return ptr->UnPack(resolver);
19022     }
19023     case BuiltinOptions_AssignVariableOptions: {
19024       auto ptr = reinterpret_cast<const tflite::AssignVariableOptions *>(obj);
19025       return ptr->UnPack(resolver);
19026     }
19027     case BuiltinOptions_RandomOptions: {
19028       auto ptr = reinterpret_cast<const tflite::RandomOptions *>(obj);
19029       return ptr->UnPack(resolver);
19030     }
19031     case BuiltinOptions_BucketizeOptions: {
19032       auto ptr = reinterpret_cast<const tflite::BucketizeOptions *>(obj);
19033       return ptr->UnPack(resolver);
19034     }
19035     case BuiltinOptions_GeluOptions: {
19036       auto ptr = reinterpret_cast<const tflite::GeluOptions *>(obj);
19037       return ptr->UnPack(resolver);
19038     }
19039     case BuiltinOptions_DynamicUpdateSliceOptions: {
19040       auto ptr = reinterpret_cast<const tflite::DynamicUpdateSliceOptions *>(obj);
19041       return ptr->UnPack(resolver);
19042     }
19043     case BuiltinOptions_UnsortedSegmentProdOptions: {
19044       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentProdOptions *>(obj);
19045       return ptr->UnPack(resolver);
19046     }
19047     case BuiltinOptions_UnsortedSegmentMaxOptions: {
19048       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentMaxOptions *>(obj);
19049       return ptr->UnPack(resolver);
19050     }
19051     case BuiltinOptions_UnsortedSegmentMinOptions: {
19052       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentMinOptions *>(obj);
19053       return ptr->UnPack(resolver);
19054     }
19055     case BuiltinOptions_UnsortedSegmentSumOptions: {
19056       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentSumOptions *>(obj);
19057       return ptr->UnPack(resolver);
19058     }
19059     case BuiltinOptions_ATan2Options: {
19060       auto ptr = reinterpret_cast<const tflite::ATan2Options *>(obj);
19061       return ptr->UnPack(resolver);
19062     }
19063     case BuiltinOptions_SignOptions: {
19064       auto ptr = reinterpret_cast<const tflite::SignOptions *>(obj);
19065       return ptr->UnPack(resolver);
19066     }
19067     default: return nullptr;
19068   }
19069 }
19070 
19071 inline flatbuffers::Offset<void> BuiltinOptionsUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
19072   (void)_rehasher;
19073   switch (type) {
19074     case BuiltinOptions_Conv2DOptions: {
19075       auto ptr = reinterpret_cast<const tflite::Conv2DOptionsT *>(value);
19076       return CreateConv2DOptions(_fbb, ptr, _rehasher).Union();
19077     }
19078     case BuiltinOptions_DepthwiseConv2DOptions: {
19079       auto ptr = reinterpret_cast<const tflite::DepthwiseConv2DOptionsT *>(value);
19080       return CreateDepthwiseConv2DOptions(_fbb, ptr, _rehasher).Union();
19081     }
19082     case BuiltinOptions_ConcatEmbeddingsOptions: {
19083       auto ptr = reinterpret_cast<const tflite::ConcatEmbeddingsOptionsT *>(value);
19084       return CreateConcatEmbeddingsOptions(_fbb, ptr, _rehasher).Union();
19085     }
19086     case BuiltinOptions_LSHProjectionOptions: {
19087       auto ptr = reinterpret_cast<const tflite::LSHProjectionOptionsT *>(value);
19088       return CreateLSHProjectionOptions(_fbb, ptr, _rehasher).Union();
19089     }
19090     case BuiltinOptions_Pool2DOptions: {
19091       auto ptr = reinterpret_cast<const tflite::Pool2DOptionsT *>(value);
19092       return CreatePool2DOptions(_fbb, ptr, _rehasher).Union();
19093     }
19094     case BuiltinOptions_SVDFOptions: {
19095       auto ptr = reinterpret_cast<const tflite::SVDFOptionsT *>(value);
19096       return CreateSVDFOptions(_fbb, ptr, _rehasher).Union();
19097     }
19098     case BuiltinOptions_RNNOptions: {
19099       auto ptr = reinterpret_cast<const tflite::RNNOptionsT *>(value);
19100       return CreateRNNOptions(_fbb, ptr, _rehasher).Union();
19101     }
19102     case BuiltinOptions_FullyConnectedOptions: {
19103       auto ptr = reinterpret_cast<const tflite::FullyConnectedOptionsT *>(value);
19104       return CreateFullyConnectedOptions(_fbb, ptr, _rehasher).Union();
19105     }
19106     case BuiltinOptions_SoftmaxOptions: {
19107       auto ptr = reinterpret_cast<const tflite::SoftmaxOptionsT *>(value);
19108       return CreateSoftmaxOptions(_fbb, ptr, _rehasher).Union();
19109     }
19110     case BuiltinOptions_ConcatenationOptions: {
19111       auto ptr = reinterpret_cast<const tflite::ConcatenationOptionsT *>(value);
19112       return CreateConcatenationOptions(_fbb, ptr, _rehasher).Union();
19113     }
19114     case BuiltinOptions_AddOptions: {
19115       auto ptr = reinterpret_cast<const tflite::AddOptionsT *>(value);
19116       return CreateAddOptions(_fbb, ptr, _rehasher).Union();
19117     }
19118     case BuiltinOptions_L2NormOptions: {
19119       auto ptr = reinterpret_cast<const tflite::L2NormOptionsT *>(value);
19120       return CreateL2NormOptions(_fbb, ptr, _rehasher).Union();
19121     }
19122     case BuiltinOptions_LocalResponseNormalizationOptions: {
19123       auto ptr = reinterpret_cast<const tflite::LocalResponseNormalizationOptionsT *>(value);
19124       return CreateLocalResponseNormalizationOptions(_fbb, ptr, _rehasher).Union();
19125     }
19126     case BuiltinOptions_LSTMOptions: {
19127       auto ptr = reinterpret_cast<const tflite::LSTMOptionsT *>(value);
19128       return CreateLSTMOptions(_fbb, ptr, _rehasher).Union();
19129     }
19130     case BuiltinOptions_ResizeBilinearOptions: {
19131       auto ptr = reinterpret_cast<const tflite::ResizeBilinearOptionsT *>(value);
19132       return CreateResizeBilinearOptions(_fbb, ptr, _rehasher).Union();
19133     }
19134     case BuiltinOptions_CallOptions: {
19135       auto ptr = reinterpret_cast<const tflite::CallOptionsT *>(value);
19136       return CreateCallOptions(_fbb, ptr, _rehasher).Union();
19137     }
19138     case BuiltinOptions_ReshapeOptions: {
19139       auto ptr = reinterpret_cast<const tflite::ReshapeOptionsT *>(value);
19140       return CreateReshapeOptions(_fbb, ptr, _rehasher).Union();
19141     }
19142     case BuiltinOptions_SkipGramOptions: {
19143       auto ptr = reinterpret_cast<const tflite::SkipGramOptionsT *>(value);
19144       return CreateSkipGramOptions(_fbb, ptr, _rehasher).Union();
19145     }
19146     case BuiltinOptions_SpaceToDepthOptions: {
19147       auto ptr = reinterpret_cast<const tflite::SpaceToDepthOptionsT *>(value);
19148       return CreateSpaceToDepthOptions(_fbb, ptr, _rehasher).Union();
19149     }
19150     case BuiltinOptions_EmbeddingLookupSparseOptions: {
19151       auto ptr = reinterpret_cast<const tflite::EmbeddingLookupSparseOptionsT *>(value);
19152       return CreateEmbeddingLookupSparseOptions(_fbb, ptr, _rehasher).Union();
19153     }
19154     case BuiltinOptions_MulOptions: {
19155       auto ptr = reinterpret_cast<const tflite::MulOptionsT *>(value);
19156       return CreateMulOptions(_fbb, ptr, _rehasher).Union();
19157     }
19158     case BuiltinOptions_PadOptions: {
19159       auto ptr = reinterpret_cast<const tflite::PadOptionsT *>(value);
19160       return CreatePadOptions(_fbb, ptr, _rehasher).Union();
19161     }
19162     case BuiltinOptions_GatherOptions: {
19163       auto ptr = reinterpret_cast<const tflite::GatherOptionsT *>(value);
19164       return CreateGatherOptions(_fbb, ptr, _rehasher).Union();
19165     }
19166     case BuiltinOptions_BatchToSpaceNDOptions: {
19167       auto ptr = reinterpret_cast<const tflite::BatchToSpaceNDOptionsT *>(value);
19168       return CreateBatchToSpaceNDOptions(_fbb, ptr, _rehasher).Union();
19169     }
19170     case BuiltinOptions_SpaceToBatchNDOptions: {
19171       auto ptr = reinterpret_cast<const tflite::SpaceToBatchNDOptionsT *>(value);
19172       return CreateSpaceToBatchNDOptions(_fbb, ptr, _rehasher).Union();
19173     }
19174     case BuiltinOptions_TransposeOptions: {
19175       auto ptr = reinterpret_cast<const tflite::TransposeOptionsT *>(value);
19176       return CreateTransposeOptions(_fbb, ptr, _rehasher).Union();
19177     }
19178     case BuiltinOptions_ReducerOptions: {
19179       auto ptr = reinterpret_cast<const tflite::ReducerOptionsT *>(value);
19180       return CreateReducerOptions(_fbb, ptr, _rehasher).Union();
19181     }
19182     case BuiltinOptions_SubOptions: {
19183       auto ptr = reinterpret_cast<const tflite::SubOptionsT *>(value);
19184       return CreateSubOptions(_fbb, ptr, _rehasher).Union();
19185     }
19186     case BuiltinOptions_DivOptions: {
19187       auto ptr = reinterpret_cast<const tflite::DivOptionsT *>(value);
19188       return CreateDivOptions(_fbb, ptr, _rehasher).Union();
19189     }
19190     case BuiltinOptions_SqueezeOptions: {
19191       auto ptr = reinterpret_cast<const tflite::SqueezeOptionsT *>(value);
19192       return CreateSqueezeOptions(_fbb, ptr, _rehasher).Union();
19193     }
19194     case BuiltinOptions_SequenceRNNOptions: {
19195       auto ptr = reinterpret_cast<const tflite::SequenceRNNOptionsT *>(value);
19196       return CreateSequenceRNNOptions(_fbb, ptr, _rehasher).Union();
19197     }
19198     case BuiltinOptions_StridedSliceOptions: {
19199       auto ptr = reinterpret_cast<const tflite::StridedSliceOptionsT *>(value);
19200       return CreateStridedSliceOptions(_fbb, ptr, _rehasher).Union();
19201     }
19202     case BuiltinOptions_ExpOptions: {
19203       auto ptr = reinterpret_cast<const tflite::ExpOptionsT *>(value);
19204       return CreateExpOptions(_fbb, ptr, _rehasher).Union();
19205     }
19206     case BuiltinOptions_TopKV2Options: {
19207       auto ptr = reinterpret_cast<const tflite::TopKV2OptionsT *>(value);
19208       return CreateTopKV2Options(_fbb, ptr, _rehasher).Union();
19209     }
19210     case BuiltinOptions_SplitOptions: {
19211       auto ptr = reinterpret_cast<const tflite::SplitOptionsT *>(value);
19212       return CreateSplitOptions(_fbb, ptr, _rehasher).Union();
19213     }
19214     case BuiltinOptions_LogSoftmaxOptions: {
19215       auto ptr = reinterpret_cast<const tflite::LogSoftmaxOptionsT *>(value);
19216       return CreateLogSoftmaxOptions(_fbb, ptr, _rehasher).Union();
19217     }
19218     case BuiltinOptions_CastOptions: {
19219       auto ptr = reinterpret_cast<const tflite::CastOptionsT *>(value);
19220       return CreateCastOptions(_fbb, ptr, _rehasher).Union();
19221     }
19222     case BuiltinOptions_DequantizeOptions: {
19223       auto ptr = reinterpret_cast<const tflite::DequantizeOptionsT *>(value);
19224       return CreateDequantizeOptions(_fbb, ptr, _rehasher).Union();
19225     }
19226     case BuiltinOptions_MaximumMinimumOptions: {
19227       auto ptr = reinterpret_cast<const tflite::MaximumMinimumOptionsT *>(value);
19228       return CreateMaximumMinimumOptions(_fbb, ptr, _rehasher).Union();
19229     }
19230     case BuiltinOptions_ArgMaxOptions: {
19231       auto ptr = reinterpret_cast<const tflite::ArgMaxOptionsT *>(value);
19232       return CreateArgMaxOptions(_fbb, ptr, _rehasher).Union();
19233     }
19234     case BuiltinOptions_LessOptions: {
19235       auto ptr = reinterpret_cast<const tflite::LessOptionsT *>(value);
19236       return CreateLessOptions(_fbb, ptr, _rehasher).Union();
19237     }
19238     case BuiltinOptions_NegOptions: {
19239       auto ptr = reinterpret_cast<const tflite::NegOptionsT *>(value);
19240       return CreateNegOptions(_fbb, ptr, _rehasher).Union();
19241     }
19242     case BuiltinOptions_PadV2Options: {
19243       auto ptr = reinterpret_cast<const tflite::PadV2OptionsT *>(value);
19244       return CreatePadV2Options(_fbb, ptr, _rehasher).Union();
19245     }
19246     case BuiltinOptions_GreaterOptions: {
19247       auto ptr = reinterpret_cast<const tflite::GreaterOptionsT *>(value);
19248       return CreateGreaterOptions(_fbb, ptr, _rehasher).Union();
19249     }
19250     case BuiltinOptions_GreaterEqualOptions: {
19251       auto ptr = reinterpret_cast<const tflite::GreaterEqualOptionsT *>(value);
19252       return CreateGreaterEqualOptions(_fbb, ptr, _rehasher).Union();
19253     }
19254     case BuiltinOptions_LessEqualOptions: {
19255       auto ptr = reinterpret_cast<const tflite::LessEqualOptionsT *>(value);
19256       return CreateLessEqualOptions(_fbb, ptr, _rehasher).Union();
19257     }
19258     case BuiltinOptions_SelectOptions: {
19259       auto ptr = reinterpret_cast<const tflite::SelectOptionsT *>(value);
19260       return CreateSelectOptions(_fbb, ptr, _rehasher).Union();
19261     }
19262     case BuiltinOptions_SliceOptions: {
19263       auto ptr = reinterpret_cast<const tflite::SliceOptionsT *>(value);
19264       return CreateSliceOptions(_fbb, ptr, _rehasher).Union();
19265     }
19266     case BuiltinOptions_TransposeConvOptions: {
19267       auto ptr = reinterpret_cast<const tflite::TransposeConvOptionsT *>(value);
19268       return CreateTransposeConvOptions(_fbb, ptr, _rehasher).Union();
19269     }
19270     case BuiltinOptions_SparseToDenseOptions: {
19271       auto ptr = reinterpret_cast<const tflite::SparseToDenseOptionsT *>(value);
19272       return CreateSparseToDenseOptions(_fbb, ptr, _rehasher).Union();
19273     }
19274     case BuiltinOptions_TileOptions: {
19275       auto ptr = reinterpret_cast<const tflite::TileOptionsT *>(value);
19276       return CreateTileOptions(_fbb, ptr, _rehasher).Union();
19277     }
19278     case BuiltinOptions_ExpandDimsOptions: {
19279       auto ptr = reinterpret_cast<const tflite::ExpandDimsOptionsT *>(value);
19280       return CreateExpandDimsOptions(_fbb, ptr, _rehasher).Union();
19281     }
19282     case BuiltinOptions_EqualOptions: {
19283       auto ptr = reinterpret_cast<const tflite::EqualOptionsT *>(value);
19284       return CreateEqualOptions(_fbb, ptr, _rehasher).Union();
19285     }
19286     case BuiltinOptions_NotEqualOptions: {
19287       auto ptr = reinterpret_cast<const tflite::NotEqualOptionsT *>(value);
19288       return CreateNotEqualOptions(_fbb, ptr, _rehasher).Union();
19289     }
19290     case BuiltinOptions_ShapeOptions: {
19291       auto ptr = reinterpret_cast<const tflite::ShapeOptionsT *>(value);
19292       return CreateShapeOptions(_fbb, ptr, _rehasher).Union();
19293     }
19294     case BuiltinOptions_PowOptions: {
19295       auto ptr = reinterpret_cast<const tflite::PowOptionsT *>(value);
19296       return CreatePowOptions(_fbb, ptr, _rehasher).Union();
19297     }
19298     case BuiltinOptions_ArgMinOptions: {
19299       auto ptr = reinterpret_cast<const tflite::ArgMinOptionsT *>(value);
19300       return CreateArgMinOptions(_fbb, ptr, _rehasher).Union();
19301     }
19302     case BuiltinOptions_FakeQuantOptions: {
19303       auto ptr = reinterpret_cast<const tflite::FakeQuantOptionsT *>(value);
19304       return CreateFakeQuantOptions(_fbb, ptr, _rehasher).Union();
19305     }
19306     case BuiltinOptions_PackOptions: {
19307       auto ptr = reinterpret_cast<const tflite::PackOptionsT *>(value);
19308       return CreatePackOptions(_fbb, ptr, _rehasher).Union();
19309     }
19310     case BuiltinOptions_LogicalOrOptions: {
19311       auto ptr = reinterpret_cast<const tflite::LogicalOrOptionsT *>(value);
19312       return CreateLogicalOrOptions(_fbb, ptr, _rehasher).Union();
19313     }
19314     case BuiltinOptions_OneHotOptions: {
19315       auto ptr = reinterpret_cast<const tflite::OneHotOptionsT *>(value);
19316       return CreateOneHotOptions(_fbb, ptr, _rehasher).Union();
19317     }
19318     case BuiltinOptions_LogicalAndOptions: {
19319       auto ptr = reinterpret_cast<const tflite::LogicalAndOptionsT *>(value);
19320       return CreateLogicalAndOptions(_fbb, ptr, _rehasher).Union();
19321     }
19322     case BuiltinOptions_LogicalNotOptions: {
19323       auto ptr = reinterpret_cast<const tflite::LogicalNotOptionsT *>(value);
19324       return CreateLogicalNotOptions(_fbb, ptr, _rehasher).Union();
19325     }
19326     case BuiltinOptions_UnpackOptions: {
19327       auto ptr = reinterpret_cast<const tflite::UnpackOptionsT *>(value);
19328       return CreateUnpackOptions(_fbb, ptr, _rehasher).Union();
19329     }
19330     case BuiltinOptions_FloorDivOptions: {
19331       auto ptr = reinterpret_cast<const tflite::FloorDivOptionsT *>(value);
19332       return CreateFloorDivOptions(_fbb, ptr, _rehasher).Union();
19333     }
19334     case BuiltinOptions_SquareOptions: {
19335       auto ptr = reinterpret_cast<const tflite::SquareOptionsT *>(value);
19336       return CreateSquareOptions(_fbb, ptr, _rehasher).Union();
19337     }
19338     case BuiltinOptions_ZerosLikeOptions: {
19339       auto ptr = reinterpret_cast<const tflite::ZerosLikeOptionsT *>(value);
19340       return CreateZerosLikeOptions(_fbb, ptr, _rehasher).Union();
19341     }
19342     case BuiltinOptions_FillOptions: {
19343       auto ptr = reinterpret_cast<const tflite::FillOptionsT *>(value);
19344       return CreateFillOptions(_fbb, ptr, _rehasher).Union();
19345     }
19346     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
19347       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceLSTMOptionsT *>(value);
19348       return CreateBidirectionalSequenceLSTMOptions(_fbb, ptr, _rehasher).Union();
19349     }
19350     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
19351       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceRNNOptionsT *>(value);
19352       return CreateBidirectionalSequenceRNNOptions(_fbb, ptr, _rehasher).Union();
19353     }
19354     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
19355       auto ptr = reinterpret_cast<const tflite::UnidirectionalSequenceLSTMOptionsT *>(value);
19356       return CreateUnidirectionalSequenceLSTMOptions(_fbb, ptr, _rehasher).Union();
19357     }
19358     case BuiltinOptions_FloorModOptions: {
19359       auto ptr = reinterpret_cast<const tflite::FloorModOptionsT *>(value);
19360       return CreateFloorModOptions(_fbb, ptr, _rehasher).Union();
19361     }
19362     case BuiltinOptions_RangeOptions: {
19363       auto ptr = reinterpret_cast<const tflite::RangeOptionsT *>(value);
19364       return CreateRangeOptions(_fbb, ptr, _rehasher).Union();
19365     }
19366     case BuiltinOptions_ResizeNearestNeighborOptions: {
19367       auto ptr = reinterpret_cast<const tflite::ResizeNearestNeighborOptionsT *>(value);
19368       return CreateResizeNearestNeighborOptions(_fbb, ptr, _rehasher).Union();
19369     }
19370     case BuiltinOptions_LeakyReluOptions: {
19371       auto ptr = reinterpret_cast<const tflite::LeakyReluOptionsT *>(value);
19372       return CreateLeakyReluOptions(_fbb, ptr, _rehasher).Union();
19373     }
19374     case BuiltinOptions_SquaredDifferenceOptions: {
19375       auto ptr = reinterpret_cast<const tflite::SquaredDifferenceOptionsT *>(value);
19376       return CreateSquaredDifferenceOptions(_fbb, ptr, _rehasher).Union();
19377     }
19378     case BuiltinOptions_MirrorPadOptions: {
19379       auto ptr = reinterpret_cast<const tflite::MirrorPadOptionsT *>(value);
19380       return CreateMirrorPadOptions(_fbb, ptr, _rehasher).Union();
19381     }
19382     case BuiltinOptions_AbsOptions: {
19383       auto ptr = reinterpret_cast<const tflite::AbsOptionsT *>(value);
19384       return CreateAbsOptions(_fbb, ptr, _rehasher).Union();
19385     }
19386     case BuiltinOptions_SplitVOptions: {
19387       auto ptr = reinterpret_cast<const tflite::SplitVOptionsT *>(value);
19388       return CreateSplitVOptions(_fbb, ptr, _rehasher).Union();
19389     }
19390     case BuiltinOptions_UniqueOptions: {
19391       auto ptr = reinterpret_cast<const tflite::UniqueOptionsT *>(value);
19392       return CreateUniqueOptions(_fbb, ptr, _rehasher).Union();
19393     }
19394     case BuiltinOptions_ReverseV2Options: {
19395       auto ptr = reinterpret_cast<const tflite::ReverseV2OptionsT *>(value);
19396       return CreateReverseV2Options(_fbb, ptr, _rehasher).Union();
19397     }
19398     case BuiltinOptions_AddNOptions: {
19399       auto ptr = reinterpret_cast<const tflite::AddNOptionsT *>(value);
19400       return CreateAddNOptions(_fbb, ptr, _rehasher).Union();
19401     }
19402     case BuiltinOptions_GatherNdOptions: {
19403       auto ptr = reinterpret_cast<const tflite::GatherNdOptionsT *>(value);
19404       return CreateGatherNdOptions(_fbb, ptr, _rehasher).Union();
19405     }
19406     case BuiltinOptions_CosOptions: {
19407       auto ptr = reinterpret_cast<const tflite::CosOptionsT *>(value);
19408       return CreateCosOptions(_fbb, ptr, _rehasher).Union();
19409     }
19410     case BuiltinOptions_WhereOptions: {
19411       auto ptr = reinterpret_cast<const tflite::WhereOptionsT *>(value);
19412       return CreateWhereOptions(_fbb, ptr, _rehasher).Union();
19413     }
19414     case BuiltinOptions_RankOptions: {
19415       auto ptr = reinterpret_cast<const tflite::RankOptionsT *>(value);
19416       return CreateRankOptions(_fbb, ptr, _rehasher).Union();
19417     }
19418     case BuiltinOptions_ReverseSequenceOptions: {
19419       auto ptr = reinterpret_cast<const tflite::ReverseSequenceOptionsT *>(value);
19420       return CreateReverseSequenceOptions(_fbb, ptr, _rehasher).Union();
19421     }
19422     case BuiltinOptions_MatrixDiagOptions: {
19423       auto ptr = reinterpret_cast<const tflite::MatrixDiagOptionsT *>(value);
19424       return CreateMatrixDiagOptions(_fbb, ptr, _rehasher).Union();
19425     }
19426     case BuiltinOptions_QuantizeOptions: {
19427       auto ptr = reinterpret_cast<const tflite::QuantizeOptionsT *>(value);
19428       return CreateQuantizeOptions(_fbb, ptr, _rehasher).Union();
19429     }
19430     case BuiltinOptions_MatrixSetDiagOptions: {
19431       auto ptr = reinterpret_cast<const tflite::MatrixSetDiagOptionsT *>(value);
19432       return CreateMatrixSetDiagOptions(_fbb, ptr, _rehasher).Union();
19433     }
19434     case BuiltinOptions_HardSwishOptions: {
19435       auto ptr = reinterpret_cast<const tflite::HardSwishOptionsT *>(value);
19436       return CreateHardSwishOptions(_fbb, ptr, _rehasher).Union();
19437     }
19438     case BuiltinOptions_IfOptions: {
19439       auto ptr = reinterpret_cast<const tflite::IfOptionsT *>(value);
19440       return CreateIfOptions(_fbb, ptr, _rehasher).Union();
19441     }
19442     case BuiltinOptions_WhileOptions: {
19443       auto ptr = reinterpret_cast<const tflite::WhileOptionsT *>(value);
19444       return CreateWhileOptions(_fbb, ptr, _rehasher).Union();
19445     }
19446     case BuiltinOptions_DepthToSpaceOptions: {
19447       auto ptr = reinterpret_cast<const tflite::DepthToSpaceOptionsT *>(value);
19448       return CreateDepthToSpaceOptions(_fbb, ptr, _rehasher).Union();
19449     }
19450     case BuiltinOptions_NonMaxSuppressionV4Options: {
19451       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV4OptionsT *>(value);
19452       return CreateNonMaxSuppressionV4Options(_fbb, ptr, _rehasher).Union();
19453     }
19454     case BuiltinOptions_NonMaxSuppressionV5Options: {
19455       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV5OptionsT *>(value);
19456       return CreateNonMaxSuppressionV5Options(_fbb, ptr, _rehasher).Union();
19457     }
19458     case BuiltinOptions_ScatterNdOptions: {
19459       auto ptr = reinterpret_cast<const tflite::ScatterNdOptionsT *>(value);
19460       return CreateScatterNdOptions(_fbb, ptr, _rehasher).Union();
19461     }
19462     case BuiltinOptions_SelectV2Options: {
19463       auto ptr = reinterpret_cast<const tflite::SelectV2OptionsT *>(value);
19464       return CreateSelectV2Options(_fbb, ptr, _rehasher).Union();
19465     }
19466     case BuiltinOptions_DensifyOptions: {
19467       auto ptr = reinterpret_cast<const tflite::DensifyOptionsT *>(value);
19468       return CreateDensifyOptions(_fbb, ptr, _rehasher).Union();
19469     }
19470     case BuiltinOptions_SegmentSumOptions: {
19471       auto ptr = reinterpret_cast<const tflite::SegmentSumOptionsT *>(value);
19472       return CreateSegmentSumOptions(_fbb, ptr, _rehasher).Union();
19473     }
19474     case BuiltinOptions_BatchMatMulOptions: {
19475       auto ptr = reinterpret_cast<const tflite::BatchMatMulOptionsT *>(value);
19476       return CreateBatchMatMulOptions(_fbb, ptr, _rehasher).Union();
19477     }
19478     case BuiltinOptions_CumsumOptions: {
19479       auto ptr = reinterpret_cast<const tflite::CumsumOptionsT *>(value);
19480       return CreateCumsumOptions(_fbb, ptr, _rehasher).Union();
19481     }
19482     case BuiltinOptions_CallOnceOptions: {
19483       auto ptr = reinterpret_cast<const tflite::CallOnceOptionsT *>(value);
19484       return CreateCallOnceOptions(_fbb, ptr, _rehasher).Union();
19485     }
19486     case BuiltinOptions_BroadcastToOptions: {
19487       auto ptr = reinterpret_cast<const tflite::BroadcastToOptionsT *>(value);
19488       return CreateBroadcastToOptions(_fbb, ptr, _rehasher).Union();
19489     }
19490     case BuiltinOptions_Rfft2dOptions: {
19491       auto ptr = reinterpret_cast<const tflite::Rfft2dOptionsT *>(value);
19492       return CreateRfft2dOptions(_fbb, ptr, _rehasher).Union();
19493     }
19494     case BuiltinOptions_Conv3DOptions: {
19495       auto ptr = reinterpret_cast<const tflite::Conv3DOptionsT *>(value);
19496       return CreateConv3DOptions(_fbb, ptr, _rehasher).Union();
19497     }
19498     case BuiltinOptions_HashtableOptions: {
19499       auto ptr = reinterpret_cast<const tflite::HashtableOptionsT *>(value);
19500       return CreateHashtableOptions(_fbb, ptr, _rehasher).Union();
19501     }
19502     case BuiltinOptions_HashtableFindOptions: {
19503       auto ptr = reinterpret_cast<const tflite::HashtableFindOptionsT *>(value);
19504       return CreateHashtableFindOptions(_fbb, ptr, _rehasher).Union();
19505     }
19506     case BuiltinOptions_HashtableImportOptions: {
19507       auto ptr = reinterpret_cast<const tflite::HashtableImportOptionsT *>(value);
19508       return CreateHashtableImportOptions(_fbb, ptr, _rehasher).Union();
19509     }
19510     case BuiltinOptions_HashtableSizeOptions: {
19511       auto ptr = reinterpret_cast<const tflite::HashtableSizeOptionsT *>(value);
19512       return CreateHashtableSizeOptions(_fbb, ptr, _rehasher).Union();
19513     }
19514     case BuiltinOptions_VarHandleOptions: {
19515       auto ptr = reinterpret_cast<const tflite::VarHandleOptionsT *>(value);
19516       return CreateVarHandleOptions(_fbb, ptr, _rehasher).Union();
19517     }
19518     case BuiltinOptions_ReadVariableOptions: {
19519       auto ptr = reinterpret_cast<const tflite::ReadVariableOptionsT *>(value);
19520       return CreateReadVariableOptions(_fbb, ptr, _rehasher).Union();
19521     }
19522     case BuiltinOptions_AssignVariableOptions: {
19523       auto ptr = reinterpret_cast<const tflite::AssignVariableOptionsT *>(value);
19524       return CreateAssignVariableOptions(_fbb, ptr, _rehasher).Union();
19525     }
19526     case BuiltinOptions_RandomOptions: {
19527       auto ptr = reinterpret_cast<const tflite::RandomOptionsT *>(value);
19528       return CreateRandomOptions(_fbb, ptr, _rehasher).Union();
19529     }
19530     case BuiltinOptions_BucketizeOptions: {
19531       auto ptr = reinterpret_cast<const tflite::BucketizeOptionsT *>(value);
19532       return CreateBucketizeOptions(_fbb, ptr, _rehasher).Union();
19533     }
19534     case BuiltinOptions_GeluOptions: {
19535       auto ptr = reinterpret_cast<const tflite::GeluOptionsT *>(value);
19536       return CreateGeluOptions(_fbb, ptr, _rehasher).Union();
19537     }
19538     case BuiltinOptions_DynamicUpdateSliceOptions: {
19539       auto ptr = reinterpret_cast<const tflite::DynamicUpdateSliceOptionsT *>(value);
19540       return CreateDynamicUpdateSliceOptions(_fbb, ptr, _rehasher).Union();
19541     }
19542     case BuiltinOptions_UnsortedSegmentProdOptions: {
19543       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentProdOptionsT *>(value);
19544       return CreateUnsortedSegmentProdOptions(_fbb, ptr, _rehasher).Union();
19545     }
19546     case BuiltinOptions_UnsortedSegmentMaxOptions: {
19547       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentMaxOptionsT *>(value);
19548       return CreateUnsortedSegmentMaxOptions(_fbb, ptr, _rehasher).Union();
19549     }
19550     case BuiltinOptions_UnsortedSegmentMinOptions: {
19551       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentMinOptionsT *>(value);
19552       return CreateUnsortedSegmentMinOptions(_fbb, ptr, _rehasher).Union();
19553     }
19554     case BuiltinOptions_UnsortedSegmentSumOptions: {
19555       auto ptr = reinterpret_cast<const tflite::UnsortedSegmentSumOptionsT *>(value);
19556       return CreateUnsortedSegmentSumOptions(_fbb, ptr, _rehasher).Union();
19557     }
19558     case BuiltinOptions_ATan2Options: {
19559       auto ptr = reinterpret_cast<const tflite::ATan2OptionsT *>(value);
19560       return CreateATan2Options(_fbb, ptr, _rehasher).Union();
19561     }
19562     case BuiltinOptions_SignOptions: {
19563       auto ptr = reinterpret_cast<const tflite::SignOptionsT *>(value);
19564       return CreateSignOptions(_fbb, ptr, _rehasher).Union();
19565     }
19566     default: return 0;
19567   }
19568 }
19569 
19570 inline BuiltinOptionsUnion::BuiltinOptionsUnion(const BuiltinOptionsUnion &u) : type(u.type), value(nullptr) {
19571   switch (type) {
19572     case BuiltinOptions_Conv2DOptions: {
19573       value = new tflite::Conv2DOptionsT(*reinterpret_cast<tflite::Conv2DOptionsT *>(u.value));
19574       break;
19575     }
19576     case BuiltinOptions_DepthwiseConv2DOptions: {
19577       value = new tflite::DepthwiseConv2DOptionsT(*reinterpret_cast<tflite::DepthwiseConv2DOptionsT *>(u.value));
19578       break;
19579     }
19580     case BuiltinOptions_ConcatEmbeddingsOptions: {
19581       value = new tflite::ConcatEmbeddingsOptionsT(*reinterpret_cast<tflite::ConcatEmbeddingsOptionsT *>(u.value));
19582       break;
19583     }
19584     case BuiltinOptions_LSHProjectionOptions: {
19585       value = new tflite::LSHProjectionOptionsT(*reinterpret_cast<tflite::LSHProjectionOptionsT *>(u.value));
19586       break;
19587     }
19588     case BuiltinOptions_Pool2DOptions: {
19589       value = new tflite::Pool2DOptionsT(*reinterpret_cast<tflite::Pool2DOptionsT *>(u.value));
19590       break;
19591     }
19592     case BuiltinOptions_SVDFOptions: {
19593       value = new tflite::SVDFOptionsT(*reinterpret_cast<tflite::SVDFOptionsT *>(u.value));
19594       break;
19595     }
19596     case BuiltinOptions_RNNOptions: {
19597       value = new tflite::RNNOptionsT(*reinterpret_cast<tflite::RNNOptionsT *>(u.value));
19598       break;
19599     }
19600     case BuiltinOptions_FullyConnectedOptions: {
19601       value = new tflite::FullyConnectedOptionsT(*reinterpret_cast<tflite::FullyConnectedOptionsT *>(u.value));
19602       break;
19603     }
19604     case BuiltinOptions_SoftmaxOptions: {
19605       value = new tflite::SoftmaxOptionsT(*reinterpret_cast<tflite::SoftmaxOptionsT *>(u.value));
19606       break;
19607     }
19608     case BuiltinOptions_ConcatenationOptions: {
19609       value = new tflite::ConcatenationOptionsT(*reinterpret_cast<tflite::ConcatenationOptionsT *>(u.value));
19610       break;
19611     }
19612     case BuiltinOptions_AddOptions: {
19613       value = new tflite::AddOptionsT(*reinterpret_cast<tflite::AddOptionsT *>(u.value));
19614       break;
19615     }
19616     case BuiltinOptions_L2NormOptions: {
19617       value = new tflite::L2NormOptionsT(*reinterpret_cast<tflite::L2NormOptionsT *>(u.value));
19618       break;
19619     }
19620     case BuiltinOptions_LocalResponseNormalizationOptions: {
19621       value = new tflite::LocalResponseNormalizationOptionsT(*reinterpret_cast<tflite::LocalResponseNormalizationOptionsT *>(u.value));
19622       break;
19623     }
19624     case BuiltinOptions_LSTMOptions: {
19625       value = new tflite::LSTMOptionsT(*reinterpret_cast<tflite::LSTMOptionsT *>(u.value));
19626       break;
19627     }
19628     case BuiltinOptions_ResizeBilinearOptions: {
19629       value = new tflite::ResizeBilinearOptionsT(*reinterpret_cast<tflite::ResizeBilinearOptionsT *>(u.value));
19630       break;
19631     }
19632     case BuiltinOptions_CallOptions: {
19633       value = new tflite::CallOptionsT(*reinterpret_cast<tflite::CallOptionsT *>(u.value));
19634       break;
19635     }
19636     case BuiltinOptions_ReshapeOptions: {
19637       value = new tflite::ReshapeOptionsT(*reinterpret_cast<tflite::ReshapeOptionsT *>(u.value));
19638       break;
19639     }
19640     case BuiltinOptions_SkipGramOptions: {
19641       value = new tflite::SkipGramOptionsT(*reinterpret_cast<tflite::SkipGramOptionsT *>(u.value));
19642       break;
19643     }
19644     case BuiltinOptions_SpaceToDepthOptions: {
19645       value = new tflite::SpaceToDepthOptionsT(*reinterpret_cast<tflite::SpaceToDepthOptionsT *>(u.value));
19646       break;
19647     }
19648     case BuiltinOptions_EmbeddingLookupSparseOptions: {
19649       value = new tflite::EmbeddingLookupSparseOptionsT(*reinterpret_cast<tflite::EmbeddingLookupSparseOptionsT *>(u.value));
19650       break;
19651     }
19652     case BuiltinOptions_MulOptions: {
19653       value = new tflite::MulOptionsT(*reinterpret_cast<tflite::MulOptionsT *>(u.value));
19654       break;
19655     }
19656     case BuiltinOptions_PadOptions: {
19657       value = new tflite::PadOptionsT(*reinterpret_cast<tflite::PadOptionsT *>(u.value));
19658       break;
19659     }
19660     case BuiltinOptions_GatherOptions: {
19661       value = new tflite::GatherOptionsT(*reinterpret_cast<tflite::GatherOptionsT *>(u.value));
19662       break;
19663     }
19664     case BuiltinOptions_BatchToSpaceNDOptions: {
19665       value = new tflite::BatchToSpaceNDOptionsT(*reinterpret_cast<tflite::BatchToSpaceNDOptionsT *>(u.value));
19666       break;
19667     }
19668     case BuiltinOptions_SpaceToBatchNDOptions: {
19669       value = new tflite::SpaceToBatchNDOptionsT(*reinterpret_cast<tflite::SpaceToBatchNDOptionsT *>(u.value));
19670       break;
19671     }
19672     case BuiltinOptions_TransposeOptions: {
19673       value = new tflite::TransposeOptionsT(*reinterpret_cast<tflite::TransposeOptionsT *>(u.value));
19674       break;
19675     }
19676     case BuiltinOptions_ReducerOptions: {
19677       value = new tflite::ReducerOptionsT(*reinterpret_cast<tflite::ReducerOptionsT *>(u.value));
19678       break;
19679     }
19680     case BuiltinOptions_SubOptions: {
19681       value = new tflite::SubOptionsT(*reinterpret_cast<tflite::SubOptionsT *>(u.value));
19682       break;
19683     }
19684     case BuiltinOptions_DivOptions: {
19685       value = new tflite::DivOptionsT(*reinterpret_cast<tflite::DivOptionsT *>(u.value));
19686       break;
19687     }
19688     case BuiltinOptions_SqueezeOptions: {
19689       value = new tflite::SqueezeOptionsT(*reinterpret_cast<tflite::SqueezeOptionsT *>(u.value));
19690       break;
19691     }
19692     case BuiltinOptions_SequenceRNNOptions: {
19693       value = new tflite::SequenceRNNOptionsT(*reinterpret_cast<tflite::SequenceRNNOptionsT *>(u.value));
19694       break;
19695     }
19696     case BuiltinOptions_StridedSliceOptions: {
19697       value = new tflite::StridedSliceOptionsT(*reinterpret_cast<tflite::StridedSliceOptionsT *>(u.value));
19698       break;
19699     }
19700     case BuiltinOptions_ExpOptions: {
19701       value = new tflite::ExpOptionsT(*reinterpret_cast<tflite::ExpOptionsT *>(u.value));
19702       break;
19703     }
19704     case BuiltinOptions_TopKV2Options: {
19705       value = new tflite::TopKV2OptionsT(*reinterpret_cast<tflite::TopKV2OptionsT *>(u.value));
19706       break;
19707     }
19708     case BuiltinOptions_SplitOptions: {
19709       value = new tflite::SplitOptionsT(*reinterpret_cast<tflite::SplitOptionsT *>(u.value));
19710       break;
19711     }
19712     case BuiltinOptions_LogSoftmaxOptions: {
19713       value = new tflite::LogSoftmaxOptionsT(*reinterpret_cast<tflite::LogSoftmaxOptionsT *>(u.value));
19714       break;
19715     }
19716     case BuiltinOptions_CastOptions: {
19717       value = new tflite::CastOptionsT(*reinterpret_cast<tflite::CastOptionsT *>(u.value));
19718       break;
19719     }
19720     case BuiltinOptions_DequantizeOptions: {
19721       value = new tflite::DequantizeOptionsT(*reinterpret_cast<tflite::DequantizeOptionsT *>(u.value));
19722       break;
19723     }
19724     case BuiltinOptions_MaximumMinimumOptions: {
19725       value = new tflite::MaximumMinimumOptionsT(*reinterpret_cast<tflite::MaximumMinimumOptionsT *>(u.value));
19726       break;
19727     }
19728     case BuiltinOptions_ArgMaxOptions: {
19729       value = new tflite::ArgMaxOptionsT(*reinterpret_cast<tflite::ArgMaxOptionsT *>(u.value));
19730       break;
19731     }
19732     case BuiltinOptions_LessOptions: {
19733       value = new tflite::LessOptionsT(*reinterpret_cast<tflite::LessOptionsT *>(u.value));
19734       break;
19735     }
19736     case BuiltinOptions_NegOptions: {
19737       value = new tflite::NegOptionsT(*reinterpret_cast<tflite::NegOptionsT *>(u.value));
19738       break;
19739     }
19740     case BuiltinOptions_PadV2Options: {
19741       value = new tflite::PadV2OptionsT(*reinterpret_cast<tflite::PadV2OptionsT *>(u.value));
19742       break;
19743     }
19744     case BuiltinOptions_GreaterOptions: {
19745       value = new tflite::GreaterOptionsT(*reinterpret_cast<tflite::GreaterOptionsT *>(u.value));
19746       break;
19747     }
19748     case BuiltinOptions_GreaterEqualOptions: {
19749       value = new tflite::GreaterEqualOptionsT(*reinterpret_cast<tflite::GreaterEqualOptionsT *>(u.value));
19750       break;
19751     }
19752     case BuiltinOptions_LessEqualOptions: {
19753       value = new tflite::LessEqualOptionsT(*reinterpret_cast<tflite::LessEqualOptionsT *>(u.value));
19754       break;
19755     }
19756     case BuiltinOptions_SelectOptions: {
19757       value = new tflite::SelectOptionsT(*reinterpret_cast<tflite::SelectOptionsT *>(u.value));
19758       break;
19759     }
19760     case BuiltinOptions_SliceOptions: {
19761       value = new tflite::SliceOptionsT(*reinterpret_cast<tflite::SliceOptionsT *>(u.value));
19762       break;
19763     }
19764     case BuiltinOptions_TransposeConvOptions: {
19765       value = new tflite::TransposeConvOptionsT(*reinterpret_cast<tflite::TransposeConvOptionsT *>(u.value));
19766       break;
19767     }
19768     case BuiltinOptions_SparseToDenseOptions: {
19769       value = new tflite::SparseToDenseOptionsT(*reinterpret_cast<tflite::SparseToDenseOptionsT *>(u.value));
19770       break;
19771     }
19772     case BuiltinOptions_TileOptions: {
19773       value = new tflite::TileOptionsT(*reinterpret_cast<tflite::TileOptionsT *>(u.value));
19774       break;
19775     }
19776     case BuiltinOptions_ExpandDimsOptions: {
19777       value = new tflite::ExpandDimsOptionsT(*reinterpret_cast<tflite::ExpandDimsOptionsT *>(u.value));
19778       break;
19779     }
19780     case BuiltinOptions_EqualOptions: {
19781       value = new tflite::EqualOptionsT(*reinterpret_cast<tflite::EqualOptionsT *>(u.value));
19782       break;
19783     }
19784     case BuiltinOptions_NotEqualOptions: {
19785       value = new tflite::NotEqualOptionsT(*reinterpret_cast<tflite::NotEqualOptionsT *>(u.value));
19786       break;
19787     }
19788     case BuiltinOptions_ShapeOptions: {
19789       value = new tflite::ShapeOptionsT(*reinterpret_cast<tflite::ShapeOptionsT *>(u.value));
19790       break;
19791     }
19792     case BuiltinOptions_PowOptions: {
19793       value = new tflite::PowOptionsT(*reinterpret_cast<tflite::PowOptionsT *>(u.value));
19794       break;
19795     }
19796     case BuiltinOptions_ArgMinOptions: {
19797       value = new tflite::ArgMinOptionsT(*reinterpret_cast<tflite::ArgMinOptionsT *>(u.value));
19798       break;
19799     }
19800     case BuiltinOptions_FakeQuantOptions: {
19801       value = new tflite::FakeQuantOptionsT(*reinterpret_cast<tflite::FakeQuantOptionsT *>(u.value));
19802       break;
19803     }
19804     case BuiltinOptions_PackOptions: {
19805       value = new tflite::PackOptionsT(*reinterpret_cast<tflite::PackOptionsT *>(u.value));
19806       break;
19807     }
19808     case BuiltinOptions_LogicalOrOptions: {
19809       value = new tflite::LogicalOrOptionsT(*reinterpret_cast<tflite::LogicalOrOptionsT *>(u.value));
19810       break;
19811     }
19812     case BuiltinOptions_OneHotOptions: {
19813       value = new tflite::OneHotOptionsT(*reinterpret_cast<tflite::OneHotOptionsT *>(u.value));
19814       break;
19815     }
19816     case BuiltinOptions_LogicalAndOptions: {
19817       value = new tflite::LogicalAndOptionsT(*reinterpret_cast<tflite::LogicalAndOptionsT *>(u.value));
19818       break;
19819     }
19820     case BuiltinOptions_LogicalNotOptions: {
19821       value = new tflite::LogicalNotOptionsT(*reinterpret_cast<tflite::LogicalNotOptionsT *>(u.value));
19822       break;
19823     }
19824     case BuiltinOptions_UnpackOptions: {
19825       value = new tflite::UnpackOptionsT(*reinterpret_cast<tflite::UnpackOptionsT *>(u.value));
19826       break;
19827     }
19828     case BuiltinOptions_FloorDivOptions: {
19829       value = new tflite::FloorDivOptionsT(*reinterpret_cast<tflite::FloorDivOptionsT *>(u.value));
19830       break;
19831     }
19832     case BuiltinOptions_SquareOptions: {
19833       value = new tflite::SquareOptionsT(*reinterpret_cast<tflite::SquareOptionsT *>(u.value));
19834       break;
19835     }
19836     case BuiltinOptions_ZerosLikeOptions: {
19837       value = new tflite::ZerosLikeOptionsT(*reinterpret_cast<tflite::ZerosLikeOptionsT *>(u.value));
19838       break;
19839     }
19840     case BuiltinOptions_FillOptions: {
19841       value = new tflite::FillOptionsT(*reinterpret_cast<tflite::FillOptionsT *>(u.value));
19842       break;
19843     }
19844     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
19845       value = new tflite::BidirectionalSequenceLSTMOptionsT(*reinterpret_cast<tflite::BidirectionalSequenceLSTMOptionsT *>(u.value));
19846       break;
19847     }
19848     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
19849       value = new tflite::BidirectionalSequenceRNNOptionsT(*reinterpret_cast<tflite::BidirectionalSequenceRNNOptionsT *>(u.value));
19850       break;
19851     }
19852     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
19853       value = new tflite::UnidirectionalSequenceLSTMOptionsT(*reinterpret_cast<tflite::UnidirectionalSequenceLSTMOptionsT *>(u.value));
19854       break;
19855     }
19856     case BuiltinOptions_FloorModOptions: {
19857       value = new tflite::FloorModOptionsT(*reinterpret_cast<tflite::FloorModOptionsT *>(u.value));
19858       break;
19859     }
19860     case BuiltinOptions_RangeOptions: {
19861       value = new tflite::RangeOptionsT(*reinterpret_cast<tflite::RangeOptionsT *>(u.value));
19862       break;
19863     }
19864     case BuiltinOptions_ResizeNearestNeighborOptions: {
19865       value = new tflite::ResizeNearestNeighborOptionsT(*reinterpret_cast<tflite::ResizeNearestNeighborOptionsT *>(u.value));
19866       break;
19867     }
19868     case BuiltinOptions_LeakyReluOptions: {
19869       value = new tflite::LeakyReluOptionsT(*reinterpret_cast<tflite::LeakyReluOptionsT *>(u.value));
19870       break;
19871     }
19872     case BuiltinOptions_SquaredDifferenceOptions: {
19873       value = new tflite::SquaredDifferenceOptionsT(*reinterpret_cast<tflite::SquaredDifferenceOptionsT *>(u.value));
19874       break;
19875     }
19876     case BuiltinOptions_MirrorPadOptions: {
19877       value = new tflite::MirrorPadOptionsT(*reinterpret_cast<tflite::MirrorPadOptionsT *>(u.value));
19878       break;
19879     }
19880     case BuiltinOptions_AbsOptions: {
19881       value = new tflite::AbsOptionsT(*reinterpret_cast<tflite::AbsOptionsT *>(u.value));
19882       break;
19883     }
19884     case BuiltinOptions_SplitVOptions: {
19885       value = new tflite::SplitVOptionsT(*reinterpret_cast<tflite::SplitVOptionsT *>(u.value));
19886       break;
19887     }
19888     case BuiltinOptions_UniqueOptions: {
19889       value = new tflite::UniqueOptionsT(*reinterpret_cast<tflite::UniqueOptionsT *>(u.value));
19890       break;
19891     }
19892     case BuiltinOptions_ReverseV2Options: {
19893       value = new tflite::ReverseV2OptionsT(*reinterpret_cast<tflite::ReverseV2OptionsT *>(u.value));
19894       break;
19895     }
19896     case BuiltinOptions_AddNOptions: {
19897       value = new tflite::AddNOptionsT(*reinterpret_cast<tflite::AddNOptionsT *>(u.value));
19898       break;
19899     }
19900     case BuiltinOptions_GatherNdOptions: {
19901       value = new tflite::GatherNdOptionsT(*reinterpret_cast<tflite::GatherNdOptionsT *>(u.value));
19902       break;
19903     }
19904     case BuiltinOptions_CosOptions: {
19905       value = new tflite::CosOptionsT(*reinterpret_cast<tflite::CosOptionsT *>(u.value));
19906       break;
19907     }
19908     case BuiltinOptions_WhereOptions: {
19909       value = new tflite::WhereOptionsT(*reinterpret_cast<tflite::WhereOptionsT *>(u.value));
19910       break;
19911     }
19912     case BuiltinOptions_RankOptions: {
19913       value = new tflite::RankOptionsT(*reinterpret_cast<tflite::RankOptionsT *>(u.value));
19914       break;
19915     }
19916     case BuiltinOptions_ReverseSequenceOptions: {
19917       value = new tflite::ReverseSequenceOptionsT(*reinterpret_cast<tflite::ReverseSequenceOptionsT *>(u.value));
19918       break;
19919     }
19920     case BuiltinOptions_MatrixDiagOptions: {
19921       value = new tflite::MatrixDiagOptionsT(*reinterpret_cast<tflite::MatrixDiagOptionsT *>(u.value));
19922       break;
19923     }
19924     case BuiltinOptions_QuantizeOptions: {
19925       value = new tflite::QuantizeOptionsT(*reinterpret_cast<tflite::QuantizeOptionsT *>(u.value));
19926       break;
19927     }
19928     case BuiltinOptions_MatrixSetDiagOptions: {
19929       value = new tflite::MatrixSetDiagOptionsT(*reinterpret_cast<tflite::MatrixSetDiagOptionsT *>(u.value));
19930       break;
19931     }
19932     case BuiltinOptions_HardSwishOptions: {
19933       value = new tflite::HardSwishOptionsT(*reinterpret_cast<tflite::HardSwishOptionsT *>(u.value));
19934       break;
19935     }
19936     case BuiltinOptions_IfOptions: {
19937       value = new tflite::IfOptionsT(*reinterpret_cast<tflite::IfOptionsT *>(u.value));
19938       break;
19939     }
19940     case BuiltinOptions_WhileOptions: {
19941       value = new tflite::WhileOptionsT(*reinterpret_cast<tflite::WhileOptionsT *>(u.value));
19942       break;
19943     }
19944     case BuiltinOptions_DepthToSpaceOptions: {
19945       value = new tflite::DepthToSpaceOptionsT(*reinterpret_cast<tflite::DepthToSpaceOptionsT *>(u.value));
19946       break;
19947     }
19948     case BuiltinOptions_NonMaxSuppressionV4Options: {
19949       value = new tflite::NonMaxSuppressionV4OptionsT(*reinterpret_cast<tflite::NonMaxSuppressionV4OptionsT *>(u.value));
19950       break;
19951     }
19952     case BuiltinOptions_NonMaxSuppressionV5Options: {
19953       value = new tflite::NonMaxSuppressionV5OptionsT(*reinterpret_cast<tflite::NonMaxSuppressionV5OptionsT *>(u.value));
19954       break;
19955     }
19956     case BuiltinOptions_ScatterNdOptions: {
19957       value = new tflite::ScatterNdOptionsT(*reinterpret_cast<tflite::ScatterNdOptionsT *>(u.value));
19958       break;
19959     }
19960     case BuiltinOptions_SelectV2Options: {
19961       value = new tflite::SelectV2OptionsT(*reinterpret_cast<tflite::SelectV2OptionsT *>(u.value));
19962       break;
19963     }
19964     case BuiltinOptions_DensifyOptions: {
19965       value = new tflite::DensifyOptionsT(*reinterpret_cast<tflite::DensifyOptionsT *>(u.value));
19966       break;
19967     }
19968     case BuiltinOptions_SegmentSumOptions: {
19969       value = new tflite::SegmentSumOptionsT(*reinterpret_cast<tflite::SegmentSumOptionsT *>(u.value));
19970       break;
19971     }
19972     case BuiltinOptions_BatchMatMulOptions: {
19973       value = new tflite::BatchMatMulOptionsT(*reinterpret_cast<tflite::BatchMatMulOptionsT *>(u.value));
19974       break;
19975     }
19976     case BuiltinOptions_CumsumOptions: {
19977       value = new tflite::CumsumOptionsT(*reinterpret_cast<tflite::CumsumOptionsT *>(u.value));
19978       break;
19979     }
19980     case BuiltinOptions_CallOnceOptions: {
19981       value = new tflite::CallOnceOptionsT(*reinterpret_cast<tflite::CallOnceOptionsT *>(u.value));
19982       break;
19983     }
19984     case BuiltinOptions_BroadcastToOptions: {
19985       value = new tflite::BroadcastToOptionsT(*reinterpret_cast<tflite::BroadcastToOptionsT *>(u.value));
19986       break;
19987     }
19988     case BuiltinOptions_Rfft2dOptions: {
19989       value = new tflite::Rfft2dOptionsT(*reinterpret_cast<tflite::Rfft2dOptionsT *>(u.value));
19990       break;
19991     }
19992     case BuiltinOptions_Conv3DOptions: {
19993       value = new tflite::Conv3DOptionsT(*reinterpret_cast<tflite::Conv3DOptionsT *>(u.value));
19994       break;
19995     }
19996     case BuiltinOptions_HashtableOptions: {
19997       value = new tflite::HashtableOptionsT(*reinterpret_cast<tflite::HashtableOptionsT *>(u.value));
19998       break;
19999     }
20000     case BuiltinOptions_HashtableFindOptions: {
20001       value = new tflite::HashtableFindOptionsT(*reinterpret_cast<tflite::HashtableFindOptionsT *>(u.value));
20002       break;
20003     }
20004     case BuiltinOptions_HashtableImportOptions: {
20005       value = new tflite::HashtableImportOptionsT(*reinterpret_cast<tflite::HashtableImportOptionsT *>(u.value));
20006       break;
20007     }
20008     case BuiltinOptions_HashtableSizeOptions: {
20009       value = new tflite::HashtableSizeOptionsT(*reinterpret_cast<tflite::HashtableSizeOptionsT *>(u.value));
20010       break;
20011     }
20012     case BuiltinOptions_VarHandleOptions: {
20013       value = new tflite::VarHandleOptionsT(*reinterpret_cast<tflite::VarHandleOptionsT *>(u.value));
20014       break;
20015     }
20016     case BuiltinOptions_ReadVariableOptions: {
20017       value = new tflite::ReadVariableOptionsT(*reinterpret_cast<tflite::ReadVariableOptionsT *>(u.value));
20018       break;
20019     }
20020     case BuiltinOptions_AssignVariableOptions: {
20021       value = new tflite::AssignVariableOptionsT(*reinterpret_cast<tflite::AssignVariableOptionsT *>(u.value));
20022       break;
20023     }
20024     case BuiltinOptions_RandomOptions: {
20025       value = new tflite::RandomOptionsT(*reinterpret_cast<tflite::RandomOptionsT *>(u.value));
20026       break;
20027     }
20028     case BuiltinOptions_BucketizeOptions: {
20029       value = new tflite::BucketizeOptionsT(*reinterpret_cast<tflite::BucketizeOptionsT *>(u.value));
20030       break;
20031     }
20032     case BuiltinOptions_GeluOptions: {
20033       value = new tflite::GeluOptionsT(*reinterpret_cast<tflite::GeluOptionsT *>(u.value));
20034       break;
20035     }
20036     case BuiltinOptions_DynamicUpdateSliceOptions: {
20037       value = new tflite::DynamicUpdateSliceOptionsT(*reinterpret_cast<tflite::DynamicUpdateSliceOptionsT *>(u.value));
20038       break;
20039     }
20040     case BuiltinOptions_UnsortedSegmentProdOptions: {
20041       value = new tflite::UnsortedSegmentProdOptionsT(*reinterpret_cast<tflite::UnsortedSegmentProdOptionsT *>(u.value));
20042       break;
20043     }
20044     case BuiltinOptions_UnsortedSegmentMaxOptions: {
20045       value = new tflite::UnsortedSegmentMaxOptionsT(*reinterpret_cast<tflite::UnsortedSegmentMaxOptionsT *>(u.value));
20046       break;
20047     }
20048     case BuiltinOptions_UnsortedSegmentMinOptions: {
20049       value = new tflite::UnsortedSegmentMinOptionsT(*reinterpret_cast<tflite::UnsortedSegmentMinOptionsT *>(u.value));
20050       break;
20051     }
20052     case BuiltinOptions_UnsortedSegmentSumOptions: {
20053       value = new tflite::UnsortedSegmentSumOptionsT(*reinterpret_cast<tflite::UnsortedSegmentSumOptionsT *>(u.value));
20054       break;
20055     }
20056     case BuiltinOptions_ATan2Options: {
20057       value = new tflite::ATan2OptionsT(*reinterpret_cast<tflite::ATan2OptionsT *>(u.value));
20058       break;
20059     }
20060     case BuiltinOptions_SignOptions: {
20061       value = new tflite::SignOptionsT(*reinterpret_cast<tflite::SignOptionsT *>(u.value));
20062       break;
20063     }
20064     default:
20065       break;
20066   }
20067 }
20068 
20069 inline void BuiltinOptionsUnion::Reset() {
20070   switch (type) {
20071     case BuiltinOptions_Conv2DOptions: {
20072       auto ptr = reinterpret_cast<tflite::Conv2DOptionsT *>(value);
20073       delete ptr;
20074       break;
20075     }
20076     case BuiltinOptions_DepthwiseConv2DOptions: {
20077       auto ptr = reinterpret_cast<tflite::DepthwiseConv2DOptionsT *>(value);
20078       delete ptr;
20079       break;
20080     }
20081     case BuiltinOptions_ConcatEmbeddingsOptions: {
20082       auto ptr = reinterpret_cast<tflite::ConcatEmbeddingsOptionsT *>(value);
20083       delete ptr;
20084       break;
20085     }
20086     case BuiltinOptions_LSHProjectionOptions: {
20087       auto ptr = reinterpret_cast<tflite::LSHProjectionOptionsT *>(value);
20088       delete ptr;
20089       break;
20090     }
20091     case BuiltinOptions_Pool2DOptions: {
20092       auto ptr = reinterpret_cast<tflite::Pool2DOptionsT *>(value);
20093       delete ptr;
20094       break;
20095     }
20096     case BuiltinOptions_SVDFOptions: {
20097       auto ptr = reinterpret_cast<tflite::SVDFOptionsT *>(value);
20098       delete ptr;
20099       break;
20100     }
20101     case BuiltinOptions_RNNOptions: {
20102       auto ptr = reinterpret_cast<tflite::RNNOptionsT *>(value);
20103       delete ptr;
20104       break;
20105     }
20106     case BuiltinOptions_FullyConnectedOptions: {
20107       auto ptr = reinterpret_cast<tflite::FullyConnectedOptionsT *>(value);
20108       delete ptr;
20109       break;
20110     }
20111     case BuiltinOptions_SoftmaxOptions: {
20112       auto ptr = reinterpret_cast<tflite::SoftmaxOptionsT *>(value);
20113       delete ptr;
20114       break;
20115     }
20116     case BuiltinOptions_ConcatenationOptions: {
20117       auto ptr = reinterpret_cast<tflite::ConcatenationOptionsT *>(value);
20118       delete ptr;
20119       break;
20120     }
20121     case BuiltinOptions_AddOptions: {
20122       auto ptr = reinterpret_cast<tflite::AddOptionsT *>(value);
20123       delete ptr;
20124       break;
20125     }
20126     case BuiltinOptions_L2NormOptions: {
20127       auto ptr = reinterpret_cast<tflite::L2NormOptionsT *>(value);
20128       delete ptr;
20129       break;
20130     }
20131     case BuiltinOptions_LocalResponseNormalizationOptions: {
20132       auto ptr = reinterpret_cast<tflite::LocalResponseNormalizationOptionsT *>(value);
20133       delete ptr;
20134       break;
20135     }
20136     case BuiltinOptions_LSTMOptions: {
20137       auto ptr = reinterpret_cast<tflite::LSTMOptionsT *>(value);
20138       delete ptr;
20139       break;
20140     }
20141     case BuiltinOptions_ResizeBilinearOptions: {
20142       auto ptr = reinterpret_cast<tflite::ResizeBilinearOptionsT *>(value);
20143       delete ptr;
20144       break;
20145     }
20146     case BuiltinOptions_CallOptions: {
20147       auto ptr = reinterpret_cast<tflite::CallOptionsT *>(value);
20148       delete ptr;
20149       break;
20150     }
20151     case BuiltinOptions_ReshapeOptions: {
20152       auto ptr = reinterpret_cast<tflite::ReshapeOptionsT *>(value);
20153       delete ptr;
20154       break;
20155     }
20156     case BuiltinOptions_SkipGramOptions: {
20157       auto ptr = reinterpret_cast<tflite::SkipGramOptionsT *>(value);
20158       delete ptr;
20159       break;
20160     }
20161     case BuiltinOptions_SpaceToDepthOptions: {
20162       auto ptr = reinterpret_cast<tflite::SpaceToDepthOptionsT *>(value);
20163       delete ptr;
20164       break;
20165     }
20166     case BuiltinOptions_EmbeddingLookupSparseOptions: {
20167       auto ptr = reinterpret_cast<tflite::EmbeddingLookupSparseOptionsT *>(value);
20168       delete ptr;
20169       break;
20170     }
20171     case BuiltinOptions_MulOptions: {
20172       auto ptr = reinterpret_cast<tflite::MulOptionsT *>(value);
20173       delete ptr;
20174       break;
20175     }
20176     case BuiltinOptions_PadOptions: {
20177       auto ptr = reinterpret_cast<tflite::PadOptionsT *>(value);
20178       delete ptr;
20179       break;
20180     }
20181     case BuiltinOptions_GatherOptions: {
20182       auto ptr = reinterpret_cast<tflite::GatherOptionsT *>(value);
20183       delete ptr;
20184       break;
20185     }
20186     case BuiltinOptions_BatchToSpaceNDOptions: {
20187       auto ptr = reinterpret_cast<tflite::BatchToSpaceNDOptionsT *>(value);
20188       delete ptr;
20189       break;
20190     }
20191     case BuiltinOptions_SpaceToBatchNDOptions: {
20192       auto ptr = reinterpret_cast<tflite::SpaceToBatchNDOptionsT *>(value);
20193       delete ptr;
20194       break;
20195     }
20196     case BuiltinOptions_TransposeOptions: {
20197       auto ptr = reinterpret_cast<tflite::TransposeOptionsT *>(value);
20198       delete ptr;
20199       break;
20200     }
20201     case BuiltinOptions_ReducerOptions: {
20202       auto ptr = reinterpret_cast<tflite::ReducerOptionsT *>(value);
20203       delete ptr;
20204       break;
20205     }
20206     case BuiltinOptions_SubOptions: {
20207       auto ptr = reinterpret_cast<tflite::SubOptionsT *>(value);
20208       delete ptr;
20209       break;
20210     }
20211     case BuiltinOptions_DivOptions: {
20212       auto ptr = reinterpret_cast<tflite::DivOptionsT *>(value);
20213       delete ptr;
20214       break;
20215     }
20216     case BuiltinOptions_SqueezeOptions: {
20217       auto ptr = reinterpret_cast<tflite::SqueezeOptionsT *>(value);
20218       delete ptr;
20219       break;
20220     }
20221     case BuiltinOptions_SequenceRNNOptions: {
20222       auto ptr = reinterpret_cast<tflite::SequenceRNNOptionsT *>(value);
20223       delete ptr;
20224       break;
20225     }
20226     case BuiltinOptions_StridedSliceOptions: {
20227       auto ptr = reinterpret_cast<tflite::StridedSliceOptionsT *>(value);
20228       delete ptr;
20229       break;
20230     }
20231     case BuiltinOptions_ExpOptions: {
20232       auto ptr = reinterpret_cast<tflite::ExpOptionsT *>(value);
20233       delete ptr;
20234       break;
20235     }
20236     case BuiltinOptions_TopKV2Options: {
20237       auto ptr = reinterpret_cast<tflite::TopKV2OptionsT *>(value);
20238       delete ptr;
20239       break;
20240     }
20241     case BuiltinOptions_SplitOptions: {
20242       auto ptr = reinterpret_cast<tflite::SplitOptionsT *>(value);
20243       delete ptr;
20244       break;
20245     }
20246     case BuiltinOptions_LogSoftmaxOptions: {
20247       auto ptr = reinterpret_cast<tflite::LogSoftmaxOptionsT *>(value);
20248       delete ptr;
20249       break;
20250     }
20251     case BuiltinOptions_CastOptions: {
20252       auto ptr = reinterpret_cast<tflite::CastOptionsT *>(value);
20253       delete ptr;
20254       break;
20255     }
20256     case BuiltinOptions_DequantizeOptions: {
20257       auto ptr = reinterpret_cast<tflite::DequantizeOptionsT *>(value);
20258       delete ptr;
20259       break;
20260     }
20261     case BuiltinOptions_MaximumMinimumOptions: {
20262       auto ptr = reinterpret_cast<tflite::MaximumMinimumOptionsT *>(value);
20263       delete ptr;
20264       break;
20265     }
20266     case BuiltinOptions_ArgMaxOptions: {
20267       auto ptr = reinterpret_cast<tflite::ArgMaxOptionsT *>(value);
20268       delete ptr;
20269       break;
20270     }
20271     case BuiltinOptions_LessOptions: {
20272       auto ptr = reinterpret_cast<tflite::LessOptionsT *>(value);
20273       delete ptr;
20274       break;
20275     }
20276     case BuiltinOptions_NegOptions: {
20277       auto ptr = reinterpret_cast<tflite::NegOptionsT *>(value);
20278       delete ptr;
20279       break;
20280     }
20281     case BuiltinOptions_PadV2Options: {
20282       auto ptr = reinterpret_cast<tflite::PadV2OptionsT *>(value);
20283       delete ptr;
20284       break;
20285     }
20286     case BuiltinOptions_GreaterOptions: {
20287       auto ptr = reinterpret_cast<tflite::GreaterOptionsT *>(value);
20288       delete ptr;
20289       break;
20290     }
20291     case BuiltinOptions_GreaterEqualOptions: {
20292       auto ptr = reinterpret_cast<tflite::GreaterEqualOptionsT *>(value);
20293       delete ptr;
20294       break;
20295     }
20296     case BuiltinOptions_LessEqualOptions: {
20297       auto ptr = reinterpret_cast<tflite::LessEqualOptionsT *>(value);
20298       delete ptr;
20299       break;
20300     }
20301     case BuiltinOptions_SelectOptions: {
20302       auto ptr = reinterpret_cast<tflite::SelectOptionsT *>(value);
20303       delete ptr;
20304       break;
20305     }
20306     case BuiltinOptions_SliceOptions: {
20307       auto ptr = reinterpret_cast<tflite::SliceOptionsT *>(value);
20308       delete ptr;
20309       break;
20310     }
20311     case BuiltinOptions_TransposeConvOptions: {
20312       auto ptr = reinterpret_cast<tflite::TransposeConvOptionsT *>(value);
20313       delete ptr;
20314       break;
20315     }
20316     case BuiltinOptions_SparseToDenseOptions: {
20317       auto ptr = reinterpret_cast<tflite::SparseToDenseOptionsT *>(value);
20318       delete ptr;
20319       break;
20320     }
20321     case BuiltinOptions_TileOptions: {
20322       auto ptr = reinterpret_cast<tflite::TileOptionsT *>(value);
20323       delete ptr;
20324       break;
20325     }
20326     case BuiltinOptions_ExpandDimsOptions: {
20327       auto ptr = reinterpret_cast<tflite::ExpandDimsOptionsT *>(value);
20328       delete ptr;
20329       break;
20330     }
20331     case BuiltinOptions_EqualOptions: {
20332       auto ptr = reinterpret_cast<tflite::EqualOptionsT *>(value);
20333       delete ptr;
20334       break;
20335     }
20336     case BuiltinOptions_NotEqualOptions: {
20337       auto ptr = reinterpret_cast<tflite::NotEqualOptionsT *>(value);
20338       delete ptr;
20339       break;
20340     }
20341     case BuiltinOptions_ShapeOptions: {
20342       auto ptr = reinterpret_cast<tflite::ShapeOptionsT *>(value);
20343       delete ptr;
20344       break;
20345     }
20346     case BuiltinOptions_PowOptions: {
20347       auto ptr = reinterpret_cast<tflite::PowOptionsT *>(value);
20348       delete ptr;
20349       break;
20350     }
20351     case BuiltinOptions_ArgMinOptions: {
20352       auto ptr = reinterpret_cast<tflite::ArgMinOptionsT *>(value);
20353       delete ptr;
20354       break;
20355     }
20356     case BuiltinOptions_FakeQuantOptions: {
20357       auto ptr = reinterpret_cast<tflite::FakeQuantOptionsT *>(value);
20358       delete ptr;
20359       break;
20360     }
20361     case BuiltinOptions_PackOptions: {
20362       auto ptr = reinterpret_cast<tflite::PackOptionsT *>(value);
20363       delete ptr;
20364       break;
20365     }
20366     case BuiltinOptions_LogicalOrOptions: {
20367       auto ptr = reinterpret_cast<tflite::LogicalOrOptionsT *>(value);
20368       delete ptr;
20369       break;
20370     }
20371     case BuiltinOptions_OneHotOptions: {
20372       auto ptr = reinterpret_cast<tflite::OneHotOptionsT *>(value);
20373       delete ptr;
20374       break;
20375     }
20376     case BuiltinOptions_LogicalAndOptions: {
20377       auto ptr = reinterpret_cast<tflite::LogicalAndOptionsT *>(value);
20378       delete ptr;
20379       break;
20380     }
20381     case BuiltinOptions_LogicalNotOptions: {
20382       auto ptr = reinterpret_cast<tflite::LogicalNotOptionsT *>(value);
20383       delete ptr;
20384       break;
20385     }
20386     case BuiltinOptions_UnpackOptions: {
20387       auto ptr = reinterpret_cast<tflite::UnpackOptionsT *>(value);
20388       delete ptr;
20389       break;
20390     }
20391     case BuiltinOptions_FloorDivOptions: {
20392       auto ptr = reinterpret_cast<tflite::FloorDivOptionsT *>(value);
20393       delete ptr;
20394       break;
20395     }
20396     case BuiltinOptions_SquareOptions: {
20397       auto ptr = reinterpret_cast<tflite::SquareOptionsT *>(value);
20398       delete ptr;
20399       break;
20400     }
20401     case BuiltinOptions_ZerosLikeOptions: {
20402       auto ptr = reinterpret_cast<tflite::ZerosLikeOptionsT *>(value);
20403       delete ptr;
20404       break;
20405     }
20406     case BuiltinOptions_FillOptions: {
20407       auto ptr = reinterpret_cast<tflite::FillOptionsT *>(value);
20408       delete ptr;
20409       break;
20410     }
20411     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
20412       auto ptr = reinterpret_cast<tflite::BidirectionalSequenceLSTMOptionsT *>(value);
20413       delete ptr;
20414       break;
20415     }
20416     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
20417       auto ptr = reinterpret_cast<tflite::BidirectionalSequenceRNNOptionsT *>(value);
20418       delete ptr;
20419       break;
20420     }
20421     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
20422       auto ptr = reinterpret_cast<tflite::UnidirectionalSequenceLSTMOptionsT *>(value);
20423       delete ptr;
20424       break;
20425     }
20426     case BuiltinOptions_FloorModOptions: {
20427       auto ptr = reinterpret_cast<tflite::FloorModOptionsT *>(value);
20428       delete ptr;
20429       break;
20430     }
20431     case BuiltinOptions_RangeOptions: {
20432       auto ptr = reinterpret_cast<tflite::RangeOptionsT *>(value);
20433       delete ptr;
20434       break;
20435     }
20436     case BuiltinOptions_ResizeNearestNeighborOptions: {
20437       auto ptr = reinterpret_cast<tflite::ResizeNearestNeighborOptionsT *>(value);
20438       delete ptr;
20439       break;
20440     }
20441     case BuiltinOptions_LeakyReluOptions: {
20442       auto ptr = reinterpret_cast<tflite::LeakyReluOptionsT *>(value);
20443       delete ptr;
20444       break;
20445     }
20446     case BuiltinOptions_SquaredDifferenceOptions: {
20447       auto ptr = reinterpret_cast<tflite::SquaredDifferenceOptionsT *>(value);
20448       delete ptr;
20449       break;
20450     }
20451     case BuiltinOptions_MirrorPadOptions: {
20452       auto ptr = reinterpret_cast<tflite::MirrorPadOptionsT *>(value);
20453       delete ptr;
20454       break;
20455     }
20456     case BuiltinOptions_AbsOptions: {
20457       auto ptr = reinterpret_cast<tflite::AbsOptionsT *>(value);
20458       delete ptr;
20459       break;
20460     }
20461     case BuiltinOptions_SplitVOptions: {
20462       auto ptr = reinterpret_cast<tflite::SplitVOptionsT *>(value);
20463       delete ptr;
20464       break;
20465     }
20466     case BuiltinOptions_UniqueOptions: {
20467       auto ptr = reinterpret_cast<tflite::UniqueOptionsT *>(value);
20468       delete ptr;
20469       break;
20470     }
20471     case BuiltinOptions_ReverseV2Options: {
20472       auto ptr = reinterpret_cast<tflite::ReverseV2OptionsT *>(value);
20473       delete ptr;
20474       break;
20475     }
20476     case BuiltinOptions_AddNOptions: {
20477       auto ptr = reinterpret_cast<tflite::AddNOptionsT *>(value);
20478       delete ptr;
20479       break;
20480     }
20481     case BuiltinOptions_GatherNdOptions: {
20482       auto ptr = reinterpret_cast<tflite::GatherNdOptionsT *>(value);
20483       delete ptr;
20484       break;
20485     }
20486     case BuiltinOptions_CosOptions: {
20487       auto ptr = reinterpret_cast<tflite::CosOptionsT *>(value);
20488       delete ptr;
20489       break;
20490     }
20491     case BuiltinOptions_WhereOptions: {
20492       auto ptr = reinterpret_cast<tflite::WhereOptionsT *>(value);
20493       delete ptr;
20494       break;
20495     }
20496     case BuiltinOptions_RankOptions: {
20497       auto ptr = reinterpret_cast<tflite::RankOptionsT *>(value);
20498       delete ptr;
20499       break;
20500     }
20501     case BuiltinOptions_ReverseSequenceOptions: {
20502       auto ptr = reinterpret_cast<tflite::ReverseSequenceOptionsT *>(value);
20503       delete ptr;
20504       break;
20505     }
20506     case BuiltinOptions_MatrixDiagOptions: {
20507       auto ptr = reinterpret_cast<tflite::MatrixDiagOptionsT *>(value);
20508       delete ptr;
20509       break;
20510     }
20511     case BuiltinOptions_QuantizeOptions: {
20512       auto ptr = reinterpret_cast<tflite::QuantizeOptionsT *>(value);
20513       delete ptr;
20514       break;
20515     }
20516     case BuiltinOptions_MatrixSetDiagOptions: {
20517       auto ptr = reinterpret_cast<tflite::MatrixSetDiagOptionsT *>(value);
20518       delete ptr;
20519       break;
20520     }
20521     case BuiltinOptions_HardSwishOptions: {
20522       auto ptr = reinterpret_cast<tflite::HardSwishOptionsT *>(value);
20523       delete ptr;
20524       break;
20525     }
20526     case BuiltinOptions_IfOptions: {
20527       auto ptr = reinterpret_cast<tflite::IfOptionsT *>(value);
20528       delete ptr;
20529       break;
20530     }
20531     case BuiltinOptions_WhileOptions: {
20532       auto ptr = reinterpret_cast<tflite::WhileOptionsT *>(value);
20533       delete ptr;
20534       break;
20535     }
20536     case BuiltinOptions_DepthToSpaceOptions: {
20537       auto ptr = reinterpret_cast<tflite::DepthToSpaceOptionsT *>(value);
20538       delete ptr;
20539       break;
20540     }
20541     case BuiltinOptions_NonMaxSuppressionV4Options: {
20542       auto ptr = reinterpret_cast<tflite::NonMaxSuppressionV4OptionsT *>(value);
20543       delete ptr;
20544       break;
20545     }
20546     case BuiltinOptions_NonMaxSuppressionV5Options: {
20547       auto ptr = reinterpret_cast<tflite::NonMaxSuppressionV5OptionsT *>(value);
20548       delete ptr;
20549       break;
20550     }
20551     case BuiltinOptions_ScatterNdOptions: {
20552       auto ptr = reinterpret_cast<tflite::ScatterNdOptionsT *>(value);
20553       delete ptr;
20554       break;
20555     }
20556     case BuiltinOptions_SelectV2Options: {
20557       auto ptr = reinterpret_cast<tflite::SelectV2OptionsT *>(value);
20558       delete ptr;
20559       break;
20560     }
20561     case BuiltinOptions_DensifyOptions: {
20562       auto ptr = reinterpret_cast<tflite::DensifyOptionsT *>(value);
20563       delete ptr;
20564       break;
20565     }
20566     case BuiltinOptions_SegmentSumOptions: {
20567       auto ptr = reinterpret_cast<tflite::SegmentSumOptionsT *>(value);
20568       delete ptr;
20569       break;
20570     }
20571     case BuiltinOptions_BatchMatMulOptions: {
20572       auto ptr = reinterpret_cast<tflite::BatchMatMulOptionsT *>(value);
20573       delete ptr;
20574       break;
20575     }
20576     case BuiltinOptions_CumsumOptions: {
20577       auto ptr = reinterpret_cast<tflite::CumsumOptionsT *>(value);
20578       delete ptr;
20579       break;
20580     }
20581     case BuiltinOptions_CallOnceOptions: {
20582       auto ptr = reinterpret_cast<tflite::CallOnceOptionsT *>(value);
20583       delete ptr;
20584       break;
20585     }
20586     case BuiltinOptions_BroadcastToOptions: {
20587       auto ptr = reinterpret_cast<tflite::BroadcastToOptionsT *>(value);
20588       delete ptr;
20589       break;
20590     }
20591     case BuiltinOptions_Rfft2dOptions: {
20592       auto ptr = reinterpret_cast<tflite::Rfft2dOptionsT *>(value);
20593       delete ptr;
20594       break;
20595     }
20596     case BuiltinOptions_Conv3DOptions: {
20597       auto ptr = reinterpret_cast<tflite::Conv3DOptionsT *>(value);
20598       delete ptr;
20599       break;
20600     }
20601     case BuiltinOptions_HashtableOptions: {
20602       auto ptr = reinterpret_cast<tflite::HashtableOptionsT *>(value);
20603       delete ptr;
20604       break;
20605     }
20606     case BuiltinOptions_HashtableFindOptions: {
20607       auto ptr = reinterpret_cast<tflite::HashtableFindOptionsT *>(value);
20608       delete ptr;
20609       break;
20610     }
20611     case BuiltinOptions_HashtableImportOptions: {
20612       auto ptr = reinterpret_cast<tflite::HashtableImportOptionsT *>(value);
20613       delete ptr;
20614       break;
20615     }
20616     case BuiltinOptions_HashtableSizeOptions: {
20617       auto ptr = reinterpret_cast<tflite::HashtableSizeOptionsT *>(value);
20618       delete ptr;
20619       break;
20620     }
20621     case BuiltinOptions_VarHandleOptions: {
20622       auto ptr = reinterpret_cast<tflite::VarHandleOptionsT *>(value);
20623       delete ptr;
20624       break;
20625     }
20626     case BuiltinOptions_ReadVariableOptions: {
20627       auto ptr = reinterpret_cast<tflite::ReadVariableOptionsT *>(value);
20628       delete ptr;
20629       break;
20630     }
20631     case BuiltinOptions_AssignVariableOptions: {
20632       auto ptr = reinterpret_cast<tflite::AssignVariableOptionsT *>(value);
20633       delete ptr;
20634       break;
20635     }
20636     case BuiltinOptions_RandomOptions: {
20637       auto ptr = reinterpret_cast<tflite::RandomOptionsT *>(value);
20638       delete ptr;
20639       break;
20640     }
20641     case BuiltinOptions_BucketizeOptions: {
20642       auto ptr = reinterpret_cast<tflite::BucketizeOptionsT *>(value);
20643       delete ptr;
20644       break;
20645     }
20646     case BuiltinOptions_GeluOptions: {
20647       auto ptr = reinterpret_cast<tflite::GeluOptionsT *>(value);
20648       delete ptr;
20649       break;
20650     }
20651     case BuiltinOptions_DynamicUpdateSliceOptions: {
20652       auto ptr = reinterpret_cast<tflite::DynamicUpdateSliceOptionsT *>(value);
20653       delete ptr;
20654       break;
20655     }
20656     case BuiltinOptions_UnsortedSegmentProdOptions: {
20657       auto ptr = reinterpret_cast<tflite::UnsortedSegmentProdOptionsT *>(value);
20658       delete ptr;
20659       break;
20660     }
20661     case BuiltinOptions_UnsortedSegmentMaxOptions: {
20662       auto ptr = reinterpret_cast<tflite::UnsortedSegmentMaxOptionsT *>(value);
20663       delete ptr;
20664       break;
20665     }
20666     case BuiltinOptions_UnsortedSegmentMinOptions: {
20667       auto ptr = reinterpret_cast<tflite::UnsortedSegmentMinOptionsT *>(value);
20668       delete ptr;
20669       break;
20670     }
20671     case BuiltinOptions_UnsortedSegmentSumOptions: {
20672       auto ptr = reinterpret_cast<tflite::UnsortedSegmentSumOptionsT *>(value);
20673       delete ptr;
20674       break;
20675     }
20676     case BuiltinOptions_ATan2Options: {
20677       auto ptr = reinterpret_cast<tflite::ATan2OptionsT *>(value);
20678       delete ptr;
20679       break;
20680     }
20681     case BuiltinOptions_SignOptions: {
20682       auto ptr = reinterpret_cast<tflite::SignOptionsT *>(value);
20683       delete ptr;
20684       break;
20685     }
20686     default: break;
20687   }
20688   value = nullptr;
20689   type = BuiltinOptions_NONE;
20690 }
20691 
20692 inline const tflite::Model *GetModel(const void *buf) {
20693   return flatbuffers::GetRoot<tflite::Model>(buf);
20694 }
20695 
20696 inline const tflite::Model *GetSizePrefixedModel(const void *buf) {
20697   return flatbuffers::GetSizePrefixedRoot<tflite::Model>(buf);
20698 }
20699 
20700 inline Model *GetMutableModel(void *buf) {
20701   return flatbuffers::GetMutableRoot<Model>(buf);
20702 }
20703 
20704 inline tflite::Model *GetMutableSizePrefixedModel(void *buf) {
20705   return flatbuffers::GetMutableSizePrefixedRoot<tflite::Model>(buf);
20706 }
20707 
20708 inline const char *ModelIdentifier() {
20709   return "TFL3";
20710 }
20711 
20712 inline bool ModelBufferHasIdentifier(const void *buf) {
20713   return flatbuffers::BufferHasIdentifier(
20714       buf, ModelIdentifier());
20715 }
20716 
20717 inline bool SizePrefixedModelBufferHasIdentifier(const void *buf) {
20718   return flatbuffers::BufferHasIdentifier(
20719       buf, ModelIdentifier(), true);
20720 }
20721 
20722 inline bool VerifyModelBuffer(
20723     flatbuffers::Verifier &verifier) {
20724   return verifier.VerifyBuffer<tflite::Model>(ModelIdentifier());
20725 }
20726 
20727 inline bool VerifySizePrefixedModelBuffer(
20728     flatbuffers::Verifier &verifier) {
20729   return verifier.VerifySizePrefixedBuffer<tflite::Model>(ModelIdentifier());
20730 }
20731 
20732 inline const char *ModelExtension() {
20733   return "tflite";
20734 }
20735 
20736 inline void FinishModelBuffer(
20737     flatbuffers::FlatBufferBuilder &fbb,
20738     flatbuffers::Offset<tflite::Model> root) {
20739   fbb.Finish(root, ModelIdentifier());
20740 }
20741 
20742 inline void FinishSizePrefixedModelBuffer(
20743     flatbuffers::FlatBufferBuilder &fbb,
20744     flatbuffers::Offset<tflite::Model> root) {
20745   fbb.FinishSizePrefixed(root, ModelIdentifier());
20746 }
20747 
20748 inline std::unique_ptr<tflite::ModelT> UnPackModel(
20749     const void *buf,
20750     const flatbuffers::resolver_function_t *res = nullptr) {
20751   return std::unique_ptr<tflite::ModelT>(GetModel(buf)->UnPack(res));
20752 }
20753 
20754 inline std::unique_ptr<tflite::ModelT> UnPackSizePrefixedModel(
20755     const void *buf,
20756     const flatbuffers::resolver_function_t *res = nullptr) {
20757   return std::unique_ptr<tflite::ModelT>(GetSizePrefixedModel(buf)->UnPack(res));
20758 }
20759 
20760 }  // namespace tflite
20761 
20762 #endif  // FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
20763