1 // automatically generated by the FlatBuffers compiler, do not modify
2 
3 // corresponds to https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/schema/schema.fbs 58719c1 Dec 17, 2019
4 
5 #ifndef FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
6 #define FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
7 
8 #include "flatbuffers/flatbuffers.h"
9 
10 namespace tflite {
11 
12 struct CustomQuantization;
13 
14 struct QuantizationParameters;
15 
16 struct DimensionMetadata;
17 
18 struct SparsityParameters;
19 
20 struct Tensor;
21 
22 struct Conv2DOptions;
23 
24 struct Pool2DOptions;
25 
26 struct DepthwiseConv2DOptions;
27 
28 struct ConcatEmbeddingsOptions;
29 
30 struct LSHProjectionOptions;
31 
32 struct SVDFOptions;
33 
34 struct RNNOptions;
35 
36 struct SequenceRNNOptions;
37 
38 struct BidirectionalSequenceRNNOptions;
39 
40 struct FullyConnectedOptions;
41 
42 struct SoftmaxOptions;
43 
44 struct ConcatenationOptions;
45 
46 struct AddOptions;
47 
48 struct MulOptions;
49 
50 struct L2NormOptions;
51 
52 struct LocalResponseNormalizationOptions;
53 
54 struct LSTMOptions;
55 
56 struct UnidirectionalSequenceLSTMOptions;
57 
58 struct BidirectionalSequenceLSTMOptions;
59 
60 struct ResizeBilinearOptions;
61 
62 struct ResizeNearestNeighborOptions;
63 
64 struct CallOptions;
65 
66 struct PadOptions;
67 
68 struct PadV2Options;
69 
70 struct ReshapeOptions;
71 
72 struct SpaceToBatchNDOptions;
73 
74 struct BatchToSpaceNDOptions;
75 
76 struct SkipGramOptions;
77 
78 struct SpaceToDepthOptions;
79 
80 struct DepthToSpaceOptions;
81 
82 struct SubOptions;
83 
84 struct DivOptions;
85 
86 struct TopKV2Options;
87 
88 struct EmbeddingLookupSparseOptions;
89 
90 struct GatherOptions;
91 
92 struct TransposeOptions;
93 
94 struct ExpOptions;
95 
96 struct CosOptions;
97 
98 struct ReducerOptions;
99 
100 struct SqueezeOptions;
101 
102 struct SplitOptions;
103 
104 struct SplitVOptions;
105 
106 struct StridedSliceOptions;
107 
108 struct LogSoftmaxOptions;
109 
110 struct CastOptions;
111 
112 struct DequantizeOptions;
113 
114 struct MaximumMinimumOptions;
115 
116 struct TileOptions;
117 
118 struct ArgMaxOptions;
119 
120 struct ArgMinOptions;
121 
122 struct GreaterOptions;
123 
124 struct GreaterEqualOptions;
125 
126 struct LessOptions;
127 
128 struct LessEqualOptions;
129 
130 struct NegOptions;
131 
132 struct SelectOptions;
133 
134 struct SliceOptions;
135 
136 struct TransposeConvOptions;
137 
138 struct ExpandDimsOptions;
139 
140 struct SparseToDenseOptions;
141 
142 struct EqualOptions;
143 
144 struct NotEqualOptions;
145 
146 struct ShapeOptions;
147 
148 struct RankOptions;
149 
150 struct PowOptions;
151 
152 struct FakeQuantOptions;
153 
154 struct PackOptions;
155 
156 struct LogicalOrOptions;
157 
158 struct OneHotOptions;
159 
160 struct AbsOptions;
161 
162 struct HardSwishOptions;
163 
164 struct LogicalAndOptions;
165 
166 struct LogicalNotOptions;
167 
168 struct UnpackOptions;
169 
170 struct FloorDivOptions;
171 
172 struct SquareOptions;
173 
174 struct ZerosLikeOptions;
175 
176 struct FillOptions;
177 
178 struct FloorModOptions;
179 
180 struct RangeOptions;
181 
182 struct LeakyReluOptions;
183 
184 struct SquaredDifferenceOptions;
185 
186 struct MirrorPadOptions;
187 
188 struct UniqueOptions;
189 
190 struct ReverseV2Options;
191 
192 struct AddNOptions;
193 
194 struct GatherNdOptions;
195 
196 struct WhereOptions;
197 
198 struct ReverseSequenceOptions;
199 
200 struct MatrixDiagOptions;
201 
202 struct QuantizeOptions;
203 
204 struct MatrixSetDiagOptions;
205 
206 struct IfOptions;
207 
208 struct WhileOptions;
209 
210 struct NonMaxSuppressionV4Options;
211 
212 struct NonMaxSuppressionV5Options;
213 
214 struct ScatterNdOptions;
215 
216 struct SelectV2Options;
217 
218 struct DensifyOptions;
219 
220 struct OperatorCode;
221 
222 struct Operator;
223 
224 struct SubGraph;
225 
226 struct Buffer;
227 
228 struct Metadata;
229 
230 struct Model;
231 
232 enum TensorType {
233   TensorType_FLOAT32 = 0,
234   TensorType_FLOAT16 = 1,
235   TensorType_INT32 = 2,
236   TensorType_UINT8 = 3,
237   TensorType_INT64 = 4,
238   TensorType_STRING = 5,
239   TensorType_BOOL = 6,
240   TensorType_INT16 = 7,
241   TensorType_COMPLEX64 = 8,
242   TensorType_INT8 = 9,
243   TensorType_MIN = TensorType_FLOAT32,
244   TensorType_MAX = TensorType_INT8
245 };
246 
EnumValuesTensorType()247 inline const TensorType (&EnumValuesTensorType())[10] {
248   static const TensorType values[] = {
249     TensorType_FLOAT32,
250     TensorType_FLOAT16,
251     TensorType_INT32,
252     TensorType_UINT8,
253     TensorType_INT64,
254     TensorType_STRING,
255     TensorType_BOOL,
256     TensorType_INT16,
257     TensorType_COMPLEX64,
258     TensorType_INT8
259   };
260   return values;
261 }
262 
EnumNamesTensorType()263 inline const char * const *EnumNamesTensorType() {
264   static const char * const names[11] = {
265     "FLOAT32",
266     "FLOAT16",
267     "INT32",
268     "UINT8",
269     "INT64",
270     "STRING",
271     "BOOL",
272     "INT16",
273     "COMPLEX64",
274     "INT8",
275     nullptr
276   };
277   return names;
278 }
279 
EnumNameTensorType(TensorType e)280 inline const char *EnumNameTensorType(TensorType e) {
281   if (flatbuffers::IsOutRange(e, TensorType_FLOAT32, TensorType_INT8)) return "";
282   const size_t index = static_cast<size_t>(e);
283   return EnumNamesTensorType()[index];
284 }
285 
286 enum QuantizationDetails {
287   QuantizationDetails_NONE = 0,
288   QuantizationDetails_CustomQuantization = 1,
289   QuantizationDetails_MIN = QuantizationDetails_NONE,
290   QuantizationDetails_MAX = QuantizationDetails_CustomQuantization
291 };
292 
EnumValuesQuantizationDetails()293 inline const QuantizationDetails (&EnumValuesQuantizationDetails())[2] {
294   static const QuantizationDetails values[] = {
295     QuantizationDetails_NONE,
296     QuantizationDetails_CustomQuantization
297   };
298   return values;
299 }
300 
EnumNamesQuantizationDetails()301 inline const char * const *EnumNamesQuantizationDetails() {
302   static const char * const names[3] = {
303     "NONE",
304     "CustomQuantization",
305     nullptr
306   };
307   return names;
308 }
309 
EnumNameQuantizationDetails(QuantizationDetails e)310 inline const char *EnumNameQuantizationDetails(QuantizationDetails e) {
311   if (flatbuffers::IsOutRange(e, QuantizationDetails_NONE, QuantizationDetails_CustomQuantization)) return "";
312   const size_t index = static_cast<size_t>(e);
313   return EnumNamesQuantizationDetails()[index];
314 }
315 
316 template<typename T> struct QuantizationDetailsTraits {
317   static const QuantizationDetails enum_value = QuantizationDetails_NONE;
318 };
319 
320 template<> struct QuantizationDetailsTraits<tflite::CustomQuantization> {
321   static const QuantizationDetails enum_value = QuantizationDetails_CustomQuantization;
322 };
323 
324 bool VerifyQuantizationDetails(flatbuffers::Verifier &verifier, const void *obj, QuantizationDetails type);
325 bool VerifyQuantizationDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
326 
327 enum DimensionType {
328   DimensionType_DENSE = 0,
329   DimensionType_SPARSE_CSR = 1,
330   DimensionType_MIN = DimensionType_DENSE,
331   DimensionType_MAX = DimensionType_SPARSE_CSR
332 };
333 
334 inline const DimensionType (&EnumValuesDimensionType())[2] {
335   static const DimensionType values[] = {
336     DimensionType_DENSE,
337     DimensionType_SPARSE_CSR
338   };
339   return values;
340 }
341 
342 inline const char * const *EnumNamesDimensionType() {
343   static const char * const names[3] = {
344     "DENSE",
345     "SPARSE_CSR",
346     nullptr
347   };
348   return names;
349 }
350 
351 inline const char *EnumNameDimensionType(DimensionType e) {
352   if (flatbuffers::IsOutRange(e, DimensionType_DENSE, DimensionType_SPARSE_CSR)) return "";
353   const size_t index = static_cast<size_t>(e);
354   return EnumNamesDimensionType()[index];
355 }
356 
357 enum BuiltinOperator {
358   BuiltinOperator_ADD = 0,
359   BuiltinOperator_AVERAGE_POOL_2D = 1,
360   BuiltinOperator_CONCATENATION = 2,
361   BuiltinOperator_CONV_2D = 3,
362   BuiltinOperator_DEPTHWISE_CONV_2D = 4,
363   BuiltinOperator_DEPTH_TO_SPACE = 5,
364   BuiltinOperator_DEQUANTIZE = 6,
365   BuiltinOperator_EMBEDDING_LOOKUP = 7,
366   BuiltinOperator_FLOOR = 8,
367   BuiltinOperator_FULLY_CONNECTED = 9,
368   BuiltinOperator_HASHTABLE_LOOKUP = 10,
369   BuiltinOperator_L2_NORMALIZATION = 11,
370   BuiltinOperator_L2_POOL_2D = 12,
371   BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION = 13,
372   BuiltinOperator_LOGISTIC = 14,
373   BuiltinOperator_LSH_PROJECTION = 15,
374   BuiltinOperator_LSTM = 16,
375   BuiltinOperator_MAX_POOL_2D = 17,
376   BuiltinOperator_MUL = 18,
377   BuiltinOperator_RELU = 19,
378   BuiltinOperator_RELU_N1_TO_1 = 20,
379   BuiltinOperator_RELU6 = 21,
380   BuiltinOperator_RESHAPE = 22,
381   BuiltinOperator_RESIZE_BILINEAR = 23,
382   BuiltinOperator_RNN = 24,
383   BuiltinOperator_SOFTMAX = 25,
384   BuiltinOperator_SPACE_TO_DEPTH = 26,
385   BuiltinOperator_SVDF = 27,
386   BuiltinOperator_TANH = 28,
387   BuiltinOperator_CONCAT_EMBEDDINGS = 29,
388   BuiltinOperator_SKIP_GRAM = 30,
389   BuiltinOperator_CALL = 31,
390   BuiltinOperator_CUSTOM = 32,
391   BuiltinOperator_EMBEDDING_LOOKUP_SPARSE = 33,
392   BuiltinOperator_PAD = 34,
393   BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN = 35,
394   BuiltinOperator_GATHER = 36,
395   BuiltinOperator_BATCH_TO_SPACE_ND = 37,
396   BuiltinOperator_SPACE_TO_BATCH_ND = 38,
397   BuiltinOperator_TRANSPOSE = 39,
398   BuiltinOperator_MEAN = 40,
399   BuiltinOperator_SUB = 41,
400   BuiltinOperator_DIV = 42,
401   BuiltinOperator_SQUEEZE = 43,
402   BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM = 44,
403   BuiltinOperator_STRIDED_SLICE = 45,
404   BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN = 46,
405   BuiltinOperator_EXP = 47,
406   BuiltinOperator_TOPK_V2 = 48,
407   BuiltinOperator_SPLIT = 49,
408   BuiltinOperator_LOG_SOFTMAX = 50,
409   BuiltinOperator_DELEGATE = 51,
410   BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM = 52,
411   BuiltinOperator_CAST = 53,
412   BuiltinOperator_PRELU = 54,
413   BuiltinOperator_MAXIMUM = 55,
414   BuiltinOperator_ARG_MAX = 56,
415   BuiltinOperator_MINIMUM = 57,
416   BuiltinOperator_LESS = 58,
417   BuiltinOperator_NEG = 59,
418   BuiltinOperator_PADV2 = 60,
419   BuiltinOperator_GREATER = 61,
420   BuiltinOperator_GREATER_EQUAL = 62,
421   BuiltinOperator_LESS_EQUAL = 63,
422   BuiltinOperator_SELECT = 64,
423   BuiltinOperator_SLICE = 65,
424   BuiltinOperator_SIN = 66,
425   BuiltinOperator_TRANSPOSE_CONV = 67,
426   BuiltinOperator_SPARSE_TO_DENSE = 68,
427   BuiltinOperator_TILE = 69,
428   BuiltinOperator_EXPAND_DIMS = 70,
429   BuiltinOperator_EQUAL = 71,
430   BuiltinOperator_NOT_EQUAL = 72,
431   BuiltinOperator_LOG = 73,
432   BuiltinOperator_SUM = 74,
433   BuiltinOperator_SQRT = 75,
434   BuiltinOperator_RSQRT = 76,
435   BuiltinOperator_SHAPE = 77,
436   BuiltinOperator_POW = 78,
437   BuiltinOperator_ARG_MIN = 79,
438   BuiltinOperator_FAKE_QUANT = 80,
439   BuiltinOperator_REDUCE_PROD = 81,
440   BuiltinOperator_REDUCE_MAX = 82,
441   BuiltinOperator_PACK = 83,
442   BuiltinOperator_LOGICAL_OR = 84,
443   BuiltinOperator_ONE_HOT = 85,
444   BuiltinOperator_LOGICAL_AND = 86,
445   BuiltinOperator_LOGICAL_NOT = 87,
446   BuiltinOperator_UNPACK = 88,
447   BuiltinOperator_REDUCE_MIN = 89,
448   BuiltinOperator_FLOOR_DIV = 90,
449   BuiltinOperator_REDUCE_ANY = 91,
450   BuiltinOperator_SQUARE = 92,
451   BuiltinOperator_ZEROS_LIKE = 93,
452   BuiltinOperator_FILL = 94,
453   BuiltinOperator_FLOOR_MOD = 95,
454   BuiltinOperator_RANGE = 96,
455   BuiltinOperator_RESIZE_NEAREST_NEIGHBOR = 97,
456   BuiltinOperator_LEAKY_RELU = 98,
457   BuiltinOperator_SQUARED_DIFFERENCE = 99,
458   BuiltinOperator_MIRROR_PAD = 100,
459   BuiltinOperator_ABS = 101,
460   BuiltinOperator_SPLIT_V = 102,
461   BuiltinOperator_UNIQUE = 103,
462   BuiltinOperator_CEIL = 104,
463   BuiltinOperator_REVERSE_V2 = 105,
464   BuiltinOperator_ADD_N = 106,
465   BuiltinOperator_GATHER_ND = 107,
466   BuiltinOperator_COS = 108,
467   BuiltinOperator_WHERE = 109,
468   BuiltinOperator_RANK = 110,
469   BuiltinOperator_ELU = 111,
470   BuiltinOperator_REVERSE_SEQUENCE = 112,
471   BuiltinOperator_MATRIX_DIAG = 113,
472   BuiltinOperator_QUANTIZE = 114,
473   BuiltinOperator_MATRIX_SET_DIAG = 115,
474   BuiltinOperator_ROUND = 116,
475   BuiltinOperator_HARD_SWISH = 117,
476   BuiltinOperator_IF = 118,
477   BuiltinOperator_WHILE = 119,
478   BuiltinOperator_NON_MAX_SUPPRESSION_V4 = 120,
479   BuiltinOperator_NON_MAX_SUPPRESSION_V5 = 121,
480   BuiltinOperator_SCATTER_ND = 122,
481   BuiltinOperator_SELECT_V2 = 123,
482   BuiltinOperator_DENSIFY = 124,
483   BuiltinOperator_MIN = BuiltinOperator_ADD,
484   BuiltinOperator_MAX = BuiltinOperator_DENSIFY
485 };
486 
487 inline const BuiltinOperator (&EnumValuesBuiltinOperator())[125] {
488   static const BuiltinOperator values[] = {
489     BuiltinOperator_ADD,
490     BuiltinOperator_AVERAGE_POOL_2D,
491     BuiltinOperator_CONCATENATION,
492     BuiltinOperator_CONV_2D,
493     BuiltinOperator_DEPTHWISE_CONV_2D,
494     BuiltinOperator_DEPTH_TO_SPACE,
495     BuiltinOperator_DEQUANTIZE,
496     BuiltinOperator_EMBEDDING_LOOKUP,
497     BuiltinOperator_FLOOR,
498     BuiltinOperator_FULLY_CONNECTED,
499     BuiltinOperator_HASHTABLE_LOOKUP,
500     BuiltinOperator_L2_NORMALIZATION,
501     BuiltinOperator_L2_POOL_2D,
502     BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION,
503     BuiltinOperator_LOGISTIC,
504     BuiltinOperator_LSH_PROJECTION,
505     BuiltinOperator_LSTM,
506     BuiltinOperator_MAX_POOL_2D,
507     BuiltinOperator_MUL,
508     BuiltinOperator_RELU,
509     BuiltinOperator_RELU_N1_TO_1,
510     BuiltinOperator_RELU6,
511     BuiltinOperator_RESHAPE,
512     BuiltinOperator_RESIZE_BILINEAR,
513     BuiltinOperator_RNN,
514     BuiltinOperator_SOFTMAX,
515     BuiltinOperator_SPACE_TO_DEPTH,
516     BuiltinOperator_SVDF,
517     BuiltinOperator_TANH,
518     BuiltinOperator_CONCAT_EMBEDDINGS,
519     BuiltinOperator_SKIP_GRAM,
520     BuiltinOperator_CALL,
521     BuiltinOperator_CUSTOM,
522     BuiltinOperator_EMBEDDING_LOOKUP_SPARSE,
523     BuiltinOperator_PAD,
524     BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN,
525     BuiltinOperator_GATHER,
526     BuiltinOperator_BATCH_TO_SPACE_ND,
527     BuiltinOperator_SPACE_TO_BATCH_ND,
528     BuiltinOperator_TRANSPOSE,
529     BuiltinOperator_MEAN,
530     BuiltinOperator_SUB,
531     BuiltinOperator_DIV,
532     BuiltinOperator_SQUEEZE,
533     BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM,
534     BuiltinOperator_STRIDED_SLICE,
535     BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN,
536     BuiltinOperator_EXP,
537     BuiltinOperator_TOPK_V2,
538     BuiltinOperator_SPLIT,
539     BuiltinOperator_LOG_SOFTMAX,
540     BuiltinOperator_DELEGATE,
541     BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM,
542     BuiltinOperator_CAST,
543     BuiltinOperator_PRELU,
544     BuiltinOperator_MAXIMUM,
545     BuiltinOperator_ARG_MAX,
546     BuiltinOperator_MINIMUM,
547     BuiltinOperator_LESS,
548     BuiltinOperator_NEG,
549     BuiltinOperator_PADV2,
550     BuiltinOperator_GREATER,
551     BuiltinOperator_GREATER_EQUAL,
552     BuiltinOperator_LESS_EQUAL,
553     BuiltinOperator_SELECT,
554     BuiltinOperator_SLICE,
555     BuiltinOperator_SIN,
556     BuiltinOperator_TRANSPOSE_CONV,
557     BuiltinOperator_SPARSE_TO_DENSE,
558     BuiltinOperator_TILE,
559     BuiltinOperator_EXPAND_DIMS,
560     BuiltinOperator_EQUAL,
561     BuiltinOperator_NOT_EQUAL,
562     BuiltinOperator_LOG,
563     BuiltinOperator_SUM,
564     BuiltinOperator_SQRT,
565     BuiltinOperator_RSQRT,
566     BuiltinOperator_SHAPE,
567     BuiltinOperator_POW,
568     BuiltinOperator_ARG_MIN,
569     BuiltinOperator_FAKE_QUANT,
570     BuiltinOperator_REDUCE_PROD,
571     BuiltinOperator_REDUCE_MAX,
572     BuiltinOperator_PACK,
573     BuiltinOperator_LOGICAL_OR,
574     BuiltinOperator_ONE_HOT,
575     BuiltinOperator_LOGICAL_AND,
576     BuiltinOperator_LOGICAL_NOT,
577     BuiltinOperator_UNPACK,
578     BuiltinOperator_REDUCE_MIN,
579     BuiltinOperator_FLOOR_DIV,
580     BuiltinOperator_REDUCE_ANY,
581     BuiltinOperator_SQUARE,
582     BuiltinOperator_ZEROS_LIKE,
583     BuiltinOperator_FILL,
584     BuiltinOperator_FLOOR_MOD,
585     BuiltinOperator_RANGE,
586     BuiltinOperator_RESIZE_NEAREST_NEIGHBOR,
587     BuiltinOperator_LEAKY_RELU,
588     BuiltinOperator_SQUARED_DIFFERENCE,
589     BuiltinOperator_MIRROR_PAD,
590     BuiltinOperator_ABS,
591     BuiltinOperator_SPLIT_V,
592     BuiltinOperator_UNIQUE,
593     BuiltinOperator_CEIL,
594     BuiltinOperator_REVERSE_V2,
595     BuiltinOperator_ADD_N,
596     BuiltinOperator_GATHER_ND,
597     BuiltinOperator_COS,
598     BuiltinOperator_WHERE,
599     BuiltinOperator_RANK,
600     BuiltinOperator_ELU,
601     BuiltinOperator_REVERSE_SEQUENCE,
602     BuiltinOperator_MATRIX_DIAG,
603     BuiltinOperator_QUANTIZE,
604     BuiltinOperator_MATRIX_SET_DIAG,
605     BuiltinOperator_ROUND,
606     BuiltinOperator_HARD_SWISH,
607     BuiltinOperator_IF,
608     BuiltinOperator_WHILE,
609     BuiltinOperator_NON_MAX_SUPPRESSION_V4,
610     BuiltinOperator_NON_MAX_SUPPRESSION_V5,
611     BuiltinOperator_SCATTER_ND,
612     BuiltinOperator_SELECT_V2,
613     BuiltinOperator_DENSIFY
614   };
615   return values;
616 }
617 
618 inline const char * const *EnumNamesBuiltinOperator() {
619   static const char * const names[126] = {
620     "ADD",
621     "AVERAGE_POOL_2D",
622     "CONCATENATION",
623     "CONV_2D",
624     "DEPTHWISE_CONV_2D",
625     "DEPTH_TO_SPACE",
626     "DEQUANTIZE",
627     "EMBEDDING_LOOKUP",
628     "FLOOR",
629     "FULLY_CONNECTED",
630     "HASHTABLE_LOOKUP",
631     "L2_NORMALIZATION",
632     "L2_POOL_2D",
633     "LOCAL_RESPONSE_NORMALIZATION",
634     "LOGISTIC",
635     "LSH_PROJECTION",
636     "LSTM",
637     "MAX_POOL_2D",
638     "MUL",
639     "RELU",
640     "RELU_N1_TO_1",
641     "RELU6",
642     "RESHAPE",
643     "RESIZE_BILINEAR",
644     "RNN",
645     "SOFTMAX",
646     "SPACE_TO_DEPTH",
647     "SVDF",
648     "TANH",
649     "CONCAT_EMBEDDINGS",
650     "SKIP_GRAM",
651     "CALL",
652     "CUSTOM",
653     "EMBEDDING_LOOKUP_SPARSE",
654     "PAD",
655     "UNIDIRECTIONAL_SEQUENCE_RNN",
656     "GATHER",
657     "BATCH_TO_SPACE_ND",
658     "SPACE_TO_BATCH_ND",
659     "TRANSPOSE",
660     "MEAN",
661     "SUB",
662     "DIV",
663     "SQUEEZE",
664     "UNIDIRECTIONAL_SEQUENCE_LSTM",
665     "STRIDED_SLICE",
666     "BIDIRECTIONAL_SEQUENCE_RNN",
667     "EXP",
668     "TOPK_V2",
669     "SPLIT",
670     "LOG_SOFTMAX",
671     "DELEGATE",
672     "BIDIRECTIONAL_SEQUENCE_LSTM",
673     "CAST",
674     "PRELU",
675     "MAXIMUM",
676     "ARG_MAX",
677     "MINIMUM",
678     "LESS",
679     "NEG",
680     "PADV2",
681     "GREATER",
682     "GREATER_EQUAL",
683     "LESS_EQUAL",
684     "SELECT",
685     "SLICE",
686     "SIN",
687     "TRANSPOSE_CONV",
688     "SPARSE_TO_DENSE",
689     "TILE",
690     "EXPAND_DIMS",
691     "EQUAL",
692     "NOT_EQUAL",
693     "LOG",
694     "SUM",
695     "SQRT",
696     "RSQRT",
697     "SHAPE",
698     "POW",
699     "ARG_MIN",
700     "FAKE_QUANT",
701     "REDUCE_PROD",
702     "REDUCE_MAX",
703     "PACK",
704     "LOGICAL_OR",
705     "ONE_HOT",
706     "LOGICAL_AND",
707     "LOGICAL_NOT",
708     "UNPACK",
709     "REDUCE_MIN",
710     "FLOOR_DIV",
711     "REDUCE_ANY",
712     "SQUARE",
713     "ZEROS_LIKE",
714     "FILL",
715     "FLOOR_MOD",
716     "RANGE",
717     "RESIZE_NEAREST_NEIGHBOR",
718     "LEAKY_RELU",
719     "SQUARED_DIFFERENCE",
720     "MIRROR_PAD",
721     "ABS",
722     "SPLIT_V",
723     "UNIQUE",
724     "CEIL",
725     "REVERSE_V2",
726     "ADD_N",
727     "GATHER_ND",
728     "COS",
729     "WHERE",
730     "RANK",
731     "ELU",
732     "REVERSE_SEQUENCE",
733     "MATRIX_DIAG",
734     "QUANTIZE",
735     "MATRIX_SET_DIAG",
736     "ROUND",
737     "HARD_SWISH",
738     "IF",
739     "WHILE",
740     "NON_MAX_SUPPRESSION_V4",
741     "NON_MAX_SUPPRESSION_V5",
742     "SCATTER_ND",
743     "SELECT_V2",
744     "DENSIFY",
745     nullptr
746   };
747   return names;
748 }
749 
750 inline const char *EnumNameBuiltinOperator(BuiltinOperator e) {
751   if (flatbuffers::IsOutRange(e, BuiltinOperator_ADD, BuiltinOperator_DENSIFY)) return "";
752   const size_t index = static_cast<size_t>(e);
753   return EnumNamesBuiltinOperator()[index];
754 }
755 
756 enum BuiltinOptions {
757   BuiltinOptions_NONE = 0,
758   BuiltinOptions_Conv2DOptions = 1,
759   BuiltinOptions_DepthwiseConv2DOptions = 2,
760   BuiltinOptions_ConcatEmbeddingsOptions = 3,
761   BuiltinOptions_LSHProjectionOptions = 4,
762   BuiltinOptions_Pool2DOptions = 5,
763   BuiltinOptions_SVDFOptions = 6,
764   BuiltinOptions_RNNOptions = 7,
765   BuiltinOptions_FullyConnectedOptions = 8,
766   BuiltinOptions_SoftmaxOptions = 9,
767   BuiltinOptions_ConcatenationOptions = 10,
768   BuiltinOptions_AddOptions = 11,
769   BuiltinOptions_L2NormOptions = 12,
770   BuiltinOptions_LocalResponseNormalizationOptions = 13,
771   BuiltinOptions_LSTMOptions = 14,
772   BuiltinOptions_ResizeBilinearOptions = 15,
773   BuiltinOptions_CallOptions = 16,
774   BuiltinOptions_ReshapeOptions = 17,
775   BuiltinOptions_SkipGramOptions = 18,
776   BuiltinOptions_SpaceToDepthOptions = 19,
777   BuiltinOptions_EmbeddingLookupSparseOptions = 20,
778   BuiltinOptions_MulOptions = 21,
779   BuiltinOptions_PadOptions = 22,
780   BuiltinOptions_GatherOptions = 23,
781   BuiltinOptions_BatchToSpaceNDOptions = 24,
782   BuiltinOptions_SpaceToBatchNDOptions = 25,
783   BuiltinOptions_TransposeOptions = 26,
784   BuiltinOptions_ReducerOptions = 27,
785   BuiltinOptions_SubOptions = 28,
786   BuiltinOptions_DivOptions = 29,
787   BuiltinOptions_SqueezeOptions = 30,
788   BuiltinOptions_SequenceRNNOptions = 31,
789   BuiltinOptions_StridedSliceOptions = 32,
790   BuiltinOptions_ExpOptions = 33,
791   BuiltinOptions_TopKV2Options = 34,
792   BuiltinOptions_SplitOptions = 35,
793   BuiltinOptions_LogSoftmaxOptions = 36,
794   BuiltinOptions_CastOptions = 37,
795   BuiltinOptions_DequantizeOptions = 38,
796   BuiltinOptions_MaximumMinimumOptions = 39,
797   BuiltinOptions_ArgMaxOptions = 40,
798   BuiltinOptions_LessOptions = 41,
799   BuiltinOptions_NegOptions = 42,
800   BuiltinOptions_PadV2Options = 43,
801   BuiltinOptions_GreaterOptions = 44,
802   BuiltinOptions_GreaterEqualOptions = 45,
803   BuiltinOptions_LessEqualOptions = 46,
804   BuiltinOptions_SelectOptions = 47,
805   BuiltinOptions_SliceOptions = 48,
806   BuiltinOptions_TransposeConvOptions = 49,
807   BuiltinOptions_SparseToDenseOptions = 50,
808   BuiltinOptions_TileOptions = 51,
809   BuiltinOptions_ExpandDimsOptions = 52,
810   BuiltinOptions_EqualOptions = 53,
811   BuiltinOptions_NotEqualOptions = 54,
812   BuiltinOptions_ShapeOptions = 55,
813   BuiltinOptions_PowOptions = 56,
814   BuiltinOptions_ArgMinOptions = 57,
815   BuiltinOptions_FakeQuantOptions = 58,
816   BuiltinOptions_PackOptions = 59,
817   BuiltinOptions_LogicalOrOptions = 60,
818   BuiltinOptions_OneHotOptions = 61,
819   BuiltinOptions_LogicalAndOptions = 62,
820   BuiltinOptions_LogicalNotOptions = 63,
821   BuiltinOptions_UnpackOptions = 64,
822   BuiltinOptions_FloorDivOptions = 65,
823   BuiltinOptions_SquareOptions = 66,
824   BuiltinOptions_ZerosLikeOptions = 67,
825   BuiltinOptions_FillOptions = 68,
826   BuiltinOptions_BidirectionalSequenceLSTMOptions = 69,
827   BuiltinOptions_BidirectionalSequenceRNNOptions = 70,
828   BuiltinOptions_UnidirectionalSequenceLSTMOptions = 71,
829   BuiltinOptions_FloorModOptions = 72,
830   BuiltinOptions_RangeOptions = 73,
831   BuiltinOptions_ResizeNearestNeighborOptions = 74,
832   BuiltinOptions_LeakyReluOptions = 75,
833   BuiltinOptions_SquaredDifferenceOptions = 76,
834   BuiltinOptions_MirrorPadOptions = 77,
835   BuiltinOptions_AbsOptions = 78,
836   BuiltinOptions_SplitVOptions = 79,
837   BuiltinOptions_UniqueOptions = 80,
838   BuiltinOptions_ReverseV2Options = 81,
839   BuiltinOptions_AddNOptions = 82,
840   BuiltinOptions_GatherNdOptions = 83,
841   BuiltinOptions_CosOptions = 84,
842   BuiltinOptions_WhereOptions = 85,
843   BuiltinOptions_RankOptions = 86,
844   BuiltinOptions_ReverseSequenceOptions = 87,
845   BuiltinOptions_MatrixDiagOptions = 88,
846   BuiltinOptions_QuantizeOptions = 89,
847   BuiltinOptions_MatrixSetDiagOptions = 90,
848   BuiltinOptions_HardSwishOptions = 91,
849   BuiltinOptions_IfOptions = 92,
850   BuiltinOptions_WhileOptions = 93,
851   BuiltinOptions_DepthToSpaceOptions = 94,
852   BuiltinOptions_NonMaxSuppressionV4Options = 95,
853   BuiltinOptions_NonMaxSuppressionV5Options = 96,
854   BuiltinOptions_ScatterNdOptions = 97,
855   BuiltinOptions_SelectV2Options = 98,
856   BuiltinOptions_DensifyOptions = 99,
857   BuiltinOptions_MIN = BuiltinOptions_NONE,
858   BuiltinOptions_MAX = BuiltinOptions_DensifyOptions
859 };
860 
861 inline const BuiltinOptions (&EnumValuesBuiltinOptions())[100] {
862   static const BuiltinOptions values[] = {
863     BuiltinOptions_NONE,
864     BuiltinOptions_Conv2DOptions,
865     BuiltinOptions_DepthwiseConv2DOptions,
866     BuiltinOptions_ConcatEmbeddingsOptions,
867     BuiltinOptions_LSHProjectionOptions,
868     BuiltinOptions_Pool2DOptions,
869     BuiltinOptions_SVDFOptions,
870     BuiltinOptions_RNNOptions,
871     BuiltinOptions_FullyConnectedOptions,
872     BuiltinOptions_SoftmaxOptions,
873     BuiltinOptions_ConcatenationOptions,
874     BuiltinOptions_AddOptions,
875     BuiltinOptions_L2NormOptions,
876     BuiltinOptions_LocalResponseNormalizationOptions,
877     BuiltinOptions_LSTMOptions,
878     BuiltinOptions_ResizeBilinearOptions,
879     BuiltinOptions_CallOptions,
880     BuiltinOptions_ReshapeOptions,
881     BuiltinOptions_SkipGramOptions,
882     BuiltinOptions_SpaceToDepthOptions,
883     BuiltinOptions_EmbeddingLookupSparseOptions,
884     BuiltinOptions_MulOptions,
885     BuiltinOptions_PadOptions,
886     BuiltinOptions_GatherOptions,
887     BuiltinOptions_BatchToSpaceNDOptions,
888     BuiltinOptions_SpaceToBatchNDOptions,
889     BuiltinOptions_TransposeOptions,
890     BuiltinOptions_ReducerOptions,
891     BuiltinOptions_SubOptions,
892     BuiltinOptions_DivOptions,
893     BuiltinOptions_SqueezeOptions,
894     BuiltinOptions_SequenceRNNOptions,
895     BuiltinOptions_StridedSliceOptions,
896     BuiltinOptions_ExpOptions,
897     BuiltinOptions_TopKV2Options,
898     BuiltinOptions_SplitOptions,
899     BuiltinOptions_LogSoftmaxOptions,
900     BuiltinOptions_CastOptions,
901     BuiltinOptions_DequantizeOptions,
902     BuiltinOptions_MaximumMinimumOptions,
903     BuiltinOptions_ArgMaxOptions,
904     BuiltinOptions_LessOptions,
905     BuiltinOptions_NegOptions,
906     BuiltinOptions_PadV2Options,
907     BuiltinOptions_GreaterOptions,
908     BuiltinOptions_GreaterEqualOptions,
909     BuiltinOptions_LessEqualOptions,
910     BuiltinOptions_SelectOptions,
911     BuiltinOptions_SliceOptions,
912     BuiltinOptions_TransposeConvOptions,
913     BuiltinOptions_SparseToDenseOptions,
914     BuiltinOptions_TileOptions,
915     BuiltinOptions_ExpandDimsOptions,
916     BuiltinOptions_EqualOptions,
917     BuiltinOptions_NotEqualOptions,
918     BuiltinOptions_ShapeOptions,
919     BuiltinOptions_PowOptions,
920     BuiltinOptions_ArgMinOptions,
921     BuiltinOptions_FakeQuantOptions,
922     BuiltinOptions_PackOptions,
923     BuiltinOptions_LogicalOrOptions,
924     BuiltinOptions_OneHotOptions,
925     BuiltinOptions_LogicalAndOptions,
926     BuiltinOptions_LogicalNotOptions,
927     BuiltinOptions_UnpackOptions,
928     BuiltinOptions_FloorDivOptions,
929     BuiltinOptions_SquareOptions,
930     BuiltinOptions_ZerosLikeOptions,
931     BuiltinOptions_FillOptions,
932     BuiltinOptions_BidirectionalSequenceLSTMOptions,
933     BuiltinOptions_BidirectionalSequenceRNNOptions,
934     BuiltinOptions_UnidirectionalSequenceLSTMOptions,
935     BuiltinOptions_FloorModOptions,
936     BuiltinOptions_RangeOptions,
937     BuiltinOptions_ResizeNearestNeighborOptions,
938     BuiltinOptions_LeakyReluOptions,
939     BuiltinOptions_SquaredDifferenceOptions,
940     BuiltinOptions_MirrorPadOptions,
941     BuiltinOptions_AbsOptions,
942     BuiltinOptions_SplitVOptions,
943     BuiltinOptions_UniqueOptions,
944     BuiltinOptions_ReverseV2Options,
945     BuiltinOptions_AddNOptions,
946     BuiltinOptions_GatherNdOptions,
947     BuiltinOptions_CosOptions,
948     BuiltinOptions_WhereOptions,
949     BuiltinOptions_RankOptions,
950     BuiltinOptions_ReverseSequenceOptions,
951     BuiltinOptions_MatrixDiagOptions,
952     BuiltinOptions_QuantizeOptions,
953     BuiltinOptions_MatrixSetDiagOptions,
954     BuiltinOptions_HardSwishOptions,
955     BuiltinOptions_IfOptions,
956     BuiltinOptions_WhileOptions,
957     BuiltinOptions_DepthToSpaceOptions,
958     BuiltinOptions_NonMaxSuppressionV4Options,
959     BuiltinOptions_NonMaxSuppressionV5Options,
960     BuiltinOptions_ScatterNdOptions,
961     BuiltinOptions_SelectV2Options,
962     BuiltinOptions_DensifyOptions
963   };
964   return values;
965 }
966 
967 inline const char * const *EnumNamesBuiltinOptions() {
968   static const char * const names[101] = {
969     "NONE",
970     "Conv2DOptions",
971     "DepthwiseConv2DOptions",
972     "ConcatEmbeddingsOptions",
973     "LSHProjectionOptions",
974     "Pool2DOptions",
975     "SVDFOptions",
976     "RNNOptions",
977     "FullyConnectedOptions",
978     "SoftmaxOptions",
979     "ConcatenationOptions",
980     "AddOptions",
981     "L2NormOptions",
982     "LocalResponseNormalizationOptions",
983     "LSTMOptions",
984     "ResizeBilinearOptions",
985     "CallOptions",
986     "ReshapeOptions",
987     "SkipGramOptions",
988     "SpaceToDepthOptions",
989     "EmbeddingLookupSparseOptions",
990     "MulOptions",
991     "PadOptions",
992     "GatherOptions",
993     "BatchToSpaceNDOptions",
994     "SpaceToBatchNDOptions",
995     "TransposeOptions",
996     "ReducerOptions",
997     "SubOptions",
998     "DivOptions",
999     "SqueezeOptions",
1000     "SequenceRNNOptions",
1001     "StridedSliceOptions",
1002     "ExpOptions",
1003     "TopKV2Options",
1004     "SplitOptions",
1005     "LogSoftmaxOptions",
1006     "CastOptions",
1007     "DequantizeOptions",
1008     "MaximumMinimumOptions",
1009     "ArgMaxOptions",
1010     "LessOptions",
1011     "NegOptions",
1012     "PadV2Options",
1013     "GreaterOptions",
1014     "GreaterEqualOptions",
1015     "LessEqualOptions",
1016     "SelectOptions",
1017     "SliceOptions",
1018     "TransposeConvOptions",
1019     "SparseToDenseOptions",
1020     "TileOptions",
1021     "ExpandDimsOptions",
1022     "EqualOptions",
1023     "NotEqualOptions",
1024     "ShapeOptions",
1025     "PowOptions",
1026     "ArgMinOptions",
1027     "FakeQuantOptions",
1028     "PackOptions",
1029     "LogicalOrOptions",
1030     "OneHotOptions",
1031     "LogicalAndOptions",
1032     "LogicalNotOptions",
1033     "UnpackOptions",
1034     "FloorDivOptions",
1035     "SquareOptions",
1036     "ZerosLikeOptions",
1037     "FillOptions",
1038     "BidirectionalSequenceLSTMOptions",
1039     "BidirectionalSequenceRNNOptions",
1040     "UnidirectionalSequenceLSTMOptions",
1041     "FloorModOptions",
1042     "RangeOptions",
1043     "ResizeNearestNeighborOptions",
1044     "LeakyReluOptions",
1045     "SquaredDifferenceOptions",
1046     "MirrorPadOptions",
1047     "AbsOptions",
1048     "SplitVOptions",
1049     "UniqueOptions",
1050     "ReverseV2Options",
1051     "AddNOptions",
1052     "GatherNdOptions",
1053     "CosOptions",
1054     "WhereOptions",
1055     "RankOptions",
1056     "ReverseSequenceOptions",
1057     "MatrixDiagOptions",
1058     "QuantizeOptions",
1059     "MatrixSetDiagOptions",
1060     "HardSwishOptions",
1061     "IfOptions",
1062     "WhileOptions",
1063     "DepthToSpaceOptions",
1064     "NonMaxSuppressionV4Options",
1065     "NonMaxSuppressionV5Options",
1066     "ScatterNdOptions",
1067     "SelectV2Options",
1068     "DensifyOptions",
1069     nullptr
1070   };
1071   return names;
1072 }
1073 
1074 inline const char *EnumNameBuiltinOptions(BuiltinOptions e) {
1075   if (flatbuffers::IsOutRange(e, BuiltinOptions_NONE, BuiltinOptions_DensifyOptions)) return "";
1076   const size_t index = static_cast<size_t>(e);
1077   return EnumNamesBuiltinOptions()[index];
1078 }
1079 
1080 template<typename T> struct BuiltinOptionsTraits {
1081   static const BuiltinOptions enum_value = BuiltinOptions_NONE;
1082 };
1083 
1084 template<> struct BuiltinOptionsTraits<tflite::Conv2DOptions> {
1085   static const BuiltinOptions enum_value = BuiltinOptions_Conv2DOptions;
1086 };
1087 
1088 template<> struct BuiltinOptionsTraits<tflite::DepthwiseConv2DOptions> {
1089   static const BuiltinOptions enum_value = BuiltinOptions_DepthwiseConv2DOptions;
1090 };
1091 
1092 template<> struct BuiltinOptionsTraits<tflite::ConcatEmbeddingsOptions> {
1093   static const BuiltinOptions enum_value = BuiltinOptions_ConcatEmbeddingsOptions;
1094 };
1095 
1096 template<> struct BuiltinOptionsTraits<tflite::LSHProjectionOptions> {
1097   static const BuiltinOptions enum_value = BuiltinOptions_LSHProjectionOptions;
1098 };
1099 
1100 template<> struct BuiltinOptionsTraits<tflite::Pool2DOptions> {
1101   static const BuiltinOptions enum_value = BuiltinOptions_Pool2DOptions;
1102 };
1103 
1104 template<> struct BuiltinOptionsTraits<tflite::SVDFOptions> {
1105   static const BuiltinOptions enum_value = BuiltinOptions_SVDFOptions;
1106 };
1107 
1108 template<> struct BuiltinOptionsTraits<tflite::RNNOptions> {
1109   static const BuiltinOptions enum_value = BuiltinOptions_RNNOptions;
1110 };
1111 
1112 template<> struct BuiltinOptionsTraits<tflite::FullyConnectedOptions> {
1113   static const BuiltinOptions enum_value = BuiltinOptions_FullyConnectedOptions;
1114 };
1115 
1116 template<> struct BuiltinOptionsTraits<tflite::SoftmaxOptions> {
1117   static const BuiltinOptions enum_value = BuiltinOptions_SoftmaxOptions;
1118 };
1119 
1120 template<> struct BuiltinOptionsTraits<tflite::ConcatenationOptions> {
1121   static const BuiltinOptions enum_value = BuiltinOptions_ConcatenationOptions;
1122 };
1123 
1124 template<> struct BuiltinOptionsTraits<tflite::AddOptions> {
1125   static const BuiltinOptions enum_value = BuiltinOptions_AddOptions;
1126 };
1127 
1128 template<> struct BuiltinOptionsTraits<tflite::L2NormOptions> {
1129   static const BuiltinOptions enum_value = BuiltinOptions_L2NormOptions;
1130 };
1131 
1132 template<> struct BuiltinOptionsTraits<tflite::LocalResponseNormalizationOptions> {
1133   static const BuiltinOptions enum_value = BuiltinOptions_LocalResponseNormalizationOptions;
1134 };
1135 
1136 template<> struct BuiltinOptionsTraits<tflite::LSTMOptions> {
1137   static const BuiltinOptions enum_value = BuiltinOptions_LSTMOptions;
1138 };
1139 
1140 template<> struct BuiltinOptionsTraits<tflite::ResizeBilinearOptions> {
1141   static const BuiltinOptions enum_value = BuiltinOptions_ResizeBilinearOptions;
1142 };
1143 
1144 template<> struct BuiltinOptionsTraits<tflite::CallOptions> {
1145   static const BuiltinOptions enum_value = BuiltinOptions_CallOptions;
1146 };
1147 
1148 template<> struct BuiltinOptionsTraits<tflite::ReshapeOptions> {
1149   static const BuiltinOptions enum_value = BuiltinOptions_ReshapeOptions;
1150 };
1151 
1152 template<> struct BuiltinOptionsTraits<tflite::SkipGramOptions> {
1153   static const BuiltinOptions enum_value = BuiltinOptions_SkipGramOptions;
1154 };
1155 
1156 template<> struct BuiltinOptionsTraits<tflite::SpaceToDepthOptions> {
1157   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToDepthOptions;
1158 };
1159 
1160 template<> struct BuiltinOptionsTraits<tflite::EmbeddingLookupSparseOptions> {
1161   static const BuiltinOptions enum_value = BuiltinOptions_EmbeddingLookupSparseOptions;
1162 };
1163 
1164 template<> struct BuiltinOptionsTraits<tflite::MulOptions> {
1165   static const BuiltinOptions enum_value = BuiltinOptions_MulOptions;
1166 };
1167 
1168 template<> struct BuiltinOptionsTraits<tflite::PadOptions> {
1169   static const BuiltinOptions enum_value = BuiltinOptions_PadOptions;
1170 };
1171 
1172 template<> struct BuiltinOptionsTraits<tflite::GatherOptions> {
1173   static const BuiltinOptions enum_value = BuiltinOptions_GatherOptions;
1174 };
1175 
1176 template<> struct BuiltinOptionsTraits<tflite::BatchToSpaceNDOptions> {
1177   static const BuiltinOptions enum_value = BuiltinOptions_BatchToSpaceNDOptions;
1178 };
1179 
1180 template<> struct BuiltinOptionsTraits<tflite::SpaceToBatchNDOptions> {
1181   static const BuiltinOptions enum_value = BuiltinOptions_SpaceToBatchNDOptions;
1182 };
1183 
1184 template<> struct BuiltinOptionsTraits<tflite::TransposeOptions> {
1185   static const BuiltinOptions enum_value = BuiltinOptions_TransposeOptions;
1186 };
1187 
1188 template<> struct BuiltinOptionsTraits<tflite::ReducerOptions> {
1189   static const BuiltinOptions enum_value = BuiltinOptions_ReducerOptions;
1190 };
1191 
1192 template<> struct BuiltinOptionsTraits<tflite::SubOptions> {
1193   static const BuiltinOptions enum_value = BuiltinOptions_SubOptions;
1194 };
1195 
1196 template<> struct BuiltinOptionsTraits<tflite::DivOptions> {
1197   static const BuiltinOptions enum_value = BuiltinOptions_DivOptions;
1198 };
1199 
1200 template<> struct BuiltinOptionsTraits<tflite::SqueezeOptions> {
1201   static const BuiltinOptions enum_value = BuiltinOptions_SqueezeOptions;
1202 };
1203 
1204 template<> struct BuiltinOptionsTraits<tflite::SequenceRNNOptions> {
1205   static const BuiltinOptions enum_value = BuiltinOptions_SequenceRNNOptions;
1206 };
1207 
1208 template<> struct BuiltinOptionsTraits<tflite::StridedSliceOptions> {
1209   static const BuiltinOptions enum_value = BuiltinOptions_StridedSliceOptions;
1210 };
1211 
1212 template<> struct BuiltinOptionsTraits<tflite::ExpOptions> {
1213   static const BuiltinOptions enum_value = BuiltinOptions_ExpOptions;
1214 };
1215 
1216 template<> struct BuiltinOptionsTraits<tflite::TopKV2Options> {
1217   static const BuiltinOptions enum_value = BuiltinOptions_TopKV2Options;
1218 };
1219 
1220 template<> struct BuiltinOptionsTraits<tflite::SplitOptions> {
1221   static const BuiltinOptions enum_value = BuiltinOptions_SplitOptions;
1222 };
1223 
1224 template<> struct BuiltinOptionsTraits<tflite::LogSoftmaxOptions> {
1225   static const BuiltinOptions enum_value = BuiltinOptions_LogSoftmaxOptions;
1226 };
1227 
1228 template<> struct BuiltinOptionsTraits<tflite::CastOptions> {
1229   static const BuiltinOptions enum_value = BuiltinOptions_CastOptions;
1230 };
1231 
1232 template<> struct BuiltinOptionsTraits<tflite::DequantizeOptions> {
1233   static const BuiltinOptions enum_value = BuiltinOptions_DequantizeOptions;
1234 };
1235 
1236 template<> struct BuiltinOptionsTraits<tflite::MaximumMinimumOptions> {
1237   static const BuiltinOptions enum_value = BuiltinOptions_MaximumMinimumOptions;
1238 };
1239 
1240 template<> struct BuiltinOptionsTraits<tflite::ArgMaxOptions> {
1241   static const BuiltinOptions enum_value = BuiltinOptions_ArgMaxOptions;
1242 };
1243 
1244 template<> struct BuiltinOptionsTraits<tflite::LessOptions> {
1245   static const BuiltinOptions enum_value = BuiltinOptions_LessOptions;
1246 };
1247 
1248 template<> struct BuiltinOptionsTraits<tflite::NegOptions> {
1249   static const BuiltinOptions enum_value = BuiltinOptions_NegOptions;
1250 };
1251 
1252 template<> struct BuiltinOptionsTraits<tflite::PadV2Options> {
1253   static const BuiltinOptions enum_value = BuiltinOptions_PadV2Options;
1254 };
1255 
1256 template<> struct BuiltinOptionsTraits<tflite::GreaterOptions> {
1257   static const BuiltinOptions enum_value = BuiltinOptions_GreaterOptions;
1258 };
1259 
1260 template<> struct BuiltinOptionsTraits<tflite::GreaterEqualOptions> {
1261   static const BuiltinOptions enum_value = BuiltinOptions_GreaterEqualOptions;
1262 };
1263 
1264 template<> struct BuiltinOptionsTraits<tflite::LessEqualOptions> {
1265   static const BuiltinOptions enum_value = BuiltinOptions_LessEqualOptions;
1266 };
1267 
1268 template<> struct BuiltinOptionsTraits<tflite::SelectOptions> {
1269   static const BuiltinOptions enum_value = BuiltinOptions_SelectOptions;
1270 };
1271 
1272 template<> struct BuiltinOptionsTraits<tflite::SliceOptions> {
1273   static const BuiltinOptions enum_value = BuiltinOptions_SliceOptions;
1274 };
1275 
1276 template<> struct BuiltinOptionsTraits<tflite::TransposeConvOptions> {
1277   static const BuiltinOptions enum_value = BuiltinOptions_TransposeConvOptions;
1278 };
1279 
1280 template<> struct BuiltinOptionsTraits<tflite::SparseToDenseOptions> {
1281   static const BuiltinOptions enum_value = BuiltinOptions_SparseToDenseOptions;
1282 };
1283 
1284 template<> struct BuiltinOptionsTraits<tflite::TileOptions> {
1285   static const BuiltinOptions enum_value = BuiltinOptions_TileOptions;
1286 };
1287 
1288 template<> struct BuiltinOptionsTraits<tflite::ExpandDimsOptions> {
1289   static const BuiltinOptions enum_value = BuiltinOptions_ExpandDimsOptions;
1290 };
1291 
1292 template<> struct BuiltinOptionsTraits<tflite::EqualOptions> {
1293   static const BuiltinOptions enum_value = BuiltinOptions_EqualOptions;
1294 };
1295 
1296 template<> struct BuiltinOptionsTraits<tflite::NotEqualOptions> {
1297   static const BuiltinOptions enum_value = BuiltinOptions_NotEqualOptions;
1298 };
1299 
1300 template<> struct BuiltinOptionsTraits<tflite::ShapeOptions> {
1301   static const BuiltinOptions enum_value = BuiltinOptions_ShapeOptions;
1302 };
1303 
1304 template<> struct BuiltinOptionsTraits<tflite::PowOptions> {
1305   static const BuiltinOptions enum_value = BuiltinOptions_PowOptions;
1306 };
1307 
1308 template<> struct BuiltinOptionsTraits<tflite::ArgMinOptions> {
1309   static const BuiltinOptions enum_value = BuiltinOptions_ArgMinOptions;
1310 };
1311 
1312 template<> struct BuiltinOptionsTraits<tflite::FakeQuantOptions> {
1313   static const BuiltinOptions enum_value = BuiltinOptions_FakeQuantOptions;
1314 };
1315 
1316 template<> struct BuiltinOptionsTraits<tflite::PackOptions> {
1317   static const BuiltinOptions enum_value = BuiltinOptions_PackOptions;
1318 };
1319 
1320 template<> struct BuiltinOptionsTraits<tflite::LogicalOrOptions> {
1321   static const BuiltinOptions enum_value = BuiltinOptions_LogicalOrOptions;
1322 };
1323 
1324 template<> struct BuiltinOptionsTraits<tflite::OneHotOptions> {
1325   static const BuiltinOptions enum_value = BuiltinOptions_OneHotOptions;
1326 };
1327 
1328 template<> struct BuiltinOptionsTraits<tflite::LogicalAndOptions> {
1329   static const BuiltinOptions enum_value = BuiltinOptions_LogicalAndOptions;
1330 };
1331 
1332 template<> struct BuiltinOptionsTraits<tflite::LogicalNotOptions> {
1333   static const BuiltinOptions enum_value = BuiltinOptions_LogicalNotOptions;
1334 };
1335 
1336 template<> struct BuiltinOptionsTraits<tflite::UnpackOptions> {
1337   static const BuiltinOptions enum_value = BuiltinOptions_UnpackOptions;
1338 };
1339 
1340 template<> struct BuiltinOptionsTraits<tflite::FloorDivOptions> {
1341   static const BuiltinOptions enum_value = BuiltinOptions_FloorDivOptions;
1342 };
1343 
1344 template<> struct BuiltinOptionsTraits<tflite::SquareOptions> {
1345   static const BuiltinOptions enum_value = BuiltinOptions_SquareOptions;
1346 };
1347 
1348 template<> struct BuiltinOptionsTraits<tflite::ZerosLikeOptions> {
1349   static const BuiltinOptions enum_value = BuiltinOptions_ZerosLikeOptions;
1350 };
1351 
1352 template<> struct BuiltinOptionsTraits<tflite::FillOptions> {
1353   static const BuiltinOptions enum_value = BuiltinOptions_FillOptions;
1354 };
1355 
1356 template<> struct BuiltinOptionsTraits<tflite::BidirectionalSequenceLSTMOptions> {
1357   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceLSTMOptions;
1358 };
1359 
1360 template<> struct BuiltinOptionsTraits<tflite::BidirectionalSequenceRNNOptions> {
1361   static const BuiltinOptions enum_value = BuiltinOptions_BidirectionalSequenceRNNOptions;
1362 };
1363 
1364 template<> struct BuiltinOptionsTraits<tflite::UnidirectionalSequenceLSTMOptions> {
1365   static const BuiltinOptions enum_value = BuiltinOptions_UnidirectionalSequenceLSTMOptions;
1366 };
1367 
1368 template<> struct BuiltinOptionsTraits<tflite::FloorModOptions> {
1369   static const BuiltinOptions enum_value = BuiltinOptions_FloorModOptions;
1370 };
1371 
1372 template<> struct BuiltinOptionsTraits<tflite::RangeOptions> {
1373   static const BuiltinOptions enum_value = BuiltinOptions_RangeOptions;
1374 };
1375 
1376 template<> struct BuiltinOptionsTraits<tflite::ResizeNearestNeighborOptions> {
1377   static const BuiltinOptions enum_value = BuiltinOptions_ResizeNearestNeighborOptions;
1378 };
1379 
1380 template<> struct BuiltinOptionsTraits<tflite::LeakyReluOptions> {
1381   static const BuiltinOptions enum_value = BuiltinOptions_LeakyReluOptions;
1382 };
1383 
1384 template<> struct BuiltinOptionsTraits<tflite::SquaredDifferenceOptions> {
1385   static const BuiltinOptions enum_value = BuiltinOptions_SquaredDifferenceOptions;
1386 };
1387 
1388 template<> struct BuiltinOptionsTraits<tflite::MirrorPadOptions> {
1389   static const BuiltinOptions enum_value = BuiltinOptions_MirrorPadOptions;
1390 };
1391 
1392 template<> struct BuiltinOptionsTraits<tflite::AbsOptions> {
1393   static const BuiltinOptions enum_value = BuiltinOptions_AbsOptions;
1394 };
1395 
1396 template<> struct BuiltinOptionsTraits<tflite::SplitVOptions> {
1397   static const BuiltinOptions enum_value = BuiltinOptions_SplitVOptions;
1398 };
1399 
1400 template<> struct BuiltinOptionsTraits<tflite::UniqueOptions> {
1401   static const BuiltinOptions enum_value = BuiltinOptions_UniqueOptions;
1402 };
1403 
1404 template<> struct BuiltinOptionsTraits<tflite::ReverseV2Options> {
1405   static const BuiltinOptions enum_value = BuiltinOptions_ReverseV2Options;
1406 };
1407 
1408 template<> struct BuiltinOptionsTraits<tflite::AddNOptions> {
1409   static const BuiltinOptions enum_value = BuiltinOptions_AddNOptions;
1410 };
1411 
1412 template<> struct BuiltinOptionsTraits<tflite::GatherNdOptions> {
1413   static const BuiltinOptions enum_value = BuiltinOptions_GatherNdOptions;
1414 };
1415 
1416 template<> struct BuiltinOptionsTraits<tflite::CosOptions> {
1417   static const BuiltinOptions enum_value = BuiltinOptions_CosOptions;
1418 };
1419 
1420 template<> struct BuiltinOptionsTraits<tflite::WhereOptions> {
1421   static const BuiltinOptions enum_value = BuiltinOptions_WhereOptions;
1422 };
1423 
1424 template<> struct BuiltinOptionsTraits<tflite::RankOptions> {
1425   static const BuiltinOptions enum_value = BuiltinOptions_RankOptions;
1426 };
1427 
1428 template<> struct BuiltinOptionsTraits<tflite::ReverseSequenceOptions> {
1429   static const BuiltinOptions enum_value = BuiltinOptions_ReverseSequenceOptions;
1430 };
1431 
1432 template<> struct BuiltinOptionsTraits<tflite::MatrixDiagOptions> {
1433   static const BuiltinOptions enum_value = BuiltinOptions_MatrixDiagOptions;
1434 };
1435 
1436 template<> struct BuiltinOptionsTraits<tflite::QuantizeOptions> {
1437   static const BuiltinOptions enum_value = BuiltinOptions_QuantizeOptions;
1438 };
1439 
1440 template<> struct BuiltinOptionsTraits<tflite::MatrixSetDiagOptions> {
1441   static const BuiltinOptions enum_value = BuiltinOptions_MatrixSetDiagOptions;
1442 };
1443 
1444 template<> struct BuiltinOptionsTraits<tflite::HardSwishOptions> {
1445   static const BuiltinOptions enum_value = BuiltinOptions_HardSwishOptions;
1446 };
1447 
1448 template<> struct BuiltinOptionsTraits<tflite::IfOptions> {
1449   static const BuiltinOptions enum_value = BuiltinOptions_IfOptions;
1450 };
1451 
1452 template<> struct BuiltinOptionsTraits<tflite::WhileOptions> {
1453   static const BuiltinOptions enum_value = BuiltinOptions_WhileOptions;
1454 };
1455 
1456 template<> struct BuiltinOptionsTraits<tflite::DepthToSpaceOptions> {
1457   static const BuiltinOptions enum_value = BuiltinOptions_DepthToSpaceOptions;
1458 };
1459 
1460 template<> struct BuiltinOptionsTraits<tflite::NonMaxSuppressionV4Options> {
1461   static const BuiltinOptions enum_value = BuiltinOptions_NonMaxSuppressionV4Options;
1462 };
1463 
1464 template<> struct BuiltinOptionsTraits<tflite::NonMaxSuppressionV5Options> {
1465   static const BuiltinOptions enum_value = BuiltinOptions_NonMaxSuppressionV5Options;
1466 };
1467 
1468 template<> struct BuiltinOptionsTraits<tflite::ScatterNdOptions> {
1469   static const BuiltinOptions enum_value = BuiltinOptions_ScatterNdOptions;
1470 };
1471 
1472 template<> struct BuiltinOptionsTraits<tflite::SelectV2Options> {
1473   static const BuiltinOptions enum_value = BuiltinOptions_SelectV2Options;
1474 };
1475 
1476 template<> struct BuiltinOptionsTraits<tflite::DensifyOptions> {
1477   static const BuiltinOptions enum_value = BuiltinOptions_DensifyOptions;
1478 };
1479 
1480 bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type);
1481 bool VerifyBuiltinOptionsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
1482 
1483 enum Padding {
1484   Padding_SAME = 0,
1485   Padding_VALID = 1,
1486   Padding_MIN = Padding_SAME,
1487   Padding_MAX = Padding_VALID
1488 };
1489 
1490 inline const Padding (&EnumValuesPadding())[2] {
1491   static const Padding values[] = {
1492     Padding_SAME,
1493     Padding_VALID
1494   };
1495   return values;
1496 }
1497 
1498 inline const char * const *EnumNamesPadding() {
1499   static const char * const names[3] = {
1500     "SAME",
1501     "VALID",
1502     nullptr
1503   };
1504   return names;
1505 }
1506 
1507 inline const char *EnumNamePadding(Padding e) {
1508   if (flatbuffers::IsOutRange(e, Padding_SAME, Padding_VALID)) return "";
1509   const size_t index = static_cast<size_t>(e);
1510   return EnumNamesPadding()[index];
1511 }
1512 
1513 enum ActivationFunctionType {
1514   ActivationFunctionType_NONE = 0,
1515   ActivationFunctionType_RELU = 1,
1516   ActivationFunctionType_RELU_N1_TO_1 = 2,
1517   ActivationFunctionType_RELU6 = 3,
1518   ActivationFunctionType_TANH = 4,
1519   ActivationFunctionType_SIGN_BIT = 5,
1520   ActivationFunctionType_MIN = ActivationFunctionType_NONE,
1521   ActivationFunctionType_MAX = ActivationFunctionType_SIGN_BIT
1522 };
1523 
1524 inline const ActivationFunctionType (&EnumValuesActivationFunctionType())[6] {
1525   static const ActivationFunctionType values[] = {
1526     ActivationFunctionType_NONE,
1527     ActivationFunctionType_RELU,
1528     ActivationFunctionType_RELU_N1_TO_1,
1529     ActivationFunctionType_RELU6,
1530     ActivationFunctionType_TANH,
1531     ActivationFunctionType_SIGN_BIT
1532   };
1533   return values;
1534 }
1535 
1536 inline const char * const *EnumNamesActivationFunctionType() {
1537   static const char * const names[7] = {
1538     "NONE",
1539     "RELU",
1540     "RELU_N1_TO_1",
1541     "RELU6",
1542     "TANH",
1543     "SIGN_BIT",
1544     nullptr
1545   };
1546   return names;
1547 }
1548 
1549 inline const char *EnumNameActivationFunctionType(ActivationFunctionType e) {
1550   if (flatbuffers::IsOutRange(e, ActivationFunctionType_NONE, ActivationFunctionType_SIGN_BIT)) return "";
1551   const size_t index = static_cast<size_t>(e);
1552   return EnumNamesActivationFunctionType()[index];
1553 }
1554 
1555 enum LSHProjectionType {
1556   LSHProjectionType_UNKNOWN = 0,
1557   LSHProjectionType_SPARSE = 1,
1558   LSHProjectionType_DENSE = 2,
1559   LSHProjectionType_MIN = LSHProjectionType_UNKNOWN,
1560   LSHProjectionType_MAX = LSHProjectionType_DENSE
1561 };
1562 
1563 inline const LSHProjectionType (&EnumValuesLSHProjectionType())[3] {
1564   static const LSHProjectionType values[] = {
1565     LSHProjectionType_UNKNOWN,
1566     LSHProjectionType_SPARSE,
1567     LSHProjectionType_DENSE
1568   };
1569   return values;
1570 }
1571 
1572 inline const char * const *EnumNamesLSHProjectionType() {
1573   static const char * const names[4] = {
1574     "UNKNOWN",
1575     "SPARSE",
1576     "DENSE",
1577     nullptr
1578   };
1579   return names;
1580 }
1581 
1582 inline const char *EnumNameLSHProjectionType(LSHProjectionType e) {
1583   if (flatbuffers::IsOutRange(e, LSHProjectionType_UNKNOWN, LSHProjectionType_DENSE)) return "";
1584   const size_t index = static_cast<size_t>(e);
1585   return EnumNamesLSHProjectionType()[index];
1586 }
1587 
1588 enum FullyConnectedOptionsWeightsFormat {
1589   FullyConnectedOptionsWeightsFormat_DEFAULT = 0,
1590   FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8 = 1,
1591   FullyConnectedOptionsWeightsFormat_MIN = FullyConnectedOptionsWeightsFormat_DEFAULT,
1592   FullyConnectedOptionsWeightsFormat_MAX = FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8
1593 };
1594 
1595 inline const FullyConnectedOptionsWeightsFormat (&EnumValuesFullyConnectedOptionsWeightsFormat())[2] {
1596   static const FullyConnectedOptionsWeightsFormat values[] = {
1597     FullyConnectedOptionsWeightsFormat_DEFAULT,
1598     FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8
1599   };
1600   return values;
1601 }
1602 
1603 inline const char * const *EnumNamesFullyConnectedOptionsWeightsFormat() {
1604   static const char * const names[3] = {
1605     "DEFAULT",
1606     "SHUFFLED4x16INT8",
1607     nullptr
1608   };
1609   return names;
1610 }
1611 
1612 inline const char *EnumNameFullyConnectedOptionsWeightsFormat(FullyConnectedOptionsWeightsFormat e) {
1613   if (flatbuffers::IsOutRange(e, FullyConnectedOptionsWeightsFormat_DEFAULT, FullyConnectedOptionsWeightsFormat_SHUFFLED4x16INT8)) return "";
1614   const size_t index = static_cast<size_t>(e);
1615   return EnumNamesFullyConnectedOptionsWeightsFormat()[index];
1616 }
1617 
1618 enum LSTMKernelType {
1619   LSTMKernelType_FULL = 0,
1620   LSTMKernelType_BASIC = 1,
1621   LSTMKernelType_MIN = LSTMKernelType_FULL,
1622   LSTMKernelType_MAX = LSTMKernelType_BASIC
1623 };
1624 
1625 inline const LSTMKernelType (&EnumValuesLSTMKernelType())[2] {
1626   static const LSTMKernelType values[] = {
1627     LSTMKernelType_FULL,
1628     LSTMKernelType_BASIC
1629   };
1630   return values;
1631 }
1632 
1633 inline const char * const *EnumNamesLSTMKernelType() {
1634   static const char * const names[3] = {
1635     "FULL",
1636     "BASIC",
1637     nullptr
1638   };
1639   return names;
1640 }
1641 
1642 inline const char *EnumNameLSTMKernelType(LSTMKernelType e) {
1643   if (flatbuffers::IsOutRange(e, LSTMKernelType_FULL, LSTMKernelType_BASIC)) return "";
1644   const size_t index = static_cast<size_t>(e);
1645   return EnumNamesLSTMKernelType()[index];
1646 }
1647 
1648 enum CombinerType {
1649   CombinerType_SUM = 0,
1650   CombinerType_MEAN = 1,
1651   CombinerType_SQRTN = 2,
1652   CombinerType_MIN = CombinerType_SUM,
1653   CombinerType_MAX = CombinerType_SQRTN
1654 };
1655 
1656 inline const CombinerType (&EnumValuesCombinerType())[3] {
1657   static const CombinerType values[] = {
1658     CombinerType_SUM,
1659     CombinerType_MEAN,
1660     CombinerType_SQRTN
1661   };
1662   return values;
1663 }
1664 
1665 inline const char * const *EnumNamesCombinerType() {
1666   static const char * const names[4] = {
1667     "SUM",
1668     "MEAN",
1669     "SQRTN",
1670     nullptr
1671   };
1672   return names;
1673 }
1674 
1675 inline const char *EnumNameCombinerType(CombinerType e) {
1676   if (flatbuffers::IsOutRange(e, CombinerType_SUM, CombinerType_SQRTN)) return "";
1677   const size_t index = static_cast<size_t>(e);
1678   return EnumNamesCombinerType()[index];
1679 }
1680 
1681 enum MirrorPadMode {
1682   MirrorPadMode_REFLECT = 0,
1683   MirrorPadMode_SYMMETRIC = 1,
1684   MirrorPadMode_MIN = MirrorPadMode_REFLECT,
1685   MirrorPadMode_MAX = MirrorPadMode_SYMMETRIC
1686 };
1687 
1688 inline const MirrorPadMode (&EnumValuesMirrorPadMode())[2] {
1689   static const MirrorPadMode values[] = {
1690     MirrorPadMode_REFLECT,
1691     MirrorPadMode_SYMMETRIC
1692   };
1693   return values;
1694 }
1695 
1696 inline const char * const *EnumNamesMirrorPadMode() {
1697   static const char * const names[3] = {
1698     "REFLECT",
1699     "SYMMETRIC",
1700     nullptr
1701   };
1702   return names;
1703 }
1704 
1705 inline const char *EnumNameMirrorPadMode(MirrorPadMode e) {
1706   if (flatbuffers::IsOutRange(e, MirrorPadMode_REFLECT, MirrorPadMode_SYMMETRIC)) return "";
1707   const size_t index = static_cast<size_t>(e);
1708   return EnumNamesMirrorPadMode()[index];
1709 }
1710 
1711 enum CustomOptionsFormat {
1712   CustomOptionsFormat_FLEXBUFFERS = 0,
1713   CustomOptionsFormat_MIN = CustomOptionsFormat_FLEXBUFFERS,
1714   CustomOptionsFormat_MAX = CustomOptionsFormat_FLEXBUFFERS
1715 };
1716 
1717 inline const CustomOptionsFormat (&EnumValuesCustomOptionsFormat())[1] {
1718   static const CustomOptionsFormat values[] = {
1719     CustomOptionsFormat_FLEXBUFFERS
1720   };
1721   return values;
1722 }
1723 
1724 inline const char * const *EnumNamesCustomOptionsFormat() {
1725   static const char * const names[2] = {
1726     "FLEXBUFFERS",
1727     nullptr
1728   };
1729   return names;
1730 }
1731 
1732 inline const char *EnumNameCustomOptionsFormat(CustomOptionsFormat e) {
1733   if (flatbuffers::IsOutRange(e, CustomOptionsFormat_FLEXBUFFERS, CustomOptionsFormat_FLEXBUFFERS)) return "";
1734   const size_t index = static_cast<size_t>(e);
1735   return EnumNamesCustomOptionsFormat()[index];
1736 }
1737 
1738 struct CustomQuantization FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1739   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1740     VT_CUSTOM = 4
1741   };
1742   const flatbuffers::Vector<uint8_t> *custom() const {
1743     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CUSTOM);
1744   }
1745   bool Verify(flatbuffers::Verifier &verifier) const {
1746     return VerifyTableStart(verifier) &&
1747            VerifyOffset(verifier, VT_CUSTOM) &&
1748            verifier.VerifyVector(custom()) &&
1749            verifier.EndTable();
1750   }
1751 };
1752 
1753 struct CustomQuantizationBuilder {
1754   flatbuffers::FlatBufferBuilder &fbb_;
1755   flatbuffers::uoffset_t start_;
1756   void add_custom(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom) {
1757     fbb_.AddOffset(CustomQuantization::VT_CUSTOM, custom);
1758   }
1759   explicit CustomQuantizationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1760         : fbb_(_fbb) {
1761     start_ = fbb_.StartTable();
1762   }
1763   CustomQuantizationBuilder &operator=(const CustomQuantizationBuilder &);
1764   flatbuffers::Offset<CustomQuantization> Finish() {
1765     const auto end = fbb_.EndTable(start_);
1766     auto o = flatbuffers::Offset<CustomQuantization>(end);
1767     return o;
1768   }
1769 };
1770 
1771 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantization(
1772     flatbuffers::FlatBufferBuilder &_fbb,
1773     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom = 0) {
1774   CustomQuantizationBuilder builder_(_fbb);
1775   builder_.add_custom(custom);
1776   return builder_.Finish();
1777 }
1778 
1779 inline flatbuffers::Offset<CustomQuantization> CreateCustomQuantizationDirect(
1780     flatbuffers::FlatBufferBuilder &_fbb,
1781     const std::vector<uint8_t> *custom = nullptr) {
1782   auto custom__ = custom ? _fbb.CreateVector<uint8_t>(*custom) : 0;
1783   return tflite::CreateCustomQuantization(
1784       _fbb,
1785       custom__);
1786 }
1787 
1788 struct QuantizationParameters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1789   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1790     VT_MIN = 4,
1791     VT_MAX = 6,
1792     VT_SCALE = 8,
1793     VT_ZERO_POINT = 10,
1794     VT_DETAILS_TYPE = 12,
1795     VT_DETAILS = 14,
1796     VT_QUANTIZED_DIMENSION = 16
1797   };
1798   const flatbuffers::Vector<float> *min() const {
1799     return GetPointer<const flatbuffers::Vector<float> *>(VT_MIN);
1800   }
1801   const flatbuffers::Vector<float> *max() const {
1802     return GetPointer<const flatbuffers::Vector<float> *>(VT_MAX);
1803   }
1804   const flatbuffers::Vector<float> *scale() const {
1805     return GetPointer<const flatbuffers::Vector<float> *>(VT_SCALE);
1806   }
1807   const flatbuffers::Vector<int64_t> *zero_point() const {
1808     return GetPointer<const flatbuffers::Vector<int64_t> *>(VT_ZERO_POINT);
1809   }
1810   tflite::QuantizationDetails details_type() const {
1811     return static_cast<tflite::QuantizationDetails>(GetField<uint8_t>(VT_DETAILS_TYPE, 0));
1812   }
1813   const void *details() const {
1814     return GetPointer<const void *>(VT_DETAILS);
1815   }
1816   template<typename T> const T *details_as() const;
1817   const tflite::CustomQuantization *details_as_CustomQuantization() const {
1818     return details_type() == tflite::QuantizationDetails_CustomQuantization ? static_cast<const tflite::CustomQuantization *>(details()) : nullptr;
1819   }
1820   int32_t quantized_dimension() const {
1821     return GetField<int32_t>(VT_QUANTIZED_DIMENSION, 0);
1822   }
1823   bool Verify(flatbuffers::Verifier &verifier) const {
1824     return VerifyTableStart(verifier) &&
1825            VerifyOffset(verifier, VT_MIN) &&
1826            verifier.VerifyVector(min()) &&
1827            VerifyOffset(verifier, VT_MAX) &&
1828            verifier.VerifyVector(max()) &&
1829            VerifyOffset(verifier, VT_SCALE) &&
1830            verifier.VerifyVector(scale()) &&
1831            VerifyOffset(verifier, VT_ZERO_POINT) &&
1832            verifier.VerifyVector(zero_point()) &&
1833            VerifyField<uint8_t>(verifier, VT_DETAILS_TYPE) &&
1834            VerifyOffset(verifier, VT_DETAILS) &&
1835            VerifyQuantizationDetails(verifier, details(), details_type()) &&
1836            VerifyField<int32_t>(verifier, VT_QUANTIZED_DIMENSION) &&
1837            verifier.EndTable();
1838   }
1839 };
1840 
1841 template<> inline const tflite::CustomQuantization *QuantizationParameters::details_as<tflite::CustomQuantization>() const {
1842   return details_as_CustomQuantization();
1843 }
1844 
1845 struct QuantizationParametersBuilder {
1846   flatbuffers::FlatBufferBuilder &fbb_;
1847   flatbuffers::uoffset_t start_;
1848   void add_min(flatbuffers::Offset<flatbuffers::Vector<float>> min) {
1849     fbb_.AddOffset(QuantizationParameters::VT_MIN, min);
1850   }
1851   void add_max(flatbuffers::Offset<flatbuffers::Vector<float>> max) {
1852     fbb_.AddOffset(QuantizationParameters::VT_MAX, max);
1853   }
1854   void add_scale(flatbuffers::Offset<flatbuffers::Vector<float>> scale) {
1855     fbb_.AddOffset(QuantizationParameters::VT_SCALE, scale);
1856   }
1857   void add_zero_point(flatbuffers::Offset<flatbuffers::Vector<int64_t>> zero_point) {
1858     fbb_.AddOffset(QuantizationParameters::VT_ZERO_POINT, zero_point);
1859   }
1860   void add_details_type(tflite::QuantizationDetails details_type) {
1861     fbb_.AddElement<uint8_t>(QuantizationParameters::VT_DETAILS_TYPE, static_cast<uint8_t>(details_type), 0);
1862   }
1863   void add_details(flatbuffers::Offset<void> details) {
1864     fbb_.AddOffset(QuantizationParameters::VT_DETAILS, details);
1865   }
1866   void add_quantized_dimension(int32_t quantized_dimension) {
1867     fbb_.AddElement<int32_t>(QuantizationParameters::VT_QUANTIZED_DIMENSION, quantized_dimension, 0);
1868   }
1869   explicit QuantizationParametersBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1870         : fbb_(_fbb) {
1871     start_ = fbb_.StartTable();
1872   }
1873   QuantizationParametersBuilder &operator=(const QuantizationParametersBuilder &);
1874   flatbuffers::Offset<QuantizationParameters> Finish() {
1875     const auto end = fbb_.EndTable(start_);
1876     auto o = flatbuffers::Offset<QuantizationParameters>(end);
1877     return o;
1878   }
1879 };
1880 
1881 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParameters(
1882     flatbuffers::FlatBufferBuilder &_fbb,
1883     flatbuffers::Offset<flatbuffers::Vector<float>> min = 0,
1884     flatbuffers::Offset<flatbuffers::Vector<float>> max = 0,
1885     flatbuffers::Offset<flatbuffers::Vector<float>> scale = 0,
1886     flatbuffers::Offset<flatbuffers::Vector<int64_t>> zero_point = 0,
1887     tflite::QuantizationDetails details_type = tflite::QuantizationDetails_NONE,
1888     flatbuffers::Offset<void> details = 0,
1889     int32_t quantized_dimension = 0) {
1890   QuantizationParametersBuilder builder_(_fbb);
1891   builder_.add_quantized_dimension(quantized_dimension);
1892   builder_.add_details(details);
1893   builder_.add_zero_point(zero_point);
1894   builder_.add_scale(scale);
1895   builder_.add_max(max);
1896   builder_.add_min(min);
1897   builder_.add_details_type(details_type);
1898   return builder_.Finish();
1899 }
1900 
1901 inline flatbuffers::Offset<QuantizationParameters> CreateQuantizationParametersDirect(
1902     flatbuffers::FlatBufferBuilder &_fbb,
1903     const std::vector<float> *min = nullptr,
1904     const std::vector<float> *max = nullptr,
1905     const std::vector<float> *scale = nullptr,
1906     const std::vector<int64_t> *zero_point = nullptr,
1907     tflite::QuantizationDetails details_type = tflite::QuantizationDetails_NONE,
1908     flatbuffers::Offset<void> details = 0,
1909     int32_t quantized_dimension = 0) {
1910   auto min__ = min ? _fbb.CreateVector<float>(*min) : 0;
1911   auto max__ = max ? _fbb.CreateVector<float>(*max) : 0;
1912   auto scale__ = scale ? _fbb.CreateVector<float>(*scale) : 0;
1913   auto zero_point__ = zero_point ? _fbb.CreateVector<int64_t>(*zero_point) : 0;
1914   return tflite::CreateQuantizationParameters(
1915       _fbb,
1916       min__,
1917       max__,
1918       scale__,
1919       zero_point__,
1920       details_type,
1921       details,
1922       quantized_dimension);
1923 }
1924 
1925 struct DimensionMetadata FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1926   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1927     VT_FORMAT = 4,
1928     VT_DENSE_SIZE = 6,
1929     VT_ARRAY_SEGMENTS = 8,
1930     VT_ARRAY_INDICES = 10
1931   };
1932   tflite::DimensionType format() const {
1933     return static_cast<tflite::DimensionType>(GetField<int8_t>(VT_FORMAT, 0));
1934   }
1935   int32_t dense_size() const {
1936     return GetField<int32_t>(VT_DENSE_SIZE, 0);
1937   }
1938   const flatbuffers::Vector<int32_t> *array_segments() const {
1939     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_ARRAY_SEGMENTS);
1940   }
1941   const flatbuffers::Vector<int32_t> *array_indices() const {
1942     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_ARRAY_INDICES);
1943   }
1944   bool Verify(flatbuffers::Verifier &verifier) const {
1945     return VerifyTableStart(verifier) &&
1946            VerifyField<int8_t>(verifier, VT_FORMAT) &&
1947            VerifyField<int32_t>(verifier, VT_DENSE_SIZE) &&
1948            VerifyOffset(verifier, VT_ARRAY_SEGMENTS) &&
1949            verifier.VerifyVector(array_segments()) &&
1950            VerifyOffset(verifier, VT_ARRAY_INDICES) &&
1951            verifier.VerifyVector(array_indices()) &&
1952            verifier.EndTable();
1953   }
1954 };
1955 
1956 struct DimensionMetadataBuilder {
1957   flatbuffers::FlatBufferBuilder &fbb_;
1958   flatbuffers::uoffset_t start_;
1959   void add_format(tflite::DimensionType format) {
1960     fbb_.AddElement<int8_t>(DimensionMetadata::VT_FORMAT, static_cast<int8_t>(format), 0);
1961   }
1962   void add_dense_size(int32_t dense_size) {
1963     fbb_.AddElement<int32_t>(DimensionMetadata::VT_DENSE_SIZE, dense_size, 0);
1964   }
1965   void add_array_segments(flatbuffers::Offset<flatbuffers::Vector<int32_t>> array_segments) {
1966     fbb_.AddOffset(DimensionMetadata::VT_ARRAY_SEGMENTS, array_segments);
1967   }
1968   void add_array_indices(flatbuffers::Offset<flatbuffers::Vector<int32_t>> array_indices) {
1969     fbb_.AddOffset(DimensionMetadata::VT_ARRAY_INDICES, array_indices);
1970   }
1971   explicit DimensionMetadataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1972         : fbb_(_fbb) {
1973     start_ = fbb_.StartTable();
1974   }
1975   DimensionMetadataBuilder &operator=(const DimensionMetadataBuilder &);
1976   flatbuffers::Offset<DimensionMetadata> Finish() {
1977     const auto end = fbb_.EndTable(start_);
1978     auto o = flatbuffers::Offset<DimensionMetadata>(end);
1979     return o;
1980   }
1981 };
1982 
1983 inline flatbuffers::Offset<DimensionMetadata> CreateDimensionMetadata(
1984     flatbuffers::FlatBufferBuilder &_fbb,
1985     tflite::DimensionType format = tflite::DimensionType_DENSE,
1986     int32_t dense_size = 0,
1987     flatbuffers::Offset<flatbuffers::Vector<int32_t>> array_segments = 0,
1988     flatbuffers::Offset<flatbuffers::Vector<int32_t>> array_indices = 0) {
1989   DimensionMetadataBuilder builder_(_fbb);
1990   builder_.add_array_indices(array_indices);
1991   builder_.add_array_segments(array_segments);
1992   builder_.add_dense_size(dense_size);
1993   builder_.add_format(format);
1994   return builder_.Finish();
1995 }
1996 
1997 inline flatbuffers::Offset<DimensionMetadata> CreateDimensionMetadataDirect(
1998     flatbuffers::FlatBufferBuilder &_fbb,
1999     tflite::DimensionType format = tflite::DimensionType_DENSE,
2000     int32_t dense_size = 0,
2001     const std::vector<int32_t> *array_segments = nullptr,
2002     const std::vector<int32_t> *array_indices = nullptr) {
2003   auto array_segments__ = array_segments ? _fbb.CreateVector<int32_t>(*array_segments) : 0;
2004   auto array_indices__ = array_indices ? _fbb.CreateVector<int32_t>(*array_indices) : 0;
2005   return tflite::CreateDimensionMetadata(
2006       _fbb,
2007       format,
2008       dense_size,
2009       array_segments__,
2010       array_indices__);
2011 }
2012 
2013 struct SparsityParameters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2014   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2015     VT_TRAVERSAL_ORDER = 4,
2016     VT_BLOCK_MAP = 6,
2017     VT_DIM_METADATA = 8
2018   };
2019   const flatbuffers::Vector<int32_t> *traversal_order() const {
2020     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_TRAVERSAL_ORDER);
2021   }
2022   const flatbuffers::Vector<int32_t> *block_map() const {
2023     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_BLOCK_MAP);
2024   }
2025   const flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>> *dim_metadata() const {
2026     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>> *>(VT_DIM_METADATA);
2027   }
2028   bool Verify(flatbuffers::Verifier &verifier) const {
2029     return VerifyTableStart(verifier) &&
2030            VerifyOffset(verifier, VT_TRAVERSAL_ORDER) &&
2031            verifier.VerifyVector(traversal_order()) &&
2032            VerifyOffset(verifier, VT_BLOCK_MAP) &&
2033            verifier.VerifyVector(block_map()) &&
2034            VerifyOffset(verifier, VT_DIM_METADATA) &&
2035            verifier.VerifyVector(dim_metadata()) &&
2036            verifier.VerifyVectorOfTables(dim_metadata()) &&
2037            verifier.EndTable();
2038   }
2039 };
2040 
2041 struct SparsityParametersBuilder {
2042   flatbuffers::FlatBufferBuilder &fbb_;
2043   flatbuffers::uoffset_t start_;
2044   void add_traversal_order(flatbuffers::Offset<flatbuffers::Vector<int32_t>> traversal_order) {
2045     fbb_.AddOffset(SparsityParameters::VT_TRAVERSAL_ORDER, traversal_order);
2046   }
2047   void add_block_map(flatbuffers::Offset<flatbuffers::Vector<int32_t>> block_map) {
2048     fbb_.AddOffset(SparsityParameters::VT_BLOCK_MAP, block_map);
2049   }
2050   void add_dim_metadata(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>>> dim_metadata) {
2051     fbb_.AddOffset(SparsityParameters::VT_DIM_METADATA, dim_metadata);
2052   }
2053   explicit SparsityParametersBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2054         : fbb_(_fbb) {
2055     start_ = fbb_.StartTable();
2056   }
2057   SparsityParametersBuilder &operator=(const SparsityParametersBuilder &);
2058   flatbuffers::Offset<SparsityParameters> Finish() {
2059     const auto end = fbb_.EndTable(start_);
2060     auto o = flatbuffers::Offset<SparsityParameters>(end);
2061     return o;
2062   }
2063 };
2064 
2065 inline flatbuffers::Offset<SparsityParameters> CreateSparsityParameters(
2066     flatbuffers::FlatBufferBuilder &_fbb,
2067     flatbuffers::Offset<flatbuffers::Vector<int32_t>> traversal_order = 0,
2068     flatbuffers::Offset<flatbuffers::Vector<int32_t>> block_map = 0,
2069     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::DimensionMetadata>>> dim_metadata = 0) {
2070   SparsityParametersBuilder builder_(_fbb);
2071   builder_.add_dim_metadata(dim_metadata);
2072   builder_.add_block_map(block_map);
2073   builder_.add_traversal_order(traversal_order);
2074   return builder_.Finish();
2075 }
2076 
2077 inline flatbuffers::Offset<SparsityParameters> CreateSparsityParametersDirect(
2078     flatbuffers::FlatBufferBuilder &_fbb,
2079     const std::vector<int32_t> *traversal_order = nullptr,
2080     const std::vector<int32_t> *block_map = nullptr,
2081     const std::vector<flatbuffers::Offset<tflite::DimensionMetadata>> *dim_metadata = nullptr) {
2082   auto traversal_order__ = traversal_order ? _fbb.CreateVector<int32_t>(*traversal_order) : 0;
2083   auto block_map__ = block_map ? _fbb.CreateVector<int32_t>(*block_map) : 0;
2084   auto dim_metadata__ = dim_metadata ? _fbb.CreateVector<flatbuffers::Offset<tflite::DimensionMetadata>>(*dim_metadata) : 0;
2085   return tflite::CreateSparsityParameters(
2086       _fbb,
2087       traversal_order__,
2088       block_map__,
2089       dim_metadata__);
2090 }
2091 
2092 struct Tensor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2093   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2094     VT_SHAPE = 4,
2095     VT_TYPE = 6,
2096     VT_BUFFER = 8,
2097     VT_NAME = 10,
2098     VT_QUANTIZATION = 12,
2099     VT_IS_VARIABLE = 14,
2100     VT_SPARSITY = 16
2101   };
2102   const flatbuffers::Vector<int32_t> *shape() const {
2103     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
2104   }
2105   tflite::TensorType type() const {
2106     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_TYPE, 0));
2107   }
2108   uint32_t buffer() const {
2109     return GetField<uint32_t>(VT_BUFFER, 0);
2110   }
2111   const flatbuffers::String *name() const {
2112     return GetPointer<const flatbuffers::String *>(VT_NAME);
2113   }
2114   const tflite::QuantizationParameters *quantization() const {
2115     return GetPointer<const tflite::QuantizationParameters *>(VT_QUANTIZATION);
2116   }
2117   bool is_variable() const {
2118     return GetField<uint8_t>(VT_IS_VARIABLE, 0) != 0;
2119   }
2120   const tflite::SparsityParameters *sparsity() const {
2121     return GetPointer<const tflite::SparsityParameters *>(VT_SPARSITY);
2122   }
2123   bool Verify(flatbuffers::Verifier &verifier) const {
2124     return VerifyTableStart(verifier) &&
2125            VerifyOffset(verifier, VT_SHAPE) &&
2126            verifier.VerifyVector(shape()) &&
2127            VerifyField<int8_t>(verifier, VT_TYPE) &&
2128            VerifyField<uint32_t>(verifier, VT_BUFFER) &&
2129            VerifyOffset(verifier, VT_NAME) &&
2130            verifier.VerifyString(name()) &&
2131            VerifyOffset(verifier, VT_QUANTIZATION) &&
2132            verifier.VerifyTable(quantization()) &&
2133            VerifyField<uint8_t>(verifier, VT_IS_VARIABLE) &&
2134            VerifyOffset(verifier, VT_SPARSITY) &&
2135            verifier.VerifyTable(sparsity()) &&
2136            verifier.EndTable();
2137   }
2138 };
2139 
2140 struct TensorBuilder {
2141   flatbuffers::FlatBufferBuilder &fbb_;
2142   flatbuffers::uoffset_t start_;
2143   void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
2144     fbb_.AddOffset(Tensor::VT_SHAPE, shape);
2145   }
2146   void add_type(tflite::TensorType type) {
2147     fbb_.AddElement<int8_t>(Tensor::VT_TYPE, static_cast<int8_t>(type), 0);
2148   }
2149   void add_buffer(uint32_t buffer) {
2150     fbb_.AddElement<uint32_t>(Tensor::VT_BUFFER, buffer, 0);
2151   }
2152   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
2153     fbb_.AddOffset(Tensor::VT_NAME, name);
2154   }
2155   void add_quantization(flatbuffers::Offset<tflite::QuantizationParameters> quantization) {
2156     fbb_.AddOffset(Tensor::VT_QUANTIZATION, quantization);
2157   }
2158   void add_is_variable(bool is_variable) {
2159     fbb_.AddElement<uint8_t>(Tensor::VT_IS_VARIABLE, static_cast<uint8_t>(is_variable), 0);
2160   }
2161   void add_sparsity(flatbuffers::Offset<tflite::SparsityParameters> sparsity) {
2162     fbb_.AddOffset(Tensor::VT_SPARSITY, sparsity);
2163   }
2164   explicit TensorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2165         : fbb_(_fbb) {
2166     start_ = fbb_.StartTable();
2167   }
2168   TensorBuilder &operator=(const TensorBuilder &);
2169   flatbuffers::Offset<Tensor> Finish() {
2170     const auto end = fbb_.EndTable(start_);
2171     auto o = flatbuffers::Offset<Tensor>(end);
2172     return o;
2173   }
2174 };
2175 
2176 inline flatbuffers::Offset<Tensor> CreateTensor(
2177     flatbuffers::FlatBufferBuilder &_fbb,
2178     flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0,
2179     tflite::TensorType type = tflite::TensorType_FLOAT32,
2180     uint32_t buffer = 0,
2181     flatbuffers::Offset<flatbuffers::String> name = 0,
2182     flatbuffers::Offset<tflite::QuantizationParameters> quantization = 0,
2183     bool is_variable = false,
2184     flatbuffers::Offset<tflite::SparsityParameters> sparsity = 0) {
2185   TensorBuilder builder_(_fbb);
2186   builder_.add_sparsity(sparsity);
2187   builder_.add_quantization(quantization);
2188   builder_.add_name(name);
2189   builder_.add_buffer(buffer);
2190   builder_.add_shape(shape);
2191   builder_.add_is_variable(is_variable);
2192   builder_.add_type(type);
2193   return builder_.Finish();
2194 }
2195 
2196 inline flatbuffers::Offset<Tensor> CreateTensorDirect(
2197     flatbuffers::FlatBufferBuilder &_fbb,
2198     const std::vector<int32_t> *shape = nullptr,
2199     tflite::TensorType type = tflite::TensorType_FLOAT32,
2200     uint32_t buffer = 0,
2201     const char *name = nullptr,
2202     flatbuffers::Offset<tflite::QuantizationParameters> quantization = 0,
2203     bool is_variable = false,
2204     flatbuffers::Offset<tflite::SparsityParameters> sparsity = 0) {
2205   auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
2206   auto name__ = name ? _fbb.CreateString(name) : 0;
2207   return tflite::CreateTensor(
2208       _fbb,
2209       shape__,
2210       type,
2211       buffer,
2212       name__,
2213       quantization,
2214       is_variable,
2215       sparsity);
2216 }
2217 
2218 struct Conv2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2219   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2220     VT_PADDING = 4,
2221     VT_STRIDE_W = 6,
2222     VT_STRIDE_H = 8,
2223     VT_FUSED_ACTIVATION_FUNCTION = 10,
2224     VT_DILATION_W_FACTOR = 12,
2225     VT_DILATION_H_FACTOR = 14
2226   };
2227   tflite::Padding padding() const {
2228     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
2229   }
2230   int32_t stride_w() const {
2231     return GetField<int32_t>(VT_STRIDE_W, 0);
2232   }
2233   int32_t stride_h() const {
2234     return GetField<int32_t>(VT_STRIDE_H, 0);
2235   }
2236   tflite::ActivationFunctionType fused_activation_function() const {
2237     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2238   }
2239   int32_t dilation_w_factor() const {
2240     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
2241   }
2242   int32_t dilation_h_factor() const {
2243     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
2244   }
2245   bool Verify(flatbuffers::Verifier &verifier) const {
2246     return VerifyTableStart(verifier) &&
2247            VerifyField<int8_t>(verifier, VT_PADDING) &&
2248            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
2249            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
2250            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2251            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR) &&
2252            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR) &&
2253            verifier.EndTable();
2254   }
2255 };
2256 
2257 struct Conv2DOptionsBuilder {
2258   flatbuffers::FlatBufferBuilder &fbb_;
2259   flatbuffers::uoffset_t start_;
2260   void add_padding(tflite::Padding padding) {
2261     fbb_.AddElement<int8_t>(Conv2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
2262   }
2263   void add_stride_w(int32_t stride_w) {
2264     fbb_.AddElement<int32_t>(Conv2DOptions::VT_STRIDE_W, stride_w, 0);
2265   }
2266   void add_stride_h(int32_t stride_h) {
2267     fbb_.AddElement<int32_t>(Conv2DOptions::VT_STRIDE_H, stride_h, 0);
2268   }
2269   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2270     fbb_.AddElement<int8_t>(Conv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2271   }
2272   void add_dilation_w_factor(int32_t dilation_w_factor) {
2273     fbb_.AddElement<int32_t>(Conv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
2274   }
2275   void add_dilation_h_factor(int32_t dilation_h_factor) {
2276     fbb_.AddElement<int32_t>(Conv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
2277   }
2278   explicit Conv2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2279         : fbb_(_fbb) {
2280     start_ = fbb_.StartTable();
2281   }
2282   Conv2DOptionsBuilder &operator=(const Conv2DOptionsBuilder &);
2283   flatbuffers::Offset<Conv2DOptions> Finish() {
2284     const auto end = fbb_.EndTable(start_);
2285     auto o = flatbuffers::Offset<Conv2DOptions>(end);
2286     return o;
2287   }
2288 };
2289 
2290 inline flatbuffers::Offset<Conv2DOptions> CreateConv2DOptions(
2291     flatbuffers::FlatBufferBuilder &_fbb,
2292     tflite::Padding padding = tflite::Padding_SAME,
2293     int32_t stride_w = 0,
2294     int32_t stride_h = 0,
2295     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
2296     int32_t dilation_w_factor = 1,
2297     int32_t dilation_h_factor = 1) {
2298   Conv2DOptionsBuilder builder_(_fbb);
2299   builder_.add_dilation_h_factor(dilation_h_factor);
2300   builder_.add_dilation_w_factor(dilation_w_factor);
2301   builder_.add_stride_h(stride_h);
2302   builder_.add_stride_w(stride_w);
2303   builder_.add_fused_activation_function(fused_activation_function);
2304   builder_.add_padding(padding);
2305   return builder_.Finish();
2306 }
2307 
2308 struct Pool2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2309   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2310     VT_PADDING = 4,
2311     VT_STRIDE_W = 6,
2312     VT_STRIDE_H = 8,
2313     VT_FILTER_WIDTH = 10,
2314     VT_FILTER_HEIGHT = 12,
2315     VT_FUSED_ACTIVATION_FUNCTION = 14
2316   };
2317   tflite::Padding padding() const {
2318     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
2319   }
2320   int32_t stride_w() const {
2321     return GetField<int32_t>(VT_STRIDE_W, 0);
2322   }
2323   int32_t stride_h() const {
2324     return GetField<int32_t>(VT_STRIDE_H, 0);
2325   }
2326   int32_t filter_width() const {
2327     return GetField<int32_t>(VT_FILTER_WIDTH, 0);
2328   }
2329   int32_t filter_height() const {
2330     return GetField<int32_t>(VT_FILTER_HEIGHT, 0);
2331   }
2332   tflite::ActivationFunctionType fused_activation_function() const {
2333     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2334   }
2335   bool Verify(flatbuffers::Verifier &verifier) const {
2336     return VerifyTableStart(verifier) &&
2337            VerifyField<int8_t>(verifier, VT_PADDING) &&
2338            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
2339            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
2340            VerifyField<int32_t>(verifier, VT_FILTER_WIDTH) &&
2341            VerifyField<int32_t>(verifier, VT_FILTER_HEIGHT) &&
2342            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2343            verifier.EndTable();
2344   }
2345 };
2346 
2347 struct Pool2DOptionsBuilder {
2348   flatbuffers::FlatBufferBuilder &fbb_;
2349   flatbuffers::uoffset_t start_;
2350   void add_padding(tflite::Padding padding) {
2351     fbb_.AddElement<int8_t>(Pool2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
2352   }
2353   void add_stride_w(int32_t stride_w) {
2354     fbb_.AddElement<int32_t>(Pool2DOptions::VT_STRIDE_W, stride_w, 0);
2355   }
2356   void add_stride_h(int32_t stride_h) {
2357     fbb_.AddElement<int32_t>(Pool2DOptions::VT_STRIDE_H, stride_h, 0);
2358   }
2359   void add_filter_width(int32_t filter_width) {
2360     fbb_.AddElement<int32_t>(Pool2DOptions::VT_FILTER_WIDTH, filter_width, 0);
2361   }
2362   void add_filter_height(int32_t filter_height) {
2363     fbb_.AddElement<int32_t>(Pool2DOptions::VT_FILTER_HEIGHT, filter_height, 0);
2364   }
2365   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2366     fbb_.AddElement<int8_t>(Pool2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2367   }
2368   explicit Pool2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2369         : fbb_(_fbb) {
2370     start_ = fbb_.StartTable();
2371   }
2372   Pool2DOptionsBuilder &operator=(const Pool2DOptionsBuilder &);
2373   flatbuffers::Offset<Pool2DOptions> Finish() {
2374     const auto end = fbb_.EndTable(start_);
2375     auto o = flatbuffers::Offset<Pool2DOptions>(end);
2376     return o;
2377   }
2378 };
2379 
2380 inline flatbuffers::Offset<Pool2DOptions> CreatePool2DOptions(
2381     flatbuffers::FlatBufferBuilder &_fbb,
2382     tflite::Padding padding = tflite::Padding_SAME,
2383     int32_t stride_w = 0,
2384     int32_t stride_h = 0,
2385     int32_t filter_width = 0,
2386     int32_t filter_height = 0,
2387     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
2388   Pool2DOptionsBuilder builder_(_fbb);
2389   builder_.add_filter_height(filter_height);
2390   builder_.add_filter_width(filter_width);
2391   builder_.add_stride_h(stride_h);
2392   builder_.add_stride_w(stride_w);
2393   builder_.add_fused_activation_function(fused_activation_function);
2394   builder_.add_padding(padding);
2395   return builder_.Finish();
2396 }
2397 
2398 struct DepthwiseConv2DOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2399   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2400     VT_PADDING = 4,
2401     VT_STRIDE_W = 6,
2402     VT_STRIDE_H = 8,
2403     VT_DEPTH_MULTIPLIER = 10,
2404     VT_FUSED_ACTIVATION_FUNCTION = 12,
2405     VT_DILATION_W_FACTOR = 14,
2406     VT_DILATION_H_FACTOR = 16
2407   };
2408   tflite::Padding padding() const {
2409     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
2410   }
2411   int32_t stride_w() const {
2412     return GetField<int32_t>(VT_STRIDE_W, 0);
2413   }
2414   int32_t stride_h() const {
2415     return GetField<int32_t>(VT_STRIDE_H, 0);
2416   }
2417   int32_t depth_multiplier() const {
2418     return GetField<int32_t>(VT_DEPTH_MULTIPLIER, 0);
2419   }
2420   tflite::ActivationFunctionType fused_activation_function() const {
2421     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2422   }
2423   int32_t dilation_w_factor() const {
2424     return GetField<int32_t>(VT_DILATION_W_FACTOR, 1);
2425   }
2426   int32_t dilation_h_factor() const {
2427     return GetField<int32_t>(VT_DILATION_H_FACTOR, 1);
2428   }
2429   bool Verify(flatbuffers::Verifier &verifier) const {
2430     return VerifyTableStart(verifier) &&
2431            VerifyField<int8_t>(verifier, VT_PADDING) &&
2432            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
2433            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
2434            VerifyField<int32_t>(verifier, VT_DEPTH_MULTIPLIER) &&
2435            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2436            VerifyField<int32_t>(verifier, VT_DILATION_W_FACTOR) &&
2437            VerifyField<int32_t>(verifier, VT_DILATION_H_FACTOR) &&
2438            verifier.EndTable();
2439   }
2440 };
2441 
2442 struct DepthwiseConv2DOptionsBuilder {
2443   flatbuffers::FlatBufferBuilder &fbb_;
2444   flatbuffers::uoffset_t start_;
2445   void add_padding(tflite::Padding padding) {
2446     fbb_.AddElement<int8_t>(DepthwiseConv2DOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
2447   }
2448   void add_stride_w(int32_t stride_w) {
2449     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_STRIDE_W, stride_w, 0);
2450   }
2451   void add_stride_h(int32_t stride_h) {
2452     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_STRIDE_H, stride_h, 0);
2453   }
2454   void add_depth_multiplier(int32_t depth_multiplier) {
2455     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DEPTH_MULTIPLIER, depth_multiplier, 0);
2456   }
2457   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2458     fbb_.AddElement<int8_t>(DepthwiseConv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2459   }
2460   void add_dilation_w_factor(int32_t dilation_w_factor) {
2461     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
2462   }
2463   void add_dilation_h_factor(int32_t dilation_h_factor) {
2464     fbb_.AddElement<int32_t>(DepthwiseConv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
2465   }
2466   explicit DepthwiseConv2DOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2467         : fbb_(_fbb) {
2468     start_ = fbb_.StartTable();
2469   }
2470   DepthwiseConv2DOptionsBuilder &operator=(const DepthwiseConv2DOptionsBuilder &);
2471   flatbuffers::Offset<DepthwiseConv2DOptions> Finish() {
2472     const auto end = fbb_.EndTable(start_);
2473     auto o = flatbuffers::Offset<DepthwiseConv2DOptions>(end);
2474     return o;
2475   }
2476 };
2477 
2478 inline flatbuffers::Offset<DepthwiseConv2DOptions> CreateDepthwiseConv2DOptions(
2479     flatbuffers::FlatBufferBuilder &_fbb,
2480     tflite::Padding padding = tflite::Padding_SAME,
2481     int32_t stride_w = 0,
2482     int32_t stride_h = 0,
2483     int32_t depth_multiplier = 0,
2484     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
2485     int32_t dilation_w_factor = 1,
2486     int32_t dilation_h_factor = 1) {
2487   DepthwiseConv2DOptionsBuilder builder_(_fbb);
2488   builder_.add_dilation_h_factor(dilation_h_factor);
2489   builder_.add_dilation_w_factor(dilation_w_factor);
2490   builder_.add_depth_multiplier(depth_multiplier);
2491   builder_.add_stride_h(stride_h);
2492   builder_.add_stride_w(stride_w);
2493   builder_.add_fused_activation_function(fused_activation_function);
2494   builder_.add_padding(padding);
2495   return builder_.Finish();
2496 }
2497 
2498 struct ConcatEmbeddingsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2499   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2500     VT_NUM_CHANNELS = 4,
2501     VT_NUM_COLUMNS_PER_CHANNEL = 6,
2502     VT_EMBEDDING_DIM_PER_CHANNEL = 8
2503   };
2504   int32_t num_channels() const {
2505     return GetField<int32_t>(VT_NUM_CHANNELS, 0);
2506   }
2507   const flatbuffers::Vector<int32_t> *num_columns_per_channel() const {
2508     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_NUM_COLUMNS_PER_CHANNEL);
2509   }
2510   const flatbuffers::Vector<int32_t> *embedding_dim_per_channel() const {
2511     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_EMBEDDING_DIM_PER_CHANNEL);
2512   }
2513   bool Verify(flatbuffers::Verifier &verifier) const {
2514     return VerifyTableStart(verifier) &&
2515            VerifyField<int32_t>(verifier, VT_NUM_CHANNELS) &&
2516            VerifyOffset(verifier, VT_NUM_COLUMNS_PER_CHANNEL) &&
2517            verifier.VerifyVector(num_columns_per_channel()) &&
2518            VerifyOffset(verifier, VT_EMBEDDING_DIM_PER_CHANNEL) &&
2519            verifier.VerifyVector(embedding_dim_per_channel()) &&
2520            verifier.EndTable();
2521   }
2522 };
2523 
2524 struct ConcatEmbeddingsOptionsBuilder {
2525   flatbuffers::FlatBufferBuilder &fbb_;
2526   flatbuffers::uoffset_t start_;
2527   void add_num_channels(int32_t num_channels) {
2528     fbb_.AddElement<int32_t>(ConcatEmbeddingsOptions::VT_NUM_CHANNELS, num_channels, 0);
2529   }
2530   void add_num_columns_per_channel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> num_columns_per_channel) {
2531     fbb_.AddOffset(ConcatEmbeddingsOptions::VT_NUM_COLUMNS_PER_CHANNEL, num_columns_per_channel);
2532   }
2533   void add_embedding_dim_per_channel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> embedding_dim_per_channel) {
2534     fbb_.AddOffset(ConcatEmbeddingsOptions::VT_EMBEDDING_DIM_PER_CHANNEL, embedding_dim_per_channel);
2535   }
2536   explicit ConcatEmbeddingsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2537         : fbb_(_fbb) {
2538     start_ = fbb_.StartTable();
2539   }
2540   ConcatEmbeddingsOptionsBuilder &operator=(const ConcatEmbeddingsOptionsBuilder &);
2541   flatbuffers::Offset<ConcatEmbeddingsOptions> Finish() {
2542     const auto end = fbb_.EndTable(start_);
2543     auto o = flatbuffers::Offset<ConcatEmbeddingsOptions>(end);
2544     return o;
2545   }
2546 };
2547 
2548 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptions(
2549     flatbuffers::FlatBufferBuilder &_fbb,
2550     int32_t num_channels = 0,
2551     flatbuffers::Offset<flatbuffers::Vector<int32_t>> num_columns_per_channel = 0,
2552     flatbuffers::Offset<flatbuffers::Vector<int32_t>> embedding_dim_per_channel = 0) {
2553   ConcatEmbeddingsOptionsBuilder builder_(_fbb);
2554   builder_.add_embedding_dim_per_channel(embedding_dim_per_channel);
2555   builder_.add_num_columns_per_channel(num_columns_per_channel);
2556   builder_.add_num_channels(num_channels);
2557   return builder_.Finish();
2558 }
2559 
2560 inline flatbuffers::Offset<ConcatEmbeddingsOptions> CreateConcatEmbeddingsOptionsDirect(
2561     flatbuffers::FlatBufferBuilder &_fbb,
2562     int32_t num_channels = 0,
2563     const std::vector<int32_t> *num_columns_per_channel = nullptr,
2564     const std::vector<int32_t> *embedding_dim_per_channel = nullptr) {
2565   auto num_columns_per_channel__ = num_columns_per_channel ? _fbb.CreateVector<int32_t>(*num_columns_per_channel) : 0;
2566   auto embedding_dim_per_channel__ = embedding_dim_per_channel ? _fbb.CreateVector<int32_t>(*embedding_dim_per_channel) : 0;
2567   return tflite::CreateConcatEmbeddingsOptions(
2568       _fbb,
2569       num_channels,
2570       num_columns_per_channel__,
2571       embedding_dim_per_channel__);
2572 }
2573 
2574 struct LSHProjectionOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2575   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2576     VT_TYPE = 4
2577   };
2578   tflite::LSHProjectionType type() const {
2579     return static_cast<tflite::LSHProjectionType>(GetField<int8_t>(VT_TYPE, 0));
2580   }
2581   bool Verify(flatbuffers::Verifier &verifier) const {
2582     return VerifyTableStart(verifier) &&
2583            VerifyField<int8_t>(verifier, VT_TYPE) &&
2584            verifier.EndTable();
2585   }
2586 };
2587 
2588 struct LSHProjectionOptionsBuilder {
2589   flatbuffers::FlatBufferBuilder &fbb_;
2590   flatbuffers::uoffset_t start_;
2591   void add_type(tflite::LSHProjectionType type) {
2592     fbb_.AddElement<int8_t>(LSHProjectionOptions::VT_TYPE, static_cast<int8_t>(type), 0);
2593   }
2594   explicit LSHProjectionOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2595         : fbb_(_fbb) {
2596     start_ = fbb_.StartTable();
2597   }
2598   LSHProjectionOptionsBuilder &operator=(const LSHProjectionOptionsBuilder &);
2599   flatbuffers::Offset<LSHProjectionOptions> Finish() {
2600     const auto end = fbb_.EndTable(start_);
2601     auto o = flatbuffers::Offset<LSHProjectionOptions>(end);
2602     return o;
2603   }
2604 };
2605 
2606 inline flatbuffers::Offset<LSHProjectionOptions> CreateLSHProjectionOptions(
2607     flatbuffers::FlatBufferBuilder &_fbb,
2608     tflite::LSHProjectionType type = tflite::LSHProjectionType_UNKNOWN) {
2609   LSHProjectionOptionsBuilder builder_(_fbb);
2610   builder_.add_type(type);
2611   return builder_.Finish();
2612 }
2613 
2614 struct SVDFOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2615   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2616     VT_RANK = 4,
2617     VT_FUSED_ACTIVATION_FUNCTION = 6
2618   };
2619   int32_t rank() const {
2620     return GetField<int32_t>(VT_RANK, 0);
2621   }
2622   tflite::ActivationFunctionType fused_activation_function() const {
2623     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2624   }
2625   bool Verify(flatbuffers::Verifier &verifier) const {
2626     return VerifyTableStart(verifier) &&
2627            VerifyField<int32_t>(verifier, VT_RANK) &&
2628            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2629            verifier.EndTable();
2630   }
2631 };
2632 
2633 struct SVDFOptionsBuilder {
2634   flatbuffers::FlatBufferBuilder &fbb_;
2635   flatbuffers::uoffset_t start_;
2636   void add_rank(int32_t rank) {
2637     fbb_.AddElement<int32_t>(SVDFOptions::VT_RANK, rank, 0);
2638   }
2639   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2640     fbb_.AddElement<int8_t>(SVDFOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2641   }
2642   explicit SVDFOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2643         : fbb_(_fbb) {
2644     start_ = fbb_.StartTable();
2645   }
2646   SVDFOptionsBuilder &operator=(const SVDFOptionsBuilder &);
2647   flatbuffers::Offset<SVDFOptions> Finish() {
2648     const auto end = fbb_.EndTable(start_);
2649     auto o = flatbuffers::Offset<SVDFOptions>(end);
2650     return o;
2651   }
2652 };
2653 
2654 inline flatbuffers::Offset<SVDFOptions> CreateSVDFOptions(
2655     flatbuffers::FlatBufferBuilder &_fbb,
2656     int32_t rank = 0,
2657     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
2658   SVDFOptionsBuilder builder_(_fbb);
2659   builder_.add_rank(rank);
2660   builder_.add_fused_activation_function(fused_activation_function);
2661   return builder_.Finish();
2662 }
2663 
2664 struct RNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2665   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2666     VT_FUSED_ACTIVATION_FUNCTION = 4
2667   };
2668   tflite::ActivationFunctionType fused_activation_function() const {
2669     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2670   }
2671   bool Verify(flatbuffers::Verifier &verifier) const {
2672     return VerifyTableStart(verifier) &&
2673            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2674            verifier.EndTable();
2675   }
2676 };
2677 
2678 struct RNNOptionsBuilder {
2679   flatbuffers::FlatBufferBuilder &fbb_;
2680   flatbuffers::uoffset_t start_;
2681   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2682     fbb_.AddElement<int8_t>(RNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2683   }
2684   explicit RNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2685         : fbb_(_fbb) {
2686     start_ = fbb_.StartTable();
2687   }
2688   RNNOptionsBuilder &operator=(const RNNOptionsBuilder &);
2689   flatbuffers::Offset<RNNOptions> Finish() {
2690     const auto end = fbb_.EndTable(start_);
2691     auto o = flatbuffers::Offset<RNNOptions>(end);
2692     return o;
2693   }
2694 };
2695 
2696 inline flatbuffers::Offset<RNNOptions> CreateRNNOptions(
2697     flatbuffers::FlatBufferBuilder &_fbb,
2698     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
2699   RNNOptionsBuilder builder_(_fbb);
2700   builder_.add_fused_activation_function(fused_activation_function);
2701   return builder_.Finish();
2702 }
2703 
2704 struct SequenceRNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2705   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2706     VT_TIME_MAJOR = 4,
2707     VT_FUSED_ACTIVATION_FUNCTION = 6
2708   };
2709   bool time_major() const {
2710     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
2711   }
2712   tflite::ActivationFunctionType fused_activation_function() const {
2713     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2714   }
2715   bool Verify(flatbuffers::Verifier &verifier) const {
2716     return VerifyTableStart(verifier) &&
2717            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
2718            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2719            verifier.EndTable();
2720   }
2721 };
2722 
2723 struct SequenceRNNOptionsBuilder {
2724   flatbuffers::FlatBufferBuilder &fbb_;
2725   flatbuffers::uoffset_t start_;
2726   void add_time_major(bool time_major) {
2727     fbb_.AddElement<uint8_t>(SequenceRNNOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
2728   }
2729   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2730     fbb_.AddElement<int8_t>(SequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2731   }
2732   explicit SequenceRNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2733         : fbb_(_fbb) {
2734     start_ = fbb_.StartTable();
2735   }
2736   SequenceRNNOptionsBuilder &operator=(const SequenceRNNOptionsBuilder &);
2737   flatbuffers::Offset<SequenceRNNOptions> Finish() {
2738     const auto end = fbb_.EndTable(start_);
2739     auto o = flatbuffers::Offset<SequenceRNNOptions>(end);
2740     return o;
2741   }
2742 };
2743 
2744 inline flatbuffers::Offset<SequenceRNNOptions> CreateSequenceRNNOptions(
2745     flatbuffers::FlatBufferBuilder &_fbb,
2746     bool time_major = false,
2747     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
2748   SequenceRNNOptionsBuilder builder_(_fbb);
2749   builder_.add_fused_activation_function(fused_activation_function);
2750   builder_.add_time_major(time_major);
2751   return builder_.Finish();
2752 }
2753 
2754 struct BidirectionalSequenceRNNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2755   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2756     VT_TIME_MAJOR = 4,
2757     VT_FUSED_ACTIVATION_FUNCTION = 6,
2758     VT_MERGE_OUTPUTS = 8
2759   };
2760   bool time_major() const {
2761     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
2762   }
2763   tflite::ActivationFunctionType fused_activation_function() const {
2764     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2765   }
2766   bool merge_outputs() const {
2767     return GetField<uint8_t>(VT_MERGE_OUTPUTS, 0) != 0;
2768   }
2769   bool Verify(flatbuffers::Verifier &verifier) const {
2770     return VerifyTableStart(verifier) &&
2771            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
2772            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2773            VerifyField<uint8_t>(verifier, VT_MERGE_OUTPUTS) &&
2774            verifier.EndTable();
2775   }
2776 };
2777 
2778 struct BidirectionalSequenceRNNOptionsBuilder {
2779   flatbuffers::FlatBufferBuilder &fbb_;
2780   flatbuffers::uoffset_t start_;
2781   void add_time_major(bool time_major) {
2782     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
2783   }
2784   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2785     fbb_.AddElement<int8_t>(BidirectionalSequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2786   }
2787   void add_merge_outputs(bool merge_outputs) {
2788     fbb_.AddElement<uint8_t>(BidirectionalSequenceRNNOptions::VT_MERGE_OUTPUTS, static_cast<uint8_t>(merge_outputs), 0);
2789   }
2790   explicit BidirectionalSequenceRNNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2791         : fbb_(_fbb) {
2792     start_ = fbb_.StartTable();
2793   }
2794   BidirectionalSequenceRNNOptionsBuilder &operator=(const BidirectionalSequenceRNNOptionsBuilder &);
2795   flatbuffers::Offset<BidirectionalSequenceRNNOptions> Finish() {
2796     const auto end = fbb_.EndTable(start_);
2797     auto o = flatbuffers::Offset<BidirectionalSequenceRNNOptions>(end);
2798     return o;
2799   }
2800 };
2801 
2802 inline flatbuffers::Offset<BidirectionalSequenceRNNOptions> CreateBidirectionalSequenceRNNOptions(
2803     flatbuffers::FlatBufferBuilder &_fbb,
2804     bool time_major = false,
2805     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
2806     bool merge_outputs = false) {
2807   BidirectionalSequenceRNNOptionsBuilder builder_(_fbb);
2808   builder_.add_merge_outputs(merge_outputs);
2809   builder_.add_fused_activation_function(fused_activation_function);
2810   builder_.add_time_major(time_major);
2811   return builder_.Finish();
2812 }
2813 
2814 struct FullyConnectedOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2815   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2816     VT_FUSED_ACTIVATION_FUNCTION = 4,
2817     VT_WEIGHTS_FORMAT = 6,
2818     VT_KEEP_NUM_DIMS = 8
2819   };
2820   tflite::ActivationFunctionType fused_activation_function() const {
2821     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2822   }
2823   tflite::FullyConnectedOptionsWeightsFormat weights_format() const {
2824     return static_cast<tflite::FullyConnectedOptionsWeightsFormat>(GetField<int8_t>(VT_WEIGHTS_FORMAT, 0));
2825   }
2826   bool keep_num_dims() const {
2827     return GetField<uint8_t>(VT_KEEP_NUM_DIMS, 0) != 0;
2828   }
2829   bool Verify(flatbuffers::Verifier &verifier) const {
2830     return VerifyTableStart(verifier) &&
2831            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2832            VerifyField<int8_t>(verifier, VT_WEIGHTS_FORMAT) &&
2833            VerifyField<uint8_t>(verifier, VT_KEEP_NUM_DIMS) &&
2834            verifier.EndTable();
2835   }
2836 };
2837 
2838 struct FullyConnectedOptionsBuilder {
2839   flatbuffers::FlatBufferBuilder &fbb_;
2840   flatbuffers::uoffset_t start_;
2841   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2842     fbb_.AddElement<int8_t>(FullyConnectedOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2843   }
2844   void add_weights_format(tflite::FullyConnectedOptionsWeightsFormat weights_format) {
2845     fbb_.AddElement<int8_t>(FullyConnectedOptions::VT_WEIGHTS_FORMAT, static_cast<int8_t>(weights_format), 0);
2846   }
2847   void add_keep_num_dims(bool keep_num_dims) {
2848     fbb_.AddElement<uint8_t>(FullyConnectedOptions::VT_KEEP_NUM_DIMS, static_cast<uint8_t>(keep_num_dims), 0);
2849   }
2850   explicit FullyConnectedOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2851         : fbb_(_fbb) {
2852     start_ = fbb_.StartTable();
2853   }
2854   FullyConnectedOptionsBuilder &operator=(const FullyConnectedOptionsBuilder &);
2855   flatbuffers::Offset<FullyConnectedOptions> Finish() {
2856     const auto end = fbb_.EndTable(start_);
2857     auto o = flatbuffers::Offset<FullyConnectedOptions>(end);
2858     return o;
2859   }
2860 };
2861 
2862 inline flatbuffers::Offset<FullyConnectedOptions> CreateFullyConnectedOptions(
2863     flatbuffers::FlatBufferBuilder &_fbb,
2864     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
2865     tflite::FullyConnectedOptionsWeightsFormat weights_format = tflite::FullyConnectedOptionsWeightsFormat_DEFAULT,
2866     bool keep_num_dims = false) {
2867   FullyConnectedOptionsBuilder builder_(_fbb);
2868   builder_.add_keep_num_dims(keep_num_dims);
2869   builder_.add_weights_format(weights_format);
2870   builder_.add_fused_activation_function(fused_activation_function);
2871   return builder_.Finish();
2872 }
2873 
2874 struct SoftmaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2875   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2876     VT_BETA = 4
2877   };
2878   float beta() const {
2879     return GetField<float>(VT_BETA, 0.0f);
2880   }
2881   bool Verify(flatbuffers::Verifier &verifier) const {
2882     return VerifyTableStart(verifier) &&
2883            VerifyField<float>(verifier, VT_BETA) &&
2884            verifier.EndTable();
2885   }
2886 };
2887 
2888 struct SoftmaxOptionsBuilder {
2889   flatbuffers::FlatBufferBuilder &fbb_;
2890   flatbuffers::uoffset_t start_;
2891   void add_beta(float beta) {
2892     fbb_.AddElement<float>(SoftmaxOptions::VT_BETA, beta, 0.0f);
2893   }
2894   explicit SoftmaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2895         : fbb_(_fbb) {
2896     start_ = fbb_.StartTable();
2897   }
2898   SoftmaxOptionsBuilder &operator=(const SoftmaxOptionsBuilder &);
2899   flatbuffers::Offset<SoftmaxOptions> Finish() {
2900     const auto end = fbb_.EndTable(start_);
2901     auto o = flatbuffers::Offset<SoftmaxOptions>(end);
2902     return o;
2903   }
2904 };
2905 
2906 inline flatbuffers::Offset<SoftmaxOptions> CreateSoftmaxOptions(
2907     flatbuffers::FlatBufferBuilder &_fbb,
2908     float beta = 0.0f) {
2909   SoftmaxOptionsBuilder builder_(_fbb);
2910   builder_.add_beta(beta);
2911   return builder_.Finish();
2912 }
2913 
2914 struct ConcatenationOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2915   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2916     VT_AXIS = 4,
2917     VT_FUSED_ACTIVATION_FUNCTION = 6
2918   };
2919   int32_t axis() const {
2920     return GetField<int32_t>(VT_AXIS, 0);
2921   }
2922   tflite::ActivationFunctionType fused_activation_function() const {
2923     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2924   }
2925   bool Verify(flatbuffers::Verifier &verifier) const {
2926     return VerifyTableStart(verifier) &&
2927            VerifyField<int32_t>(verifier, VT_AXIS) &&
2928            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2929            verifier.EndTable();
2930   }
2931 };
2932 
2933 struct ConcatenationOptionsBuilder {
2934   flatbuffers::FlatBufferBuilder &fbb_;
2935   flatbuffers::uoffset_t start_;
2936   void add_axis(int32_t axis) {
2937     fbb_.AddElement<int32_t>(ConcatenationOptions::VT_AXIS, axis, 0);
2938   }
2939   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2940     fbb_.AddElement<int8_t>(ConcatenationOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2941   }
2942   explicit ConcatenationOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2943         : fbb_(_fbb) {
2944     start_ = fbb_.StartTable();
2945   }
2946   ConcatenationOptionsBuilder &operator=(const ConcatenationOptionsBuilder &);
2947   flatbuffers::Offset<ConcatenationOptions> Finish() {
2948     const auto end = fbb_.EndTable(start_);
2949     auto o = flatbuffers::Offset<ConcatenationOptions>(end);
2950     return o;
2951   }
2952 };
2953 
2954 inline flatbuffers::Offset<ConcatenationOptions> CreateConcatenationOptions(
2955     flatbuffers::FlatBufferBuilder &_fbb,
2956     int32_t axis = 0,
2957     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
2958   ConcatenationOptionsBuilder builder_(_fbb);
2959   builder_.add_axis(axis);
2960   builder_.add_fused_activation_function(fused_activation_function);
2961   return builder_.Finish();
2962 }
2963 
2964 struct AddOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2965   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2966     VT_FUSED_ACTIVATION_FUNCTION = 4
2967   };
2968   tflite::ActivationFunctionType fused_activation_function() const {
2969     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
2970   }
2971   bool Verify(flatbuffers::Verifier &verifier) const {
2972     return VerifyTableStart(verifier) &&
2973            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
2974            verifier.EndTable();
2975   }
2976 };
2977 
2978 struct AddOptionsBuilder {
2979   flatbuffers::FlatBufferBuilder &fbb_;
2980   flatbuffers::uoffset_t start_;
2981   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
2982     fbb_.AddElement<int8_t>(AddOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
2983   }
2984   explicit AddOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2985         : fbb_(_fbb) {
2986     start_ = fbb_.StartTable();
2987   }
2988   AddOptionsBuilder &operator=(const AddOptionsBuilder &);
2989   flatbuffers::Offset<AddOptions> Finish() {
2990     const auto end = fbb_.EndTable(start_);
2991     auto o = flatbuffers::Offset<AddOptions>(end);
2992     return o;
2993   }
2994 };
2995 
2996 inline flatbuffers::Offset<AddOptions> CreateAddOptions(
2997     flatbuffers::FlatBufferBuilder &_fbb,
2998     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
2999   AddOptionsBuilder builder_(_fbb);
3000   builder_.add_fused_activation_function(fused_activation_function);
3001   return builder_.Finish();
3002 }
3003 
3004 struct MulOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3005   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3006     VT_FUSED_ACTIVATION_FUNCTION = 4
3007   };
3008   tflite::ActivationFunctionType fused_activation_function() const {
3009     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3010   }
3011   bool Verify(flatbuffers::Verifier &verifier) const {
3012     return VerifyTableStart(verifier) &&
3013            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3014            verifier.EndTable();
3015   }
3016 };
3017 
3018 struct MulOptionsBuilder {
3019   flatbuffers::FlatBufferBuilder &fbb_;
3020   flatbuffers::uoffset_t start_;
3021   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3022     fbb_.AddElement<int8_t>(MulOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3023   }
3024   explicit MulOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3025         : fbb_(_fbb) {
3026     start_ = fbb_.StartTable();
3027   }
3028   MulOptionsBuilder &operator=(const MulOptionsBuilder &);
3029   flatbuffers::Offset<MulOptions> Finish() {
3030     const auto end = fbb_.EndTable(start_);
3031     auto o = flatbuffers::Offset<MulOptions>(end);
3032     return o;
3033   }
3034 };
3035 
3036 inline flatbuffers::Offset<MulOptions> CreateMulOptions(
3037     flatbuffers::FlatBufferBuilder &_fbb,
3038     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
3039   MulOptionsBuilder builder_(_fbb);
3040   builder_.add_fused_activation_function(fused_activation_function);
3041   return builder_.Finish();
3042 }
3043 
3044 struct L2NormOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3045   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3046     VT_FUSED_ACTIVATION_FUNCTION = 4
3047   };
3048   tflite::ActivationFunctionType fused_activation_function() const {
3049     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3050   }
3051   bool Verify(flatbuffers::Verifier &verifier) const {
3052     return VerifyTableStart(verifier) &&
3053            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3054            verifier.EndTable();
3055   }
3056 };
3057 
3058 struct L2NormOptionsBuilder {
3059   flatbuffers::FlatBufferBuilder &fbb_;
3060   flatbuffers::uoffset_t start_;
3061   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3062     fbb_.AddElement<int8_t>(L2NormOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3063   }
3064   explicit L2NormOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3065         : fbb_(_fbb) {
3066     start_ = fbb_.StartTable();
3067   }
3068   L2NormOptionsBuilder &operator=(const L2NormOptionsBuilder &);
3069   flatbuffers::Offset<L2NormOptions> Finish() {
3070     const auto end = fbb_.EndTable(start_);
3071     auto o = flatbuffers::Offset<L2NormOptions>(end);
3072     return o;
3073   }
3074 };
3075 
3076 inline flatbuffers::Offset<L2NormOptions> CreateL2NormOptions(
3077     flatbuffers::FlatBufferBuilder &_fbb,
3078     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
3079   L2NormOptionsBuilder builder_(_fbb);
3080   builder_.add_fused_activation_function(fused_activation_function);
3081   return builder_.Finish();
3082 }
3083 
3084 struct LocalResponseNormalizationOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3085   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3086     VT_RADIUS = 4,
3087     VT_BIAS = 6,
3088     VT_ALPHA = 8,
3089     VT_BETA = 10
3090   };
3091   int32_t radius() const {
3092     return GetField<int32_t>(VT_RADIUS, 0);
3093   }
3094   float bias() const {
3095     return GetField<float>(VT_BIAS, 0.0f);
3096   }
3097   float alpha() const {
3098     return GetField<float>(VT_ALPHA, 0.0f);
3099   }
3100   float beta() const {
3101     return GetField<float>(VT_BETA, 0.0f);
3102   }
3103   bool Verify(flatbuffers::Verifier &verifier) const {
3104     return VerifyTableStart(verifier) &&
3105            VerifyField<int32_t>(verifier, VT_RADIUS) &&
3106            VerifyField<float>(verifier, VT_BIAS) &&
3107            VerifyField<float>(verifier, VT_ALPHA) &&
3108            VerifyField<float>(verifier, VT_BETA) &&
3109            verifier.EndTable();
3110   }
3111 };
3112 
3113 struct LocalResponseNormalizationOptionsBuilder {
3114   flatbuffers::FlatBufferBuilder &fbb_;
3115   flatbuffers::uoffset_t start_;
3116   void add_radius(int32_t radius) {
3117     fbb_.AddElement<int32_t>(LocalResponseNormalizationOptions::VT_RADIUS, radius, 0);
3118   }
3119   void add_bias(float bias) {
3120     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_BIAS, bias, 0.0f);
3121   }
3122   void add_alpha(float alpha) {
3123     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_ALPHA, alpha, 0.0f);
3124   }
3125   void add_beta(float beta) {
3126     fbb_.AddElement<float>(LocalResponseNormalizationOptions::VT_BETA, beta, 0.0f);
3127   }
3128   explicit LocalResponseNormalizationOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3129         : fbb_(_fbb) {
3130     start_ = fbb_.StartTable();
3131   }
3132   LocalResponseNormalizationOptionsBuilder &operator=(const LocalResponseNormalizationOptionsBuilder &);
3133   flatbuffers::Offset<LocalResponseNormalizationOptions> Finish() {
3134     const auto end = fbb_.EndTable(start_);
3135     auto o = flatbuffers::Offset<LocalResponseNormalizationOptions>(end);
3136     return o;
3137   }
3138 };
3139 
3140 inline flatbuffers::Offset<LocalResponseNormalizationOptions> CreateLocalResponseNormalizationOptions(
3141     flatbuffers::FlatBufferBuilder &_fbb,
3142     int32_t radius = 0,
3143     float bias = 0.0f,
3144     float alpha = 0.0f,
3145     float beta = 0.0f) {
3146   LocalResponseNormalizationOptionsBuilder builder_(_fbb);
3147   builder_.add_beta(beta);
3148   builder_.add_alpha(alpha);
3149   builder_.add_bias(bias);
3150   builder_.add_radius(radius);
3151   return builder_.Finish();
3152 }
3153 
3154 struct LSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3155   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3156     VT_FUSED_ACTIVATION_FUNCTION = 4,
3157     VT_CELL_CLIP = 6,
3158     VT_PROJ_CLIP = 8,
3159     VT_KERNEL_TYPE = 10
3160   };
3161   tflite::ActivationFunctionType fused_activation_function() const {
3162     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3163   }
3164   float cell_clip() const {
3165     return GetField<float>(VT_CELL_CLIP, 0.0f);
3166   }
3167   float proj_clip() const {
3168     return GetField<float>(VT_PROJ_CLIP, 0.0f);
3169   }
3170   tflite::LSTMKernelType kernel_type() const {
3171     return static_cast<tflite::LSTMKernelType>(GetField<int8_t>(VT_KERNEL_TYPE, 0));
3172   }
3173   bool Verify(flatbuffers::Verifier &verifier) const {
3174     return VerifyTableStart(verifier) &&
3175            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3176            VerifyField<float>(verifier, VT_CELL_CLIP) &&
3177            VerifyField<float>(verifier, VT_PROJ_CLIP) &&
3178            VerifyField<int8_t>(verifier, VT_KERNEL_TYPE) &&
3179            verifier.EndTable();
3180   }
3181 };
3182 
3183 struct LSTMOptionsBuilder {
3184   flatbuffers::FlatBufferBuilder &fbb_;
3185   flatbuffers::uoffset_t start_;
3186   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3187     fbb_.AddElement<int8_t>(LSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3188   }
3189   void add_cell_clip(float cell_clip) {
3190     fbb_.AddElement<float>(LSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
3191   }
3192   void add_proj_clip(float proj_clip) {
3193     fbb_.AddElement<float>(LSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
3194   }
3195   void add_kernel_type(tflite::LSTMKernelType kernel_type) {
3196     fbb_.AddElement<int8_t>(LSTMOptions::VT_KERNEL_TYPE, static_cast<int8_t>(kernel_type), 0);
3197   }
3198   explicit LSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3199         : fbb_(_fbb) {
3200     start_ = fbb_.StartTable();
3201   }
3202   LSTMOptionsBuilder &operator=(const LSTMOptionsBuilder &);
3203   flatbuffers::Offset<LSTMOptions> Finish() {
3204     const auto end = fbb_.EndTable(start_);
3205     auto o = flatbuffers::Offset<LSTMOptions>(end);
3206     return o;
3207   }
3208 };
3209 
3210 inline flatbuffers::Offset<LSTMOptions> CreateLSTMOptions(
3211     flatbuffers::FlatBufferBuilder &_fbb,
3212     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
3213     float cell_clip = 0.0f,
3214     float proj_clip = 0.0f,
3215     tflite::LSTMKernelType kernel_type = tflite::LSTMKernelType_FULL) {
3216   LSTMOptionsBuilder builder_(_fbb);
3217   builder_.add_proj_clip(proj_clip);
3218   builder_.add_cell_clip(cell_clip);
3219   builder_.add_kernel_type(kernel_type);
3220   builder_.add_fused_activation_function(fused_activation_function);
3221   return builder_.Finish();
3222 }
3223 
3224 struct UnidirectionalSequenceLSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3225   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3226     VT_FUSED_ACTIVATION_FUNCTION = 4,
3227     VT_CELL_CLIP = 6,
3228     VT_PROJ_CLIP = 8,
3229     VT_TIME_MAJOR = 10
3230   };
3231   tflite::ActivationFunctionType fused_activation_function() const {
3232     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3233   }
3234   float cell_clip() const {
3235     return GetField<float>(VT_CELL_CLIP, 0.0f);
3236   }
3237   float proj_clip() const {
3238     return GetField<float>(VT_PROJ_CLIP, 0.0f);
3239   }
3240   bool time_major() const {
3241     return GetField<uint8_t>(VT_TIME_MAJOR, 0) != 0;
3242   }
3243   bool Verify(flatbuffers::Verifier &verifier) const {
3244     return VerifyTableStart(verifier) &&
3245            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3246            VerifyField<float>(verifier, VT_CELL_CLIP) &&
3247            VerifyField<float>(verifier, VT_PROJ_CLIP) &&
3248            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
3249            verifier.EndTable();
3250   }
3251 };
3252 
3253 struct UnidirectionalSequenceLSTMOptionsBuilder {
3254   flatbuffers::FlatBufferBuilder &fbb_;
3255   flatbuffers::uoffset_t start_;
3256   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3257     fbb_.AddElement<int8_t>(UnidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3258   }
3259   void add_cell_clip(float cell_clip) {
3260     fbb_.AddElement<float>(UnidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
3261   }
3262   void add_proj_clip(float proj_clip) {
3263     fbb_.AddElement<float>(UnidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
3264   }
3265   void add_time_major(bool time_major) {
3266     fbb_.AddElement<uint8_t>(UnidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 0);
3267   }
3268   explicit UnidirectionalSequenceLSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3269         : fbb_(_fbb) {
3270     start_ = fbb_.StartTable();
3271   }
3272   UnidirectionalSequenceLSTMOptionsBuilder &operator=(const UnidirectionalSequenceLSTMOptionsBuilder &);
3273   flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> Finish() {
3274     const auto end = fbb_.EndTable(start_);
3275     auto o = flatbuffers::Offset<UnidirectionalSequenceLSTMOptions>(end);
3276     return o;
3277   }
3278 };
3279 
3280 inline flatbuffers::Offset<UnidirectionalSequenceLSTMOptions> CreateUnidirectionalSequenceLSTMOptions(
3281     flatbuffers::FlatBufferBuilder &_fbb,
3282     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
3283     float cell_clip = 0.0f,
3284     float proj_clip = 0.0f,
3285     bool time_major = false) {
3286   UnidirectionalSequenceLSTMOptionsBuilder builder_(_fbb);
3287   builder_.add_proj_clip(proj_clip);
3288   builder_.add_cell_clip(cell_clip);
3289   builder_.add_time_major(time_major);
3290   builder_.add_fused_activation_function(fused_activation_function);
3291   return builder_.Finish();
3292 }
3293 
3294 struct BidirectionalSequenceLSTMOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3295   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3296     VT_FUSED_ACTIVATION_FUNCTION = 4,
3297     VT_CELL_CLIP = 6,
3298     VT_PROJ_CLIP = 8,
3299     VT_MERGE_OUTPUTS = 10,
3300     VT_TIME_MAJOR = 12
3301   };
3302   tflite::ActivationFunctionType fused_activation_function() const {
3303     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3304   }
3305   float cell_clip() const {
3306     return GetField<float>(VT_CELL_CLIP, 0.0f);
3307   }
3308   float proj_clip() const {
3309     return GetField<float>(VT_PROJ_CLIP, 0.0f);
3310   }
3311   bool merge_outputs() const {
3312     return GetField<uint8_t>(VT_MERGE_OUTPUTS, 0) != 0;
3313   }
3314   bool time_major() const {
3315     return GetField<uint8_t>(VT_TIME_MAJOR, 1) != 0;
3316   }
3317   bool Verify(flatbuffers::Verifier &verifier) const {
3318     return VerifyTableStart(verifier) &&
3319            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3320            VerifyField<float>(verifier, VT_CELL_CLIP) &&
3321            VerifyField<float>(verifier, VT_PROJ_CLIP) &&
3322            VerifyField<uint8_t>(verifier, VT_MERGE_OUTPUTS) &&
3323            VerifyField<uint8_t>(verifier, VT_TIME_MAJOR) &&
3324            verifier.EndTable();
3325   }
3326 };
3327 
3328 struct BidirectionalSequenceLSTMOptionsBuilder {
3329   flatbuffers::FlatBufferBuilder &fbb_;
3330   flatbuffers::uoffset_t start_;
3331   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3332     fbb_.AddElement<int8_t>(BidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3333   }
3334   void add_cell_clip(float cell_clip) {
3335     fbb_.AddElement<float>(BidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0f);
3336   }
3337   void add_proj_clip(float proj_clip) {
3338     fbb_.AddElement<float>(BidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0f);
3339   }
3340   void add_merge_outputs(bool merge_outputs) {
3341     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_MERGE_OUTPUTS, static_cast<uint8_t>(merge_outputs), 0);
3342   }
3343   void add_time_major(bool time_major) {
3344     fbb_.AddElement<uint8_t>(BidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, static_cast<uint8_t>(time_major), 1);
3345   }
3346   explicit BidirectionalSequenceLSTMOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3347         : fbb_(_fbb) {
3348     start_ = fbb_.StartTable();
3349   }
3350   BidirectionalSequenceLSTMOptionsBuilder &operator=(const BidirectionalSequenceLSTMOptionsBuilder &);
3351   flatbuffers::Offset<BidirectionalSequenceLSTMOptions> Finish() {
3352     const auto end = fbb_.EndTable(start_);
3353     auto o = flatbuffers::Offset<BidirectionalSequenceLSTMOptions>(end);
3354     return o;
3355   }
3356 };
3357 
3358 inline flatbuffers::Offset<BidirectionalSequenceLSTMOptions> CreateBidirectionalSequenceLSTMOptions(
3359     flatbuffers::FlatBufferBuilder &_fbb,
3360     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE,
3361     float cell_clip = 0.0f,
3362     float proj_clip = 0.0f,
3363     bool merge_outputs = false,
3364     bool time_major = true) {
3365   BidirectionalSequenceLSTMOptionsBuilder builder_(_fbb);
3366   builder_.add_proj_clip(proj_clip);
3367   builder_.add_cell_clip(cell_clip);
3368   builder_.add_time_major(time_major);
3369   builder_.add_merge_outputs(merge_outputs);
3370   builder_.add_fused_activation_function(fused_activation_function);
3371   return builder_.Finish();
3372 }
3373 
3374 struct ResizeBilinearOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3375   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3376     VT_ALIGN_CORNERS = 8
3377   };
3378   bool align_corners() const {
3379     return GetField<uint8_t>(VT_ALIGN_CORNERS, 0) != 0;
3380   }
3381   bool Verify(flatbuffers::Verifier &verifier) const {
3382     return VerifyTableStart(verifier) &&
3383            VerifyField<uint8_t>(verifier, VT_ALIGN_CORNERS) &&
3384            verifier.EndTable();
3385   }
3386 };
3387 
3388 struct ResizeBilinearOptionsBuilder {
3389   flatbuffers::FlatBufferBuilder &fbb_;
3390   flatbuffers::uoffset_t start_;
3391   void add_align_corners(bool align_corners) {
3392     fbb_.AddElement<uint8_t>(ResizeBilinearOptions::VT_ALIGN_CORNERS, static_cast<uint8_t>(align_corners), 0);
3393   }
3394   explicit ResizeBilinearOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3395         : fbb_(_fbb) {
3396     start_ = fbb_.StartTable();
3397   }
3398   ResizeBilinearOptionsBuilder &operator=(const ResizeBilinearOptionsBuilder &);
3399   flatbuffers::Offset<ResizeBilinearOptions> Finish() {
3400     const auto end = fbb_.EndTable(start_);
3401     auto o = flatbuffers::Offset<ResizeBilinearOptions>(end);
3402     return o;
3403   }
3404 };
3405 
3406 inline flatbuffers::Offset<ResizeBilinearOptions> CreateResizeBilinearOptions(
3407     flatbuffers::FlatBufferBuilder &_fbb,
3408     bool align_corners = false) {
3409   ResizeBilinearOptionsBuilder builder_(_fbb);
3410   builder_.add_align_corners(align_corners);
3411   return builder_.Finish();
3412 }
3413 
3414 struct ResizeNearestNeighborOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3415   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3416     VT_ALIGN_CORNERS = 4
3417   };
3418   bool align_corners() const {
3419     return GetField<uint8_t>(VT_ALIGN_CORNERS, 0) != 0;
3420   }
3421   bool Verify(flatbuffers::Verifier &verifier) const {
3422     return VerifyTableStart(verifier) &&
3423            VerifyField<uint8_t>(verifier, VT_ALIGN_CORNERS) &&
3424            verifier.EndTable();
3425   }
3426 };
3427 
3428 struct ResizeNearestNeighborOptionsBuilder {
3429   flatbuffers::FlatBufferBuilder &fbb_;
3430   flatbuffers::uoffset_t start_;
3431   void add_align_corners(bool align_corners) {
3432     fbb_.AddElement<uint8_t>(ResizeNearestNeighborOptions::VT_ALIGN_CORNERS, static_cast<uint8_t>(align_corners), 0);
3433   }
3434   explicit ResizeNearestNeighborOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3435         : fbb_(_fbb) {
3436     start_ = fbb_.StartTable();
3437   }
3438   ResizeNearestNeighborOptionsBuilder &operator=(const ResizeNearestNeighborOptionsBuilder &);
3439   flatbuffers::Offset<ResizeNearestNeighborOptions> Finish() {
3440     const auto end = fbb_.EndTable(start_);
3441     auto o = flatbuffers::Offset<ResizeNearestNeighborOptions>(end);
3442     return o;
3443   }
3444 };
3445 
3446 inline flatbuffers::Offset<ResizeNearestNeighborOptions> CreateResizeNearestNeighborOptions(
3447     flatbuffers::FlatBufferBuilder &_fbb,
3448     bool align_corners = false) {
3449   ResizeNearestNeighborOptionsBuilder builder_(_fbb);
3450   builder_.add_align_corners(align_corners);
3451   return builder_.Finish();
3452 }
3453 
3454 struct CallOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3455   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3456     VT_SUBGRAPH = 4
3457   };
3458   uint32_t subgraph() const {
3459     return GetField<uint32_t>(VT_SUBGRAPH, 0);
3460   }
3461   bool Verify(flatbuffers::Verifier &verifier) const {
3462     return VerifyTableStart(verifier) &&
3463            VerifyField<uint32_t>(verifier, VT_SUBGRAPH) &&
3464            verifier.EndTable();
3465   }
3466 };
3467 
3468 struct CallOptionsBuilder {
3469   flatbuffers::FlatBufferBuilder &fbb_;
3470   flatbuffers::uoffset_t start_;
3471   void add_subgraph(uint32_t subgraph) {
3472     fbb_.AddElement<uint32_t>(CallOptions::VT_SUBGRAPH, subgraph, 0);
3473   }
3474   explicit CallOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3475         : fbb_(_fbb) {
3476     start_ = fbb_.StartTable();
3477   }
3478   CallOptionsBuilder &operator=(const CallOptionsBuilder &);
3479   flatbuffers::Offset<CallOptions> Finish() {
3480     const auto end = fbb_.EndTable(start_);
3481     auto o = flatbuffers::Offset<CallOptions>(end);
3482     return o;
3483   }
3484 };
3485 
3486 inline flatbuffers::Offset<CallOptions> CreateCallOptions(
3487     flatbuffers::FlatBufferBuilder &_fbb,
3488     uint32_t subgraph = 0) {
3489   CallOptionsBuilder builder_(_fbb);
3490   builder_.add_subgraph(subgraph);
3491   return builder_.Finish();
3492 }
3493 
3494 struct PadOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3495   bool Verify(flatbuffers::Verifier &verifier) const {
3496     return VerifyTableStart(verifier) &&
3497            verifier.EndTable();
3498   }
3499 };
3500 
3501 struct PadOptionsBuilder {
3502   flatbuffers::FlatBufferBuilder &fbb_;
3503   flatbuffers::uoffset_t start_;
3504   explicit PadOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3505         : fbb_(_fbb) {
3506     start_ = fbb_.StartTable();
3507   }
3508   PadOptionsBuilder &operator=(const PadOptionsBuilder &);
3509   flatbuffers::Offset<PadOptions> Finish() {
3510     const auto end = fbb_.EndTable(start_);
3511     auto o = flatbuffers::Offset<PadOptions>(end);
3512     return o;
3513   }
3514 };
3515 
3516 inline flatbuffers::Offset<PadOptions> CreatePadOptions(
3517     flatbuffers::FlatBufferBuilder &_fbb) {
3518   PadOptionsBuilder builder_(_fbb);
3519   return builder_.Finish();
3520 }
3521 
3522 struct PadV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3523   bool Verify(flatbuffers::Verifier &verifier) const {
3524     return VerifyTableStart(verifier) &&
3525            verifier.EndTable();
3526   }
3527 };
3528 
3529 struct PadV2OptionsBuilder {
3530   flatbuffers::FlatBufferBuilder &fbb_;
3531   flatbuffers::uoffset_t start_;
3532   explicit PadV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3533         : fbb_(_fbb) {
3534     start_ = fbb_.StartTable();
3535   }
3536   PadV2OptionsBuilder &operator=(const PadV2OptionsBuilder &);
3537   flatbuffers::Offset<PadV2Options> Finish() {
3538     const auto end = fbb_.EndTable(start_);
3539     auto o = flatbuffers::Offset<PadV2Options>(end);
3540     return o;
3541   }
3542 };
3543 
3544 inline flatbuffers::Offset<PadV2Options> CreatePadV2Options(
3545     flatbuffers::FlatBufferBuilder &_fbb) {
3546   PadV2OptionsBuilder builder_(_fbb);
3547   return builder_.Finish();
3548 }
3549 
3550 struct ReshapeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3551   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3552     VT_NEW_SHAPE = 4
3553   };
3554   const flatbuffers::Vector<int32_t> *new_shape() const {
3555     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_NEW_SHAPE);
3556   }
3557   bool Verify(flatbuffers::Verifier &verifier) const {
3558     return VerifyTableStart(verifier) &&
3559            VerifyOffset(verifier, VT_NEW_SHAPE) &&
3560            verifier.VerifyVector(new_shape()) &&
3561            verifier.EndTable();
3562   }
3563 };
3564 
3565 struct ReshapeOptionsBuilder {
3566   flatbuffers::FlatBufferBuilder &fbb_;
3567   flatbuffers::uoffset_t start_;
3568   void add_new_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> new_shape) {
3569     fbb_.AddOffset(ReshapeOptions::VT_NEW_SHAPE, new_shape);
3570   }
3571   explicit ReshapeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3572         : fbb_(_fbb) {
3573     start_ = fbb_.StartTable();
3574   }
3575   ReshapeOptionsBuilder &operator=(const ReshapeOptionsBuilder &);
3576   flatbuffers::Offset<ReshapeOptions> Finish() {
3577     const auto end = fbb_.EndTable(start_);
3578     auto o = flatbuffers::Offset<ReshapeOptions>(end);
3579     return o;
3580   }
3581 };
3582 
3583 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptions(
3584     flatbuffers::FlatBufferBuilder &_fbb,
3585     flatbuffers::Offset<flatbuffers::Vector<int32_t>> new_shape = 0) {
3586   ReshapeOptionsBuilder builder_(_fbb);
3587   builder_.add_new_shape(new_shape);
3588   return builder_.Finish();
3589 }
3590 
3591 inline flatbuffers::Offset<ReshapeOptions> CreateReshapeOptionsDirect(
3592     flatbuffers::FlatBufferBuilder &_fbb,
3593     const std::vector<int32_t> *new_shape = nullptr) {
3594   auto new_shape__ = new_shape ? _fbb.CreateVector<int32_t>(*new_shape) : 0;
3595   return tflite::CreateReshapeOptions(
3596       _fbb,
3597       new_shape__);
3598 }
3599 
3600 struct SpaceToBatchNDOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3601   bool Verify(flatbuffers::Verifier &verifier) const {
3602     return VerifyTableStart(verifier) &&
3603            verifier.EndTable();
3604   }
3605 };
3606 
3607 struct SpaceToBatchNDOptionsBuilder {
3608   flatbuffers::FlatBufferBuilder &fbb_;
3609   flatbuffers::uoffset_t start_;
3610   explicit SpaceToBatchNDOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3611         : fbb_(_fbb) {
3612     start_ = fbb_.StartTable();
3613   }
3614   SpaceToBatchNDOptionsBuilder &operator=(const SpaceToBatchNDOptionsBuilder &);
3615   flatbuffers::Offset<SpaceToBatchNDOptions> Finish() {
3616     const auto end = fbb_.EndTable(start_);
3617     auto o = flatbuffers::Offset<SpaceToBatchNDOptions>(end);
3618     return o;
3619   }
3620 };
3621 
3622 inline flatbuffers::Offset<SpaceToBatchNDOptions> CreateSpaceToBatchNDOptions(
3623     flatbuffers::FlatBufferBuilder &_fbb) {
3624   SpaceToBatchNDOptionsBuilder builder_(_fbb);
3625   return builder_.Finish();
3626 }
3627 
3628 struct BatchToSpaceNDOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3629   bool Verify(flatbuffers::Verifier &verifier) const {
3630     return VerifyTableStart(verifier) &&
3631            verifier.EndTable();
3632   }
3633 };
3634 
3635 struct BatchToSpaceNDOptionsBuilder {
3636   flatbuffers::FlatBufferBuilder &fbb_;
3637   flatbuffers::uoffset_t start_;
3638   explicit BatchToSpaceNDOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3639         : fbb_(_fbb) {
3640     start_ = fbb_.StartTable();
3641   }
3642   BatchToSpaceNDOptionsBuilder &operator=(const BatchToSpaceNDOptionsBuilder &);
3643   flatbuffers::Offset<BatchToSpaceNDOptions> Finish() {
3644     const auto end = fbb_.EndTable(start_);
3645     auto o = flatbuffers::Offset<BatchToSpaceNDOptions>(end);
3646     return o;
3647   }
3648 };
3649 
3650 inline flatbuffers::Offset<BatchToSpaceNDOptions> CreateBatchToSpaceNDOptions(
3651     flatbuffers::FlatBufferBuilder &_fbb) {
3652   BatchToSpaceNDOptionsBuilder builder_(_fbb);
3653   return builder_.Finish();
3654 }
3655 
3656 struct SkipGramOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3657   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3658     VT_NGRAM_SIZE = 4,
3659     VT_MAX_SKIP_SIZE = 6,
3660     VT_INCLUDE_ALL_NGRAMS = 8
3661   };
3662   int32_t ngram_size() const {
3663     return GetField<int32_t>(VT_NGRAM_SIZE, 0);
3664   }
3665   int32_t max_skip_size() const {
3666     return GetField<int32_t>(VT_MAX_SKIP_SIZE, 0);
3667   }
3668   bool include_all_ngrams() const {
3669     return GetField<uint8_t>(VT_INCLUDE_ALL_NGRAMS, 0) != 0;
3670   }
3671   bool Verify(flatbuffers::Verifier &verifier) const {
3672     return VerifyTableStart(verifier) &&
3673            VerifyField<int32_t>(verifier, VT_NGRAM_SIZE) &&
3674            VerifyField<int32_t>(verifier, VT_MAX_SKIP_SIZE) &&
3675            VerifyField<uint8_t>(verifier, VT_INCLUDE_ALL_NGRAMS) &&
3676            verifier.EndTable();
3677   }
3678 };
3679 
3680 struct SkipGramOptionsBuilder {
3681   flatbuffers::FlatBufferBuilder &fbb_;
3682   flatbuffers::uoffset_t start_;
3683   void add_ngram_size(int32_t ngram_size) {
3684     fbb_.AddElement<int32_t>(SkipGramOptions::VT_NGRAM_SIZE, ngram_size, 0);
3685   }
3686   void add_max_skip_size(int32_t max_skip_size) {
3687     fbb_.AddElement<int32_t>(SkipGramOptions::VT_MAX_SKIP_SIZE, max_skip_size, 0);
3688   }
3689   void add_include_all_ngrams(bool include_all_ngrams) {
3690     fbb_.AddElement<uint8_t>(SkipGramOptions::VT_INCLUDE_ALL_NGRAMS, static_cast<uint8_t>(include_all_ngrams), 0);
3691   }
3692   explicit SkipGramOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3693         : fbb_(_fbb) {
3694     start_ = fbb_.StartTable();
3695   }
3696   SkipGramOptionsBuilder &operator=(const SkipGramOptionsBuilder &);
3697   flatbuffers::Offset<SkipGramOptions> Finish() {
3698     const auto end = fbb_.EndTable(start_);
3699     auto o = flatbuffers::Offset<SkipGramOptions>(end);
3700     return o;
3701   }
3702 };
3703 
3704 inline flatbuffers::Offset<SkipGramOptions> CreateSkipGramOptions(
3705     flatbuffers::FlatBufferBuilder &_fbb,
3706     int32_t ngram_size = 0,
3707     int32_t max_skip_size = 0,
3708     bool include_all_ngrams = false) {
3709   SkipGramOptionsBuilder builder_(_fbb);
3710   builder_.add_max_skip_size(max_skip_size);
3711   builder_.add_ngram_size(ngram_size);
3712   builder_.add_include_all_ngrams(include_all_ngrams);
3713   return builder_.Finish();
3714 }
3715 
3716 struct SpaceToDepthOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3717   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3718     VT_BLOCK_SIZE = 4
3719   };
3720   int32_t block_size() const {
3721     return GetField<int32_t>(VT_BLOCK_SIZE, 0);
3722   }
3723   bool Verify(flatbuffers::Verifier &verifier) const {
3724     return VerifyTableStart(verifier) &&
3725            VerifyField<int32_t>(verifier, VT_BLOCK_SIZE) &&
3726            verifier.EndTable();
3727   }
3728 };
3729 
3730 struct SpaceToDepthOptionsBuilder {
3731   flatbuffers::FlatBufferBuilder &fbb_;
3732   flatbuffers::uoffset_t start_;
3733   void add_block_size(int32_t block_size) {
3734     fbb_.AddElement<int32_t>(SpaceToDepthOptions::VT_BLOCK_SIZE, block_size, 0);
3735   }
3736   explicit SpaceToDepthOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3737         : fbb_(_fbb) {
3738     start_ = fbb_.StartTable();
3739   }
3740   SpaceToDepthOptionsBuilder &operator=(const SpaceToDepthOptionsBuilder &);
3741   flatbuffers::Offset<SpaceToDepthOptions> Finish() {
3742     const auto end = fbb_.EndTable(start_);
3743     auto o = flatbuffers::Offset<SpaceToDepthOptions>(end);
3744     return o;
3745   }
3746 };
3747 
3748 inline flatbuffers::Offset<SpaceToDepthOptions> CreateSpaceToDepthOptions(
3749     flatbuffers::FlatBufferBuilder &_fbb,
3750     int32_t block_size = 0) {
3751   SpaceToDepthOptionsBuilder builder_(_fbb);
3752   builder_.add_block_size(block_size);
3753   return builder_.Finish();
3754 }
3755 
3756 struct DepthToSpaceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3757   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3758     VT_BLOCK_SIZE = 4
3759   };
3760   int32_t block_size() const {
3761     return GetField<int32_t>(VT_BLOCK_SIZE, 0);
3762   }
3763   bool Verify(flatbuffers::Verifier &verifier) const {
3764     return VerifyTableStart(verifier) &&
3765            VerifyField<int32_t>(verifier, VT_BLOCK_SIZE) &&
3766            verifier.EndTable();
3767   }
3768 };
3769 
3770 struct DepthToSpaceOptionsBuilder {
3771   flatbuffers::FlatBufferBuilder &fbb_;
3772   flatbuffers::uoffset_t start_;
3773   void add_block_size(int32_t block_size) {
3774     fbb_.AddElement<int32_t>(DepthToSpaceOptions::VT_BLOCK_SIZE, block_size, 0);
3775   }
3776   explicit DepthToSpaceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3777         : fbb_(_fbb) {
3778     start_ = fbb_.StartTable();
3779   }
3780   DepthToSpaceOptionsBuilder &operator=(const DepthToSpaceOptionsBuilder &);
3781   flatbuffers::Offset<DepthToSpaceOptions> Finish() {
3782     const auto end = fbb_.EndTable(start_);
3783     auto o = flatbuffers::Offset<DepthToSpaceOptions>(end);
3784     return o;
3785   }
3786 };
3787 
3788 inline flatbuffers::Offset<DepthToSpaceOptions> CreateDepthToSpaceOptions(
3789     flatbuffers::FlatBufferBuilder &_fbb,
3790     int32_t block_size = 0) {
3791   DepthToSpaceOptionsBuilder builder_(_fbb);
3792   builder_.add_block_size(block_size);
3793   return builder_.Finish();
3794 }
3795 
3796 struct SubOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3797   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3798     VT_FUSED_ACTIVATION_FUNCTION = 4
3799   };
3800   tflite::ActivationFunctionType fused_activation_function() const {
3801     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3802   }
3803   bool Verify(flatbuffers::Verifier &verifier) const {
3804     return VerifyTableStart(verifier) &&
3805            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3806            verifier.EndTable();
3807   }
3808 };
3809 
3810 struct SubOptionsBuilder {
3811   flatbuffers::FlatBufferBuilder &fbb_;
3812   flatbuffers::uoffset_t start_;
3813   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3814     fbb_.AddElement<int8_t>(SubOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3815   }
3816   explicit SubOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3817         : fbb_(_fbb) {
3818     start_ = fbb_.StartTable();
3819   }
3820   SubOptionsBuilder &operator=(const SubOptionsBuilder &);
3821   flatbuffers::Offset<SubOptions> Finish() {
3822     const auto end = fbb_.EndTable(start_);
3823     auto o = flatbuffers::Offset<SubOptions>(end);
3824     return o;
3825   }
3826 };
3827 
3828 inline flatbuffers::Offset<SubOptions> CreateSubOptions(
3829     flatbuffers::FlatBufferBuilder &_fbb,
3830     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
3831   SubOptionsBuilder builder_(_fbb);
3832   builder_.add_fused_activation_function(fused_activation_function);
3833   return builder_.Finish();
3834 }
3835 
3836 struct DivOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3837   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3838     VT_FUSED_ACTIVATION_FUNCTION = 4
3839   };
3840   tflite::ActivationFunctionType fused_activation_function() const {
3841     return static_cast<tflite::ActivationFunctionType>(GetField<int8_t>(VT_FUSED_ACTIVATION_FUNCTION, 0));
3842   }
3843   bool Verify(flatbuffers::Verifier &verifier) const {
3844     return VerifyTableStart(verifier) &&
3845            VerifyField<int8_t>(verifier, VT_FUSED_ACTIVATION_FUNCTION) &&
3846            verifier.EndTable();
3847   }
3848 };
3849 
3850 struct DivOptionsBuilder {
3851   flatbuffers::FlatBufferBuilder &fbb_;
3852   flatbuffers::uoffset_t start_;
3853   void add_fused_activation_function(tflite::ActivationFunctionType fused_activation_function) {
3854     fbb_.AddElement<int8_t>(DivOptions::VT_FUSED_ACTIVATION_FUNCTION, static_cast<int8_t>(fused_activation_function), 0);
3855   }
3856   explicit DivOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3857         : fbb_(_fbb) {
3858     start_ = fbb_.StartTable();
3859   }
3860   DivOptionsBuilder &operator=(const DivOptionsBuilder &);
3861   flatbuffers::Offset<DivOptions> Finish() {
3862     const auto end = fbb_.EndTable(start_);
3863     auto o = flatbuffers::Offset<DivOptions>(end);
3864     return o;
3865   }
3866 };
3867 
3868 inline flatbuffers::Offset<DivOptions> CreateDivOptions(
3869     flatbuffers::FlatBufferBuilder &_fbb,
3870     tflite::ActivationFunctionType fused_activation_function = tflite::ActivationFunctionType_NONE) {
3871   DivOptionsBuilder builder_(_fbb);
3872   builder_.add_fused_activation_function(fused_activation_function);
3873   return builder_.Finish();
3874 }
3875 
3876 struct TopKV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3877   bool Verify(flatbuffers::Verifier &verifier) const {
3878     return VerifyTableStart(verifier) &&
3879            verifier.EndTable();
3880   }
3881 };
3882 
3883 struct TopKV2OptionsBuilder {
3884   flatbuffers::FlatBufferBuilder &fbb_;
3885   flatbuffers::uoffset_t start_;
3886   explicit TopKV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3887         : fbb_(_fbb) {
3888     start_ = fbb_.StartTable();
3889   }
3890   TopKV2OptionsBuilder &operator=(const TopKV2OptionsBuilder &);
3891   flatbuffers::Offset<TopKV2Options> Finish() {
3892     const auto end = fbb_.EndTable(start_);
3893     auto o = flatbuffers::Offset<TopKV2Options>(end);
3894     return o;
3895   }
3896 };
3897 
3898 inline flatbuffers::Offset<TopKV2Options> CreateTopKV2Options(
3899     flatbuffers::FlatBufferBuilder &_fbb) {
3900   TopKV2OptionsBuilder builder_(_fbb);
3901   return builder_.Finish();
3902 }
3903 
3904 struct EmbeddingLookupSparseOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3905   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3906     VT_COMBINER = 4
3907   };
3908   tflite::CombinerType combiner() const {
3909     return static_cast<tflite::CombinerType>(GetField<int8_t>(VT_COMBINER, 0));
3910   }
3911   bool Verify(flatbuffers::Verifier &verifier) const {
3912     return VerifyTableStart(verifier) &&
3913            VerifyField<int8_t>(verifier, VT_COMBINER) &&
3914            verifier.EndTable();
3915   }
3916 };
3917 
3918 struct EmbeddingLookupSparseOptionsBuilder {
3919   flatbuffers::FlatBufferBuilder &fbb_;
3920   flatbuffers::uoffset_t start_;
3921   void add_combiner(tflite::CombinerType combiner) {
3922     fbb_.AddElement<int8_t>(EmbeddingLookupSparseOptions::VT_COMBINER, static_cast<int8_t>(combiner), 0);
3923   }
3924   explicit EmbeddingLookupSparseOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3925         : fbb_(_fbb) {
3926     start_ = fbb_.StartTable();
3927   }
3928   EmbeddingLookupSparseOptionsBuilder &operator=(const EmbeddingLookupSparseOptionsBuilder &);
3929   flatbuffers::Offset<EmbeddingLookupSparseOptions> Finish() {
3930     const auto end = fbb_.EndTable(start_);
3931     auto o = flatbuffers::Offset<EmbeddingLookupSparseOptions>(end);
3932     return o;
3933   }
3934 };
3935 
3936 inline flatbuffers::Offset<EmbeddingLookupSparseOptions> CreateEmbeddingLookupSparseOptions(
3937     flatbuffers::FlatBufferBuilder &_fbb,
3938     tflite::CombinerType combiner = tflite::CombinerType_SUM) {
3939   EmbeddingLookupSparseOptionsBuilder builder_(_fbb);
3940   builder_.add_combiner(combiner);
3941   return builder_.Finish();
3942 }
3943 
3944 struct GatherOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3945   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3946     VT_AXIS = 4
3947   };
3948   int32_t axis() const {
3949     return GetField<int32_t>(VT_AXIS, 0);
3950   }
3951   bool Verify(flatbuffers::Verifier &verifier) const {
3952     return VerifyTableStart(verifier) &&
3953            VerifyField<int32_t>(verifier, VT_AXIS) &&
3954            verifier.EndTable();
3955   }
3956 };
3957 
3958 struct GatherOptionsBuilder {
3959   flatbuffers::FlatBufferBuilder &fbb_;
3960   flatbuffers::uoffset_t start_;
3961   void add_axis(int32_t axis) {
3962     fbb_.AddElement<int32_t>(GatherOptions::VT_AXIS, axis, 0);
3963   }
3964   explicit GatherOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3965         : fbb_(_fbb) {
3966     start_ = fbb_.StartTable();
3967   }
3968   GatherOptionsBuilder &operator=(const GatherOptionsBuilder &);
3969   flatbuffers::Offset<GatherOptions> Finish() {
3970     const auto end = fbb_.EndTable(start_);
3971     auto o = flatbuffers::Offset<GatherOptions>(end);
3972     return o;
3973   }
3974 };
3975 
3976 inline flatbuffers::Offset<GatherOptions> CreateGatherOptions(
3977     flatbuffers::FlatBufferBuilder &_fbb,
3978     int32_t axis = 0) {
3979   GatherOptionsBuilder builder_(_fbb);
3980   builder_.add_axis(axis);
3981   return builder_.Finish();
3982 }
3983 
3984 struct TransposeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3985   bool Verify(flatbuffers::Verifier &verifier) const {
3986     return VerifyTableStart(verifier) &&
3987            verifier.EndTable();
3988   }
3989 };
3990 
3991 struct TransposeOptionsBuilder {
3992   flatbuffers::FlatBufferBuilder &fbb_;
3993   flatbuffers::uoffset_t start_;
3994   explicit TransposeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3995         : fbb_(_fbb) {
3996     start_ = fbb_.StartTable();
3997   }
3998   TransposeOptionsBuilder &operator=(const TransposeOptionsBuilder &);
3999   flatbuffers::Offset<TransposeOptions> Finish() {
4000     const auto end = fbb_.EndTable(start_);
4001     auto o = flatbuffers::Offset<TransposeOptions>(end);
4002     return o;
4003   }
4004 };
4005 
4006 inline flatbuffers::Offset<TransposeOptions> CreateTransposeOptions(
4007     flatbuffers::FlatBufferBuilder &_fbb) {
4008   TransposeOptionsBuilder builder_(_fbb);
4009   return builder_.Finish();
4010 }
4011 
4012 struct ExpOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4013   bool Verify(flatbuffers::Verifier &verifier) const {
4014     return VerifyTableStart(verifier) &&
4015            verifier.EndTable();
4016   }
4017 };
4018 
4019 struct ExpOptionsBuilder {
4020   flatbuffers::FlatBufferBuilder &fbb_;
4021   flatbuffers::uoffset_t start_;
4022   explicit ExpOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4023         : fbb_(_fbb) {
4024     start_ = fbb_.StartTable();
4025   }
4026   ExpOptionsBuilder &operator=(const ExpOptionsBuilder &);
4027   flatbuffers::Offset<ExpOptions> Finish() {
4028     const auto end = fbb_.EndTable(start_);
4029     auto o = flatbuffers::Offset<ExpOptions>(end);
4030     return o;
4031   }
4032 };
4033 
4034 inline flatbuffers::Offset<ExpOptions> CreateExpOptions(
4035     flatbuffers::FlatBufferBuilder &_fbb) {
4036   ExpOptionsBuilder builder_(_fbb);
4037   return builder_.Finish();
4038 }
4039 
4040 struct CosOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4041   bool Verify(flatbuffers::Verifier &verifier) const {
4042     return VerifyTableStart(verifier) &&
4043            verifier.EndTable();
4044   }
4045 };
4046 
4047 struct CosOptionsBuilder {
4048   flatbuffers::FlatBufferBuilder &fbb_;
4049   flatbuffers::uoffset_t start_;
4050   explicit CosOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4051         : fbb_(_fbb) {
4052     start_ = fbb_.StartTable();
4053   }
4054   CosOptionsBuilder &operator=(const CosOptionsBuilder &);
4055   flatbuffers::Offset<CosOptions> Finish() {
4056     const auto end = fbb_.EndTable(start_);
4057     auto o = flatbuffers::Offset<CosOptions>(end);
4058     return o;
4059   }
4060 };
4061 
4062 inline flatbuffers::Offset<CosOptions> CreateCosOptions(
4063     flatbuffers::FlatBufferBuilder &_fbb) {
4064   CosOptionsBuilder builder_(_fbb);
4065   return builder_.Finish();
4066 }
4067 
4068 struct ReducerOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4069   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4070     VT_KEEP_DIMS = 4
4071   };
4072   bool keep_dims() const {
4073     return GetField<uint8_t>(VT_KEEP_DIMS, 0) != 0;
4074   }
4075   bool Verify(flatbuffers::Verifier &verifier) const {
4076     return VerifyTableStart(verifier) &&
4077            VerifyField<uint8_t>(verifier, VT_KEEP_DIMS) &&
4078            verifier.EndTable();
4079   }
4080 };
4081 
4082 struct ReducerOptionsBuilder {
4083   flatbuffers::FlatBufferBuilder &fbb_;
4084   flatbuffers::uoffset_t start_;
4085   void add_keep_dims(bool keep_dims) {
4086     fbb_.AddElement<uint8_t>(ReducerOptions::VT_KEEP_DIMS, static_cast<uint8_t>(keep_dims), 0);
4087   }
4088   explicit ReducerOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4089         : fbb_(_fbb) {
4090     start_ = fbb_.StartTable();
4091   }
4092   ReducerOptionsBuilder &operator=(const ReducerOptionsBuilder &);
4093   flatbuffers::Offset<ReducerOptions> Finish() {
4094     const auto end = fbb_.EndTable(start_);
4095     auto o = flatbuffers::Offset<ReducerOptions>(end);
4096     return o;
4097   }
4098 };
4099 
4100 inline flatbuffers::Offset<ReducerOptions> CreateReducerOptions(
4101     flatbuffers::FlatBufferBuilder &_fbb,
4102     bool keep_dims = false) {
4103   ReducerOptionsBuilder builder_(_fbb);
4104   builder_.add_keep_dims(keep_dims);
4105   return builder_.Finish();
4106 }
4107 
4108 struct SqueezeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4109   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4110     VT_SQUEEZE_DIMS = 4
4111   };
4112   const flatbuffers::Vector<int32_t> *squeeze_dims() const {
4113     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SQUEEZE_DIMS);
4114   }
4115   bool Verify(flatbuffers::Verifier &verifier) const {
4116     return VerifyTableStart(verifier) &&
4117            VerifyOffset(verifier, VT_SQUEEZE_DIMS) &&
4118            verifier.VerifyVector(squeeze_dims()) &&
4119            verifier.EndTable();
4120   }
4121 };
4122 
4123 struct SqueezeOptionsBuilder {
4124   flatbuffers::FlatBufferBuilder &fbb_;
4125   flatbuffers::uoffset_t start_;
4126   void add_squeeze_dims(flatbuffers::Offset<flatbuffers::Vector<int32_t>> squeeze_dims) {
4127     fbb_.AddOffset(SqueezeOptions::VT_SQUEEZE_DIMS, squeeze_dims);
4128   }
4129   explicit SqueezeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4130         : fbb_(_fbb) {
4131     start_ = fbb_.StartTable();
4132   }
4133   SqueezeOptionsBuilder &operator=(const SqueezeOptionsBuilder &);
4134   flatbuffers::Offset<SqueezeOptions> Finish() {
4135     const auto end = fbb_.EndTable(start_);
4136     auto o = flatbuffers::Offset<SqueezeOptions>(end);
4137     return o;
4138   }
4139 };
4140 
4141 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptions(
4142     flatbuffers::FlatBufferBuilder &_fbb,
4143     flatbuffers::Offset<flatbuffers::Vector<int32_t>> squeeze_dims = 0) {
4144   SqueezeOptionsBuilder builder_(_fbb);
4145   builder_.add_squeeze_dims(squeeze_dims);
4146   return builder_.Finish();
4147 }
4148 
4149 inline flatbuffers::Offset<SqueezeOptions> CreateSqueezeOptionsDirect(
4150     flatbuffers::FlatBufferBuilder &_fbb,
4151     const std::vector<int32_t> *squeeze_dims = nullptr) {
4152   auto squeeze_dims__ = squeeze_dims ? _fbb.CreateVector<int32_t>(*squeeze_dims) : 0;
4153   return tflite::CreateSqueezeOptions(
4154       _fbb,
4155       squeeze_dims__);
4156 }
4157 
4158 struct SplitOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4159   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4160     VT_NUM_SPLITS = 4
4161   };
4162   int32_t num_splits() const {
4163     return GetField<int32_t>(VT_NUM_SPLITS, 0);
4164   }
4165   bool Verify(flatbuffers::Verifier &verifier) const {
4166     return VerifyTableStart(verifier) &&
4167            VerifyField<int32_t>(verifier, VT_NUM_SPLITS) &&
4168            verifier.EndTable();
4169   }
4170 };
4171 
4172 struct SplitOptionsBuilder {
4173   flatbuffers::FlatBufferBuilder &fbb_;
4174   flatbuffers::uoffset_t start_;
4175   void add_num_splits(int32_t num_splits) {
4176     fbb_.AddElement<int32_t>(SplitOptions::VT_NUM_SPLITS, num_splits, 0);
4177   }
4178   explicit SplitOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4179         : fbb_(_fbb) {
4180     start_ = fbb_.StartTable();
4181   }
4182   SplitOptionsBuilder &operator=(const SplitOptionsBuilder &);
4183   flatbuffers::Offset<SplitOptions> Finish() {
4184     const auto end = fbb_.EndTable(start_);
4185     auto o = flatbuffers::Offset<SplitOptions>(end);
4186     return o;
4187   }
4188 };
4189 
4190 inline flatbuffers::Offset<SplitOptions> CreateSplitOptions(
4191     flatbuffers::FlatBufferBuilder &_fbb,
4192     int32_t num_splits = 0) {
4193   SplitOptionsBuilder builder_(_fbb);
4194   builder_.add_num_splits(num_splits);
4195   return builder_.Finish();
4196 }
4197 
4198 struct SplitVOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4199   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4200     VT_NUM_SPLITS = 4
4201   };
4202   int32_t num_splits() const {
4203     return GetField<int32_t>(VT_NUM_SPLITS, 0);
4204   }
4205   bool Verify(flatbuffers::Verifier &verifier) const {
4206     return VerifyTableStart(verifier) &&
4207            VerifyField<int32_t>(verifier, VT_NUM_SPLITS) &&
4208            verifier.EndTable();
4209   }
4210 };
4211 
4212 struct SplitVOptionsBuilder {
4213   flatbuffers::FlatBufferBuilder &fbb_;
4214   flatbuffers::uoffset_t start_;
4215   void add_num_splits(int32_t num_splits) {
4216     fbb_.AddElement<int32_t>(SplitVOptions::VT_NUM_SPLITS, num_splits, 0);
4217   }
4218   explicit SplitVOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4219         : fbb_(_fbb) {
4220     start_ = fbb_.StartTable();
4221   }
4222   SplitVOptionsBuilder &operator=(const SplitVOptionsBuilder &);
4223   flatbuffers::Offset<SplitVOptions> Finish() {
4224     const auto end = fbb_.EndTable(start_);
4225     auto o = flatbuffers::Offset<SplitVOptions>(end);
4226     return o;
4227   }
4228 };
4229 
4230 inline flatbuffers::Offset<SplitVOptions> CreateSplitVOptions(
4231     flatbuffers::FlatBufferBuilder &_fbb,
4232     int32_t num_splits = 0) {
4233   SplitVOptionsBuilder builder_(_fbb);
4234   builder_.add_num_splits(num_splits);
4235   return builder_.Finish();
4236 }
4237 
4238 struct StridedSliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4239   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4240     VT_BEGIN_MASK = 4,
4241     VT_END_MASK = 6,
4242     VT_ELLIPSIS_MASK = 8,
4243     VT_NEW_AXIS_MASK = 10,
4244     VT_SHRINK_AXIS_MASK = 12
4245   };
4246   int32_t begin_mask() const {
4247     return GetField<int32_t>(VT_BEGIN_MASK, 0);
4248   }
4249   int32_t end_mask() const {
4250     return GetField<int32_t>(VT_END_MASK, 0);
4251   }
4252   int32_t ellipsis_mask() const {
4253     return GetField<int32_t>(VT_ELLIPSIS_MASK, 0);
4254   }
4255   int32_t new_axis_mask() const {
4256     return GetField<int32_t>(VT_NEW_AXIS_MASK, 0);
4257   }
4258   int32_t shrink_axis_mask() const {
4259     return GetField<int32_t>(VT_SHRINK_AXIS_MASK, 0);
4260   }
4261   bool Verify(flatbuffers::Verifier &verifier) const {
4262     return VerifyTableStart(verifier) &&
4263            VerifyField<int32_t>(verifier, VT_BEGIN_MASK) &&
4264            VerifyField<int32_t>(verifier, VT_END_MASK) &&
4265            VerifyField<int32_t>(verifier, VT_ELLIPSIS_MASK) &&
4266            VerifyField<int32_t>(verifier, VT_NEW_AXIS_MASK) &&
4267            VerifyField<int32_t>(verifier, VT_SHRINK_AXIS_MASK) &&
4268            verifier.EndTable();
4269   }
4270 };
4271 
4272 struct StridedSliceOptionsBuilder {
4273   flatbuffers::FlatBufferBuilder &fbb_;
4274   flatbuffers::uoffset_t start_;
4275   void add_begin_mask(int32_t begin_mask) {
4276     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_BEGIN_MASK, begin_mask, 0);
4277   }
4278   void add_end_mask(int32_t end_mask) {
4279     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_END_MASK, end_mask, 0);
4280   }
4281   void add_ellipsis_mask(int32_t ellipsis_mask) {
4282     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_ELLIPSIS_MASK, ellipsis_mask, 0);
4283   }
4284   void add_new_axis_mask(int32_t new_axis_mask) {
4285     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_NEW_AXIS_MASK, new_axis_mask, 0);
4286   }
4287   void add_shrink_axis_mask(int32_t shrink_axis_mask) {
4288     fbb_.AddElement<int32_t>(StridedSliceOptions::VT_SHRINK_AXIS_MASK, shrink_axis_mask, 0);
4289   }
4290   explicit StridedSliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4291         : fbb_(_fbb) {
4292     start_ = fbb_.StartTable();
4293   }
4294   StridedSliceOptionsBuilder &operator=(const StridedSliceOptionsBuilder &);
4295   flatbuffers::Offset<StridedSliceOptions> Finish() {
4296     const auto end = fbb_.EndTable(start_);
4297     auto o = flatbuffers::Offset<StridedSliceOptions>(end);
4298     return o;
4299   }
4300 };
4301 
4302 inline flatbuffers::Offset<StridedSliceOptions> CreateStridedSliceOptions(
4303     flatbuffers::FlatBufferBuilder &_fbb,
4304     int32_t begin_mask = 0,
4305     int32_t end_mask = 0,
4306     int32_t ellipsis_mask = 0,
4307     int32_t new_axis_mask = 0,
4308     int32_t shrink_axis_mask = 0) {
4309   StridedSliceOptionsBuilder builder_(_fbb);
4310   builder_.add_shrink_axis_mask(shrink_axis_mask);
4311   builder_.add_new_axis_mask(new_axis_mask);
4312   builder_.add_ellipsis_mask(ellipsis_mask);
4313   builder_.add_end_mask(end_mask);
4314   builder_.add_begin_mask(begin_mask);
4315   return builder_.Finish();
4316 }
4317 
4318 struct LogSoftmaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4319   bool Verify(flatbuffers::Verifier &verifier) const {
4320     return VerifyTableStart(verifier) &&
4321            verifier.EndTable();
4322   }
4323 };
4324 
4325 struct LogSoftmaxOptionsBuilder {
4326   flatbuffers::FlatBufferBuilder &fbb_;
4327   flatbuffers::uoffset_t start_;
4328   explicit LogSoftmaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4329         : fbb_(_fbb) {
4330     start_ = fbb_.StartTable();
4331   }
4332   LogSoftmaxOptionsBuilder &operator=(const LogSoftmaxOptionsBuilder &);
4333   flatbuffers::Offset<LogSoftmaxOptions> Finish() {
4334     const auto end = fbb_.EndTable(start_);
4335     auto o = flatbuffers::Offset<LogSoftmaxOptions>(end);
4336     return o;
4337   }
4338 };
4339 
4340 inline flatbuffers::Offset<LogSoftmaxOptions> CreateLogSoftmaxOptions(
4341     flatbuffers::FlatBufferBuilder &_fbb) {
4342   LogSoftmaxOptionsBuilder builder_(_fbb);
4343   return builder_.Finish();
4344 }
4345 
4346 struct CastOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4347   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4348     VT_IN_DATA_TYPE = 4,
4349     VT_OUT_DATA_TYPE = 6
4350   };
4351   tflite::TensorType in_data_type() const {
4352     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_IN_DATA_TYPE, 0));
4353   }
4354   tflite::TensorType out_data_type() const {
4355     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUT_DATA_TYPE, 0));
4356   }
4357   bool Verify(flatbuffers::Verifier &verifier) const {
4358     return VerifyTableStart(verifier) &&
4359            VerifyField<int8_t>(verifier, VT_IN_DATA_TYPE) &&
4360            VerifyField<int8_t>(verifier, VT_OUT_DATA_TYPE) &&
4361            verifier.EndTable();
4362   }
4363 };
4364 
4365 struct CastOptionsBuilder {
4366   flatbuffers::FlatBufferBuilder &fbb_;
4367   flatbuffers::uoffset_t start_;
4368   void add_in_data_type(tflite::TensorType in_data_type) {
4369     fbb_.AddElement<int8_t>(CastOptions::VT_IN_DATA_TYPE, static_cast<int8_t>(in_data_type), 0);
4370   }
4371   void add_out_data_type(tflite::TensorType out_data_type) {
4372     fbb_.AddElement<int8_t>(CastOptions::VT_OUT_DATA_TYPE, static_cast<int8_t>(out_data_type), 0);
4373   }
4374   explicit CastOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4375         : fbb_(_fbb) {
4376     start_ = fbb_.StartTable();
4377   }
4378   CastOptionsBuilder &operator=(const CastOptionsBuilder &);
4379   flatbuffers::Offset<CastOptions> Finish() {
4380     const auto end = fbb_.EndTable(start_);
4381     auto o = flatbuffers::Offset<CastOptions>(end);
4382     return o;
4383   }
4384 };
4385 
4386 inline flatbuffers::Offset<CastOptions> CreateCastOptions(
4387     flatbuffers::FlatBufferBuilder &_fbb,
4388     tflite::TensorType in_data_type = tflite::TensorType_FLOAT32,
4389     tflite::TensorType out_data_type = tflite::TensorType_FLOAT32) {
4390   CastOptionsBuilder builder_(_fbb);
4391   builder_.add_out_data_type(out_data_type);
4392   builder_.add_in_data_type(in_data_type);
4393   return builder_.Finish();
4394 }
4395 
4396 struct DequantizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4397   bool Verify(flatbuffers::Verifier &verifier) const {
4398     return VerifyTableStart(verifier) &&
4399            verifier.EndTable();
4400   }
4401 };
4402 
4403 struct DequantizeOptionsBuilder {
4404   flatbuffers::FlatBufferBuilder &fbb_;
4405   flatbuffers::uoffset_t start_;
4406   explicit DequantizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4407         : fbb_(_fbb) {
4408     start_ = fbb_.StartTable();
4409   }
4410   DequantizeOptionsBuilder &operator=(const DequantizeOptionsBuilder &);
4411   flatbuffers::Offset<DequantizeOptions> Finish() {
4412     const auto end = fbb_.EndTable(start_);
4413     auto o = flatbuffers::Offset<DequantizeOptions>(end);
4414     return o;
4415   }
4416 };
4417 
4418 inline flatbuffers::Offset<DequantizeOptions> CreateDequantizeOptions(
4419     flatbuffers::FlatBufferBuilder &_fbb) {
4420   DequantizeOptionsBuilder builder_(_fbb);
4421   return builder_.Finish();
4422 }
4423 
4424 struct MaximumMinimumOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4425   bool Verify(flatbuffers::Verifier &verifier) const {
4426     return VerifyTableStart(verifier) &&
4427            verifier.EndTable();
4428   }
4429 };
4430 
4431 struct MaximumMinimumOptionsBuilder {
4432   flatbuffers::FlatBufferBuilder &fbb_;
4433   flatbuffers::uoffset_t start_;
4434   explicit MaximumMinimumOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4435         : fbb_(_fbb) {
4436     start_ = fbb_.StartTable();
4437   }
4438   MaximumMinimumOptionsBuilder &operator=(const MaximumMinimumOptionsBuilder &);
4439   flatbuffers::Offset<MaximumMinimumOptions> Finish() {
4440     const auto end = fbb_.EndTable(start_);
4441     auto o = flatbuffers::Offset<MaximumMinimumOptions>(end);
4442     return o;
4443   }
4444 };
4445 
4446 inline flatbuffers::Offset<MaximumMinimumOptions> CreateMaximumMinimumOptions(
4447     flatbuffers::FlatBufferBuilder &_fbb) {
4448   MaximumMinimumOptionsBuilder builder_(_fbb);
4449   return builder_.Finish();
4450 }
4451 
4452 struct TileOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4453   bool Verify(flatbuffers::Verifier &verifier) const {
4454     return VerifyTableStart(verifier) &&
4455            verifier.EndTable();
4456   }
4457 };
4458 
4459 struct TileOptionsBuilder {
4460   flatbuffers::FlatBufferBuilder &fbb_;
4461   flatbuffers::uoffset_t start_;
4462   explicit TileOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4463         : fbb_(_fbb) {
4464     start_ = fbb_.StartTable();
4465   }
4466   TileOptionsBuilder &operator=(const TileOptionsBuilder &);
4467   flatbuffers::Offset<TileOptions> Finish() {
4468     const auto end = fbb_.EndTable(start_);
4469     auto o = flatbuffers::Offset<TileOptions>(end);
4470     return o;
4471   }
4472 };
4473 
4474 inline flatbuffers::Offset<TileOptions> CreateTileOptions(
4475     flatbuffers::FlatBufferBuilder &_fbb) {
4476   TileOptionsBuilder builder_(_fbb);
4477   return builder_.Finish();
4478 }
4479 
4480 struct ArgMaxOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4481   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4482     VT_OUTPUT_TYPE = 4
4483   };
4484   tflite::TensorType output_type() const {
4485     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUTPUT_TYPE, 0));
4486   }
4487   bool Verify(flatbuffers::Verifier &verifier) const {
4488     return VerifyTableStart(verifier) &&
4489            VerifyField<int8_t>(verifier, VT_OUTPUT_TYPE) &&
4490            verifier.EndTable();
4491   }
4492 };
4493 
4494 struct ArgMaxOptionsBuilder {
4495   flatbuffers::FlatBufferBuilder &fbb_;
4496   flatbuffers::uoffset_t start_;
4497   void add_output_type(tflite::TensorType output_type) {
4498     fbb_.AddElement<int8_t>(ArgMaxOptions::VT_OUTPUT_TYPE, static_cast<int8_t>(output_type), 0);
4499   }
4500   explicit ArgMaxOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4501         : fbb_(_fbb) {
4502     start_ = fbb_.StartTable();
4503   }
4504   ArgMaxOptionsBuilder &operator=(const ArgMaxOptionsBuilder &);
4505   flatbuffers::Offset<ArgMaxOptions> Finish() {
4506     const auto end = fbb_.EndTable(start_);
4507     auto o = flatbuffers::Offset<ArgMaxOptions>(end);
4508     return o;
4509   }
4510 };
4511 
4512 inline flatbuffers::Offset<ArgMaxOptions> CreateArgMaxOptions(
4513     flatbuffers::FlatBufferBuilder &_fbb,
4514     tflite::TensorType output_type = tflite::TensorType_FLOAT32) {
4515   ArgMaxOptionsBuilder builder_(_fbb);
4516   builder_.add_output_type(output_type);
4517   return builder_.Finish();
4518 }
4519 
4520 struct ArgMinOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4521   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4522     VT_OUTPUT_TYPE = 4
4523   };
4524   tflite::TensorType output_type() const {
4525     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUTPUT_TYPE, 0));
4526   }
4527   bool Verify(flatbuffers::Verifier &verifier) const {
4528     return VerifyTableStart(verifier) &&
4529            VerifyField<int8_t>(verifier, VT_OUTPUT_TYPE) &&
4530            verifier.EndTable();
4531   }
4532 };
4533 
4534 struct ArgMinOptionsBuilder {
4535   flatbuffers::FlatBufferBuilder &fbb_;
4536   flatbuffers::uoffset_t start_;
4537   void add_output_type(tflite::TensorType output_type) {
4538     fbb_.AddElement<int8_t>(ArgMinOptions::VT_OUTPUT_TYPE, static_cast<int8_t>(output_type), 0);
4539   }
4540   explicit ArgMinOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4541         : fbb_(_fbb) {
4542     start_ = fbb_.StartTable();
4543   }
4544   ArgMinOptionsBuilder &operator=(const ArgMinOptionsBuilder &);
4545   flatbuffers::Offset<ArgMinOptions> Finish() {
4546     const auto end = fbb_.EndTable(start_);
4547     auto o = flatbuffers::Offset<ArgMinOptions>(end);
4548     return o;
4549   }
4550 };
4551 
4552 inline flatbuffers::Offset<ArgMinOptions> CreateArgMinOptions(
4553     flatbuffers::FlatBufferBuilder &_fbb,
4554     tflite::TensorType output_type = tflite::TensorType_FLOAT32) {
4555   ArgMinOptionsBuilder builder_(_fbb);
4556   builder_.add_output_type(output_type);
4557   return builder_.Finish();
4558 }
4559 
4560 struct GreaterOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4561   bool Verify(flatbuffers::Verifier &verifier) const {
4562     return VerifyTableStart(verifier) &&
4563            verifier.EndTable();
4564   }
4565 };
4566 
4567 struct GreaterOptionsBuilder {
4568   flatbuffers::FlatBufferBuilder &fbb_;
4569   flatbuffers::uoffset_t start_;
4570   explicit GreaterOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4571         : fbb_(_fbb) {
4572     start_ = fbb_.StartTable();
4573   }
4574   GreaterOptionsBuilder &operator=(const GreaterOptionsBuilder &);
4575   flatbuffers::Offset<GreaterOptions> Finish() {
4576     const auto end = fbb_.EndTable(start_);
4577     auto o = flatbuffers::Offset<GreaterOptions>(end);
4578     return o;
4579   }
4580 };
4581 
4582 inline flatbuffers::Offset<GreaterOptions> CreateGreaterOptions(
4583     flatbuffers::FlatBufferBuilder &_fbb) {
4584   GreaterOptionsBuilder builder_(_fbb);
4585   return builder_.Finish();
4586 }
4587 
4588 struct GreaterEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4589   bool Verify(flatbuffers::Verifier &verifier) const {
4590     return VerifyTableStart(verifier) &&
4591            verifier.EndTable();
4592   }
4593 };
4594 
4595 struct GreaterEqualOptionsBuilder {
4596   flatbuffers::FlatBufferBuilder &fbb_;
4597   flatbuffers::uoffset_t start_;
4598   explicit GreaterEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4599         : fbb_(_fbb) {
4600     start_ = fbb_.StartTable();
4601   }
4602   GreaterEqualOptionsBuilder &operator=(const GreaterEqualOptionsBuilder &);
4603   flatbuffers::Offset<GreaterEqualOptions> Finish() {
4604     const auto end = fbb_.EndTable(start_);
4605     auto o = flatbuffers::Offset<GreaterEqualOptions>(end);
4606     return o;
4607   }
4608 };
4609 
4610 inline flatbuffers::Offset<GreaterEqualOptions> CreateGreaterEqualOptions(
4611     flatbuffers::FlatBufferBuilder &_fbb) {
4612   GreaterEqualOptionsBuilder builder_(_fbb);
4613   return builder_.Finish();
4614 }
4615 
4616 struct LessOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4617   bool Verify(flatbuffers::Verifier &verifier) const {
4618     return VerifyTableStart(verifier) &&
4619            verifier.EndTable();
4620   }
4621 };
4622 
4623 struct LessOptionsBuilder {
4624   flatbuffers::FlatBufferBuilder &fbb_;
4625   flatbuffers::uoffset_t start_;
4626   explicit LessOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4627         : fbb_(_fbb) {
4628     start_ = fbb_.StartTable();
4629   }
4630   LessOptionsBuilder &operator=(const LessOptionsBuilder &);
4631   flatbuffers::Offset<LessOptions> Finish() {
4632     const auto end = fbb_.EndTable(start_);
4633     auto o = flatbuffers::Offset<LessOptions>(end);
4634     return o;
4635   }
4636 };
4637 
4638 inline flatbuffers::Offset<LessOptions> CreateLessOptions(
4639     flatbuffers::FlatBufferBuilder &_fbb) {
4640   LessOptionsBuilder builder_(_fbb);
4641   return builder_.Finish();
4642 }
4643 
4644 struct LessEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4645   bool Verify(flatbuffers::Verifier &verifier) const {
4646     return VerifyTableStart(verifier) &&
4647            verifier.EndTable();
4648   }
4649 };
4650 
4651 struct LessEqualOptionsBuilder {
4652   flatbuffers::FlatBufferBuilder &fbb_;
4653   flatbuffers::uoffset_t start_;
4654   explicit LessEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4655         : fbb_(_fbb) {
4656     start_ = fbb_.StartTable();
4657   }
4658   LessEqualOptionsBuilder &operator=(const LessEqualOptionsBuilder &);
4659   flatbuffers::Offset<LessEqualOptions> Finish() {
4660     const auto end = fbb_.EndTable(start_);
4661     auto o = flatbuffers::Offset<LessEqualOptions>(end);
4662     return o;
4663   }
4664 };
4665 
4666 inline flatbuffers::Offset<LessEqualOptions> CreateLessEqualOptions(
4667     flatbuffers::FlatBufferBuilder &_fbb) {
4668   LessEqualOptionsBuilder builder_(_fbb);
4669   return builder_.Finish();
4670 }
4671 
4672 struct NegOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4673   bool Verify(flatbuffers::Verifier &verifier) const {
4674     return VerifyTableStart(verifier) &&
4675            verifier.EndTable();
4676   }
4677 };
4678 
4679 struct NegOptionsBuilder {
4680   flatbuffers::FlatBufferBuilder &fbb_;
4681   flatbuffers::uoffset_t start_;
4682   explicit NegOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4683         : fbb_(_fbb) {
4684     start_ = fbb_.StartTable();
4685   }
4686   NegOptionsBuilder &operator=(const NegOptionsBuilder &);
4687   flatbuffers::Offset<NegOptions> Finish() {
4688     const auto end = fbb_.EndTable(start_);
4689     auto o = flatbuffers::Offset<NegOptions>(end);
4690     return o;
4691   }
4692 };
4693 
4694 inline flatbuffers::Offset<NegOptions> CreateNegOptions(
4695     flatbuffers::FlatBufferBuilder &_fbb) {
4696   NegOptionsBuilder builder_(_fbb);
4697   return builder_.Finish();
4698 }
4699 
4700 struct SelectOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4701   bool Verify(flatbuffers::Verifier &verifier) const {
4702     return VerifyTableStart(verifier) &&
4703            verifier.EndTable();
4704   }
4705 };
4706 
4707 struct SelectOptionsBuilder {
4708   flatbuffers::FlatBufferBuilder &fbb_;
4709   flatbuffers::uoffset_t start_;
4710   explicit SelectOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4711         : fbb_(_fbb) {
4712     start_ = fbb_.StartTable();
4713   }
4714   SelectOptionsBuilder &operator=(const SelectOptionsBuilder &);
4715   flatbuffers::Offset<SelectOptions> Finish() {
4716     const auto end = fbb_.EndTable(start_);
4717     auto o = flatbuffers::Offset<SelectOptions>(end);
4718     return o;
4719   }
4720 };
4721 
4722 inline flatbuffers::Offset<SelectOptions> CreateSelectOptions(
4723     flatbuffers::FlatBufferBuilder &_fbb) {
4724   SelectOptionsBuilder builder_(_fbb);
4725   return builder_.Finish();
4726 }
4727 
4728 struct SliceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4729   bool Verify(flatbuffers::Verifier &verifier) const {
4730     return VerifyTableStart(verifier) &&
4731            verifier.EndTable();
4732   }
4733 };
4734 
4735 struct SliceOptionsBuilder {
4736   flatbuffers::FlatBufferBuilder &fbb_;
4737   flatbuffers::uoffset_t start_;
4738   explicit SliceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4739         : fbb_(_fbb) {
4740     start_ = fbb_.StartTable();
4741   }
4742   SliceOptionsBuilder &operator=(const SliceOptionsBuilder &);
4743   flatbuffers::Offset<SliceOptions> Finish() {
4744     const auto end = fbb_.EndTable(start_);
4745     auto o = flatbuffers::Offset<SliceOptions>(end);
4746     return o;
4747   }
4748 };
4749 
4750 inline flatbuffers::Offset<SliceOptions> CreateSliceOptions(
4751     flatbuffers::FlatBufferBuilder &_fbb) {
4752   SliceOptionsBuilder builder_(_fbb);
4753   return builder_.Finish();
4754 }
4755 
4756 struct TransposeConvOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4757   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4758     VT_PADDING = 4,
4759     VT_STRIDE_W = 6,
4760     VT_STRIDE_H = 8
4761   };
4762   tflite::Padding padding() const {
4763     return static_cast<tflite::Padding>(GetField<int8_t>(VT_PADDING, 0));
4764   }
4765   int32_t stride_w() const {
4766     return GetField<int32_t>(VT_STRIDE_W, 0);
4767   }
4768   int32_t stride_h() const {
4769     return GetField<int32_t>(VT_STRIDE_H, 0);
4770   }
4771   bool Verify(flatbuffers::Verifier &verifier) const {
4772     return VerifyTableStart(verifier) &&
4773            VerifyField<int8_t>(verifier, VT_PADDING) &&
4774            VerifyField<int32_t>(verifier, VT_STRIDE_W) &&
4775            VerifyField<int32_t>(verifier, VT_STRIDE_H) &&
4776            verifier.EndTable();
4777   }
4778 };
4779 
4780 struct TransposeConvOptionsBuilder {
4781   flatbuffers::FlatBufferBuilder &fbb_;
4782   flatbuffers::uoffset_t start_;
4783   void add_padding(tflite::Padding padding) {
4784     fbb_.AddElement<int8_t>(TransposeConvOptions::VT_PADDING, static_cast<int8_t>(padding), 0);
4785   }
4786   void add_stride_w(int32_t stride_w) {
4787     fbb_.AddElement<int32_t>(TransposeConvOptions::VT_STRIDE_W, stride_w, 0);
4788   }
4789   void add_stride_h(int32_t stride_h) {
4790     fbb_.AddElement<int32_t>(TransposeConvOptions::VT_STRIDE_H, stride_h, 0);
4791   }
4792   explicit TransposeConvOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4793         : fbb_(_fbb) {
4794     start_ = fbb_.StartTable();
4795   }
4796   TransposeConvOptionsBuilder &operator=(const TransposeConvOptionsBuilder &);
4797   flatbuffers::Offset<TransposeConvOptions> Finish() {
4798     const auto end = fbb_.EndTable(start_);
4799     auto o = flatbuffers::Offset<TransposeConvOptions>(end);
4800     return o;
4801   }
4802 };
4803 
4804 inline flatbuffers::Offset<TransposeConvOptions> CreateTransposeConvOptions(
4805     flatbuffers::FlatBufferBuilder &_fbb,
4806     tflite::Padding padding = tflite::Padding_SAME,
4807     int32_t stride_w = 0,
4808     int32_t stride_h = 0) {
4809   TransposeConvOptionsBuilder builder_(_fbb);
4810   builder_.add_stride_h(stride_h);
4811   builder_.add_stride_w(stride_w);
4812   builder_.add_padding(padding);
4813   return builder_.Finish();
4814 }
4815 
4816 struct ExpandDimsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4817   bool Verify(flatbuffers::Verifier &verifier) const {
4818     return VerifyTableStart(verifier) &&
4819            verifier.EndTable();
4820   }
4821 };
4822 
4823 struct ExpandDimsOptionsBuilder {
4824   flatbuffers::FlatBufferBuilder &fbb_;
4825   flatbuffers::uoffset_t start_;
4826   explicit ExpandDimsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4827         : fbb_(_fbb) {
4828     start_ = fbb_.StartTable();
4829   }
4830   ExpandDimsOptionsBuilder &operator=(const ExpandDimsOptionsBuilder &);
4831   flatbuffers::Offset<ExpandDimsOptions> Finish() {
4832     const auto end = fbb_.EndTable(start_);
4833     auto o = flatbuffers::Offset<ExpandDimsOptions>(end);
4834     return o;
4835   }
4836 };
4837 
4838 inline flatbuffers::Offset<ExpandDimsOptions> CreateExpandDimsOptions(
4839     flatbuffers::FlatBufferBuilder &_fbb) {
4840   ExpandDimsOptionsBuilder builder_(_fbb);
4841   return builder_.Finish();
4842 }
4843 
4844 struct SparseToDenseOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4845   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4846     VT_VALIDATE_INDICES = 4
4847   };
4848   bool validate_indices() const {
4849     return GetField<uint8_t>(VT_VALIDATE_INDICES, 0) != 0;
4850   }
4851   bool Verify(flatbuffers::Verifier &verifier) const {
4852     return VerifyTableStart(verifier) &&
4853            VerifyField<uint8_t>(verifier, VT_VALIDATE_INDICES) &&
4854            verifier.EndTable();
4855   }
4856 };
4857 
4858 struct SparseToDenseOptionsBuilder {
4859   flatbuffers::FlatBufferBuilder &fbb_;
4860   flatbuffers::uoffset_t start_;
4861   void add_validate_indices(bool validate_indices) {
4862     fbb_.AddElement<uint8_t>(SparseToDenseOptions::VT_VALIDATE_INDICES, static_cast<uint8_t>(validate_indices), 0);
4863   }
4864   explicit SparseToDenseOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4865         : fbb_(_fbb) {
4866     start_ = fbb_.StartTable();
4867   }
4868   SparseToDenseOptionsBuilder &operator=(const SparseToDenseOptionsBuilder &);
4869   flatbuffers::Offset<SparseToDenseOptions> Finish() {
4870     const auto end = fbb_.EndTable(start_);
4871     auto o = flatbuffers::Offset<SparseToDenseOptions>(end);
4872     return o;
4873   }
4874 };
4875 
4876 inline flatbuffers::Offset<SparseToDenseOptions> CreateSparseToDenseOptions(
4877     flatbuffers::FlatBufferBuilder &_fbb,
4878     bool validate_indices = false) {
4879   SparseToDenseOptionsBuilder builder_(_fbb);
4880   builder_.add_validate_indices(validate_indices);
4881   return builder_.Finish();
4882 }
4883 
4884 struct EqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4885   bool Verify(flatbuffers::Verifier &verifier) const {
4886     return VerifyTableStart(verifier) &&
4887            verifier.EndTable();
4888   }
4889 };
4890 
4891 struct EqualOptionsBuilder {
4892   flatbuffers::FlatBufferBuilder &fbb_;
4893   flatbuffers::uoffset_t start_;
4894   explicit EqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4895         : fbb_(_fbb) {
4896     start_ = fbb_.StartTable();
4897   }
4898   EqualOptionsBuilder &operator=(const EqualOptionsBuilder &);
4899   flatbuffers::Offset<EqualOptions> Finish() {
4900     const auto end = fbb_.EndTable(start_);
4901     auto o = flatbuffers::Offset<EqualOptions>(end);
4902     return o;
4903   }
4904 };
4905 
4906 inline flatbuffers::Offset<EqualOptions> CreateEqualOptions(
4907     flatbuffers::FlatBufferBuilder &_fbb) {
4908   EqualOptionsBuilder builder_(_fbb);
4909   return builder_.Finish();
4910 }
4911 
4912 struct NotEqualOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4913   bool Verify(flatbuffers::Verifier &verifier) const {
4914     return VerifyTableStart(verifier) &&
4915            verifier.EndTable();
4916   }
4917 };
4918 
4919 struct NotEqualOptionsBuilder {
4920   flatbuffers::FlatBufferBuilder &fbb_;
4921   flatbuffers::uoffset_t start_;
4922   explicit NotEqualOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4923         : fbb_(_fbb) {
4924     start_ = fbb_.StartTable();
4925   }
4926   NotEqualOptionsBuilder &operator=(const NotEqualOptionsBuilder &);
4927   flatbuffers::Offset<NotEqualOptions> Finish() {
4928     const auto end = fbb_.EndTable(start_);
4929     auto o = flatbuffers::Offset<NotEqualOptions>(end);
4930     return o;
4931   }
4932 };
4933 
4934 inline flatbuffers::Offset<NotEqualOptions> CreateNotEqualOptions(
4935     flatbuffers::FlatBufferBuilder &_fbb) {
4936   NotEqualOptionsBuilder builder_(_fbb);
4937   return builder_.Finish();
4938 }
4939 
4940 struct ShapeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4941   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4942     VT_OUT_TYPE = 4
4943   };
4944   tflite::TensorType out_type() const {
4945     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_OUT_TYPE, 0));
4946   }
4947   bool Verify(flatbuffers::Verifier &verifier) const {
4948     return VerifyTableStart(verifier) &&
4949            VerifyField<int8_t>(verifier, VT_OUT_TYPE) &&
4950            verifier.EndTable();
4951   }
4952 };
4953 
4954 struct ShapeOptionsBuilder {
4955   flatbuffers::FlatBufferBuilder &fbb_;
4956   flatbuffers::uoffset_t start_;
4957   void add_out_type(tflite::TensorType out_type) {
4958     fbb_.AddElement<int8_t>(ShapeOptions::VT_OUT_TYPE, static_cast<int8_t>(out_type), 0);
4959   }
4960   explicit ShapeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4961         : fbb_(_fbb) {
4962     start_ = fbb_.StartTable();
4963   }
4964   ShapeOptionsBuilder &operator=(const ShapeOptionsBuilder &);
4965   flatbuffers::Offset<ShapeOptions> Finish() {
4966     const auto end = fbb_.EndTable(start_);
4967     auto o = flatbuffers::Offset<ShapeOptions>(end);
4968     return o;
4969   }
4970 };
4971 
4972 inline flatbuffers::Offset<ShapeOptions> CreateShapeOptions(
4973     flatbuffers::FlatBufferBuilder &_fbb,
4974     tflite::TensorType out_type = tflite::TensorType_FLOAT32) {
4975   ShapeOptionsBuilder builder_(_fbb);
4976   builder_.add_out_type(out_type);
4977   return builder_.Finish();
4978 }
4979 
4980 struct RankOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4981   bool Verify(flatbuffers::Verifier &verifier) const {
4982     return VerifyTableStart(verifier) &&
4983            verifier.EndTable();
4984   }
4985 };
4986 
4987 struct RankOptionsBuilder {
4988   flatbuffers::FlatBufferBuilder &fbb_;
4989   flatbuffers::uoffset_t start_;
4990   explicit RankOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4991         : fbb_(_fbb) {
4992     start_ = fbb_.StartTable();
4993   }
4994   RankOptionsBuilder &operator=(const RankOptionsBuilder &);
4995   flatbuffers::Offset<RankOptions> Finish() {
4996     const auto end = fbb_.EndTable(start_);
4997     auto o = flatbuffers::Offset<RankOptions>(end);
4998     return o;
4999   }
5000 };
5001 
5002 inline flatbuffers::Offset<RankOptions> CreateRankOptions(
5003     flatbuffers::FlatBufferBuilder &_fbb) {
5004   RankOptionsBuilder builder_(_fbb);
5005   return builder_.Finish();
5006 }
5007 
5008 struct PowOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5009   bool Verify(flatbuffers::Verifier &verifier) const {
5010     return VerifyTableStart(verifier) &&
5011            verifier.EndTable();
5012   }
5013 };
5014 
5015 struct PowOptionsBuilder {
5016   flatbuffers::FlatBufferBuilder &fbb_;
5017   flatbuffers::uoffset_t start_;
5018   explicit PowOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5019         : fbb_(_fbb) {
5020     start_ = fbb_.StartTable();
5021   }
5022   PowOptionsBuilder &operator=(const PowOptionsBuilder &);
5023   flatbuffers::Offset<PowOptions> Finish() {
5024     const auto end = fbb_.EndTable(start_);
5025     auto o = flatbuffers::Offset<PowOptions>(end);
5026     return o;
5027   }
5028 };
5029 
5030 inline flatbuffers::Offset<PowOptions> CreatePowOptions(
5031     flatbuffers::FlatBufferBuilder &_fbb) {
5032   PowOptionsBuilder builder_(_fbb);
5033   return builder_.Finish();
5034 }
5035 
5036 struct FakeQuantOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5037   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5038     VT_MIN = 4,
5039     VT_MAX = 6,
5040     VT_NUM_BITS = 8,
5041     VT_NARROW_RANGE = 10
5042   };
5043   float min() const {
5044     return GetField<float>(VT_MIN, 0.0f);
5045   }
5046   float max() const {
5047     return GetField<float>(VT_MAX, 0.0f);
5048   }
5049   int32_t num_bits() const {
5050     return GetField<int32_t>(VT_NUM_BITS, 0);
5051   }
5052   bool narrow_range() const {
5053     return GetField<uint8_t>(VT_NARROW_RANGE, 0) != 0;
5054   }
5055   bool Verify(flatbuffers::Verifier &verifier) const {
5056     return VerifyTableStart(verifier) &&
5057            VerifyField<float>(verifier, VT_MIN) &&
5058            VerifyField<float>(verifier, VT_MAX) &&
5059            VerifyField<int32_t>(verifier, VT_NUM_BITS) &&
5060            VerifyField<uint8_t>(verifier, VT_NARROW_RANGE) &&
5061            verifier.EndTable();
5062   }
5063 };
5064 
5065 struct FakeQuantOptionsBuilder {
5066   flatbuffers::FlatBufferBuilder &fbb_;
5067   flatbuffers::uoffset_t start_;
5068   void add_min(float min) {
5069     fbb_.AddElement<float>(FakeQuantOptions::VT_MIN, min, 0.0f);
5070   }
5071   void add_max(float max) {
5072     fbb_.AddElement<float>(FakeQuantOptions::VT_MAX, max, 0.0f);
5073   }
5074   void add_num_bits(int32_t num_bits) {
5075     fbb_.AddElement<int32_t>(FakeQuantOptions::VT_NUM_BITS, num_bits, 0);
5076   }
5077   void add_narrow_range(bool narrow_range) {
5078     fbb_.AddElement<uint8_t>(FakeQuantOptions::VT_NARROW_RANGE, static_cast<uint8_t>(narrow_range), 0);
5079   }
5080   explicit FakeQuantOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5081         : fbb_(_fbb) {
5082     start_ = fbb_.StartTable();
5083   }
5084   FakeQuantOptionsBuilder &operator=(const FakeQuantOptionsBuilder &);
5085   flatbuffers::Offset<FakeQuantOptions> Finish() {
5086     const auto end = fbb_.EndTable(start_);
5087     auto o = flatbuffers::Offset<FakeQuantOptions>(end);
5088     return o;
5089   }
5090 };
5091 
5092 inline flatbuffers::Offset<FakeQuantOptions> CreateFakeQuantOptions(
5093     flatbuffers::FlatBufferBuilder &_fbb,
5094     float min = 0.0f,
5095     float max = 0.0f,
5096     int32_t num_bits = 0,
5097     bool narrow_range = false) {
5098   FakeQuantOptionsBuilder builder_(_fbb);
5099   builder_.add_num_bits(num_bits);
5100   builder_.add_max(max);
5101   builder_.add_min(min);
5102   builder_.add_narrow_range(narrow_range);
5103   return builder_.Finish();
5104 }
5105 
5106 struct PackOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5107   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5108     VT_VALUES_COUNT = 4,
5109     VT_AXIS = 6
5110   };
5111   int32_t values_count() const {
5112     return GetField<int32_t>(VT_VALUES_COUNT, 0);
5113   }
5114   int32_t axis() const {
5115     return GetField<int32_t>(VT_AXIS, 0);
5116   }
5117   bool Verify(flatbuffers::Verifier &verifier) const {
5118     return VerifyTableStart(verifier) &&
5119            VerifyField<int32_t>(verifier, VT_VALUES_COUNT) &&
5120            VerifyField<int32_t>(verifier, VT_AXIS) &&
5121            verifier.EndTable();
5122   }
5123 };
5124 
5125 struct PackOptionsBuilder {
5126   flatbuffers::FlatBufferBuilder &fbb_;
5127   flatbuffers::uoffset_t start_;
5128   void add_values_count(int32_t values_count) {
5129     fbb_.AddElement<int32_t>(PackOptions::VT_VALUES_COUNT, values_count, 0);
5130   }
5131   void add_axis(int32_t axis) {
5132     fbb_.AddElement<int32_t>(PackOptions::VT_AXIS, axis, 0);
5133   }
5134   explicit PackOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5135         : fbb_(_fbb) {
5136     start_ = fbb_.StartTable();
5137   }
5138   PackOptionsBuilder &operator=(const PackOptionsBuilder &);
5139   flatbuffers::Offset<PackOptions> Finish() {
5140     const auto end = fbb_.EndTable(start_);
5141     auto o = flatbuffers::Offset<PackOptions>(end);
5142     return o;
5143   }
5144 };
5145 
5146 inline flatbuffers::Offset<PackOptions> CreatePackOptions(
5147     flatbuffers::FlatBufferBuilder &_fbb,
5148     int32_t values_count = 0,
5149     int32_t axis = 0) {
5150   PackOptionsBuilder builder_(_fbb);
5151   builder_.add_axis(axis);
5152   builder_.add_values_count(values_count);
5153   return builder_.Finish();
5154 }
5155 
5156 struct LogicalOrOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5157   bool Verify(flatbuffers::Verifier &verifier) const {
5158     return VerifyTableStart(verifier) &&
5159            verifier.EndTable();
5160   }
5161 };
5162 
5163 struct LogicalOrOptionsBuilder {
5164   flatbuffers::FlatBufferBuilder &fbb_;
5165   flatbuffers::uoffset_t start_;
5166   explicit LogicalOrOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5167         : fbb_(_fbb) {
5168     start_ = fbb_.StartTable();
5169   }
5170   LogicalOrOptionsBuilder &operator=(const LogicalOrOptionsBuilder &);
5171   flatbuffers::Offset<LogicalOrOptions> Finish() {
5172     const auto end = fbb_.EndTable(start_);
5173     auto o = flatbuffers::Offset<LogicalOrOptions>(end);
5174     return o;
5175   }
5176 };
5177 
5178 inline flatbuffers::Offset<LogicalOrOptions> CreateLogicalOrOptions(
5179     flatbuffers::FlatBufferBuilder &_fbb) {
5180   LogicalOrOptionsBuilder builder_(_fbb);
5181   return builder_.Finish();
5182 }
5183 
5184 struct OneHotOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5185   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5186     VT_AXIS = 4
5187   };
5188   int32_t axis() const {
5189     return GetField<int32_t>(VT_AXIS, 0);
5190   }
5191   bool Verify(flatbuffers::Verifier &verifier) const {
5192     return VerifyTableStart(verifier) &&
5193            VerifyField<int32_t>(verifier, VT_AXIS) &&
5194            verifier.EndTable();
5195   }
5196 };
5197 
5198 struct OneHotOptionsBuilder {
5199   flatbuffers::FlatBufferBuilder &fbb_;
5200   flatbuffers::uoffset_t start_;
5201   void add_axis(int32_t axis) {
5202     fbb_.AddElement<int32_t>(OneHotOptions::VT_AXIS, axis, 0);
5203   }
5204   explicit OneHotOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5205         : fbb_(_fbb) {
5206     start_ = fbb_.StartTable();
5207   }
5208   OneHotOptionsBuilder &operator=(const OneHotOptionsBuilder &);
5209   flatbuffers::Offset<OneHotOptions> Finish() {
5210     const auto end = fbb_.EndTable(start_);
5211     auto o = flatbuffers::Offset<OneHotOptions>(end);
5212     return o;
5213   }
5214 };
5215 
5216 inline flatbuffers::Offset<OneHotOptions> CreateOneHotOptions(
5217     flatbuffers::FlatBufferBuilder &_fbb,
5218     int32_t axis = 0) {
5219   OneHotOptionsBuilder builder_(_fbb);
5220   builder_.add_axis(axis);
5221   return builder_.Finish();
5222 }
5223 
5224 struct AbsOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5225   bool Verify(flatbuffers::Verifier &verifier) const {
5226     return VerifyTableStart(verifier) &&
5227            verifier.EndTable();
5228   }
5229 };
5230 
5231 struct AbsOptionsBuilder {
5232   flatbuffers::FlatBufferBuilder &fbb_;
5233   flatbuffers::uoffset_t start_;
5234   explicit AbsOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5235         : fbb_(_fbb) {
5236     start_ = fbb_.StartTable();
5237   }
5238   AbsOptionsBuilder &operator=(const AbsOptionsBuilder &);
5239   flatbuffers::Offset<AbsOptions> Finish() {
5240     const auto end = fbb_.EndTable(start_);
5241     auto o = flatbuffers::Offset<AbsOptions>(end);
5242     return o;
5243   }
5244 };
5245 
5246 inline flatbuffers::Offset<AbsOptions> CreateAbsOptions(
5247     flatbuffers::FlatBufferBuilder &_fbb) {
5248   AbsOptionsBuilder builder_(_fbb);
5249   return builder_.Finish();
5250 }
5251 
5252 struct HardSwishOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5253   bool Verify(flatbuffers::Verifier &verifier) const {
5254     return VerifyTableStart(verifier) &&
5255            verifier.EndTable();
5256   }
5257 };
5258 
5259 struct HardSwishOptionsBuilder {
5260   flatbuffers::FlatBufferBuilder &fbb_;
5261   flatbuffers::uoffset_t start_;
5262   explicit HardSwishOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5263         : fbb_(_fbb) {
5264     start_ = fbb_.StartTable();
5265   }
5266   HardSwishOptionsBuilder &operator=(const HardSwishOptionsBuilder &);
5267   flatbuffers::Offset<HardSwishOptions> Finish() {
5268     const auto end = fbb_.EndTable(start_);
5269     auto o = flatbuffers::Offset<HardSwishOptions>(end);
5270     return o;
5271   }
5272 };
5273 
5274 inline flatbuffers::Offset<HardSwishOptions> CreateHardSwishOptions(
5275     flatbuffers::FlatBufferBuilder &_fbb) {
5276   HardSwishOptionsBuilder builder_(_fbb);
5277   return builder_.Finish();
5278 }
5279 
5280 struct LogicalAndOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5281   bool Verify(flatbuffers::Verifier &verifier) const {
5282     return VerifyTableStart(verifier) &&
5283            verifier.EndTable();
5284   }
5285 };
5286 
5287 struct LogicalAndOptionsBuilder {
5288   flatbuffers::FlatBufferBuilder &fbb_;
5289   flatbuffers::uoffset_t start_;
5290   explicit LogicalAndOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5291         : fbb_(_fbb) {
5292     start_ = fbb_.StartTable();
5293   }
5294   LogicalAndOptionsBuilder &operator=(const LogicalAndOptionsBuilder &);
5295   flatbuffers::Offset<LogicalAndOptions> Finish() {
5296     const auto end = fbb_.EndTable(start_);
5297     auto o = flatbuffers::Offset<LogicalAndOptions>(end);
5298     return o;
5299   }
5300 };
5301 
5302 inline flatbuffers::Offset<LogicalAndOptions> CreateLogicalAndOptions(
5303     flatbuffers::FlatBufferBuilder &_fbb) {
5304   LogicalAndOptionsBuilder builder_(_fbb);
5305   return builder_.Finish();
5306 }
5307 
5308 struct LogicalNotOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5309   bool Verify(flatbuffers::Verifier &verifier) const {
5310     return VerifyTableStart(verifier) &&
5311            verifier.EndTable();
5312   }
5313 };
5314 
5315 struct LogicalNotOptionsBuilder {
5316   flatbuffers::FlatBufferBuilder &fbb_;
5317   flatbuffers::uoffset_t start_;
5318   explicit LogicalNotOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5319         : fbb_(_fbb) {
5320     start_ = fbb_.StartTable();
5321   }
5322   LogicalNotOptionsBuilder &operator=(const LogicalNotOptionsBuilder &);
5323   flatbuffers::Offset<LogicalNotOptions> Finish() {
5324     const auto end = fbb_.EndTable(start_);
5325     auto o = flatbuffers::Offset<LogicalNotOptions>(end);
5326     return o;
5327   }
5328 };
5329 
5330 inline flatbuffers::Offset<LogicalNotOptions> CreateLogicalNotOptions(
5331     flatbuffers::FlatBufferBuilder &_fbb) {
5332   LogicalNotOptionsBuilder builder_(_fbb);
5333   return builder_.Finish();
5334 }
5335 
5336 struct UnpackOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5337   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5338     VT_NUM = 4,
5339     VT_AXIS = 6
5340   };
5341   int32_t num() const {
5342     return GetField<int32_t>(VT_NUM, 0);
5343   }
5344   int32_t axis() const {
5345     return GetField<int32_t>(VT_AXIS, 0);
5346   }
5347   bool Verify(flatbuffers::Verifier &verifier) const {
5348     return VerifyTableStart(verifier) &&
5349            VerifyField<int32_t>(verifier, VT_NUM) &&
5350            VerifyField<int32_t>(verifier, VT_AXIS) &&
5351            verifier.EndTable();
5352   }
5353 };
5354 
5355 struct UnpackOptionsBuilder {
5356   flatbuffers::FlatBufferBuilder &fbb_;
5357   flatbuffers::uoffset_t start_;
5358   void add_num(int32_t num) {
5359     fbb_.AddElement<int32_t>(UnpackOptions::VT_NUM, num, 0);
5360   }
5361   void add_axis(int32_t axis) {
5362     fbb_.AddElement<int32_t>(UnpackOptions::VT_AXIS, axis, 0);
5363   }
5364   explicit UnpackOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5365         : fbb_(_fbb) {
5366     start_ = fbb_.StartTable();
5367   }
5368   UnpackOptionsBuilder &operator=(const UnpackOptionsBuilder &);
5369   flatbuffers::Offset<UnpackOptions> Finish() {
5370     const auto end = fbb_.EndTable(start_);
5371     auto o = flatbuffers::Offset<UnpackOptions>(end);
5372     return o;
5373   }
5374 };
5375 
5376 inline flatbuffers::Offset<UnpackOptions> CreateUnpackOptions(
5377     flatbuffers::FlatBufferBuilder &_fbb,
5378     int32_t num = 0,
5379     int32_t axis = 0) {
5380   UnpackOptionsBuilder builder_(_fbb);
5381   builder_.add_axis(axis);
5382   builder_.add_num(num);
5383   return builder_.Finish();
5384 }
5385 
5386 struct FloorDivOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5387   bool Verify(flatbuffers::Verifier &verifier) const {
5388     return VerifyTableStart(verifier) &&
5389            verifier.EndTable();
5390   }
5391 };
5392 
5393 struct FloorDivOptionsBuilder {
5394   flatbuffers::FlatBufferBuilder &fbb_;
5395   flatbuffers::uoffset_t start_;
5396   explicit FloorDivOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5397         : fbb_(_fbb) {
5398     start_ = fbb_.StartTable();
5399   }
5400   FloorDivOptionsBuilder &operator=(const FloorDivOptionsBuilder &);
5401   flatbuffers::Offset<FloorDivOptions> Finish() {
5402     const auto end = fbb_.EndTable(start_);
5403     auto o = flatbuffers::Offset<FloorDivOptions>(end);
5404     return o;
5405   }
5406 };
5407 
5408 inline flatbuffers::Offset<FloorDivOptions> CreateFloorDivOptions(
5409     flatbuffers::FlatBufferBuilder &_fbb) {
5410   FloorDivOptionsBuilder builder_(_fbb);
5411   return builder_.Finish();
5412 }
5413 
5414 struct SquareOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5415   bool Verify(flatbuffers::Verifier &verifier) const {
5416     return VerifyTableStart(verifier) &&
5417            verifier.EndTable();
5418   }
5419 };
5420 
5421 struct SquareOptionsBuilder {
5422   flatbuffers::FlatBufferBuilder &fbb_;
5423   flatbuffers::uoffset_t start_;
5424   explicit SquareOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5425         : fbb_(_fbb) {
5426     start_ = fbb_.StartTable();
5427   }
5428   SquareOptionsBuilder &operator=(const SquareOptionsBuilder &);
5429   flatbuffers::Offset<SquareOptions> Finish() {
5430     const auto end = fbb_.EndTable(start_);
5431     auto o = flatbuffers::Offset<SquareOptions>(end);
5432     return o;
5433   }
5434 };
5435 
5436 inline flatbuffers::Offset<SquareOptions> CreateSquareOptions(
5437     flatbuffers::FlatBufferBuilder &_fbb) {
5438   SquareOptionsBuilder builder_(_fbb);
5439   return builder_.Finish();
5440 }
5441 
5442 struct ZerosLikeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5443   bool Verify(flatbuffers::Verifier &verifier) const {
5444     return VerifyTableStart(verifier) &&
5445            verifier.EndTable();
5446   }
5447 };
5448 
5449 struct ZerosLikeOptionsBuilder {
5450   flatbuffers::FlatBufferBuilder &fbb_;
5451   flatbuffers::uoffset_t start_;
5452   explicit ZerosLikeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5453         : fbb_(_fbb) {
5454     start_ = fbb_.StartTable();
5455   }
5456   ZerosLikeOptionsBuilder &operator=(const ZerosLikeOptionsBuilder &);
5457   flatbuffers::Offset<ZerosLikeOptions> Finish() {
5458     const auto end = fbb_.EndTable(start_);
5459     auto o = flatbuffers::Offset<ZerosLikeOptions>(end);
5460     return o;
5461   }
5462 };
5463 
5464 inline flatbuffers::Offset<ZerosLikeOptions> CreateZerosLikeOptions(
5465     flatbuffers::FlatBufferBuilder &_fbb) {
5466   ZerosLikeOptionsBuilder builder_(_fbb);
5467   return builder_.Finish();
5468 }
5469 
5470 struct FillOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5471   bool Verify(flatbuffers::Verifier &verifier) const {
5472     return VerifyTableStart(verifier) &&
5473            verifier.EndTable();
5474   }
5475 };
5476 
5477 struct FillOptionsBuilder {
5478   flatbuffers::FlatBufferBuilder &fbb_;
5479   flatbuffers::uoffset_t start_;
5480   explicit FillOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5481         : fbb_(_fbb) {
5482     start_ = fbb_.StartTable();
5483   }
5484   FillOptionsBuilder &operator=(const FillOptionsBuilder &);
5485   flatbuffers::Offset<FillOptions> Finish() {
5486     const auto end = fbb_.EndTable(start_);
5487     auto o = flatbuffers::Offset<FillOptions>(end);
5488     return o;
5489   }
5490 };
5491 
5492 inline flatbuffers::Offset<FillOptions> CreateFillOptions(
5493     flatbuffers::FlatBufferBuilder &_fbb) {
5494   FillOptionsBuilder builder_(_fbb);
5495   return builder_.Finish();
5496 }
5497 
5498 struct FloorModOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5499   bool Verify(flatbuffers::Verifier &verifier) const {
5500     return VerifyTableStart(verifier) &&
5501            verifier.EndTable();
5502   }
5503 };
5504 
5505 struct FloorModOptionsBuilder {
5506   flatbuffers::FlatBufferBuilder &fbb_;
5507   flatbuffers::uoffset_t start_;
5508   explicit FloorModOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5509         : fbb_(_fbb) {
5510     start_ = fbb_.StartTable();
5511   }
5512   FloorModOptionsBuilder &operator=(const FloorModOptionsBuilder &);
5513   flatbuffers::Offset<FloorModOptions> Finish() {
5514     const auto end = fbb_.EndTable(start_);
5515     auto o = flatbuffers::Offset<FloorModOptions>(end);
5516     return o;
5517   }
5518 };
5519 
5520 inline flatbuffers::Offset<FloorModOptions> CreateFloorModOptions(
5521     flatbuffers::FlatBufferBuilder &_fbb) {
5522   FloorModOptionsBuilder builder_(_fbb);
5523   return builder_.Finish();
5524 }
5525 
5526 struct RangeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5527   bool Verify(flatbuffers::Verifier &verifier) const {
5528     return VerifyTableStart(verifier) &&
5529            verifier.EndTable();
5530   }
5531 };
5532 
5533 struct RangeOptionsBuilder {
5534   flatbuffers::FlatBufferBuilder &fbb_;
5535   flatbuffers::uoffset_t start_;
5536   explicit RangeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5537         : fbb_(_fbb) {
5538     start_ = fbb_.StartTable();
5539   }
5540   RangeOptionsBuilder &operator=(const RangeOptionsBuilder &);
5541   flatbuffers::Offset<RangeOptions> Finish() {
5542     const auto end = fbb_.EndTable(start_);
5543     auto o = flatbuffers::Offset<RangeOptions>(end);
5544     return o;
5545   }
5546 };
5547 
5548 inline flatbuffers::Offset<RangeOptions> CreateRangeOptions(
5549     flatbuffers::FlatBufferBuilder &_fbb) {
5550   RangeOptionsBuilder builder_(_fbb);
5551   return builder_.Finish();
5552 }
5553 
5554 struct LeakyReluOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5555   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5556     VT_ALPHA = 4
5557   };
5558   float alpha() const {
5559     return GetField<float>(VT_ALPHA, 0.0f);
5560   }
5561   bool Verify(flatbuffers::Verifier &verifier) const {
5562     return VerifyTableStart(verifier) &&
5563            VerifyField<float>(verifier, VT_ALPHA) &&
5564            verifier.EndTable();
5565   }
5566 };
5567 
5568 struct LeakyReluOptionsBuilder {
5569   flatbuffers::FlatBufferBuilder &fbb_;
5570   flatbuffers::uoffset_t start_;
5571   void add_alpha(float alpha) {
5572     fbb_.AddElement<float>(LeakyReluOptions::VT_ALPHA, alpha, 0.0f);
5573   }
5574   explicit LeakyReluOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5575         : fbb_(_fbb) {
5576     start_ = fbb_.StartTable();
5577   }
5578   LeakyReluOptionsBuilder &operator=(const LeakyReluOptionsBuilder &);
5579   flatbuffers::Offset<LeakyReluOptions> Finish() {
5580     const auto end = fbb_.EndTable(start_);
5581     auto o = flatbuffers::Offset<LeakyReluOptions>(end);
5582     return o;
5583   }
5584 };
5585 
5586 inline flatbuffers::Offset<LeakyReluOptions> CreateLeakyReluOptions(
5587     flatbuffers::FlatBufferBuilder &_fbb,
5588     float alpha = 0.0f) {
5589   LeakyReluOptionsBuilder builder_(_fbb);
5590   builder_.add_alpha(alpha);
5591   return builder_.Finish();
5592 }
5593 
5594 struct SquaredDifferenceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5595   bool Verify(flatbuffers::Verifier &verifier) const {
5596     return VerifyTableStart(verifier) &&
5597            verifier.EndTable();
5598   }
5599 };
5600 
5601 struct SquaredDifferenceOptionsBuilder {
5602   flatbuffers::FlatBufferBuilder &fbb_;
5603   flatbuffers::uoffset_t start_;
5604   explicit SquaredDifferenceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5605         : fbb_(_fbb) {
5606     start_ = fbb_.StartTable();
5607   }
5608   SquaredDifferenceOptionsBuilder &operator=(const SquaredDifferenceOptionsBuilder &);
5609   flatbuffers::Offset<SquaredDifferenceOptions> Finish() {
5610     const auto end = fbb_.EndTable(start_);
5611     auto o = flatbuffers::Offset<SquaredDifferenceOptions>(end);
5612     return o;
5613   }
5614 };
5615 
5616 inline flatbuffers::Offset<SquaredDifferenceOptions> CreateSquaredDifferenceOptions(
5617     flatbuffers::FlatBufferBuilder &_fbb) {
5618   SquaredDifferenceOptionsBuilder builder_(_fbb);
5619   return builder_.Finish();
5620 }
5621 
5622 struct MirrorPadOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5623   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5624     VT_MODE = 4
5625   };
5626   tflite::MirrorPadMode mode() const {
5627     return static_cast<tflite::MirrorPadMode>(GetField<int8_t>(VT_MODE, 0));
5628   }
5629   bool Verify(flatbuffers::Verifier &verifier) const {
5630     return VerifyTableStart(verifier) &&
5631            VerifyField<int8_t>(verifier, VT_MODE) &&
5632            verifier.EndTable();
5633   }
5634 };
5635 
5636 struct MirrorPadOptionsBuilder {
5637   flatbuffers::FlatBufferBuilder &fbb_;
5638   flatbuffers::uoffset_t start_;
5639   void add_mode(tflite::MirrorPadMode mode) {
5640     fbb_.AddElement<int8_t>(MirrorPadOptions::VT_MODE, static_cast<int8_t>(mode), 0);
5641   }
5642   explicit MirrorPadOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5643         : fbb_(_fbb) {
5644     start_ = fbb_.StartTable();
5645   }
5646   MirrorPadOptionsBuilder &operator=(const MirrorPadOptionsBuilder &);
5647   flatbuffers::Offset<MirrorPadOptions> Finish() {
5648     const auto end = fbb_.EndTable(start_);
5649     auto o = flatbuffers::Offset<MirrorPadOptions>(end);
5650     return o;
5651   }
5652 };
5653 
5654 inline flatbuffers::Offset<MirrorPadOptions> CreateMirrorPadOptions(
5655     flatbuffers::FlatBufferBuilder &_fbb,
5656     tflite::MirrorPadMode mode = tflite::MirrorPadMode_REFLECT) {
5657   MirrorPadOptionsBuilder builder_(_fbb);
5658   builder_.add_mode(mode);
5659   return builder_.Finish();
5660 }
5661 
5662 struct UniqueOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5663   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5664     VT_IDX_OUT_TYPE = 4
5665   };
5666   tflite::TensorType idx_out_type() const {
5667     return static_cast<tflite::TensorType>(GetField<int8_t>(VT_IDX_OUT_TYPE, 2));
5668   }
5669   bool Verify(flatbuffers::Verifier &verifier) const {
5670     return VerifyTableStart(verifier) &&
5671            VerifyField<int8_t>(verifier, VT_IDX_OUT_TYPE) &&
5672            verifier.EndTable();
5673   }
5674 };
5675 
5676 struct UniqueOptionsBuilder {
5677   flatbuffers::FlatBufferBuilder &fbb_;
5678   flatbuffers::uoffset_t start_;
5679   void add_idx_out_type(tflite::TensorType idx_out_type) {
5680     fbb_.AddElement<int8_t>(UniqueOptions::VT_IDX_OUT_TYPE, static_cast<int8_t>(idx_out_type), 2);
5681   }
5682   explicit UniqueOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5683         : fbb_(_fbb) {
5684     start_ = fbb_.StartTable();
5685   }
5686   UniqueOptionsBuilder &operator=(const UniqueOptionsBuilder &);
5687   flatbuffers::Offset<UniqueOptions> Finish() {
5688     const auto end = fbb_.EndTable(start_);
5689     auto o = flatbuffers::Offset<UniqueOptions>(end);
5690     return o;
5691   }
5692 };
5693 
5694 inline flatbuffers::Offset<UniqueOptions> CreateUniqueOptions(
5695     flatbuffers::FlatBufferBuilder &_fbb,
5696     tflite::TensorType idx_out_type = tflite::TensorType_INT32) {
5697   UniqueOptionsBuilder builder_(_fbb);
5698   builder_.add_idx_out_type(idx_out_type);
5699   return builder_.Finish();
5700 }
5701 
5702 struct ReverseV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5703   bool Verify(flatbuffers::Verifier &verifier) const {
5704     return VerifyTableStart(verifier) &&
5705            verifier.EndTable();
5706   }
5707 };
5708 
5709 struct ReverseV2OptionsBuilder {
5710   flatbuffers::FlatBufferBuilder &fbb_;
5711   flatbuffers::uoffset_t start_;
5712   explicit ReverseV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5713         : fbb_(_fbb) {
5714     start_ = fbb_.StartTable();
5715   }
5716   ReverseV2OptionsBuilder &operator=(const ReverseV2OptionsBuilder &);
5717   flatbuffers::Offset<ReverseV2Options> Finish() {
5718     const auto end = fbb_.EndTable(start_);
5719     auto o = flatbuffers::Offset<ReverseV2Options>(end);
5720     return o;
5721   }
5722 };
5723 
5724 inline flatbuffers::Offset<ReverseV2Options> CreateReverseV2Options(
5725     flatbuffers::FlatBufferBuilder &_fbb) {
5726   ReverseV2OptionsBuilder builder_(_fbb);
5727   return builder_.Finish();
5728 }
5729 
5730 struct AddNOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5731   bool Verify(flatbuffers::Verifier &verifier) const {
5732     return VerifyTableStart(verifier) &&
5733            verifier.EndTable();
5734   }
5735 };
5736 
5737 struct AddNOptionsBuilder {
5738   flatbuffers::FlatBufferBuilder &fbb_;
5739   flatbuffers::uoffset_t start_;
5740   explicit AddNOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5741         : fbb_(_fbb) {
5742     start_ = fbb_.StartTable();
5743   }
5744   AddNOptionsBuilder &operator=(const AddNOptionsBuilder &);
5745   flatbuffers::Offset<AddNOptions> Finish() {
5746     const auto end = fbb_.EndTable(start_);
5747     auto o = flatbuffers::Offset<AddNOptions>(end);
5748     return o;
5749   }
5750 };
5751 
5752 inline flatbuffers::Offset<AddNOptions> CreateAddNOptions(
5753     flatbuffers::FlatBufferBuilder &_fbb) {
5754   AddNOptionsBuilder builder_(_fbb);
5755   return builder_.Finish();
5756 }
5757 
5758 struct GatherNdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5759   bool Verify(flatbuffers::Verifier &verifier) const {
5760     return VerifyTableStart(verifier) &&
5761            verifier.EndTable();
5762   }
5763 };
5764 
5765 struct GatherNdOptionsBuilder {
5766   flatbuffers::FlatBufferBuilder &fbb_;
5767   flatbuffers::uoffset_t start_;
5768   explicit GatherNdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5769         : fbb_(_fbb) {
5770     start_ = fbb_.StartTable();
5771   }
5772   GatherNdOptionsBuilder &operator=(const GatherNdOptionsBuilder &);
5773   flatbuffers::Offset<GatherNdOptions> Finish() {
5774     const auto end = fbb_.EndTable(start_);
5775     auto o = flatbuffers::Offset<GatherNdOptions>(end);
5776     return o;
5777   }
5778 };
5779 
5780 inline flatbuffers::Offset<GatherNdOptions> CreateGatherNdOptions(
5781     flatbuffers::FlatBufferBuilder &_fbb) {
5782   GatherNdOptionsBuilder builder_(_fbb);
5783   return builder_.Finish();
5784 }
5785 
5786 struct WhereOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5787   bool Verify(flatbuffers::Verifier &verifier) const {
5788     return VerifyTableStart(verifier) &&
5789            verifier.EndTable();
5790   }
5791 };
5792 
5793 struct WhereOptionsBuilder {
5794   flatbuffers::FlatBufferBuilder &fbb_;
5795   flatbuffers::uoffset_t start_;
5796   explicit WhereOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5797         : fbb_(_fbb) {
5798     start_ = fbb_.StartTable();
5799   }
5800   WhereOptionsBuilder &operator=(const WhereOptionsBuilder &);
5801   flatbuffers::Offset<WhereOptions> Finish() {
5802     const auto end = fbb_.EndTable(start_);
5803     auto o = flatbuffers::Offset<WhereOptions>(end);
5804     return o;
5805   }
5806 };
5807 
5808 inline flatbuffers::Offset<WhereOptions> CreateWhereOptions(
5809     flatbuffers::FlatBufferBuilder &_fbb) {
5810   WhereOptionsBuilder builder_(_fbb);
5811   return builder_.Finish();
5812 }
5813 
5814 struct ReverseSequenceOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5815   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5816     VT_SEQ_DIM = 4,
5817     VT_BATCH_DIM = 6
5818   };
5819   int32_t seq_dim() const {
5820     return GetField<int32_t>(VT_SEQ_DIM, 0);
5821   }
5822   int32_t batch_dim() const {
5823     return GetField<int32_t>(VT_BATCH_DIM, 0);
5824   }
5825   bool Verify(flatbuffers::Verifier &verifier) const {
5826     return VerifyTableStart(verifier) &&
5827            VerifyField<int32_t>(verifier, VT_SEQ_DIM) &&
5828            VerifyField<int32_t>(verifier, VT_BATCH_DIM) &&
5829            verifier.EndTable();
5830   }
5831 };
5832 
5833 struct ReverseSequenceOptionsBuilder {
5834   flatbuffers::FlatBufferBuilder &fbb_;
5835   flatbuffers::uoffset_t start_;
5836   void add_seq_dim(int32_t seq_dim) {
5837     fbb_.AddElement<int32_t>(ReverseSequenceOptions::VT_SEQ_DIM, seq_dim, 0);
5838   }
5839   void add_batch_dim(int32_t batch_dim) {
5840     fbb_.AddElement<int32_t>(ReverseSequenceOptions::VT_BATCH_DIM, batch_dim, 0);
5841   }
5842   explicit ReverseSequenceOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5843         : fbb_(_fbb) {
5844     start_ = fbb_.StartTable();
5845   }
5846   ReverseSequenceOptionsBuilder &operator=(const ReverseSequenceOptionsBuilder &);
5847   flatbuffers::Offset<ReverseSequenceOptions> Finish() {
5848     const auto end = fbb_.EndTable(start_);
5849     auto o = flatbuffers::Offset<ReverseSequenceOptions>(end);
5850     return o;
5851   }
5852 };
5853 
5854 inline flatbuffers::Offset<ReverseSequenceOptions> CreateReverseSequenceOptions(
5855     flatbuffers::FlatBufferBuilder &_fbb,
5856     int32_t seq_dim = 0,
5857     int32_t batch_dim = 0) {
5858   ReverseSequenceOptionsBuilder builder_(_fbb);
5859   builder_.add_batch_dim(batch_dim);
5860   builder_.add_seq_dim(seq_dim);
5861   return builder_.Finish();
5862 }
5863 
5864 struct MatrixDiagOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5865   bool Verify(flatbuffers::Verifier &verifier) const {
5866     return VerifyTableStart(verifier) &&
5867            verifier.EndTable();
5868   }
5869 };
5870 
5871 struct MatrixDiagOptionsBuilder {
5872   flatbuffers::FlatBufferBuilder &fbb_;
5873   flatbuffers::uoffset_t start_;
5874   explicit MatrixDiagOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5875         : fbb_(_fbb) {
5876     start_ = fbb_.StartTable();
5877   }
5878   MatrixDiagOptionsBuilder &operator=(const MatrixDiagOptionsBuilder &);
5879   flatbuffers::Offset<MatrixDiagOptions> Finish() {
5880     const auto end = fbb_.EndTable(start_);
5881     auto o = flatbuffers::Offset<MatrixDiagOptions>(end);
5882     return o;
5883   }
5884 };
5885 
5886 inline flatbuffers::Offset<MatrixDiagOptions> CreateMatrixDiagOptions(
5887     flatbuffers::FlatBufferBuilder &_fbb) {
5888   MatrixDiagOptionsBuilder builder_(_fbb);
5889   return builder_.Finish();
5890 }
5891 
5892 struct QuantizeOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5893   bool Verify(flatbuffers::Verifier &verifier) const {
5894     return VerifyTableStart(verifier) &&
5895            verifier.EndTable();
5896   }
5897 };
5898 
5899 struct QuantizeOptionsBuilder {
5900   flatbuffers::FlatBufferBuilder &fbb_;
5901   flatbuffers::uoffset_t start_;
5902   explicit QuantizeOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5903         : fbb_(_fbb) {
5904     start_ = fbb_.StartTable();
5905   }
5906   QuantizeOptionsBuilder &operator=(const QuantizeOptionsBuilder &);
5907   flatbuffers::Offset<QuantizeOptions> Finish() {
5908     const auto end = fbb_.EndTable(start_);
5909     auto o = flatbuffers::Offset<QuantizeOptions>(end);
5910     return o;
5911   }
5912 };
5913 
5914 inline flatbuffers::Offset<QuantizeOptions> CreateQuantizeOptions(
5915     flatbuffers::FlatBufferBuilder &_fbb) {
5916   QuantizeOptionsBuilder builder_(_fbb);
5917   return builder_.Finish();
5918 }
5919 
5920 struct MatrixSetDiagOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5921   bool Verify(flatbuffers::Verifier &verifier) const {
5922     return VerifyTableStart(verifier) &&
5923            verifier.EndTable();
5924   }
5925 };
5926 
5927 struct MatrixSetDiagOptionsBuilder {
5928   flatbuffers::FlatBufferBuilder &fbb_;
5929   flatbuffers::uoffset_t start_;
5930   explicit MatrixSetDiagOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5931         : fbb_(_fbb) {
5932     start_ = fbb_.StartTable();
5933   }
5934   MatrixSetDiagOptionsBuilder &operator=(const MatrixSetDiagOptionsBuilder &);
5935   flatbuffers::Offset<MatrixSetDiagOptions> Finish() {
5936     const auto end = fbb_.EndTable(start_);
5937     auto o = flatbuffers::Offset<MatrixSetDiagOptions>(end);
5938     return o;
5939   }
5940 };
5941 
5942 inline flatbuffers::Offset<MatrixSetDiagOptions> CreateMatrixSetDiagOptions(
5943     flatbuffers::FlatBufferBuilder &_fbb) {
5944   MatrixSetDiagOptionsBuilder builder_(_fbb);
5945   return builder_.Finish();
5946 }
5947 
5948 struct IfOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5949   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5950     VT_THEN_SUBGRAPH_INDEX = 4,
5951     VT_ELSE_SUBGRAPH_INDEX = 6
5952   };
5953   int32_t then_subgraph_index() const {
5954     return GetField<int32_t>(VT_THEN_SUBGRAPH_INDEX, 0);
5955   }
5956   int32_t else_subgraph_index() const {
5957     return GetField<int32_t>(VT_ELSE_SUBGRAPH_INDEX, 0);
5958   }
5959   bool Verify(flatbuffers::Verifier &verifier) const {
5960     return VerifyTableStart(verifier) &&
5961            VerifyField<int32_t>(verifier, VT_THEN_SUBGRAPH_INDEX) &&
5962            VerifyField<int32_t>(verifier, VT_ELSE_SUBGRAPH_INDEX) &&
5963            verifier.EndTable();
5964   }
5965 };
5966 
5967 struct IfOptionsBuilder {
5968   flatbuffers::FlatBufferBuilder &fbb_;
5969   flatbuffers::uoffset_t start_;
5970   void add_then_subgraph_index(int32_t then_subgraph_index) {
5971     fbb_.AddElement<int32_t>(IfOptions::VT_THEN_SUBGRAPH_INDEX, then_subgraph_index, 0);
5972   }
5973   void add_else_subgraph_index(int32_t else_subgraph_index) {
5974     fbb_.AddElement<int32_t>(IfOptions::VT_ELSE_SUBGRAPH_INDEX, else_subgraph_index, 0);
5975   }
5976   explicit IfOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5977         : fbb_(_fbb) {
5978     start_ = fbb_.StartTable();
5979   }
5980   IfOptionsBuilder &operator=(const IfOptionsBuilder &);
5981   flatbuffers::Offset<IfOptions> Finish() {
5982     const auto end = fbb_.EndTable(start_);
5983     auto o = flatbuffers::Offset<IfOptions>(end);
5984     return o;
5985   }
5986 };
5987 
5988 inline flatbuffers::Offset<IfOptions> CreateIfOptions(
5989     flatbuffers::FlatBufferBuilder &_fbb,
5990     int32_t then_subgraph_index = 0,
5991     int32_t else_subgraph_index = 0) {
5992   IfOptionsBuilder builder_(_fbb);
5993   builder_.add_else_subgraph_index(else_subgraph_index);
5994   builder_.add_then_subgraph_index(then_subgraph_index);
5995   return builder_.Finish();
5996 }
5997 
5998 struct WhileOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5999   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6000     VT_COND_SUBGRAPH_INDEX = 4,
6001     VT_BODY_SUBGRAPH_INDEX = 6
6002   };
6003   int32_t cond_subgraph_index() const {
6004     return GetField<int32_t>(VT_COND_SUBGRAPH_INDEX, 0);
6005   }
6006   int32_t body_subgraph_index() const {
6007     return GetField<int32_t>(VT_BODY_SUBGRAPH_INDEX, 0);
6008   }
6009   bool Verify(flatbuffers::Verifier &verifier) const {
6010     return VerifyTableStart(verifier) &&
6011            VerifyField<int32_t>(verifier, VT_COND_SUBGRAPH_INDEX) &&
6012            VerifyField<int32_t>(verifier, VT_BODY_SUBGRAPH_INDEX) &&
6013            verifier.EndTable();
6014   }
6015 };
6016 
6017 struct WhileOptionsBuilder {
6018   flatbuffers::FlatBufferBuilder &fbb_;
6019   flatbuffers::uoffset_t start_;
6020   void add_cond_subgraph_index(int32_t cond_subgraph_index) {
6021     fbb_.AddElement<int32_t>(WhileOptions::VT_COND_SUBGRAPH_INDEX, cond_subgraph_index, 0);
6022   }
6023   void add_body_subgraph_index(int32_t body_subgraph_index) {
6024     fbb_.AddElement<int32_t>(WhileOptions::VT_BODY_SUBGRAPH_INDEX, body_subgraph_index, 0);
6025   }
6026   explicit WhileOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6027         : fbb_(_fbb) {
6028     start_ = fbb_.StartTable();
6029   }
6030   WhileOptionsBuilder &operator=(const WhileOptionsBuilder &);
6031   flatbuffers::Offset<WhileOptions> Finish() {
6032     const auto end = fbb_.EndTable(start_);
6033     auto o = flatbuffers::Offset<WhileOptions>(end);
6034     return o;
6035   }
6036 };
6037 
6038 inline flatbuffers::Offset<WhileOptions> CreateWhileOptions(
6039     flatbuffers::FlatBufferBuilder &_fbb,
6040     int32_t cond_subgraph_index = 0,
6041     int32_t body_subgraph_index = 0) {
6042   WhileOptionsBuilder builder_(_fbb);
6043   builder_.add_body_subgraph_index(body_subgraph_index);
6044   builder_.add_cond_subgraph_index(cond_subgraph_index);
6045   return builder_.Finish();
6046 }
6047 
6048 struct NonMaxSuppressionV4Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6049   bool Verify(flatbuffers::Verifier &verifier) const {
6050     return VerifyTableStart(verifier) &&
6051            verifier.EndTable();
6052   }
6053 };
6054 
6055 struct NonMaxSuppressionV4OptionsBuilder {
6056   flatbuffers::FlatBufferBuilder &fbb_;
6057   flatbuffers::uoffset_t start_;
6058   explicit NonMaxSuppressionV4OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6059         : fbb_(_fbb) {
6060     start_ = fbb_.StartTable();
6061   }
6062   NonMaxSuppressionV4OptionsBuilder &operator=(const NonMaxSuppressionV4OptionsBuilder &);
6063   flatbuffers::Offset<NonMaxSuppressionV4Options> Finish() {
6064     const auto end = fbb_.EndTable(start_);
6065     auto o = flatbuffers::Offset<NonMaxSuppressionV4Options>(end);
6066     return o;
6067   }
6068 };
6069 
6070 inline flatbuffers::Offset<NonMaxSuppressionV4Options> CreateNonMaxSuppressionV4Options(
6071     flatbuffers::FlatBufferBuilder &_fbb) {
6072   NonMaxSuppressionV4OptionsBuilder builder_(_fbb);
6073   return builder_.Finish();
6074 }
6075 
6076 struct NonMaxSuppressionV5Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6077   bool Verify(flatbuffers::Verifier &verifier) const {
6078     return VerifyTableStart(verifier) &&
6079            verifier.EndTable();
6080   }
6081 };
6082 
6083 struct NonMaxSuppressionV5OptionsBuilder {
6084   flatbuffers::FlatBufferBuilder &fbb_;
6085   flatbuffers::uoffset_t start_;
6086   explicit NonMaxSuppressionV5OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6087         : fbb_(_fbb) {
6088     start_ = fbb_.StartTable();
6089   }
6090   NonMaxSuppressionV5OptionsBuilder &operator=(const NonMaxSuppressionV5OptionsBuilder &);
6091   flatbuffers::Offset<NonMaxSuppressionV5Options> Finish() {
6092     const auto end = fbb_.EndTable(start_);
6093     auto o = flatbuffers::Offset<NonMaxSuppressionV5Options>(end);
6094     return o;
6095   }
6096 };
6097 
6098 inline flatbuffers::Offset<NonMaxSuppressionV5Options> CreateNonMaxSuppressionV5Options(
6099     flatbuffers::FlatBufferBuilder &_fbb) {
6100   NonMaxSuppressionV5OptionsBuilder builder_(_fbb);
6101   return builder_.Finish();
6102 }
6103 
6104 struct ScatterNdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6105   bool Verify(flatbuffers::Verifier &verifier) const {
6106     return VerifyTableStart(verifier) &&
6107            verifier.EndTable();
6108   }
6109 };
6110 
6111 struct ScatterNdOptionsBuilder {
6112   flatbuffers::FlatBufferBuilder &fbb_;
6113   flatbuffers::uoffset_t start_;
6114   explicit ScatterNdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6115         : fbb_(_fbb) {
6116     start_ = fbb_.StartTable();
6117   }
6118   ScatterNdOptionsBuilder &operator=(const ScatterNdOptionsBuilder &);
6119   flatbuffers::Offset<ScatterNdOptions> Finish() {
6120     const auto end = fbb_.EndTable(start_);
6121     auto o = flatbuffers::Offset<ScatterNdOptions>(end);
6122     return o;
6123   }
6124 };
6125 
6126 inline flatbuffers::Offset<ScatterNdOptions> CreateScatterNdOptions(
6127     flatbuffers::FlatBufferBuilder &_fbb) {
6128   ScatterNdOptionsBuilder builder_(_fbb);
6129   return builder_.Finish();
6130 }
6131 
6132 struct SelectV2Options FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6133   bool Verify(flatbuffers::Verifier &verifier) const {
6134     return VerifyTableStart(verifier) &&
6135            verifier.EndTable();
6136   }
6137 };
6138 
6139 struct SelectV2OptionsBuilder {
6140   flatbuffers::FlatBufferBuilder &fbb_;
6141   flatbuffers::uoffset_t start_;
6142   explicit SelectV2OptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6143         : fbb_(_fbb) {
6144     start_ = fbb_.StartTable();
6145   }
6146   SelectV2OptionsBuilder &operator=(const SelectV2OptionsBuilder &);
6147   flatbuffers::Offset<SelectV2Options> Finish() {
6148     const auto end = fbb_.EndTable(start_);
6149     auto o = flatbuffers::Offset<SelectV2Options>(end);
6150     return o;
6151   }
6152 };
6153 
6154 inline flatbuffers::Offset<SelectV2Options> CreateSelectV2Options(
6155     flatbuffers::FlatBufferBuilder &_fbb) {
6156   SelectV2OptionsBuilder builder_(_fbb);
6157   return builder_.Finish();
6158 }
6159 
6160 struct DensifyOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6161   bool Verify(flatbuffers::Verifier &verifier) const {
6162     return VerifyTableStart(verifier) &&
6163            verifier.EndTable();
6164   }
6165 };
6166 
6167 struct DensifyOptionsBuilder {
6168   flatbuffers::FlatBufferBuilder &fbb_;
6169   flatbuffers::uoffset_t start_;
6170   explicit DensifyOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6171         : fbb_(_fbb) {
6172     start_ = fbb_.StartTable();
6173   }
6174   DensifyOptionsBuilder &operator=(const DensifyOptionsBuilder &);
6175   flatbuffers::Offset<DensifyOptions> Finish() {
6176     const auto end = fbb_.EndTable(start_);
6177     auto o = flatbuffers::Offset<DensifyOptions>(end);
6178     return o;
6179   }
6180 };
6181 
6182 inline flatbuffers::Offset<DensifyOptions> CreateDensifyOptions(
6183     flatbuffers::FlatBufferBuilder &_fbb) {
6184   DensifyOptionsBuilder builder_(_fbb);
6185   return builder_.Finish();
6186 }
6187 
6188 struct OperatorCode FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6189   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6190     VT_BUILTIN_CODE = 4,
6191     VT_CUSTOM_CODE = 6,
6192     VT_VERSION = 8
6193   };
6194   tflite::BuiltinOperator builtin_code() const {
6195     return static_cast<tflite::BuiltinOperator>(GetField<int8_t>(VT_BUILTIN_CODE, 0));
6196   }
6197   const flatbuffers::String *custom_code() const {
6198     return GetPointer<const flatbuffers::String *>(VT_CUSTOM_CODE);
6199   }
6200   int32_t version() const {
6201     return GetField<int32_t>(VT_VERSION, 1);
6202   }
6203   bool Verify(flatbuffers::Verifier &verifier) const {
6204     return VerifyTableStart(verifier) &&
6205            VerifyField<int8_t>(verifier, VT_BUILTIN_CODE) &&
6206            VerifyOffset(verifier, VT_CUSTOM_CODE) &&
6207            verifier.VerifyString(custom_code()) &&
6208            VerifyField<int32_t>(verifier, VT_VERSION) &&
6209            verifier.EndTable();
6210   }
6211 };
6212 
6213 struct OperatorCodeBuilder {
6214   flatbuffers::FlatBufferBuilder &fbb_;
6215   flatbuffers::uoffset_t start_;
6216   void add_builtin_code(tflite::BuiltinOperator builtin_code) {
6217     fbb_.AddElement<int8_t>(OperatorCode::VT_BUILTIN_CODE, static_cast<int8_t>(builtin_code), 0);
6218   }
6219   void add_custom_code(flatbuffers::Offset<flatbuffers::String> custom_code) {
6220     fbb_.AddOffset(OperatorCode::VT_CUSTOM_CODE, custom_code);
6221   }
6222   void add_version(int32_t version) {
6223     fbb_.AddElement<int32_t>(OperatorCode::VT_VERSION, version, 1);
6224   }
6225   explicit OperatorCodeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6226         : fbb_(_fbb) {
6227     start_ = fbb_.StartTable();
6228   }
6229   OperatorCodeBuilder &operator=(const OperatorCodeBuilder &);
6230   flatbuffers::Offset<OperatorCode> Finish() {
6231     const auto end = fbb_.EndTable(start_);
6232     auto o = flatbuffers::Offset<OperatorCode>(end);
6233     return o;
6234   }
6235 };
6236 
6237 inline flatbuffers::Offset<OperatorCode> CreateOperatorCode(
6238     flatbuffers::FlatBufferBuilder &_fbb,
6239     tflite::BuiltinOperator builtin_code = tflite::BuiltinOperator_ADD,
6240     flatbuffers::Offset<flatbuffers::String> custom_code = 0,
6241     int32_t version = 1) {
6242   OperatorCodeBuilder builder_(_fbb);
6243   builder_.add_version(version);
6244   builder_.add_custom_code(custom_code);
6245   builder_.add_builtin_code(builtin_code);
6246   return builder_.Finish();
6247 }
6248 
6249 inline flatbuffers::Offset<OperatorCode> CreateOperatorCodeDirect(
6250     flatbuffers::FlatBufferBuilder &_fbb,
6251     tflite::BuiltinOperator builtin_code = tflite::BuiltinOperator_ADD,
6252     const char *custom_code = nullptr,
6253     int32_t version = 1) {
6254   auto custom_code__ = custom_code ? _fbb.CreateString(custom_code) : 0;
6255   return tflite::CreateOperatorCode(
6256       _fbb,
6257       builtin_code,
6258       custom_code__,
6259       version);
6260 }
6261 
6262 struct Operator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6263   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6264     VT_OPCODE_INDEX = 4,
6265     VT_INPUTS = 6,
6266     VT_OUTPUTS = 8,
6267     VT_BUILTIN_OPTIONS_TYPE = 10,
6268     VT_BUILTIN_OPTIONS = 12,
6269     VT_CUSTOM_OPTIONS = 14,
6270     VT_CUSTOM_OPTIONS_FORMAT = 16,
6271     VT_MUTATING_VARIABLE_INPUTS = 18,
6272     VT_INTERMEDIATES = 20
6273   };
6274   uint32_t opcode_index() const {
6275     return GetField<uint32_t>(VT_OPCODE_INDEX, 0);
6276   }
6277   const flatbuffers::Vector<int32_t> *inputs() const {
6278     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INPUTS);
6279   }
6280   const flatbuffers::Vector<int32_t> *outputs() const {
6281     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
6282   }
6283   tflite::BuiltinOptions builtin_options_type() const {
6284     return static_cast<tflite::BuiltinOptions>(GetField<uint8_t>(VT_BUILTIN_OPTIONS_TYPE, 0));
6285   }
6286   const void *builtin_options() const {
6287     return GetPointer<const void *>(VT_BUILTIN_OPTIONS);
6288   }
6289   template<typename T> const T *builtin_options_as() const;
6290   const tflite::Conv2DOptions *builtin_options_as_Conv2DOptions() const {
6291     return builtin_options_type() == tflite::BuiltinOptions_Conv2DOptions ? static_cast<const tflite::Conv2DOptions *>(builtin_options()) : nullptr;
6292   }
6293   const tflite::DepthwiseConv2DOptions *builtin_options_as_DepthwiseConv2DOptions() const {
6294     return builtin_options_type() == tflite::BuiltinOptions_DepthwiseConv2DOptions ? static_cast<const tflite::DepthwiseConv2DOptions *>(builtin_options()) : nullptr;
6295   }
6296   const tflite::ConcatEmbeddingsOptions *builtin_options_as_ConcatEmbeddingsOptions() const {
6297     return builtin_options_type() == tflite::BuiltinOptions_ConcatEmbeddingsOptions ? static_cast<const tflite::ConcatEmbeddingsOptions *>(builtin_options()) : nullptr;
6298   }
6299   const tflite::LSHProjectionOptions *builtin_options_as_LSHProjectionOptions() const {
6300     return builtin_options_type() == tflite::BuiltinOptions_LSHProjectionOptions ? static_cast<const tflite::LSHProjectionOptions *>(builtin_options()) : nullptr;
6301   }
6302   const tflite::Pool2DOptions *builtin_options_as_Pool2DOptions() const {
6303     return builtin_options_type() == tflite::BuiltinOptions_Pool2DOptions ? static_cast<const tflite::Pool2DOptions *>(builtin_options()) : nullptr;
6304   }
6305   const tflite::SVDFOptions *builtin_options_as_SVDFOptions() const {
6306     return builtin_options_type() == tflite::BuiltinOptions_SVDFOptions ? static_cast<const tflite::SVDFOptions *>(builtin_options()) : nullptr;
6307   }
6308   const tflite::RNNOptions *builtin_options_as_RNNOptions() const {
6309     return builtin_options_type() == tflite::BuiltinOptions_RNNOptions ? static_cast<const tflite::RNNOptions *>(builtin_options()) : nullptr;
6310   }
6311   const tflite::FullyConnectedOptions *builtin_options_as_FullyConnectedOptions() const {
6312     return builtin_options_type() == tflite::BuiltinOptions_FullyConnectedOptions ? static_cast<const tflite::FullyConnectedOptions *>(builtin_options()) : nullptr;
6313   }
6314   const tflite::SoftmaxOptions *builtin_options_as_SoftmaxOptions() const {
6315     return builtin_options_type() == tflite::BuiltinOptions_SoftmaxOptions ? static_cast<const tflite::SoftmaxOptions *>(builtin_options()) : nullptr;
6316   }
6317   const tflite::ConcatenationOptions *builtin_options_as_ConcatenationOptions() const {
6318     return builtin_options_type() == tflite::BuiltinOptions_ConcatenationOptions ? static_cast<const tflite::ConcatenationOptions *>(builtin_options()) : nullptr;
6319   }
6320   const tflite::AddOptions *builtin_options_as_AddOptions() const {
6321     return builtin_options_type() == tflite::BuiltinOptions_AddOptions ? static_cast<const tflite::AddOptions *>(builtin_options()) : nullptr;
6322   }
6323   const tflite::L2NormOptions *builtin_options_as_L2NormOptions() const {
6324     return builtin_options_type() == tflite::BuiltinOptions_L2NormOptions ? static_cast<const tflite::L2NormOptions *>(builtin_options()) : nullptr;
6325   }
6326   const tflite::LocalResponseNormalizationOptions *builtin_options_as_LocalResponseNormalizationOptions() const {
6327     return builtin_options_type() == tflite::BuiltinOptions_LocalResponseNormalizationOptions ? static_cast<const tflite::LocalResponseNormalizationOptions *>(builtin_options()) : nullptr;
6328   }
6329   const tflite::LSTMOptions *builtin_options_as_LSTMOptions() const {
6330     return builtin_options_type() == tflite::BuiltinOptions_LSTMOptions ? static_cast<const tflite::LSTMOptions *>(builtin_options()) : nullptr;
6331   }
6332   const tflite::ResizeBilinearOptions *builtin_options_as_ResizeBilinearOptions() const {
6333     return builtin_options_type() == tflite::BuiltinOptions_ResizeBilinearOptions ? static_cast<const tflite::ResizeBilinearOptions *>(builtin_options()) : nullptr;
6334   }
6335   const tflite::CallOptions *builtin_options_as_CallOptions() const {
6336     return builtin_options_type() == tflite::BuiltinOptions_CallOptions ? static_cast<const tflite::CallOptions *>(builtin_options()) : nullptr;
6337   }
6338   const tflite::ReshapeOptions *builtin_options_as_ReshapeOptions() const {
6339     return builtin_options_type() == tflite::BuiltinOptions_ReshapeOptions ? static_cast<const tflite::ReshapeOptions *>(builtin_options()) : nullptr;
6340   }
6341   const tflite::SkipGramOptions *builtin_options_as_SkipGramOptions() const {
6342     return builtin_options_type() == tflite::BuiltinOptions_SkipGramOptions ? static_cast<const tflite::SkipGramOptions *>(builtin_options()) : nullptr;
6343   }
6344   const tflite::SpaceToDepthOptions *builtin_options_as_SpaceToDepthOptions() const {
6345     return builtin_options_type() == tflite::BuiltinOptions_SpaceToDepthOptions ? static_cast<const tflite::SpaceToDepthOptions *>(builtin_options()) : nullptr;
6346   }
6347   const tflite::EmbeddingLookupSparseOptions *builtin_options_as_EmbeddingLookupSparseOptions() const {
6348     return builtin_options_type() == tflite::BuiltinOptions_EmbeddingLookupSparseOptions ? static_cast<const tflite::EmbeddingLookupSparseOptions *>(builtin_options()) : nullptr;
6349   }
6350   const tflite::MulOptions *builtin_options_as_MulOptions() const {
6351     return builtin_options_type() == tflite::BuiltinOptions_MulOptions ? static_cast<const tflite::MulOptions *>(builtin_options()) : nullptr;
6352   }
6353   const tflite::PadOptions *builtin_options_as_PadOptions() const {
6354     return builtin_options_type() == tflite::BuiltinOptions_PadOptions ? static_cast<const tflite::PadOptions *>(builtin_options()) : nullptr;
6355   }
6356   const tflite::GatherOptions *builtin_options_as_GatherOptions() const {
6357     return builtin_options_type() == tflite::BuiltinOptions_GatherOptions ? static_cast<const tflite::GatherOptions *>(builtin_options()) : nullptr;
6358   }
6359   const tflite::BatchToSpaceNDOptions *builtin_options_as_BatchToSpaceNDOptions() const {
6360     return builtin_options_type() == tflite::BuiltinOptions_BatchToSpaceNDOptions ? static_cast<const tflite::BatchToSpaceNDOptions *>(builtin_options()) : nullptr;
6361   }
6362   const tflite::SpaceToBatchNDOptions *builtin_options_as_SpaceToBatchNDOptions() const {
6363     return builtin_options_type() == tflite::BuiltinOptions_SpaceToBatchNDOptions ? static_cast<const tflite::SpaceToBatchNDOptions *>(builtin_options()) : nullptr;
6364   }
6365   const tflite::TransposeOptions *builtin_options_as_TransposeOptions() const {
6366     return builtin_options_type() == tflite::BuiltinOptions_TransposeOptions ? static_cast<const tflite::TransposeOptions *>(builtin_options()) : nullptr;
6367   }
6368   const tflite::ReducerOptions *builtin_options_as_ReducerOptions() const {
6369     return builtin_options_type() == tflite::BuiltinOptions_ReducerOptions ? static_cast<const tflite::ReducerOptions *>(builtin_options()) : nullptr;
6370   }
6371   const tflite::SubOptions *builtin_options_as_SubOptions() const {
6372     return builtin_options_type() == tflite::BuiltinOptions_SubOptions ? static_cast<const tflite::SubOptions *>(builtin_options()) : nullptr;
6373   }
6374   const tflite::DivOptions *builtin_options_as_DivOptions() const {
6375     return builtin_options_type() == tflite::BuiltinOptions_DivOptions ? static_cast<const tflite::DivOptions *>(builtin_options()) : nullptr;
6376   }
6377   const tflite::SqueezeOptions *builtin_options_as_SqueezeOptions() const {
6378     return builtin_options_type() == tflite::BuiltinOptions_SqueezeOptions ? static_cast<const tflite::SqueezeOptions *>(builtin_options()) : nullptr;
6379   }
6380   const tflite::SequenceRNNOptions *builtin_options_as_SequenceRNNOptions() const {
6381     return builtin_options_type() == tflite::BuiltinOptions_SequenceRNNOptions ? static_cast<const tflite::SequenceRNNOptions *>(builtin_options()) : nullptr;
6382   }
6383   const tflite::StridedSliceOptions *builtin_options_as_StridedSliceOptions() const {
6384     return builtin_options_type() == tflite::BuiltinOptions_StridedSliceOptions ? static_cast<const tflite::StridedSliceOptions *>(builtin_options()) : nullptr;
6385   }
6386   const tflite::ExpOptions *builtin_options_as_ExpOptions() const {
6387     return builtin_options_type() == tflite::BuiltinOptions_ExpOptions ? static_cast<const tflite::ExpOptions *>(builtin_options()) : nullptr;
6388   }
6389   const tflite::TopKV2Options *builtin_options_as_TopKV2Options() const {
6390     return builtin_options_type() == tflite::BuiltinOptions_TopKV2Options ? static_cast<const tflite::TopKV2Options *>(builtin_options()) : nullptr;
6391   }
6392   const tflite::SplitOptions *builtin_options_as_SplitOptions() const {
6393     return builtin_options_type() == tflite::BuiltinOptions_SplitOptions ? static_cast<const tflite::SplitOptions *>(builtin_options()) : nullptr;
6394   }
6395   const tflite::LogSoftmaxOptions *builtin_options_as_LogSoftmaxOptions() const {
6396     return builtin_options_type() == tflite::BuiltinOptions_LogSoftmaxOptions ? static_cast<const tflite::LogSoftmaxOptions *>(builtin_options()) : nullptr;
6397   }
6398   const tflite::CastOptions *builtin_options_as_CastOptions() const {
6399     return builtin_options_type() == tflite::BuiltinOptions_CastOptions ? static_cast<const tflite::CastOptions *>(builtin_options()) : nullptr;
6400   }
6401   const tflite::DequantizeOptions *builtin_options_as_DequantizeOptions() const {
6402     return builtin_options_type() == tflite::BuiltinOptions_DequantizeOptions ? static_cast<const tflite::DequantizeOptions *>(builtin_options()) : nullptr;
6403   }
6404   const tflite::MaximumMinimumOptions *builtin_options_as_MaximumMinimumOptions() const {
6405     return builtin_options_type() == tflite::BuiltinOptions_MaximumMinimumOptions ? static_cast<const tflite::MaximumMinimumOptions *>(builtin_options()) : nullptr;
6406   }
6407   const tflite::ArgMaxOptions *builtin_options_as_ArgMaxOptions() const {
6408     return builtin_options_type() == tflite::BuiltinOptions_ArgMaxOptions ? static_cast<const tflite::ArgMaxOptions *>(builtin_options()) : nullptr;
6409   }
6410   const tflite::LessOptions *builtin_options_as_LessOptions() const {
6411     return builtin_options_type() == tflite::BuiltinOptions_LessOptions ? static_cast<const tflite::LessOptions *>(builtin_options()) : nullptr;
6412   }
6413   const tflite::NegOptions *builtin_options_as_NegOptions() const {
6414     return builtin_options_type() == tflite::BuiltinOptions_NegOptions ? static_cast<const tflite::NegOptions *>(builtin_options()) : nullptr;
6415   }
6416   const tflite::PadV2Options *builtin_options_as_PadV2Options() const {
6417     return builtin_options_type() == tflite::BuiltinOptions_PadV2Options ? static_cast<const tflite::PadV2Options *>(builtin_options()) : nullptr;
6418   }
6419   const tflite::GreaterOptions *builtin_options_as_GreaterOptions() const {
6420     return builtin_options_type() == tflite::BuiltinOptions_GreaterOptions ? static_cast<const tflite::GreaterOptions *>(builtin_options()) : nullptr;
6421   }
6422   const tflite::GreaterEqualOptions *builtin_options_as_GreaterEqualOptions() const {
6423     return builtin_options_type() == tflite::BuiltinOptions_GreaterEqualOptions ? static_cast<const tflite::GreaterEqualOptions *>(builtin_options()) : nullptr;
6424   }
6425   const tflite::LessEqualOptions *builtin_options_as_LessEqualOptions() const {
6426     return builtin_options_type() == tflite::BuiltinOptions_LessEqualOptions ? static_cast<const tflite::LessEqualOptions *>(builtin_options()) : nullptr;
6427   }
6428   const tflite::SelectOptions *builtin_options_as_SelectOptions() const {
6429     return builtin_options_type() == tflite::BuiltinOptions_SelectOptions ? static_cast<const tflite::SelectOptions *>(builtin_options()) : nullptr;
6430   }
6431   const tflite::SliceOptions *builtin_options_as_SliceOptions() const {
6432     return builtin_options_type() == tflite::BuiltinOptions_SliceOptions ? static_cast<const tflite::SliceOptions *>(builtin_options()) : nullptr;
6433   }
6434   const tflite::TransposeConvOptions *builtin_options_as_TransposeConvOptions() const {
6435     return builtin_options_type() == tflite::BuiltinOptions_TransposeConvOptions ? static_cast<const tflite::TransposeConvOptions *>(builtin_options()) : nullptr;
6436   }
6437   const tflite::SparseToDenseOptions *builtin_options_as_SparseToDenseOptions() const {
6438     return builtin_options_type() == tflite::BuiltinOptions_SparseToDenseOptions ? static_cast<const tflite::SparseToDenseOptions *>(builtin_options()) : nullptr;
6439   }
6440   const tflite::TileOptions *builtin_options_as_TileOptions() const {
6441     return builtin_options_type() == tflite::BuiltinOptions_TileOptions ? static_cast<const tflite::TileOptions *>(builtin_options()) : nullptr;
6442   }
6443   const tflite::ExpandDimsOptions *builtin_options_as_ExpandDimsOptions() const {
6444     return builtin_options_type() == tflite::BuiltinOptions_ExpandDimsOptions ? static_cast<const tflite::ExpandDimsOptions *>(builtin_options()) : nullptr;
6445   }
6446   const tflite::EqualOptions *builtin_options_as_EqualOptions() const {
6447     return builtin_options_type() == tflite::BuiltinOptions_EqualOptions ? static_cast<const tflite::EqualOptions *>(builtin_options()) : nullptr;
6448   }
6449   const tflite::NotEqualOptions *builtin_options_as_NotEqualOptions() const {
6450     return builtin_options_type() == tflite::BuiltinOptions_NotEqualOptions ? static_cast<const tflite::NotEqualOptions *>(builtin_options()) : nullptr;
6451   }
6452   const tflite::ShapeOptions *builtin_options_as_ShapeOptions() const {
6453     return builtin_options_type() == tflite::BuiltinOptions_ShapeOptions ? static_cast<const tflite::ShapeOptions *>(builtin_options()) : nullptr;
6454   }
6455   const tflite::PowOptions *builtin_options_as_PowOptions() const {
6456     return builtin_options_type() == tflite::BuiltinOptions_PowOptions ? static_cast<const tflite::PowOptions *>(builtin_options()) : nullptr;
6457   }
6458   const tflite::ArgMinOptions *builtin_options_as_ArgMinOptions() const {
6459     return builtin_options_type() == tflite::BuiltinOptions_ArgMinOptions ? static_cast<const tflite::ArgMinOptions *>(builtin_options()) : nullptr;
6460   }
6461   const tflite::FakeQuantOptions *builtin_options_as_FakeQuantOptions() const {
6462     return builtin_options_type() == tflite::BuiltinOptions_FakeQuantOptions ? static_cast<const tflite::FakeQuantOptions *>(builtin_options()) : nullptr;
6463   }
6464   const tflite::PackOptions *builtin_options_as_PackOptions() const {
6465     return builtin_options_type() == tflite::BuiltinOptions_PackOptions ? static_cast<const tflite::PackOptions *>(builtin_options()) : nullptr;
6466   }
6467   const tflite::LogicalOrOptions *builtin_options_as_LogicalOrOptions() const {
6468     return builtin_options_type() == tflite::BuiltinOptions_LogicalOrOptions ? static_cast<const tflite::LogicalOrOptions *>(builtin_options()) : nullptr;
6469   }
6470   const tflite::OneHotOptions *builtin_options_as_OneHotOptions() const {
6471     return builtin_options_type() == tflite::BuiltinOptions_OneHotOptions ? static_cast<const tflite::OneHotOptions *>(builtin_options()) : nullptr;
6472   }
6473   const tflite::LogicalAndOptions *builtin_options_as_LogicalAndOptions() const {
6474     return builtin_options_type() == tflite::BuiltinOptions_LogicalAndOptions ? static_cast<const tflite::LogicalAndOptions *>(builtin_options()) : nullptr;
6475   }
6476   const tflite::LogicalNotOptions *builtin_options_as_LogicalNotOptions() const {
6477     return builtin_options_type() == tflite::BuiltinOptions_LogicalNotOptions ? static_cast<const tflite::LogicalNotOptions *>(builtin_options()) : nullptr;
6478   }
6479   const tflite::UnpackOptions *builtin_options_as_UnpackOptions() const {
6480     return builtin_options_type() == tflite::BuiltinOptions_UnpackOptions ? static_cast<const tflite::UnpackOptions *>(builtin_options()) : nullptr;
6481   }
6482   const tflite::FloorDivOptions *builtin_options_as_FloorDivOptions() const {
6483     return builtin_options_type() == tflite::BuiltinOptions_FloorDivOptions ? static_cast<const tflite::FloorDivOptions *>(builtin_options()) : nullptr;
6484   }
6485   const tflite::SquareOptions *builtin_options_as_SquareOptions() const {
6486     return builtin_options_type() == tflite::BuiltinOptions_SquareOptions ? static_cast<const tflite::SquareOptions *>(builtin_options()) : nullptr;
6487   }
6488   const tflite::ZerosLikeOptions *builtin_options_as_ZerosLikeOptions() const {
6489     return builtin_options_type() == tflite::BuiltinOptions_ZerosLikeOptions ? static_cast<const tflite::ZerosLikeOptions *>(builtin_options()) : nullptr;
6490   }
6491   const tflite::FillOptions *builtin_options_as_FillOptions() const {
6492     return builtin_options_type() == tflite::BuiltinOptions_FillOptions ? static_cast<const tflite::FillOptions *>(builtin_options()) : nullptr;
6493   }
6494   const tflite::BidirectionalSequenceLSTMOptions *builtin_options_as_BidirectionalSequenceLSTMOptions() const {
6495     return builtin_options_type() == tflite::BuiltinOptions_BidirectionalSequenceLSTMOptions ? static_cast<const tflite::BidirectionalSequenceLSTMOptions *>(builtin_options()) : nullptr;
6496   }
6497   const tflite::BidirectionalSequenceRNNOptions *builtin_options_as_BidirectionalSequenceRNNOptions() const {
6498     return builtin_options_type() == tflite::BuiltinOptions_BidirectionalSequenceRNNOptions ? static_cast<const tflite::BidirectionalSequenceRNNOptions *>(builtin_options()) : nullptr;
6499   }
6500   const tflite::UnidirectionalSequenceLSTMOptions *builtin_options_as_UnidirectionalSequenceLSTMOptions() const {
6501     return builtin_options_type() == tflite::BuiltinOptions_UnidirectionalSequenceLSTMOptions ? static_cast<const tflite::UnidirectionalSequenceLSTMOptions *>(builtin_options()) : nullptr;
6502   }
6503   const tflite::FloorModOptions *builtin_options_as_FloorModOptions() const {
6504     return builtin_options_type() == tflite::BuiltinOptions_FloorModOptions ? static_cast<const tflite::FloorModOptions *>(builtin_options()) : nullptr;
6505   }
6506   const tflite::RangeOptions *builtin_options_as_RangeOptions() const {
6507     return builtin_options_type() == tflite::BuiltinOptions_RangeOptions ? static_cast<const tflite::RangeOptions *>(builtin_options()) : nullptr;
6508   }
6509   const tflite::ResizeNearestNeighborOptions *builtin_options_as_ResizeNearestNeighborOptions() const {
6510     return builtin_options_type() == tflite::BuiltinOptions_ResizeNearestNeighborOptions ? static_cast<const tflite::ResizeNearestNeighborOptions *>(builtin_options()) : nullptr;
6511   }
6512   const tflite::LeakyReluOptions *builtin_options_as_LeakyReluOptions() const {
6513     return builtin_options_type() == tflite::BuiltinOptions_LeakyReluOptions ? static_cast<const tflite::LeakyReluOptions *>(builtin_options()) : nullptr;
6514   }
6515   const tflite::SquaredDifferenceOptions *builtin_options_as_SquaredDifferenceOptions() const {
6516     return builtin_options_type() == tflite::BuiltinOptions_SquaredDifferenceOptions ? static_cast<const tflite::SquaredDifferenceOptions *>(builtin_options()) : nullptr;
6517   }
6518   const tflite::MirrorPadOptions *builtin_options_as_MirrorPadOptions() const {
6519     return builtin_options_type() == tflite::BuiltinOptions_MirrorPadOptions ? static_cast<const tflite::MirrorPadOptions *>(builtin_options()) : nullptr;
6520   }
6521   const tflite::AbsOptions *builtin_options_as_AbsOptions() const {
6522     return builtin_options_type() == tflite::BuiltinOptions_AbsOptions ? static_cast<const tflite::AbsOptions *>(builtin_options()) : nullptr;
6523   }
6524   const tflite::SplitVOptions *builtin_options_as_SplitVOptions() const {
6525     return builtin_options_type() == tflite::BuiltinOptions_SplitVOptions ? static_cast<const tflite::SplitVOptions *>(builtin_options()) : nullptr;
6526   }
6527   const tflite::UniqueOptions *builtin_options_as_UniqueOptions() const {
6528     return builtin_options_type() == tflite::BuiltinOptions_UniqueOptions ? static_cast<const tflite::UniqueOptions *>(builtin_options()) : nullptr;
6529   }
6530   const tflite::ReverseV2Options *builtin_options_as_ReverseV2Options() const {
6531     return builtin_options_type() == tflite::BuiltinOptions_ReverseV2Options ? static_cast<const tflite::ReverseV2Options *>(builtin_options()) : nullptr;
6532   }
6533   const tflite::AddNOptions *builtin_options_as_AddNOptions() const {
6534     return builtin_options_type() == tflite::BuiltinOptions_AddNOptions ? static_cast<const tflite::AddNOptions *>(builtin_options()) : nullptr;
6535   }
6536   const tflite::GatherNdOptions *builtin_options_as_GatherNdOptions() const {
6537     return builtin_options_type() == tflite::BuiltinOptions_GatherNdOptions ? static_cast<const tflite::GatherNdOptions *>(builtin_options()) : nullptr;
6538   }
6539   const tflite::CosOptions *builtin_options_as_CosOptions() const {
6540     return builtin_options_type() == tflite::BuiltinOptions_CosOptions ? static_cast<const tflite::CosOptions *>(builtin_options()) : nullptr;
6541   }
6542   const tflite::WhereOptions *builtin_options_as_WhereOptions() const {
6543     return builtin_options_type() == tflite::BuiltinOptions_WhereOptions ? static_cast<const tflite::WhereOptions *>(builtin_options()) : nullptr;
6544   }
6545   const tflite::RankOptions *builtin_options_as_RankOptions() const {
6546     return builtin_options_type() == tflite::BuiltinOptions_RankOptions ? static_cast<const tflite::RankOptions *>(builtin_options()) : nullptr;
6547   }
6548   const tflite::ReverseSequenceOptions *builtin_options_as_ReverseSequenceOptions() const {
6549     return builtin_options_type() == tflite::BuiltinOptions_ReverseSequenceOptions ? static_cast<const tflite::ReverseSequenceOptions *>(builtin_options()) : nullptr;
6550   }
6551   const tflite::MatrixDiagOptions *builtin_options_as_MatrixDiagOptions() const {
6552     return builtin_options_type() == tflite::BuiltinOptions_MatrixDiagOptions ? static_cast<const tflite::MatrixDiagOptions *>(builtin_options()) : nullptr;
6553   }
6554   const tflite::QuantizeOptions *builtin_options_as_QuantizeOptions() const {
6555     return builtin_options_type() == tflite::BuiltinOptions_QuantizeOptions ? static_cast<const tflite::QuantizeOptions *>(builtin_options()) : nullptr;
6556   }
6557   const tflite::MatrixSetDiagOptions *builtin_options_as_MatrixSetDiagOptions() const {
6558     return builtin_options_type() == tflite::BuiltinOptions_MatrixSetDiagOptions ? static_cast<const tflite::MatrixSetDiagOptions *>(builtin_options()) : nullptr;
6559   }
6560   const tflite::HardSwishOptions *builtin_options_as_HardSwishOptions() const {
6561     return builtin_options_type() == tflite::BuiltinOptions_HardSwishOptions ? static_cast<const tflite::HardSwishOptions *>(builtin_options()) : nullptr;
6562   }
6563   const tflite::IfOptions *builtin_options_as_IfOptions() const {
6564     return builtin_options_type() == tflite::BuiltinOptions_IfOptions ? static_cast<const tflite::IfOptions *>(builtin_options()) : nullptr;
6565   }
6566   const tflite::WhileOptions *builtin_options_as_WhileOptions() const {
6567     return builtin_options_type() == tflite::BuiltinOptions_WhileOptions ? static_cast<const tflite::WhileOptions *>(builtin_options()) : nullptr;
6568   }
6569   const tflite::DepthToSpaceOptions *builtin_options_as_DepthToSpaceOptions() const {
6570     return builtin_options_type() == tflite::BuiltinOptions_DepthToSpaceOptions ? static_cast<const tflite::DepthToSpaceOptions *>(builtin_options()) : nullptr;
6571   }
6572   const tflite::NonMaxSuppressionV4Options *builtin_options_as_NonMaxSuppressionV4Options() const {
6573     return builtin_options_type() == tflite::BuiltinOptions_NonMaxSuppressionV4Options ? static_cast<const tflite::NonMaxSuppressionV4Options *>(builtin_options()) : nullptr;
6574   }
6575   const tflite::NonMaxSuppressionV5Options *builtin_options_as_NonMaxSuppressionV5Options() const {
6576     return builtin_options_type() == tflite::BuiltinOptions_NonMaxSuppressionV5Options ? static_cast<const tflite::NonMaxSuppressionV5Options *>(builtin_options()) : nullptr;
6577   }
6578   const tflite::ScatterNdOptions *builtin_options_as_ScatterNdOptions() const {
6579     return builtin_options_type() == tflite::BuiltinOptions_ScatterNdOptions ? static_cast<const tflite::ScatterNdOptions *>(builtin_options()) : nullptr;
6580   }
6581   const tflite::SelectV2Options *builtin_options_as_SelectV2Options() const {
6582     return builtin_options_type() == tflite::BuiltinOptions_SelectV2Options ? static_cast<const tflite::SelectV2Options *>(builtin_options()) : nullptr;
6583   }
6584   const tflite::DensifyOptions *builtin_options_as_DensifyOptions() const {
6585     return builtin_options_type() == tflite::BuiltinOptions_DensifyOptions ? static_cast<const tflite::DensifyOptions *>(builtin_options()) : nullptr;
6586   }
6587   const flatbuffers::Vector<uint8_t> *custom_options() const {
6588     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CUSTOM_OPTIONS);
6589   }
6590   tflite::CustomOptionsFormat custom_options_format() const {
6591     return static_cast<tflite::CustomOptionsFormat>(GetField<int8_t>(VT_CUSTOM_OPTIONS_FORMAT, 0));
6592   }
6593   const flatbuffers::Vector<uint8_t> *mutating_variable_inputs() const {
6594     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MUTATING_VARIABLE_INPUTS);
6595   }
6596   const flatbuffers::Vector<int32_t> *intermediates() const {
6597     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INTERMEDIATES);
6598   }
6599   bool Verify(flatbuffers::Verifier &verifier) const {
6600     return VerifyTableStart(verifier) &&
6601            VerifyField<uint32_t>(verifier, VT_OPCODE_INDEX) &&
6602            VerifyOffset(verifier, VT_INPUTS) &&
6603            verifier.VerifyVector(inputs()) &&
6604            VerifyOffset(verifier, VT_OUTPUTS) &&
6605            verifier.VerifyVector(outputs()) &&
6606            VerifyField<uint8_t>(verifier, VT_BUILTIN_OPTIONS_TYPE) &&
6607            VerifyOffset(verifier, VT_BUILTIN_OPTIONS) &&
6608            VerifyBuiltinOptions(verifier, builtin_options(), builtin_options_type()) &&
6609            VerifyOffset(verifier, VT_CUSTOM_OPTIONS) &&
6610            verifier.VerifyVector(custom_options()) &&
6611            VerifyField<int8_t>(verifier, VT_CUSTOM_OPTIONS_FORMAT) &&
6612            VerifyOffset(verifier, VT_MUTATING_VARIABLE_INPUTS) &&
6613            verifier.VerifyVector(mutating_variable_inputs()) &&
6614            VerifyOffset(verifier, VT_INTERMEDIATES) &&
6615            verifier.VerifyVector(intermediates()) &&
6616            verifier.EndTable();
6617   }
6618 };
6619 
6620 template<> inline const tflite::Conv2DOptions *Operator::builtin_options_as<tflite::Conv2DOptions>() const {
6621   return builtin_options_as_Conv2DOptions();
6622 }
6623 
6624 template<> inline const tflite::DepthwiseConv2DOptions *Operator::builtin_options_as<tflite::DepthwiseConv2DOptions>() const {
6625   return builtin_options_as_DepthwiseConv2DOptions();
6626 }
6627 
6628 template<> inline const tflite::ConcatEmbeddingsOptions *Operator::builtin_options_as<tflite::ConcatEmbeddingsOptions>() const {
6629   return builtin_options_as_ConcatEmbeddingsOptions();
6630 }
6631 
6632 template<> inline const tflite::LSHProjectionOptions *Operator::builtin_options_as<tflite::LSHProjectionOptions>() const {
6633   return builtin_options_as_LSHProjectionOptions();
6634 }
6635 
6636 template<> inline const tflite::Pool2DOptions *Operator::builtin_options_as<tflite::Pool2DOptions>() const {
6637   return builtin_options_as_Pool2DOptions();
6638 }
6639 
6640 template<> inline const tflite::SVDFOptions *Operator::builtin_options_as<tflite::SVDFOptions>() const {
6641   return builtin_options_as_SVDFOptions();
6642 }
6643 
6644 template<> inline const tflite::RNNOptions *Operator::builtin_options_as<tflite::RNNOptions>() const {
6645   return builtin_options_as_RNNOptions();
6646 }
6647 
6648 template<> inline const tflite::FullyConnectedOptions *Operator::builtin_options_as<tflite::FullyConnectedOptions>() const {
6649   return builtin_options_as_FullyConnectedOptions();
6650 }
6651 
6652 template<> inline const tflite::SoftmaxOptions *Operator::builtin_options_as<tflite::SoftmaxOptions>() const {
6653   return builtin_options_as_SoftmaxOptions();
6654 }
6655 
6656 template<> inline const tflite::ConcatenationOptions *Operator::builtin_options_as<tflite::ConcatenationOptions>() const {
6657   return builtin_options_as_ConcatenationOptions();
6658 }
6659 
6660 template<> inline const tflite::AddOptions *Operator::builtin_options_as<tflite::AddOptions>() const {
6661   return builtin_options_as_AddOptions();
6662 }
6663 
6664 template<> inline const tflite::L2NormOptions *Operator::builtin_options_as<tflite::L2NormOptions>() const {
6665   return builtin_options_as_L2NormOptions();
6666 }
6667 
6668 template<> inline const tflite::LocalResponseNormalizationOptions *Operator::builtin_options_as<tflite::LocalResponseNormalizationOptions>() const {
6669   return builtin_options_as_LocalResponseNormalizationOptions();
6670 }
6671 
6672 template<> inline const tflite::LSTMOptions *Operator::builtin_options_as<tflite::LSTMOptions>() const {
6673   return builtin_options_as_LSTMOptions();
6674 }
6675 
6676 template<> inline const tflite::ResizeBilinearOptions *Operator::builtin_options_as<tflite::ResizeBilinearOptions>() const {
6677   return builtin_options_as_ResizeBilinearOptions();
6678 }
6679 
6680 template<> inline const tflite::CallOptions *Operator::builtin_options_as<tflite::CallOptions>() const {
6681   return builtin_options_as_CallOptions();
6682 }
6683 
6684 template<> inline const tflite::ReshapeOptions *Operator::builtin_options_as<tflite::ReshapeOptions>() const {
6685   return builtin_options_as_ReshapeOptions();
6686 }
6687 
6688 template<> inline const tflite::SkipGramOptions *Operator::builtin_options_as<tflite::SkipGramOptions>() const {
6689   return builtin_options_as_SkipGramOptions();
6690 }
6691 
6692 template<> inline const tflite::SpaceToDepthOptions *Operator::builtin_options_as<tflite::SpaceToDepthOptions>() const {
6693   return builtin_options_as_SpaceToDepthOptions();
6694 }
6695 
6696 template<> inline const tflite::EmbeddingLookupSparseOptions *Operator::builtin_options_as<tflite::EmbeddingLookupSparseOptions>() const {
6697   return builtin_options_as_EmbeddingLookupSparseOptions();
6698 }
6699 
6700 template<> inline const tflite::MulOptions *Operator::builtin_options_as<tflite::MulOptions>() const {
6701   return builtin_options_as_MulOptions();
6702 }
6703 
6704 template<> inline const tflite::PadOptions *Operator::builtin_options_as<tflite::PadOptions>() const {
6705   return builtin_options_as_PadOptions();
6706 }
6707 
6708 template<> inline const tflite::GatherOptions *Operator::builtin_options_as<tflite::GatherOptions>() const {
6709   return builtin_options_as_GatherOptions();
6710 }
6711 
6712 template<> inline const tflite::BatchToSpaceNDOptions *Operator::builtin_options_as<tflite::BatchToSpaceNDOptions>() const {
6713   return builtin_options_as_BatchToSpaceNDOptions();
6714 }
6715 
6716 template<> inline const tflite::SpaceToBatchNDOptions *Operator::builtin_options_as<tflite::SpaceToBatchNDOptions>() const {
6717   return builtin_options_as_SpaceToBatchNDOptions();
6718 }
6719 
6720 template<> inline const tflite::TransposeOptions *Operator::builtin_options_as<tflite::TransposeOptions>() const {
6721   return builtin_options_as_TransposeOptions();
6722 }
6723 
6724 template<> inline const tflite::ReducerOptions *Operator::builtin_options_as<tflite::ReducerOptions>() const {
6725   return builtin_options_as_ReducerOptions();
6726 }
6727 
6728 template<> inline const tflite::SubOptions *Operator::builtin_options_as<tflite::SubOptions>() const {
6729   return builtin_options_as_SubOptions();
6730 }
6731 
6732 template<> inline const tflite::DivOptions *Operator::builtin_options_as<tflite::DivOptions>() const {
6733   return builtin_options_as_DivOptions();
6734 }
6735 
6736 template<> inline const tflite::SqueezeOptions *Operator::builtin_options_as<tflite::SqueezeOptions>() const {
6737   return builtin_options_as_SqueezeOptions();
6738 }
6739 
6740 template<> inline const tflite::SequenceRNNOptions *Operator::builtin_options_as<tflite::SequenceRNNOptions>() const {
6741   return builtin_options_as_SequenceRNNOptions();
6742 }
6743 
6744 template<> inline const tflite::StridedSliceOptions *Operator::builtin_options_as<tflite::StridedSliceOptions>() const {
6745   return builtin_options_as_StridedSliceOptions();
6746 }
6747 
6748 template<> inline const tflite::ExpOptions *Operator::builtin_options_as<tflite::ExpOptions>() const {
6749   return builtin_options_as_ExpOptions();
6750 }
6751 
6752 template<> inline const tflite::TopKV2Options *Operator::builtin_options_as<tflite::TopKV2Options>() const {
6753   return builtin_options_as_TopKV2Options();
6754 }
6755 
6756 template<> inline const tflite::SplitOptions *Operator::builtin_options_as<tflite::SplitOptions>() const {
6757   return builtin_options_as_SplitOptions();
6758 }
6759 
6760 template<> inline const tflite::LogSoftmaxOptions *Operator::builtin_options_as<tflite::LogSoftmaxOptions>() const {
6761   return builtin_options_as_LogSoftmaxOptions();
6762 }
6763 
6764 template<> inline const tflite::CastOptions *Operator::builtin_options_as<tflite::CastOptions>() const {
6765   return builtin_options_as_CastOptions();
6766 }
6767 
6768 template<> inline const tflite::DequantizeOptions *Operator::builtin_options_as<tflite::DequantizeOptions>() const {
6769   return builtin_options_as_DequantizeOptions();
6770 }
6771 
6772 template<> inline const tflite::MaximumMinimumOptions *Operator::builtin_options_as<tflite::MaximumMinimumOptions>() const {
6773   return builtin_options_as_MaximumMinimumOptions();
6774 }
6775 
6776 template<> inline const tflite::ArgMaxOptions *Operator::builtin_options_as<tflite::ArgMaxOptions>() const {
6777   return builtin_options_as_ArgMaxOptions();
6778 }
6779 
6780 template<> inline const tflite::LessOptions *Operator::builtin_options_as<tflite::LessOptions>() const {
6781   return builtin_options_as_LessOptions();
6782 }
6783 
6784 template<> inline const tflite::NegOptions *Operator::builtin_options_as<tflite::NegOptions>() const {
6785   return builtin_options_as_NegOptions();
6786 }
6787 
6788 template<> inline const tflite::PadV2Options *Operator::builtin_options_as<tflite::PadV2Options>() const {
6789   return builtin_options_as_PadV2Options();
6790 }
6791 
6792 template<> inline const tflite::GreaterOptions *Operator::builtin_options_as<tflite::GreaterOptions>() const {
6793   return builtin_options_as_GreaterOptions();
6794 }
6795 
6796 template<> inline const tflite::GreaterEqualOptions *Operator::builtin_options_as<tflite::GreaterEqualOptions>() const {
6797   return builtin_options_as_GreaterEqualOptions();
6798 }
6799 
6800 template<> inline const tflite::LessEqualOptions *Operator::builtin_options_as<tflite::LessEqualOptions>() const {
6801   return builtin_options_as_LessEqualOptions();
6802 }
6803 
6804 template<> inline const tflite::SelectOptions *Operator::builtin_options_as<tflite::SelectOptions>() const {
6805   return builtin_options_as_SelectOptions();
6806 }
6807 
6808 template<> inline const tflite::SliceOptions *Operator::builtin_options_as<tflite::SliceOptions>() const {
6809   return builtin_options_as_SliceOptions();
6810 }
6811 
6812 template<> inline const tflite::TransposeConvOptions *Operator::builtin_options_as<tflite::TransposeConvOptions>() const {
6813   return builtin_options_as_TransposeConvOptions();
6814 }
6815 
6816 template<> inline const tflite::SparseToDenseOptions *Operator::builtin_options_as<tflite::SparseToDenseOptions>() const {
6817   return builtin_options_as_SparseToDenseOptions();
6818 }
6819 
6820 template<> inline const tflite::TileOptions *Operator::builtin_options_as<tflite::TileOptions>() const {
6821   return builtin_options_as_TileOptions();
6822 }
6823 
6824 template<> inline const tflite::ExpandDimsOptions *Operator::builtin_options_as<tflite::ExpandDimsOptions>() const {
6825   return builtin_options_as_ExpandDimsOptions();
6826 }
6827 
6828 template<> inline const tflite::EqualOptions *Operator::builtin_options_as<tflite::EqualOptions>() const {
6829   return builtin_options_as_EqualOptions();
6830 }
6831 
6832 template<> inline const tflite::NotEqualOptions *Operator::builtin_options_as<tflite::NotEqualOptions>() const {
6833   return builtin_options_as_NotEqualOptions();
6834 }
6835 
6836 template<> inline const tflite::ShapeOptions *Operator::builtin_options_as<tflite::ShapeOptions>() const {
6837   return builtin_options_as_ShapeOptions();
6838 }
6839 
6840 template<> inline const tflite::PowOptions *Operator::builtin_options_as<tflite::PowOptions>() const {
6841   return builtin_options_as_PowOptions();
6842 }
6843 
6844 template<> inline const tflite::ArgMinOptions *Operator::builtin_options_as<tflite::ArgMinOptions>() const {
6845   return builtin_options_as_ArgMinOptions();
6846 }
6847 
6848 template<> inline const tflite::FakeQuantOptions *Operator::builtin_options_as<tflite::FakeQuantOptions>() const {
6849   return builtin_options_as_FakeQuantOptions();
6850 }
6851 
6852 template<> inline const tflite::PackOptions *Operator::builtin_options_as<tflite::PackOptions>() const {
6853   return builtin_options_as_PackOptions();
6854 }
6855 
6856 template<> inline const tflite::LogicalOrOptions *Operator::builtin_options_as<tflite::LogicalOrOptions>() const {
6857   return builtin_options_as_LogicalOrOptions();
6858 }
6859 
6860 template<> inline const tflite::OneHotOptions *Operator::builtin_options_as<tflite::OneHotOptions>() const {
6861   return builtin_options_as_OneHotOptions();
6862 }
6863 
6864 template<> inline const tflite::LogicalAndOptions *Operator::builtin_options_as<tflite::LogicalAndOptions>() const {
6865   return builtin_options_as_LogicalAndOptions();
6866 }
6867 
6868 template<> inline const tflite::LogicalNotOptions *Operator::builtin_options_as<tflite::LogicalNotOptions>() const {
6869   return builtin_options_as_LogicalNotOptions();
6870 }
6871 
6872 template<> inline const tflite::UnpackOptions *Operator::builtin_options_as<tflite::UnpackOptions>() const {
6873   return builtin_options_as_UnpackOptions();
6874 }
6875 
6876 template<> inline const tflite::FloorDivOptions *Operator::builtin_options_as<tflite::FloorDivOptions>() const {
6877   return builtin_options_as_FloorDivOptions();
6878 }
6879 
6880 template<> inline const tflite::SquareOptions *Operator::builtin_options_as<tflite::SquareOptions>() const {
6881   return builtin_options_as_SquareOptions();
6882 }
6883 
6884 template<> inline const tflite::ZerosLikeOptions *Operator::builtin_options_as<tflite::ZerosLikeOptions>() const {
6885   return builtin_options_as_ZerosLikeOptions();
6886 }
6887 
6888 template<> inline const tflite::FillOptions *Operator::builtin_options_as<tflite::FillOptions>() const {
6889   return builtin_options_as_FillOptions();
6890 }
6891 
6892 template<> inline const tflite::BidirectionalSequenceLSTMOptions *Operator::builtin_options_as<tflite::BidirectionalSequenceLSTMOptions>() const {
6893   return builtin_options_as_BidirectionalSequenceLSTMOptions();
6894 }
6895 
6896 template<> inline const tflite::BidirectionalSequenceRNNOptions *Operator::builtin_options_as<tflite::BidirectionalSequenceRNNOptions>() const {
6897   return builtin_options_as_BidirectionalSequenceRNNOptions();
6898 }
6899 
6900 template<> inline const tflite::UnidirectionalSequenceLSTMOptions *Operator::builtin_options_as<tflite::UnidirectionalSequenceLSTMOptions>() const {
6901   return builtin_options_as_UnidirectionalSequenceLSTMOptions();
6902 }
6903 
6904 template<> inline const tflite::FloorModOptions *Operator::builtin_options_as<tflite::FloorModOptions>() const {
6905   return builtin_options_as_FloorModOptions();
6906 }
6907 
6908 template<> inline const tflite::RangeOptions *Operator::builtin_options_as<tflite::RangeOptions>() const {
6909   return builtin_options_as_RangeOptions();
6910 }
6911 
6912 template<> inline const tflite::ResizeNearestNeighborOptions *Operator::builtin_options_as<tflite::ResizeNearestNeighborOptions>() const {
6913   return builtin_options_as_ResizeNearestNeighborOptions();
6914 }
6915 
6916 template<> inline const tflite::LeakyReluOptions *Operator::builtin_options_as<tflite::LeakyReluOptions>() const {
6917   return builtin_options_as_LeakyReluOptions();
6918 }
6919 
6920 template<> inline const tflite::SquaredDifferenceOptions *Operator::builtin_options_as<tflite::SquaredDifferenceOptions>() const {
6921   return builtin_options_as_SquaredDifferenceOptions();
6922 }
6923 
6924 template<> inline const tflite::MirrorPadOptions *Operator::builtin_options_as<tflite::MirrorPadOptions>() const {
6925   return builtin_options_as_MirrorPadOptions();
6926 }
6927 
6928 template<> inline const tflite::AbsOptions *Operator::builtin_options_as<tflite::AbsOptions>() const {
6929   return builtin_options_as_AbsOptions();
6930 }
6931 
6932 template<> inline const tflite::SplitVOptions *Operator::builtin_options_as<tflite::SplitVOptions>() const {
6933   return builtin_options_as_SplitVOptions();
6934 }
6935 
6936 template<> inline const tflite::UniqueOptions *Operator::builtin_options_as<tflite::UniqueOptions>() const {
6937   return builtin_options_as_UniqueOptions();
6938 }
6939 
6940 template<> inline const tflite::ReverseV2Options *Operator::builtin_options_as<tflite::ReverseV2Options>() const {
6941   return builtin_options_as_ReverseV2Options();
6942 }
6943 
6944 template<> inline const tflite::AddNOptions *Operator::builtin_options_as<tflite::AddNOptions>() const {
6945   return builtin_options_as_AddNOptions();
6946 }
6947 
6948 template<> inline const tflite::GatherNdOptions *Operator::builtin_options_as<tflite::GatherNdOptions>() const {
6949   return builtin_options_as_GatherNdOptions();
6950 }
6951 
6952 template<> inline const tflite::CosOptions *Operator::builtin_options_as<tflite::CosOptions>() const {
6953   return builtin_options_as_CosOptions();
6954 }
6955 
6956 template<> inline const tflite::WhereOptions *Operator::builtin_options_as<tflite::WhereOptions>() const {
6957   return builtin_options_as_WhereOptions();
6958 }
6959 
6960 template<> inline const tflite::RankOptions *Operator::builtin_options_as<tflite::RankOptions>() const {
6961   return builtin_options_as_RankOptions();
6962 }
6963 
6964 template<> inline const tflite::ReverseSequenceOptions *Operator::builtin_options_as<tflite::ReverseSequenceOptions>() const {
6965   return builtin_options_as_ReverseSequenceOptions();
6966 }
6967 
6968 template<> inline const tflite::MatrixDiagOptions *Operator::builtin_options_as<tflite::MatrixDiagOptions>() const {
6969   return builtin_options_as_MatrixDiagOptions();
6970 }
6971 
6972 template<> inline const tflite::QuantizeOptions *Operator::builtin_options_as<tflite::QuantizeOptions>() const {
6973   return builtin_options_as_QuantizeOptions();
6974 }
6975 
6976 template<> inline const tflite::MatrixSetDiagOptions *Operator::builtin_options_as<tflite::MatrixSetDiagOptions>() const {
6977   return builtin_options_as_MatrixSetDiagOptions();
6978 }
6979 
6980 template<> inline const tflite::HardSwishOptions *Operator::builtin_options_as<tflite::HardSwishOptions>() const {
6981   return builtin_options_as_HardSwishOptions();
6982 }
6983 
6984 template<> inline const tflite::IfOptions *Operator::builtin_options_as<tflite::IfOptions>() const {
6985   return builtin_options_as_IfOptions();
6986 }
6987 
6988 template<> inline const tflite::WhileOptions *Operator::builtin_options_as<tflite::WhileOptions>() const {
6989   return builtin_options_as_WhileOptions();
6990 }
6991 
6992 template<> inline const tflite::DepthToSpaceOptions *Operator::builtin_options_as<tflite::DepthToSpaceOptions>() const {
6993   return builtin_options_as_DepthToSpaceOptions();
6994 }
6995 
6996 template<> inline const tflite::NonMaxSuppressionV4Options *Operator::builtin_options_as<tflite::NonMaxSuppressionV4Options>() const {
6997   return builtin_options_as_NonMaxSuppressionV4Options();
6998 }
6999 
7000 template<> inline const tflite::NonMaxSuppressionV5Options *Operator::builtin_options_as<tflite::NonMaxSuppressionV5Options>() const {
7001   return builtin_options_as_NonMaxSuppressionV5Options();
7002 }
7003 
7004 template<> inline const tflite::ScatterNdOptions *Operator::builtin_options_as<tflite::ScatterNdOptions>() const {
7005   return builtin_options_as_ScatterNdOptions();
7006 }
7007 
7008 template<> inline const tflite::SelectV2Options *Operator::builtin_options_as<tflite::SelectV2Options>() const {
7009   return builtin_options_as_SelectV2Options();
7010 }
7011 
7012 template<> inline const tflite::DensifyOptions *Operator::builtin_options_as<tflite::DensifyOptions>() const {
7013   return builtin_options_as_DensifyOptions();
7014 }
7015 
7016 struct OperatorBuilder {
7017   flatbuffers::FlatBufferBuilder &fbb_;
7018   flatbuffers::uoffset_t start_;
7019   void add_opcode_index(uint32_t opcode_index) {
7020     fbb_.AddElement<uint32_t>(Operator::VT_OPCODE_INDEX, opcode_index, 0);
7021   }
7022   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs) {
7023     fbb_.AddOffset(Operator::VT_INPUTS, inputs);
7024   }
7025   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs) {
7026     fbb_.AddOffset(Operator::VT_OUTPUTS, outputs);
7027   }
7028   void add_builtin_options_type(tflite::BuiltinOptions builtin_options_type) {
7029     fbb_.AddElement<uint8_t>(Operator::VT_BUILTIN_OPTIONS_TYPE, static_cast<uint8_t>(builtin_options_type), 0);
7030   }
7031   void add_builtin_options(flatbuffers::Offset<void> builtin_options) {
7032     fbb_.AddOffset(Operator::VT_BUILTIN_OPTIONS, builtin_options);
7033   }
7034   void add_custom_options(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom_options) {
7035     fbb_.AddOffset(Operator::VT_CUSTOM_OPTIONS, custom_options);
7036   }
7037   void add_custom_options_format(tflite::CustomOptionsFormat custom_options_format) {
7038     fbb_.AddElement<int8_t>(Operator::VT_CUSTOM_OPTIONS_FORMAT, static_cast<int8_t>(custom_options_format), 0);
7039   }
7040   void add_mutating_variable_inputs(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> mutating_variable_inputs) {
7041     fbb_.AddOffset(Operator::VT_MUTATING_VARIABLE_INPUTS, mutating_variable_inputs);
7042   }
7043   void add_intermediates(flatbuffers::Offset<flatbuffers::Vector<int32_t>> intermediates) {
7044     fbb_.AddOffset(Operator::VT_INTERMEDIATES, intermediates);
7045   }
7046   explicit OperatorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7047         : fbb_(_fbb) {
7048     start_ = fbb_.StartTable();
7049   }
7050   OperatorBuilder &operator=(const OperatorBuilder &);
7051   flatbuffers::Offset<Operator> Finish() {
7052     const auto end = fbb_.EndTable(start_);
7053     auto o = flatbuffers::Offset<Operator>(end);
7054     return o;
7055   }
7056 };
7057 
7058 inline flatbuffers::Offset<Operator> CreateOperator(
7059     flatbuffers::FlatBufferBuilder &_fbb,
7060     uint32_t opcode_index = 0,
7061     flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs = 0,
7062     flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs = 0,
7063     tflite::BuiltinOptions builtin_options_type = tflite::BuiltinOptions_NONE,
7064     flatbuffers::Offset<void> builtin_options = 0,
7065     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> custom_options = 0,
7066     tflite::CustomOptionsFormat custom_options_format = tflite::CustomOptionsFormat_FLEXBUFFERS,
7067     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> mutating_variable_inputs = 0,
7068     flatbuffers::Offset<flatbuffers::Vector<int32_t>> intermediates = 0) {
7069   OperatorBuilder builder_(_fbb);
7070   builder_.add_intermediates(intermediates);
7071   builder_.add_mutating_variable_inputs(mutating_variable_inputs);
7072   builder_.add_custom_options(custom_options);
7073   builder_.add_builtin_options(builtin_options);
7074   builder_.add_outputs(outputs);
7075   builder_.add_inputs(inputs);
7076   builder_.add_opcode_index(opcode_index);
7077   builder_.add_custom_options_format(custom_options_format);
7078   builder_.add_builtin_options_type(builtin_options_type);
7079   return builder_.Finish();
7080 }
7081 
7082 inline flatbuffers::Offset<Operator> CreateOperatorDirect(
7083     flatbuffers::FlatBufferBuilder &_fbb,
7084     uint32_t opcode_index = 0,
7085     const std::vector<int32_t> *inputs = nullptr,
7086     const std::vector<int32_t> *outputs = nullptr,
7087     tflite::BuiltinOptions builtin_options_type = tflite::BuiltinOptions_NONE,
7088     flatbuffers::Offset<void> builtin_options = 0,
7089     const std::vector<uint8_t> *custom_options = nullptr,
7090     tflite::CustomOptionsFormat custom_options_format = tflite::CustomOptionsFormat_FLEXBUFFERS,
7091     const std::vector<uint8_t> *mutating_variable_inputs = nullptr,
7092     const std::vector<int32_t> *intermediates = nullptr) {
7093   auto inputs__ = inputs ? _fbb.CreateVector<int32_t>(*inputs) : 0;
7094   auto outputs__ = outputs ? _fbb.CreateVector<int32_t>(*outputs) : 0;
7095   auto custom_options__ = custom_options ? _fbb.CreateVector<uint8_t>(*custom_options) : 0;
7096   auto mutating_variable_inputs__ = mutating_variable_inputs ? _fbb.CreateVector<uint8_t>(*mutating_variable_inputs) : 0;
7097   auto intermediates__ = intermediates ? _fbb.CreateVector<int32_t>(*intermediates) : 0;
7098   return tflite::CreateOperator(
7099       _fbb,
7100       opcode_index,
7101       inputs__,
7102       outputs__,
7103       builtin_options_type,
7104       builtin_options,
7105       custom_options__,
7106       custom_options_format,
7107       mutating_variable_inputs__,
7108       intermediates__);
7109 }
7110 
7111 struct SubGraph FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7112   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7113     VT_TENSORS = 4,
7114     VT_INPUTS = 6,
7115     VT_OUTPUTS = 8,
7116     VT_OPERATORS = 10,
7117     VT_NAME = 12
7118   };
7119   const flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>> *tensors() const {
7120     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>> *>(VT_TENSORS);
7121   }
7122   const flatbuffers::Vector<int32_t> *inputs() const {
7123     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_INPUTS);
7124   }
7125   const flatbuffers::Vector<int32_t> *outputs() const {
7126     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUTS);
7127   }
7128   const flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>> *operators() const {
7129     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>> *>(VT_OPERATORS);
7130   }
7131   const flatbuffers::String *name() const {
7132     return GetPointer<const flatbuffers::String *>(VT_NAME);
7133   }
7134   bool Verify(flatbuffers::Verifier &verifier) const {
7135     return VerifyTableStart(verifier) &&
7136            VerifyOffset(verifier, VT_TENSORS) &&
7137            verifier.VerifyVector(tensors()) &&
7138            verifier.VerifyVectorOfTables(tensors()) &&
7139            VerifyOffset(verifier, VT_INPUTS) &&
7140            verifier.VerifyVector(inputs()) &&
7141            VerifyOffset(verifier, VT_OUTPUTS) &&
7142            verifier.VerifyVector(outputs()) &&
7143            VerifyOffset(verifier, VT_OPERATORS) &&
7144            verifier.VerifyVector(operators()) &&
7145            verifier.VerifyVectorOfTables(operators()) &&
7146            VerifyOffset(verifier, VT_NAME) &&
7147            verifier.VerifyString(name()) &&
7148            verifier.EndTable();
7149   }
7150 };
7151 
7152 struct SubGraphBuilder {
7153   flatbuffers::FlatBufferBuilder &fbb_;
7154   flatbuffers::uoffset_t start_;
7155   void add_tensors(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>>> tensors) {
7156     fbb_.AddOffset(SubGraph::VT_TENSORS, tensors);
7157   }
7158   void add_inputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs) {
7159     fbb_.AddOffset(SubGraph::VT_INPUTS, inputs);
7160   }
7161   void add_outputs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs) {
7162     fbb_.AddOffset(SubGraph::VT_OUTPUTS, outputs);
7163   }
7164   void add_operators(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>>> operators) {
7165     fbb_.AddOffset(SubGraph::VT_OPERATORS, operators);
7166   }
7167   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
7168     fbb_.AddOffset(SubGraph::VT_NAME, name);
7169   }
7170   explicit SubGraphBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7171         : fbb_(_fbb) {
7172     start_ = fbb_.StartTable();
7173   }
7174   SubGraphBuilder &operator=(const SubGraphBuilder &);
7175   flatbuffers::Offset<SubGraph> Finish() {
7176     const auto end = fbb_.EndTable(start_);
7177     auto o = flatbuffers::Offset<SubGraph>(end);
7178     return o;
7179   }
7180 };
7181 
7182 inline flatbuffers::Offset<SubGraph> CreateSubGraph(
7183     flatbuffers::FlatBufferBuilder &_fbb,
7184     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>>> tensors = 0,
7185     flatbuffers::Offset<flatbuffers::Vector<int32_t>> inputs = 0,
7186     flatbuffers::Offset<flatbuffers::Vector<int32_t>> outputs = 0,
7187     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>>> operators = 0,
7188     flatbuffers::Offset<flatbuffers::String> name = 0) {
7189   SubGraphBuilder builder_(_fbb);
7190   builder_.add_name(name);
7191   builder_.add_operators(operators);
7192   builder_.add_outputs(outputs);
7193   builder_.add_inputs(inputs);
7194   builder_.add_tensors(tensors);
7195   return builder_.Finish();
7196 }
7197 
7198 inline flatbuffers::Offset<SubGraph> CreateSubGraphDirect(
7199     flatbuffers::FlatBufferBuilder &_fbb,
7200     const std::vector<flatbuffers::Offset<tflite::Tensor>> *tensors = nullptr,
7201     const std::vector<int32_t> *inputs = nullptr,
7202     const std::vector<int32_t> *outputs = nullptr,
7203     const std::vector<flatbuffers::Offset<tflite::Operator>> *operators = nullptr,
7204     const char *name = nullptr) {
7205   auto tensors__ = tensors ? _fbb.CreateVector<flatbuffers::Offset<tflite::Tensor>>(*tensors) : 0;
7206   auto inputs__ = inputs ? _fbb.CreateVector<int32_t>(*inputs) : 0;
7207   auto outputs__ = outputs ? _fbb.CreateVector<int32_t>(*outputs) : 0;
7208   auto operators__ = operators ? _fbb.CreateVector<flatbuffers::Offset<tflite::Operator>>(*operators) : 0;
7209   auto name__ = name ? _fbb.CreateString(name) : 0;
7210   return tflite::CreateSubGraph(
7211       _fbb,
7212       tensors__,
7213       inputs__,
7214       outputs__,
7215       operators__,
7216       name__);
7217 }
7218 
7219 struct Buffer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7220   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7221     VT_DATA = 4
7222   };
7223   const flatbuffers::Vector<uint8_t> *data() const {
7224     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_DATA);
7225   }
7226   bool Verify(flatbuffers::Verifier &verifier) const {
7227     return VerifyTableStart(verifier) &&
7228            VerifyOffset(verifier, VT_DATA) &&
7229            verifier.VerifyVector(data()) &&
7230            verifier.EndTable();
7231   }
7232 };
7233 
7234 struct BufferBuilder {
7235   flatbuffers::FlatBufferBuilder &fbb_;
7236   flatbuffers::uoffset_t start_;
7237   void add_data(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data) {
7238     fbb_.AddOffset(Buffer::VT_DATA, data);
7239   }
7240   explicit BufferBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7241         : fbb_(_fbb) {
7242     start_ = fbb_.StartTable();
7243   }
7244   BufferBuilder &operator=(const BufferBuilder &);
7245   flatbuffers::Offset<Buffer> Finish() {
7246     const auto end = fbb_.EndTable(start_);
7247     auto o = flatbuffers::Offset<Buffer>(end);
7248     return o;
7249   }
7250 };
7251 
7252 inline flatbuffers::Offset<Buffer> CreateBuffer(
7253     flatbuffers::FlatBufferBuilder &_fbb,
7254     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data = 0) {
7255   BufferBuilder builder_(_fbb);
7256   builder_.add_data(data);
7257   return builder_.Finish();
7258 }
7259 
7260 inline flatbuffers::Offset<Buffer> CreateBufferDirect(
7261     flatbuffers::FlatBufferBuilder &_fbb,
7262     const std::vector<uint8_t> *data = nullptr) {
7263   auto data__ = data ? _fbb.CreateVector<uint8_t>(*data) : 0;
7264   return tflite::CreateBuffer(
7265       _fbb,
7266       data__);
7267 }
7268 
7269 struct Metadata FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7270   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7271     VT_NAME = 4,
7272     VT_BUFFER = 6
7273   };
7274   const flatbuffers::String *name() const {
7275     return GetPointer<const flatbuffers::String *>(VT_NAME);
7276   }
7277   uint32_t buffer() const {
7278     return GetField<uint32_t>(VT_BUFFER, 0);
7279   }
7280   bool Verify(flatbuffers::Verifier &verifier) const {
7281     return VerifyTableStart(verifier) &&
7282            VerifyOffset(verifier, VT_NAME) &&
7283            verifier.VerifyString(name()) &&
7284            VerifyField<uint32_t>(verifier, VT_BUFFER) &&
7285            verifier.EndTable();
7286   }
7287 };
7288 
7289 struct MetadataBuilder {
7290   flatbuffers::FlatBufferBuilder &fbb_;
7291   flatbuffers::uoffset_t start_;
7292   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
7293     fbb_.AddOffset(Metadata::VT_NAME, name);
7294   }
7295   void add_buffer(uint32_t buffer) {
7296     fbb_.AddElement<uint32_t>(Metadata::VT_BUFFER, buffer, 0);
7297   }
7298   explicit MetadataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7299         : fbb_(_fbb) {
7300     start_ = fbb_.StartTable();
7301   }
7302   MetadataBuilder &operator=(const MetadataBuilder &);
7303   flatbuffers::Offset<Metadata> Finish() {
7304     const auto end = fbb_.EndTable(start_);
7305     auto o = flatbuffers::Offset<Metadata>(end);
7306     return o;
7307   }
7308 };
7309 
7310 inline flatbuffers::Offset<Metadata> CreateMetadata(
7311     flatbuffers::FlatBufferBuilder &_fbb,
7312     flatbuffers::Offset<flatbuffers::String> name = 0,
7313     uint32_t buffer = 0) {
7314   MetadataBuilder builder_(_fbb);
7315   builder_.add_buffer(buffer);
7316   builder_.add_name(name);
7317   return builder_.Finish();
7318 }
7319 
7320 inline flatbuffers::Offset<Metadata> CreateMetadataDirect(
7321     flatbuffers::FlatBufferBuilder &_fbb,
7322     const char *name = nullptr,
7323     uint32_t buffer = 0) {
7324   auto name__ = name ? _fbb.CreateString(name) : 0;
7325   return tflite::CreateMetadata(
7326       _fbb,
7327       name__,
7328       buffer);
7329 }
7330 
7331 struct Model FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
7332   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
7333     VT_VERSION = 4,
7334     VT_OPERATOR_CODES = 6,
7335     VT_SUBGRAPHS = 8,
7336     VT_DESCRIPTION = 10,
7337     VT_BUFFERS = 12,
7338     VT_METADATA_BUFFER = 14,
7339     VT_METADATA = 16
7340   };
7341   uint32_t version() const {
7342     return GetField<uint32_t>(VT_VERSION, 0);
7343   }
7344   const flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>> *operator_codes() const {
7345     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>> *>(VT_OPERATOR_CODES);
7346   }
7347   const flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>> *subgraphs() const {
7348     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>> *>(VT_SUBGRAPHS);
7349   }
7350   const flatbuffers::String *description() const {
7351     return GetPointer<const flatbuffers::String *>(VT_DESCRIPTION);
7352   }
7353   const flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>> *buffers() const {
7354     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>> *>(VT_BUFFERS);
7355   }
7356   const flatbuffers::Vector<int32_t> *metadata_buffer() const {
7357     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_METADATA_BUFFER);
7358   }
7359   const flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>> *metadata() const {
7360     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>> *>(VT_METADATA);
7361   }
7362   bool Verify(flatbuffers::Verifier &verifier) const {
7363     return VerifyTableStart(verifier) &&
7364            VerifyField<uint32_t>(verifier, VT_VERSION) &&
7365            VerifyOffset(verifier, VT_OPERATOR_CODES) &&
7366            verifier.VerifyVector(operator_codes()) &&
7367            verifier.VerifyVectorOfTables(operator_codes()) &&
7368            VerifyOffset(verifier, VT_SUBGRAPHS) &&
7369            verifier.VerifyVector(subgraphs()) &&
7370            verifier.VerifyVectorOfTables(subgraphs()) &&
7371            VerifyOffset(verifier, VT_DESCRIPTION) &&
7372            verifier.VerifyString(description()) &&
7373            VerifyOffset(verifier, VT_BUFFERS) &&
7374            verifier.VerifyVector(buffers()) &&
7375            verifier.VerifyVectorOfTables(buffers()) &&
7376            VerifyOffset(verifier, VT_METADATA_BUFFER) &&
7377            verifier.VerifyVector(metadata_buffer()) &&
7378            VerifyOffset(verifier, VT_METADATA) &&
7379            verifier.VerifyVector(metadata()) &&
7380            verifier.VerifyVectorOfTables(metadata()) &&
7381            verifier.EndTable();
7382   }
7383 };
7384 
7385 struct ModelBuilder {
7386   flatbuffers::FlatBufferBuilder &fbb_;
7387   flatbuffers::uoffset_t start_;
7388   void add_version(uint32_t version) {
7389     fbb_.AddElement<uint32_t>(Model::VT_VERSION, version, 0);
7390   }
7391   void add_operator_codes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>>> operator_codes) {
7392     fbb_.AddOffset(Model::VT_OPERATOR_CODES, operator_codes);
7393   }
7394   void add_subgraphs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>>> subgraphs) {
7395     fbb_.AddOffset(Model::VT_SUBGRAPHS, subgraphs);
7396   }
7397   void add_description(flatbuffers::Offset<flatbuffers::String> description) {
7398     fbb_.AddOffset(Model::VT_DESCRIPTION, description);
7399   }
7400   void add_buffers(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>>> buffers) {
7401     fbb_.AddOffset(Model::VT_BUFFERS, buffers);
7402   }
7403   void add_metadata_buffer(flatbuffers::Offset<flatbuffers::Vector<int32_t>> metadata_buffer) {
7404     fbb_.AddOffset(Model::VT_METADATA_BUFFER, metadata_buffer);
7405   }
7406   void add_metadata(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>>> metadata) {
7407     fbb_.AddOffset(Model::VT_METADATA, metadata);
7408   }
7409   explicit ModelBuilder(flatbuffers::FlatBufferBuilder &_fbb)
7410         : fbb_(_fbb) {
7411     start_ = fbb_.StartTable();
7412   }
7413   ModelBuilder &operator=(const ModelBuilder &);
7414   flatbuffers::Offset<Model> Finish() {
7415     const auto end = fbb_.EndTable(start_);
7416     auto o = flatbuffers::Offset<Model>(end);
7417     return o;
7418   }
7419 };
7420 
7421 inline flatbuffers::Offset<Model> CreateModel(
7422     flatbuffers::FlatBufferBuilder &_fbb,
7423     uint32_t version = 0,
7424     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::OperatorCode>>> operator_codes = 0,
7425     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::SubGraph>>> subgraphs = 0,
7426     flatbuffers::Offset<flatbuffers::String> description = 0,
7427     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Buffer>>> buffers = 0,
7428     flatbuffers::Offset<flatbuffers::Vector<int32_t>> metadata_buffer = 0,
7429     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>>> metadata = 0) {
7430   ModelBuilder builder_(_fbb);
7431   builder_.add_metadata(metadata);
7432   builder_.add_metadata_buffer(metadata_buffer);
7433   builder_.add_buffers(buffers);
7434   builder_.add_description(description);
7435   builder_.add_subgraphs(subgraphs);
7436   builder_.add_operator_codes(operator_codes);
7437   builder_.add_version(version);
7438   return builder_.Finish();
7439 }
7440 
7441 inline flatbuffers::Offset<Model> CreateModelDirect(
7442     flatbuffers::FlatBufferBuilder &_fbb,
7443     uint32_t version = 0,
7444     const std::vector<flatbuffers::Offset<tflite::OperatorCode>> *operator_codes = nullptr,
7445     const std::vector<flatbuffers::Offset<tflite::SubGraph>> *subgraphs = nullptr,
7446     const char *description = nullptr,
7447     const std::vector<flatbuffers::Offset<tflite::Buffer>> *buffers = nullptr,
7448     const std::vector<int32_t> *metadata_buffer = nullptr,
7449     const std::vector<flatbuffers::Offset<tflite::Metadata>> *metadata = nullptr) {
7450   auto operator_codes__ = operator_codes ? _fbb.CreateVector<flatbuffers::Offset<tflite::OperatorCode>>(*operator_codes) : 0;
7451   auto subgraphs__ = subgraphs ? _fbb.CreateVector<flatbuffers::Offset<tflite::SubGraph>>(*subgraphs) : 0;
7452   auto description__ = description ? _fbb.CreateString(description) : 0;
7453   auto buffers__ = buffers ? _fbb.CreateVector<flatbuffers::Offset<tflite::Buffer>>(*buffers) : 0;
7454   auto metadata_buffer__ = metadata_buffer ? _fbb.CreateVector<int32_t>(*metadata_buffer) : 0;
7455   auto metadata__ = metadata ? _fbb.CreateVector<flatbuffers::Offset<tflite::Metadata>>(*metadata) : 0;
7456   return tflite::CreateModel(
7457       _fbb,
7458       version,
7459       operator_codes__,
7460       subgraphs__,
7461       description__,
7462       buffers__,
7463       metadata_buffer__,
7464       metadata__);
7465 }
7466 
7467 inline bool VerifyQuantizationDetails(flatbuffers::Verifier &verifier, const void *obj, QuantizationDetails type) {
7468   switch (type) {
7469     case QuantizationDetails_NONE: {
7470       return true;
7471     }
7472     case QuantizationDetails_CustomQuantization: {
7473       auto ptr = reinterpret_cast<const tflite::CustomQuantization *>(obj);
7474       return verifier.VerifyTable(ptr);
7475     }
7476     default: return true;
7477   }
7478 }
7479 
7480 inline bool VerifyQuantizationDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
7481   if (!values || !types) return !values && !types;
7482   if (values->size() != types->size()) return false;
7483   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
7484     if (!VerifyQuantizationDetails(
7485         verifier,  values->Get(i), types->GetEnum<QuantizationDetails>(i))) {
7486       return false;
7487     }
7488   }
7489   return true;
7490 }
7491 
7492 inline bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type) {
7493   switch (type) {
7494     case BuiltinOptions_NONE: {
7495       return true;
7496     }
7497     case BuiltinOptions_Conv2DOptions: {
7498       auto ptr = reinterpret_cast<const tflite::Conv2DOptions *>(obj);
7499       return verifier.VerifyTable(ptr);
7500     }
7501     case BuiltinOptions_DepthwiseConv2DOptions: {
7502       auto ptr = reinterpret_cast<const tflite::DepthwiseConv2DOptions *>(obj);
7503       return verifier.VerifyTable(ptr);
7504     }
7505     case BuiltinOptions_ConcatEmbeddingsOptions: {
7506       auto ptr = reinterpret_cast<const tflite::ConcatEmbeddingsOptions *>(obj);
7507       return verifier.VerifyTable(ptr);
7508     }
7509     case BuiltinOptions_LSHProjectionOptions: {
7510       auto ptr = reinterpret_cast<const tflite::LSHProjectionOptions *>(obj);
7511       return verifier.VerifyTable(ptr);
7512     }
7513     case BuiltinOptions_Pool2DOptions: {
7514       auto ptr = reinterpret_cast<const tflite::Pool2DOptions *>(obj);
7515       return verifier.VerifyTable(ptr);
7516     }
7517     case BuiltinOptions_SVDFOptions: {
7518       auto ptr = reinterpret_cast<const tflite::SVDFOptions *>(obj);
7519       return verifier.VerifyTable(ptr);
7520     }
7521     case BuiltinOptions_RNNOptions: {
7522       auto ptr = reinterpret_cast<const tflite::RNNOptions *>(obj);
7523       return verifier.VerifyTable(ptr);
7524     }
7525     case BuiltinOptions_FullyConnectedOptions: {
7526       auto ptr = reinterpret_cast<const tflite::FullyConnectedOptions *>(obj);
7527       return verifier.VerifyTable(ptr);
7528     }
7529     case BuiltinOptions_SoftmaxOptions: {
7530       auto ptr = reinterpret_cast<const tflite::SoftmaxOptions *>(obj);
7531       return verifier.VerifyTable(ptr);
7532     }
7533     case BuiltinOptions_ConcatenationOptions: {
7534       auto ptr = reinterpret_cast<const tflite::ConcatenationOptions *>(obj);
7535       return verifier.VerifyTable(ptr);
7536     }
7537     case BuiltinOptions_AddOptions: {
7538       auto ptr = reinterpret_cast<const tflite::AddOptions *>(obj);
7539       return verifier.VerifyTable(ptr);
7540     }
7541     case BuiltinOptions_L2NormOptions: {
7542       auto ptr = reinterpret_cast<const tflite::L2NormOptions *>(obj);
7543       return verifier.VerifyTable(ptr);
7544     }
7545     case BuiltinOptions_LocalResponseNormalizationOptions: {
7546       auto ptr = reinterpret_cast<const tflite::LocalResponseNormalizationOptions *>(obj);
7547       return verifier.VerifyTable(ptr);
7548     }
7549     case BuiltinOptions_LSTMOptions: {
7550       auto ptr = reinterpret_cast<const tflite::LSTMOptions *>(obj);
7551       return verifier.VerifyTable(ptr);
7552     }
7553     case BuiltinOptions_ResizeBilinearOptions: {
7554       auto ptr = reinterpret_cast<const tflite::ResizeBilinearOptions *>(obj);
7555       return verifier.VerifyTable(ptr);
7556     }
7557     case BuiltinOptions_CallOptions: {
7558       auto ptr = reinterpret_cast<const tflite::CallOptions *>(obj);
7559       return verifier.VerifyTable(ptr);
7560     }
7561     case BuiltinOptions_ReshapeOptions: {
7562       auto ptr = reinterpret_cast<const tflite::ReshapeOptions *>(obj);
7563       return verifier.VerifyTable(ptr);
7564     }
7565     case BuiltinOptions_SkipGramOptions: {
7566       auto ptr = reinterpret_cast<const tflite::SkipGramOptions *>(obj);
7567       return verifier.VerifyTable(ptr);
7568     }
7569     case BuiltinOptions_SpaceToDepthOptions: {
7570       auto ptr = reinterpret_cast<const tflite::SpaceToDepthOptions *>(obj);
7571       return verifier.VerifyTable(ptr);
7572     }
7573     case BuiltinOptions_EmbeddingLookupSparseOptions: {
7574       auto ptr = reinterpret_cast<const tflite::EmbeddingLookupSparseOptions *>(obj);
7575       return verifier.VerifyTable(ptr);
7576     }
7577     case BuiltinOptions_MulOptions: {
7578       auto ptr = reinterpret_cast<const tflite::MulOptions *>(obj);
7579       return verifier.VerifyTable(ptr);
7580     }
7581     case BuiltinOptions_PadOptions: {
7582       auto ptr = reinterpret_cast<const tflite::PadOptions *>(obj);
7583       return verifier.VerifyTable(ptr);
7584     }
7585     case BuiltinOptions_GatherOptions: {
7586       auto ptr = reinterpret_cast<const tflite::GatherOptions *>(obj);
7587       return verifier.VerifyTable(ptr);
7588     }
7589     case BuiltinOptions_BatchToSpaceNDOptions: {
7590       auto ptr = reinterpret_cast<const tflite::BatchToSpaceNDOptions *>(obj);
7591       return verifier.VerifyTable(ptr);
7592     }
7593     case BuiltinOptions_SpaceToBatchNDOptions: {
7594       auto ptr = reinterpret_cast<const tflite::SpaceToBatchNDOptions *>(obj);
7595       return verifier.VerifyTable(ptr);
7596     }
7597     case BuiltinOptions_TransposeOptions: {
7598       auto ptr = reinterpret_cast<const tflite::TransposeOptions *>(obj);
7599       return verifier.VerifyTable(ptr);
7600     }
7601     case BuiltinOptions_ReducerOptions: {
7602       auto ptr = reinterpret_cast<const tflite::ReducerOptions *>(obj);
7603       return verifier.VerifyTable(ptr);
7604     }
7605     case BuiltinOptions_SubOptions: {
7606       auto ptr = reinterpret_cast<const tflite::SubOptions *>(obj);
7607       return verifier.VerifyTable(ptr);
7608     }
7609     case BuiltinOptions_DivOptions: {
7610       auto ptr = reinterpret_cast<const tflite::DivOptions *>(obj);
7611       return verifier.VerifyTable(ptr);
7612     }
7613     case BuiltinOptions_SqueezeOptions: {
7614       auto ptr = reinterpret_cast<const tflite::SqueezeOptions *>(obj);
7615       return verifier.VerifyTable(ptr);
7616     }
7617     case BuiltinOptions_SequenceRNNOptions: {
7618       auto ptr = reinterpret_cast<const tflite::SequenceRNNOptions *>(obj);
7619       return verifier.VerifyTable(ptr);
7620     }
7621     case BuiltinOptions_StridedSliceOptions: {
7622       auto ptr = reinterpret_cast<const tflite::StridedSliceOptions *>(obj);
7623       return verifier.VerifyTable(ptr);
7624     }
7625     case BuiltinOptions_ExpOptions: {
7626       auto ptr = reinterpret_cast<const tflite::ExpOptions *>(obj);
7627       return verifier.VerifyTable(ptr);
7628     }
7629     case BuiltinOptions_TopKV2Options: {
7630       auto ptr = reinterpret_cast<const tflite::TopKV2Options *>(obj);
7631       return verifier.VerifyTable(ptr);
7632     }
7633     case BuiltinOptions_SplitOptions: {
7634       auto ptr = reinterpret_cast<const tflite::SplitOptions *>(obj);
7635       return verifier.VerifyTable(ptr);
7636     }
7637     case BuiltinOptions_LogSoftmaxOptions: {
7638       auto ptr = reinterpret_cast<const tflite::LogSoftmaxOptions *>(obj);
7639       return verifier.VerifyTable(ptr);
7640     }
7641     case BuiltinOptions_CastOptions: {
7642       auto ptr = reinterpret_cast<const tflite::CastOptions *>(obj);
7643       return verifier.VerifyTable(ptr);
7644     }
7645     case BuiltinOptions_DequantizeOptions: {
7646       auto ptr = reinterpret_cast<const tflite::DequantizeOptions *>(obj);
7647       return verifier.VerifyTable(ptr);
7648     }
7649     case BuiltinOptions_MaximumMinimumOptions: {
7650       auto ptr = reinterpret_cast<const tflite::MaximumMinimumOptions *>(obj);
7651       return verifier.VerifyTable(ptr);
7652     }
7653     case BuiltinOptions_ArgMaxOptions: {
7654       auto ptr = reinterpret_cast<const tflite::ArgMaxOptions *>(obj);
7655       return verifier.VerifyTable(ptr);
7656     }
7657     case BuiltinOptions_LessOptions: {
7658       auto ptr = reinterpret_cast<const tflite::LessOptions *>(obj);
7659       return verifier.VerifyTable(ptr);
7660     }
7661     case BuiltinOptions_NegOptions: {
7662       auto ptr = reinterpret_cast<const tflite::NegOptions *>(obj);
7663       return verifier.VerifyTable(ptr);
7664     }
7665     case BuiltinOptions_PadV2Options: {
7666       auto ptr = reinterpret_cast<const tflite::PadV2Options *>(obj);
7667       return verifier.VerifyTable(ptr);
7668     }
7669     case BuiltinOptions_GreaterOptions: {
7670       auto ptr = reinterpret_cast<const tflite::GreaterOptions *>(obj);
7671       return verifier.VerifyTable(ptr);
7672     }
7673     case BuiltinOptions_GreaterEqualOptions: {
7674       auto ptr = reinterpret_cast<const tflite::GreaterEqualOptions *>(obj);
7675       return verifier.VerifyTable(ptr);
7676     }
7677     case BuiltinOptions_LessEqualOptions: {
7678       auto ptr = reinterpret_cast<const tflite::LessEqualOptions *>(obj);
7679       return verifier.VerifyTable(ptr);
7680     }
7681     case BuiltinOptions_SelectOptions: {
7682       auto ptr = reinterpret_cast<const tflite::SelectOptions *>(obj);
7683       return verifier.VerifyTable(ptr);
7684     }
7685     case BuiltinOptions_SliceOptions: {
7686       auto ptr = reinterpret_cast<const tflite::SliceOptions *>(obj);
7687       return verifier.VerifyTable(ptr);
7688     }
7689     case BuiltinOptions_TransposeConvOptions: {
7690       auto ptr = reinterpret_cast<const tflite::TransposeConvOptions *>(obj);
7691       return verifier.VerifyTable(ptr);
7692     }
7693     case BuiltinOptions_SparseToDenseOptions: {
7694       auto ptr = reinterpret_cast<const tflite::SparseToDenseOptions *>(obj);
7695       return verifier.VerifyTable(ptr);
7696     }
7697     case BuiltinOptions_TileOptions: {
7698       auto ptr = reinterpret_cast<const tflite::TileOptions *>(obj);
7699       return verifier.VerifyTable(ptr);
7700     }
7701     case BuiltinOptions_ExpandDimsOptions: {
7702       auto ptr = reinterpret_cast<const tflite::ExpandDimsOptions *>(obj);
7703       return verifier.VerifyTable(ptr);
7704     }
7705     case BuiltinOptions_EqualOptions: {
7706       auto ptr = reinterpret_cast<const tflite::EqualOptions *>(obj);
7707       return verifier.VerifyTable(ptr);
7708     }
7709     case BuiltinOptions_NotEqualOptions: {
7710       auto ptr = reinterpret_cast<const tflite::NotEqualOptions *>(obj);
7711       return verifier.VerifyTable(ptr);
7712     }
7713     case BuiltinOptions_ShapeOptions: {
7714       auto ptr = reinterpret_cast<const tflite::ShapeOptions *>(obj);
7715       return verifier.VerifyTable(ptr);
7716     }
7717     case BuiltinOptions_PowOptions: {
7718       auto ptr = reinterpret_cast<const tflite::PowOptions *>(obj);
7719       return verifier.VerifyTable(ptr);
7720     }
7721     case BuiltinOptions_ArgMinOptions: {
7722       auto ptr = reinterpret_cast<const tflite::ArgMinOptions *>(obj);
7723       return verifier.VerifyTable(ptr);
7724     }
7725     case BuiltinOptions_FakeQuantOptions: {
7726       auto ptr = reinterpret_cast<const tflite::FakeQuantOptions *>(obj);
7727       return verifier.VerifyTable(ptr);
7728     }
7729     case BuiltinOptions_PackOptions: {
7730       auto ptr = reinterpret_cast<const tflite::PackOptions *>(obj);
7731       return verifier.VerifyTable(ptr);
7732     }
7733     case BuiltinOptions_LogicalOrOptions: {
7734       auto ptr = reinterpret_cast<const tflite::LogicalOrOptions *>(obj);
7735       return verifier.VerifyTable(ptr);
7736     }
7737     case BuiltinOptions_OneHotOptions: {
7738       auto ptr = reinterpret_cast<const tflite::OneHotOptions *>(obj);
7739       return verifier.VerifyTable(ptr);
7740     }
7741     case BuiltinOptions_LogicalAndOptions: {
7742       auto ptr = reinterpret_cast<const tflite::LogicalAndOptions *>(obj);
7743       return verifier.VerifyTable(ptr);
7744     }
7745     case BuiltinOptions_LogicalNotOptions: {
7746       auto ptr = reinterpret_cast<const tflite::LogicalNotOptions *>(obj);
7747       return verifier.VerifyTable(ptr);
7748     }
7749     case BuiltinOptions_UnpackOptions: {
7750       auto ptr = reinterpret_cast<const tflite::UnpackOptions *>(obj);
7751       return verifier.VerifyTable(ptr);
7752     }
7753     case BuiltinOptions_FloorDivOptions: {
7754       auto ptr = reinterpret_cast<const tflite::FloorDivOptions *>(obj);
7755       return verifier.VerifyTable(ptr);
7756     }
7757     case BuiltinOptions_SquareOptions: {
7758       auto ptr = reinterpret_cast<const tflite::SquareOptions *>(obj);
7759       return verifier.VerifyTable(ptr);
7760     }
7761     case BuiltinOptions_ZerosLikeOptions: {
7762       auto ptr = reinterpret_cast<const tflite::ZerosLikeOptions *>(obj);
7763       return verifier.VerifyTable(ptr);
7764     }
7765     case BuiltinOptions_FillOptions: {
7766       auto ptr = reinterpret_cast<const tflite::FillOptions *>(obj);
7767       return verifier.VerifyTable(ptr);
7768     }
7769     case BuiltinOptions_BidirectionalSequenceLSTMOptions: {
7770       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceLSTMOptions *>(obj);
7771       return verifier.VerifyTable(ptr);
7772     }
7773     case BuiltinOptions_BidirectionalSequenceRNNOptions: {
7774       auto ptr = reinterpret_cast<const tflite::BidirectionalSequenceRNNOptions *>(obj);
7775       return verifier.VerifyTable(ptr);
7776     }
7777     case BuiltinOptions_UnidirectionalSequenceLSTMOptions: {
7778       auto ptr = reinterpret_cast<const tflite::UnidirectionalSequenceLSTMOptions *>(obj);
7779       return verifier.VerifyTable(ptr);
7780     }
7781     case BuiltinOptions_FloorModOptions: {
7782       auto ptr = reinterpret_cast<const tflite::FloorModOptions *>(obj);
7783       return verifier.VerifyTable(ptr);
7784     }
7785     case BuiltinOptions_RangeOptions: {
7786       auto ptr = reinterpret_cast<const tflite::RangeOptions *>(obj);
7787       return verifier.VerifyTable(ptr);
7788     }
7789     case BuiltinOptions_ResizeNearestNeighborOptions: {
7790       auto ptr = reinterpret_cast<const tflite::ResizeNearestNeighborOptions *>(obj);
7791       return verifier.VerifyTable(ptr);
7792     }
7793     case BuiltinOptions_LeakyReluOptions: {
7794       auto ptr = reinterpret_cast<const tflite::LeakyReluOptions *>(obj);
7795       return verifier.VerifyTable(ptr);
7796     }
7797     case BuiltinOptions_SquaredDifferenceOptions: {
7798       auto ptr = reinterpret_cast<const tflite::SquaredDifferenceOptions *>(obj);
7799       return verifier.VerifyTable(ptr);
7800     }
7801     case BuiltinOptions_MirrorPadOptions: {
7802       auto ptr = reinterpret_cast<const tflite::MirrorPadOptions *>(obj);
7803       return verifier.VerifyTable(ptr);
7804     }
7805     case BuiltinOptions_AbsOptions: {
7806       auto ptr = reinterpret_cast<const tflite::AbsOptions *>(obj);
7807       return verifier.VerifyTable(ptr);
7808     }
7809     case BuiltinOptions_SplitVOptions: {
7810       auto ptr = reinterpret_cast<const tflite::SplitVOptions *>(obj);
7811       return verifier.VerifyTable(ptr);
7812     }
7813     case BuiltinOptions_UniqueOptions: {
7814       auto ptr = reinterpret_cast<const tflite::UniqueOptions *>(obj);
7815       return verifier.VerifyTable(ptr);
7816     }
7817     case BuiltinOptions_ReverseV2Options: {
7818       auto ptr = reinterpret_cast<const tflite::ReverseV2Options *>(obj);
7819       return verifier.VerifyTable(ptr);
7820     }
7821     case BuiltinOptions_AddNOptions: {
7822       auto ptr = reinterpret_cast<const tflite::AddNOptions *>(obj);
7823       return verifier.VerifyTable(ptr);
7824     }
7825     case BuiltinOptions_GatherNdOptions: {
7826       auto ptr = reinterpret_cast<const tflite::GatherNdOptions *>(obj);
7827       return verifier.VerifyTable(ptr);
7828     }
7829     case BuiltinOptions_CosOptions: {
7830       auto ptr = reinterpret_cast<const tflite::CosOptions *>(obj);
7831       return verifier.VerifyTable(ptr);
7832     }
7833     case BuiltinOptions_WhereOptions: {
7834       auto ptr = reinterpret_cast<const tflite::WhereOptions *>(obj);
7835       return verifier.VerifyTable(ptr);
7836     }
7837     case BuiltinOptions_RankOptions: {
7838       auto ptr = reinterpret_cast<const tflite::RankOptions *>(obj);
7839       return verifier.VerifyTable(ptr);
7840     }
7841     case BuiltinOptions_ReverseSequenceOptions: {
7842       auto ptr = reinterpret_cast<const tflite::ReverseSequenceOptions *>(obj);
7843       return verifier.VerifyTable(ptr);
7844     }
7845     case BuiltinOptions_MatrixDiagOptions: {
7846       auto ptr = reinterpret_cast<const tflite::MatrixDiagOptions *>(obj);
7847       return verifier.VerifyTable(ptr);
7848     }
7849     case BuiltinOptions_QuantizeOptions: {
7850       auto ptr = reinterpret_cast<const tflite::QuantizeOptions *>(obj);
7851       return verifier.VerifyTable(ptr);
7852     }
7853     case BuiltinOptions_MatrixSetDiagOptions: {
7854       auto ptr = reinterpret_cast<const tflite::MatrixSetDiagOptions *>(obj);
7855       return verifier.VerifyTable(ptr);
7856     }
7857     case BuiltinOptions_HardSwishOptions: {
7858       auto ptr = reinterpret_cast<const tflite::HardSwishOptions *>(obj);
7859       return verifier.VerifyTable(ptr);
7860     }
7861     case BuiltinOptions_IfOptions: {
7862       auto ptr = reinterpret_cast<const tflite::IfOptions *>(obj);
7863       return verifier.VerifyTable(ptr);
7864     }
7865     case BuiltinOptions_WhileOptions: {
7866       auto ptr = reinterpret_cast<const tflite::WhileOptions *>(obj);
7867       return verifier.VerifyTable(ptr);
7868     }
7869     case BuiltinOptions_DepthToSpaceOptions: {
7870       auto ptr = reinterpret_cast<const tflite::DepthToSpaceOptions *>(obj);
7871       return verifier.VerifyTable(ptr);
7872     }
7873     case BuiltinOptions_NonMaxSuppressionV4Options: {
7874       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV4Options *>(obj);
7875       return verifier.VerifyTable(ptr);
7876     }
7877     case BuiltinOptions_NonMaxSuppressionV5Options: {
7878       auto ptr = reinterpret_cast<const tflite::NonMaxSuppressionV5Options *>(obj);
7879       return verifier.VerifyTable(ptr);
7880     }
7881     case BuiltinOptions_ScatterNdOptions: {
7882       auto ptr = reinterpret_cast<const tflite::ScatterNdOptions *>(obj);
7883       return verifier.VerifyTable(ptr);
7884     }
7885     case BuiltinOptions_SelectV2Options: {
7886       auto ptr = reinterpret_cast<const tflite::SelectV2Options *>(obj);
7887       return verifier.VerifyTable(ptr);
7888     }
7889     case BuiltinOptions_DensifyOptions: {
7890       auto ptr = reinterpret_cast<const tflite::DensifyOptions *>(obj);
7891       return verifier.VerifyTable(ptr);
7892     }
7893     default: return true;
7894   }
7895 }
7896 
7897 inline bool VerifyBuiltinOptionsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
7898   if (!values || !types) return !values && !types;
7899   if (values->size() != types->size()) return false;
7900   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
7901     if (!VerifyBuiltinOptions(
7902         verifier,  values->Get(i), types->GetEnum<BuiltinOptions>(i))) {
7903       return false;
7904     }
7905   }
7906   return true;
7907 }
7908 
7909 inline const tflite::Model *GetModel(const void *buf) {
7910   return flatbuffers::GetRoot<tflite::Model>(buf);
7911 }
7912 
7913 inline const tflite::Model *GetSizePrefixedModel(const void *buf) {
7914   return flatbuffers::GetSizePrefixedRoot<tflite::Model>(buf);
7915 }
7916 
7917 inline const char *ModelIdentifier() {
7918   return "TFL3";
7919 }
7920 
7921 inline bool ModelBufferHasIdentifier(const void *buf) {
7922   return flatbuffers::BufferHasIdentifier(
7923       buf, ModelIdentifier());
7924 }
7925 
7926 inline bool VerifyModelBuffer(
7927     flatbuffers::Verifier &verifier) {
7928   return verifier.VerifyBuffer<tflite::Model>(ModelIdentifier());
7929 }
7930 
7931 inline bool VerifySizePrefixedModelBuffer(
7932     flatbuffers::Verifier &verifier) {
7933   return verifier.VerifySizePrefixedBuffer<tflite::Model>(ModelIdentifier());
7934 }
7935 
7936 inline const char *ModelExtension() {
7937   return "tflite";
7938 }
7939 
7940 inline void FinishModelBuffer(
7941     flatbuffers::FlatBufferBuilder &fbb,
7942     flatbuffers::Offset<tflite::Model> root) {
7943   fbb.Finish(root, ModelIdentifier());
7944 }
7945 
7946 inline void FinishSizePrefixedModelBuffer(
7947     flatbuffers::FlatBufferBuilder &fbb,
7948     flatbuffers::Offset<tflite::Model> root) {
7949   fbb.FinishSizePrefixed(root, ModelIdentifier());
7950 }
7951 
7952 }  // namespace tflite
7953 
7954 #endif  // FLATBUFFERS_GENERATED_SCHEMA_TFLITE_H_
7955