Fix 64-bit numeric enum values in typescript (#7135)

* Fix 64-bit default numeric enum values in typescript

If you had a default value that wasn't a valid enum value (e.g., a zero
if you used a bit_flag setting, like you get with AdvancedFeatures
in reflection.fbs), we weren't using BigInt.

* Run generate_code.py

* [DART] Handle deprecated fields & invalid enum defaults

* Update .NET test
This commit is contained in:
James Kuszmaul
2022-03-04 21:57:48 -08:00
committed by GitHub
parent 1a4c405662
commit 9ed1323044
39 changed files with 1342 additions and 275 deletions

View File

@@ -56,6 +56,29 @@ extension MyGame_Example_Race: Encodable {
}
}
public enum MyGame_Example_LongEnum: UInt64, Enum, Verifiable {
public typealias T = UInt64
public static var byteSize: Int { return MemoryLayout<UInt64>.size }
public var value: UInt64 { return self.rawValue }
case longone = 2
case longtwo = 4
case longbig = 1099511627776
public static var max: MyGame_Example_LongEnum { return .longbig }
public static var min: MyGame_Example_LongEnum { return .longone }
}
extension MyGame_Example_LongEnum: Encodable {
public func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
switch self {
case .longone: try container.encode("LongOne")
case .longtwo: try container.encode("LongTwo")
case .longbig: try container.encode("LongBig")
}
}
}
public enum MyGame_Example_Any_: UInt8, UnionEnum {
public typealias T = UInt8
@@ -1087,6 +1110,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
case testrequirednestedflatbuffer = 102
case scalarKeySortedTables = 104
case nativeInline = 106
case longEnumNonEnumDefault = 108
case longEnumNormalDefault = 110
var v: Int32 { Int32(self.rawValue) }
var p: VOffset { self.rawValue }
}
@@ -1213,7 +1238,11 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
public func scalarKeySortedTablesBy(key: UInt16) -> MyGame_Example_Stat? { let o = _accessor.offset(VTOFFSET.scalarKeySortedTables.v); return o == 0 ? nil : MyGame_Example_Stat.lookupByKey(vector: _accessor.vector(at: o), key: key, fbb: _accessor.bb) }
public var nativeInline: MyGame_Example_Test? { let o = _accessor.offset(VTOFFSET.nativeInline.v); return o == 0 ? nil : _accessor.readBuffer(of: MyGame_Example_Test.self, at: o) }
public var mutableNativeInline: MyGame_Example_Test_Mutable? { let o = _accessor.offset(VTOFFSET.nativeInline.v); return o == 0 ? nil : MyGame_Example_Test_Mutable(_accessor.bb, o: o + _accessor.postion) }
public static func startMonster(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 52) }
public var longEnumNonEnumDefault: MyGame_Example_LongEnum { let o = _accessor.offset(VTOFFSET.longEnumNonEnumDefault.v); return o == 0 ? .longone : MyGame_Example_LongEnum(rawValue: _accessor.readBuffer(of: UInt64.self, at: o)) ?? .longone }
@discardableResult public func mutate(longEnumNonEnumDefault: MyGame_Example_LongEnum) -> Bool {let o = _accessor.offset(VTOFFSET.longEnumNonEnumDefault.v); return _accessor.mutate(longEnumNonEnumDefault.rawValue, index: o) }
public var longEnumNormalDefault: MyGame_Example_LongEnum { let o = _accessor.offset(VTOFFSET.longEnumNormalDefault.v); return o == 0 ? .longone : MyGame_Example_LongEnum(rawValue: _accessor.readBuffer(of: UInt64.self, at: o)) ?? .longone }
@discardableResult public func mutate(longEnumNormalDefault: MyGame_Example_LongEnum) -> Bool {let o = _accessor.offset(VTOFFSET.longEnumNormalDefault.v); return _accessor.mutate(longEnumNormalDefault.rawValue, index: o) }
public static func startMonster(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 54) }
public static func add(pos: MyGame_Example_Vec3?, _ fbb: inout FlatBufferBuilder) { guard let pos = pos else { return }; fbb.create(struct: pos, position: VTOFFSET.pos.p) }
public static func add(mana: Int16, _ fbb: inout FlatBufferBuilder) { fbb.add(element: mana, def: 150, at: VTOFFSET.mana.p) }
public static func add(hp: Int16, _ fbb: inout FlatBufferBuilder) { fbb.add(element: hp, def: 100, at: VTOFFSET.hp.p) }
@@ -1275,6 +1304,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
public static func addVectorOf(testrequirednestedflatbuffer: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: testrequirednestedflatbuffer, at: VTOFFSET.testrequirednestedflatbuffer.p) }
public static func addVectorOf(scalarKeySortedTables: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: scalarKeySortedTables, at: VTOFFSET.scalarKeySortedTables.p) }
public static func add(nativeInline: MyGame_Example_Test?, _ fbb: inout FlatBufferBuilder) { guard let nativeInline = nativeInline else { return }; fbb.create(struct: nativeInline, position: VTOFFSET.nativeInline.p) }
public static func add(longEnumNonEnumDefault: MyGame_Example_LongEnum, _ fbb: inout FlatBufferBuilder) { fbb.add(element: longEnumNonEnumDefault.rawValue, def: 0, at: VTOFFSET.longEnumNonEnumDefault.p) }
public static func add(longEnumNormalDefault: MyGame_Example_LongEnum, _ fbb: inout FlatBufferBuilder) { fbb.add(element: longEnumNormalDefault.rawValue, def: 2, at: VTOFFSET.longEnumNormalDefault.p) }
public static func endMonster(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); fbb.require(table: end, fields: [10]); return end }
public static func createMonster(
_ fbb: inout FlatBufferBuilder,
@@ -1328,7 +1359,9 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
signedEnum: MyGame_Example_Race = .none_,
testrequirednestedflatbufferVectorOffset testrequirednestedflatbuffer: Offset = Offset(),
scalarKeySortedTablesVectorOffset scalarKeySortedTables: Offset = Offset(),
nativeInline: MyGame_Example_Test? = nil
nativeInline: MyGame_Example_Test? = nil,
longEnumNonEnumDefault: MyGame_Example_LongEnum = .longone,
longEnumNormalDefault: MyGame_Example_LongEnum = .longone
) -> Offset {
let __start = MyGame_Example_Monster.startMonster(&fbb)
MyGame_Example_Monster.add(pos: pos, &fbb)
@@ -1382,6 +1415,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
MyGame_Example_Monster.addVectorOf(testrequirednestedflatbuffer: testrequirednestedflatbuffer, &fbb)
MyGame_Example_Monster.addVectorOf(scalarKeySortedTables: scalarKeySortedTables, &fbb)
MyGame_Example_Monster.add(nativeInline: nativeInline, &fbb)
MyGame_Example_Monster.add(longEnumNonEnumDefault: longEnumNonEnumDefault, &fbb)
MyGame_Example_Monster.add(longEnumNormalDefault: longEnumNormalDefault, &fbb)
return MyGame_Example_Monster.endMonster(&fbb, start: __start)
}
public static func sortVectorOfMonster(offsets:[Offset], _ fbb: inout FlatBufferBuilder) -> Offset {
@@ -1539,6 +1574,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
MyGame_Example_Monster.addVectorOf(testrequirednestedflatbuffer: __testrequirednestedflatbuffer, &builder)
MyGame_Example_Monster.addVectorOf(scalarKeySortedTables: __scalarKeySortedTables, &builder)
MyGame_Example_Monster.add(nativeInline: obj.nativeInline, &builder)
MyGame_Example_Monster.add(longEnumNonEnumDefault: obj.longEnumNonEnumDefault, &builder)
MyGame_Example_Monster.add(longEnumNormalDefault: obj.longEnumNormalDefault, &builder)
return MyGame_Example_Monster.endMonster(&builder, start: __root)
}
@@ -1625,6 +1662,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac
try _v.visit(field: VTOFFSET.testrequirednestedflatbuffer.p, fieldName: "testrequirednestedflatbuffer", required: false, type: ForwardOffset<Vector<UInt8, UInt8>>.self)
try _v.visit(field: VTOFFSET.scalarKeySortedTables.p, fieldName: "scalarKeySortedTables", required: false, type: ForwardOffset<Vector<ForwardOffset<MyGame_Example_Stat>, MyGame_Example_Stat>>.self)
try _v.visit(field: VTOFFSET.nativeInline.p, fieldName: "nativeInline", required: false, type: MyGame_Example_Test.self)
try _v.visit(field: VTOFFSET.longEnumNonEnumDefault.p, fieldName: "longEnumNonEnumDefault", required: false, type: MyGame_Example_LongEnum.self)
try _v.visit(field: VTOFFSET.longEnumNormalDefault.p, fieldName: "longEnumNormalDefault", required: false, type: MyGame_Example_LongEnum.self)
_v.finish()
}
}
@@ -1683,6 +1722,8 @@ extension MyGame_Example_Monster: Encodable {
case testrequirednestedflatbuffer = "testrequirednestedflatbuffer"
case scalarKeySortedTables = "scalar_key_sorted_tables"
case nativeInline = "native_inline"
case longEnumNonEnumDefault = "long_enum_non_enum_default"
case longEnumNormalDefault = "long_enum_normal_default"
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
@@ -1894,6 +1935,12 @@ extension MyGame_Example_Monster: Encodable {
}
}
try container.encodeIfPresent(nativeInline, forKey: .nativeInline)
if longEnumNonEnumDefault != .longone {
try container.encodeIfPresent(longEnumNonEnumDefault, forKey: .longEnumNonEnumDefault)
}
if longEnumNormalDefault != .longone {
try container.encodeIfPresent(longEnumNormalDefault, forKey: .longEnumNormalDefault)
}
}
}
@@ -1947,6 +1994,8 @@ public class MyGame_Example_MonsterT: NativeObject {
public var testrequirednestedflatbuffer: [UInt8]
public var scalarKeySortedTables: [MyGame_Example_StatT?]
public var nativeInline: MyGame_Example_Test?
public var longEnumNonEnumDefault: MyGame_Example_LongEnum
public var longEnumNormalDefault: MyGame_Example_LongEnum
public init(_ _t: inout MyGame_Example_Monster) {
pos = _t.pos
@@ -2097,6 +2146,8 @@ public class MyGame_Example_MonsterT: NativeObject {
scalarKeySortedTables.append(__v_?.unpack())
}
nativeInline = _t.nativeInline
longEnumNonEnumDefault = _t.longEnumNonEnumDefault
longEnumNormalDefault = _t.longEnumNormalDefault
}
public init() {
@@ -2145,6 +2196,8 @@ public class MyGame_Example_MonsterT: NativeObject {
testrequirednestedflatbuffer = []
scalarKeySortedTables = []
nativeInline = MyGame_Example_Test()
longEnumNonEnumDefault = .longone
longEnumNormalDefault = .longone
}
public func serialize() -> ByteBuffer { return serialize(type: MyGame_Example_Monster.self) }

View File

@@ -95,6 +95,9 @@
<Compile Include="..\MyGame\Example\NestedStruct.cs">
<Link>MyGame\Example\NestedStruct.cs</Link>
</Compile>
<Compile Include="..\MyGame\Example\LongEnum.cs">
<Link>MyGame\Example\LongEnum.cs</Link>
</Compile>
<Compile Include="..\MyGame\Example\TestEnum.cs">
<Link>MyGame\Example\TestEnum.cs</Link>
</Compile>

View File

@@ -0,0 +1,18 @@
// <auto-generated>
// automatically generated by the FlatBuffers compiler, do not modify
// </auto-generated>
namespace MyGame.Example
{
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
[System.FlagsAttribute]
public enum LongEnum : ulong
{
LongOne = 2,
LongTwo = 4,
LongBig = 1099511627776,
};
}

View File

@@ -0,0 +1,32 @@
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
package Example
import "strconv"
type LongEnum uint64
const (
LongEnumLongOne LongEnum = 2
LongEnumLongTwo LongEnum = 4
LongEnumLongBig LongEnum = 1099511627776
)
var EnumNamesLongEnum = map[LongEnum]string{
LongEnumLongOne: "LongOne",
LongEnumLongTwo: "LongTwo",
LongEnumLongBig: "LongBig",
}
var EnumValuesLongEnum = map[string]LongEnum{
"LongOne": LongEnumLongOne,
"LongTwo": LongEnumLongTwo,
"LongBig": LongEnumLongBig,
}
func (v LongEnum) String() string {
if s, ok := EnumNamesLongEnum[v]; ok {
return s
}
return "LongEnum(" + strconv.FormatInt(int64(v), 10) + ")"
}

View File

@@ -0,0 +1,12 @@
// automatically generated by the FlatBuffers compiler, do not modify
package MyGame.Example;
@SuppressWarnings("unused")
public final class LongEnum {
private LongEnum() { }
public static final long LongOne = 2;
public static final long LongTwo = 4;
public static final long LongBig = 1099511627776;
}

View File

@@ -0,0 +1,12 @@
// automatically generated by the FlatBuffers compiler, do not modify
package MyGame.Example
@Suppress("unused")
class LongEnum private constructor() {
companion object {
const val LongOne: ULong = 2UL
const val LongTwo: ULong = 4UL
const val LongBig: ULong = 1099511627776UL
}
}

View File

@@ -0,0 +1,19 @@
--[[ MyGame.Example.LongEnum
Automatically generated by the FlatBuffers compiler, do not modify.
Or modify. I'm a message, not a cop.
flatc version: 2.0.6
Declared by : //monster_test.fbs
Rooting type : MyGame.Example.Monster (//monster_test.fbs)
--]]
local LongEnum = {
LongOne = 2,
LongTwo = 4,
LongBig = 1099511627776,
}
return LongEnum

View File

@@ -0,0 +1,25 @@
<?php
// automatically generated by the FlatBuffers compiler, do not modify
namespace MyGame\Example;
class LongEnum
{
const LongOne = 2;
const LongTwo = 4;
const LongBig = 1099511627776;
private static $names = array(
LongEnum::LongOne=>"LongOne",
LongEnum::LongTwo=>"LongTwo",
LongEnum::LongBig=>"LongBig",
);
public static function Name($e)
{
if (!isset(self::$names[$e])) {
throw new \Exception();
}
return self::$names[$e];
}
}

View File

@@ -0,0 +1,8 @@
# automatically generated by the FlatBuffers compiler, do not modify
# namespace: Example
class LongEnum(object):
LongOne = 2
LongTwo = 4
LongBig = 1099511627776

View File

@@ -211,6 +211,10 @@ public struct Monster : IFlatbufferObject
public int ScalarKeySortedTablesLength { get { int o = __p.__offset(104); return o != 0 ? __p.__vector_len(o) : 0; } }
public MyGame.Example.Stat? ScalarKeySortedTablesByKey(ushort key) { int o = __p.__offset(104); return o != 0 ? MyGame.Example.Stat.__lookup_by_key(__p.__vector(o), key, __p.bb) : null; }
public MyGame.Example.Test? NativeInline { get { int o = __p.__offset(106); return o != 0 ? (MyGame.Example.Test?)(new MyGame.Example.Test()).__assign(o + __p.bb_pos, __p.bb) : null; } }
public MyGame.Example.LongEnum LongEnumNonEnumDefault { get { int o = __p.__offset(108); return o != 0 ? (MyGame.Example.LongEnum)__p.bb.GetUlong(o + __p.bb_pos) : 0; } }
public bool MutateLongEnumNonEnumDefault(MyGame.Example.LongEnum long_enum_non_enum_default) { int o = __p.__offset(108); if (o != 0) { __p.bb.PutUlong(o + __p.bb_pos, (ulong)long_enum_non_enum_default); return true; } else { return false; } }
public MyGame.Example.LongEnum LongEnumNormalDefault { get { int o = __p.__offset(110); return o != 0 ? (MyGame.Example.LongEnum)__p.bb.GetUlong(o + __p.bb_pos) : MyGame.Example.LongEnum.LongOne; } }
public bool MutateLongEnumNormalDefault(MyGame.Example.LongEnum long_enum_normal_default) { int o = __p.__offset(110); if (o != 0) { __p.bb.PutUlong(o + __p.bb_pos, (ulong)long_enum_normal_default); return true; } else { return false; } }
public static Offset<MyGame.Example.Monster> CreateMonster(FlatBufferBuilder builder,
MyGame.Example.Vec3T pos = null,
@@ -263,8 +267,12 @@ public struct Monster : IFlatbufferObject
MyGame.Example.Race signed_enum = MyGame.Example.Race.None,
VectorOffset testrequirednestedflatbufferOffset = default(VectorOffset),
VectorOffset scalar_key_sorted_tablesOffset = default(VectorOffset),
MyGame.Example.TestT native_inline = null) {
builder.StartTable(52);
MyGame.Example.TestT native_inline = null,
MyGame.Example.LongEnum long_enum_non_enum_default = 0,
MyGame.Example.LongEnum long_enum_normal_default = MyGame.Example.LongEnum.LongOne) {
builder.StartTable(54);
Monster.AddLongEnumNormalDefault(builder, long_enum_normal_default);
Monster.AddLongEnumNonEnumDefault(builder, long_enum_non_enum_default);
Monster.AddNonOwningReference(builder, non_owning_reference);
Monster.AddCoOwningReference(builder, co_owning_reference);
Monster.AddSingleWeakReference(builder, single_weak_reference);
@@ -319,7 +327,7 @@ public struct Monster : IFlatbufferObject
return Monster.EndMonster(builder);
}
public static void StartMonster(FlatBufferBuilder builder) { builder.StartTable(52); }
public static void StartMonster(FlatBufferBuilder builder) { builder.StartTable(54); }
public static void AddPos(FlatBufferBuilder builder, Offset<MyGame.Example.Vec3> posOffset) { builder.AddStruct(0, posOffset.Value, 0); }
public static void AddMana(FlatBufferBuilder builder, short mana) { builder.AddShort(1, mana, 150); }
public static void AddHp(FlatBufferBuilder builder, short hp) { builder.AddShort(2, hp, 100); }
@@ -425,6 +433,8 @@ public struct Monster : IFlatbufferObject
public static VectorOffset CreateScalarKeySortedTablesVectorBlock(FlatBufferBuilder builder, Offset<MyGame.Example.Stat>[] data) { builder.StartVector(4, data.Length, 4); builder.Add(data); return builder.EndVector(); }
public static void StartScalarKeySortedTablesVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
public static void AddNativeInline(FlatBufferBuilder builder, Offset<MyGame.Example.Test> nativeInlineOffset) { builder.AddStruct(51, nativeInlineOffset.Value, 0); }
public static void AddLongEnumNonEnumDefault(FlatBufferBuilder builder, MyGame.Example.LongEnum longEnumNonEnumDefault) { builder.AddUlong(52, (ulong)longEnumNonEnumDefault, 0); }
public static void AddLongEnumNormalDefault(FlatBufferBuilder builder, MyGame.Example.LongEnum longEnumNormalDefault) { builder.AddUlong(53, (ulong)longEnumNormalDefault, 2); }
public static Offset<MyGame.Example.Monster> EndMonster(FlatBufferBuilder builder) {
int o = builder.EndTable();
builder.Required(o, 10); // name
@@ -571,6 +581,8 @@ public struct Monster : IFlatbufferObject
_o.ScalarKeySortedTables = new List<MyGame.Example.StatT>();
for (var _j = 0; _j < this.ScalarKeySortedTablesLength; ++_j) {_o.ScalarKeySortedTables.Add(this.ScalarKeySortedTables(_j).HasValue ? this.ScalarKeySortedTables(_j).Value.UnPack() : null);}
_o.NativeInline = this.NativeInline.HasValue ? this.NativeInline.Value.UnPack() : null;
_o.LongEnumNonEnumDefault = this.LongEnumNonEnumDefault;
_o.LongEnumNormalDefault = this.LongEnumNormalDefault;
}
public static Offset<MyGame.Example.Monster> Pack(FlatBufferBuilder builder, MonsterT _o) {
if (_o == null) return default(Offset<MyGame.Example.Monster>);
@@ -745,7 +757,9 @@ public struct Monster : IFlatbufferObject
_o.SignedEnum,
_testrequirednestedflatbuffer,
_scalar_key_sorted_tables,
_o.NativeInline);
_o.NativeInline,
_o.LongEnumNonEnumDefault,
_o.LongEnumNormalDefault);
}
}
@@ -894,6 +908,10 @@ public class MonsterT
public List<MyGame.Example.StatT> ScalarKeySortedTables { get; set; }
[Newtonsoft.Json.JsonProperty("native_inline")]
public MyGame.Example.TestT NativeInline { get; set; }
[Newtonsoft.Json.JsonProperty("long_enum_non_enum_default")]
public MyGame.Example.LongEnum LongEnumNonEnumDefault { get; set; }
[Newtonsoft.Json.JsonProperty("long_enum_normal_default")]
public MyGame.Example.LongEnum LongEnumNormalDefault { get; set; }
public MonsterT() {
this.Pos = new MyGame.Example.Vec3T();
@@ -944,6 +962,8 @@ public class MonsterT
this.Testrequirednestedflatbuffer = null;
this.ScalarKeySortedTables = null;
this.NativeInline = new MyGame.Example.TestT();
this.LongEnumNonEnumDefault = 0;
this.LongEnumNormalDefault = MyGame.Example.LongEnum.LongOne;
}
public static MonsterT DeserializeFromJson(string jsonText) {

View File

@@ -58,6 +58,8 @@ type MonsterT struct {
Testrequirednestedflatbuffer []byte
ScalarKeySortedTables []*StatT
NativeInline *TestT
LongEnumNonEnumDefault LongEnum
LongEnumNormalDefault LongEnum
}
func (t *MonsterT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
@@ -316,6 +318,8 @@ func (t *MonsterT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
MonsterAddScalarKeySortedTables(builder, scalarKeySortedTablesOffset)
nativeInlineOffset := t.NativeInline.Pack(builder)
MonsterAddNativeInline(builder, nativeInlineOffset)
MonsterAddLongEnumNonEnumDefault(builder, t.LongEnumNonEnumDefault)
MonsterAddLongEnumNormalDefault(builder, t.LongEnumNormalDefault)
return MonsterEnd(builder)
}
@@ -455,6 +459,8 @@ func (rcv *Monster) UnPackTo(t *MonsterT) {
t.ScalarKeySortedTables[j] = x.UnPack()
}
t.NativeInline = rcv.NativeInline(nil).UnPack()
t.LongEnumNonEnumDefault = rcv.LongEnumNonEnumDefault()
t.LongEnumNormalDefault = rcv.LongEnumNormalDefault()
}
func (rcv *Monster) UnPack() *MonsterT {
@@ -1356,8 +1362,32 @@ func (rcv *Monster) NativeInline(obj *Test) *Test {
return nil
}
func (rcv *Monster) LongEnumNonEnumDefault() LongEnum {
o := flatbuffers.UOffsetT(rcv._tab.Offset(108))
if o != 0 {
return LongEnum(rcv._tab.GetUint64(o + rcv._tab.Pos))
}
return 0
}
func (rcv *Monster) MutateLongEnumNonEnumDefault(n LongEnum) bool {
return rcv._tab.MutateUint64Slot(108, uint64(n))
}
func (rcv *Monster) LongEnumNormalDefault() LongEnum {
o := flatbuffers.UOffsetT(rcv._tab.Offset(110))
if o != 0 {
return LongEnum(rcv._tab.GetUint64(o + rcv._tab.Pos))
}
return 2
}
func (rcv *Monster) MutateLongEnumNormalDefault(n LongEnum) bool {
return rcv._tab.MutateUint64Slot(110, uint64(n))
}
func MonsterStart(builder *flatbuffers.Builder) {
builder.StartObject(52)
builder.StartObject(54)
}
func MonsterAddPos(builder *flatbuffers.Builder, pos flatbuffers.UOffsetT) {
builder.PrependStructSlot(0, flatbuffers.UOffsetT(pos), 0)
@@ -1572,6 +1602,12 @@ func MonsterStartScalarKeySortedTablesVector(builder *flatbuffers.Builder, numEl
func MonsterAddNativeInline(builder *flatbuffers.Builder, nativeInline flatbuffers.UOffsetT) {
builder.PrependStructSlot(51, flatbuffers.UOffsetT(nativeInline), 0)
}
func MonsterAddLongEnumNonEnumDefault(builder *flatbuffers.Builder, longEnumNonEnumDefault LongEnum) {
builder.PrependUint64Slot(52, uint64(longEnumNonEnumDefault), 0)
}
func MonsterAddLongEnumNormalDefault(builder *flatbuffers.Builder, longEnumNormalDefault LongEnum) {
builder.PrependUint64Slot(53, uint64(longEnumNormalDefault), 2)
}
func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}

View File

@@ -212,8 +212,12 @@ public final class Monster extends Table {
public MyGame.Example.Stat.Vector scalarKeySortedTablesVector(MyGame.Example.Stat.Vector obj) { int o = __offset(104); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
public MyGame.Example.Test nativeInline() { return nativeInline(new MyGame.Example.Test()); }
public MyGame.Example.Test nativeInline(MyGame.Example.Test obj) { int o = __offset(106); return o != 0 ? obj.__assign(o + bb_pos, bb) : null; }
public long longEnumNonEnumDefault() { int o = __offset(108); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
public boolean mutateLongEnumNonEnumDefault(long long_enum_non_enum_default) { int o = __offset(108); if (o != 0) { bb.putLong(o + bb_pos, long_enum_non_enum_default); return true; } else { return false; } }
public long longEnumNormalDefault() { int o = __offset(110); return o != 0 ? bb.getLong(o + bb_pos) : 2L; }
public boolean mutateLongEnumNormalDefault(long long_enum_normal_default) { int o = __offset(110); if (o != 0) { bb.putLong(o + bb_pos, long_enum_normal_default); return true; } else { return false; } }
public static void startMonster(FlatBufferBuilder builder) { builder.startTable(52); }
public static void startMonster(FlatBufferBuilder builder) { builder.startTable(54); }
public static void addPos(FlatBufferBuilder builder, int posOffset) { builder.addStruct(0, posOffset, 0); }
public static void addMana(FlatBufferBuilder builder, short mana) { builder.addShort(1, mana, 150); }
public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); }
@@ -307,6 +311,8 @@ public final class Monster extends Table {
public static int createScalarKeySortedTablesVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
public static void startScalarKeySortedTablesVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
public static void addNativeInline(FlatBufferBuilder builder, int nativeInlineOffset) { builder.addStruct(51, nativeInlineOffset, 0); }
public static void addLongEnumNonEnumDefault(FlatBufferBuilder builder, long longEnumNonEnumDefault) { builder.addLong(52, longEnumNonEnumDefault, 0L); }
public static void addLongEnumNormalDefault(FlatBufferBuilder builder, long longEnumNormalDefault) { builder.addLong(53, longEnumNormalDefault, 2L); }
public static int endMonster(FlatBufferBuilder builder) {
int o = builder.endTable();
builder.required(o, 10); // name
@@ -523,6 +529,10 @@ public final class Monster extends Table {
_o.setScalarKeySortedTables(_oScalarKeySortedTables);
if (nativeInline() != null) nativeInline().unpackTo(_o.getNativeInline());
else _o.setNativeInline(null);
long _oLongEnumNonEnumDefault = longEnumNonEnumDefault();
_o.setLongEnumNonEnumDefault(_oLongEnumNonEnumDefault);
long _oLongEnumNormalDefault = longEnumNormalDefault();
_o.setLongEnumNormalDefault(_oLongEnumNormalDefault);
}
public static int pack(FlatBufferBuilder builder, MonsterT _o) {
if (_o == null) return 0;
@@ -710,6 +720,8 @@ public final class Monster extends Table {
addTestrequirednestedflatbuffer(builder, _testrequirednestedflatbuffer);
addScalarKeySortedTables(builder, _scalarKeySortedTables);
addNativeInline(builder, MyGame.Example.Test.pack(builder, _o.getNativeInline()));
addLongEnumNonEnumDefault(builder, _o.getLongEnumNonEnumDefault());
addLongEnumNormalDefault(builder, _o.getLongEnumNormalDefault());
return endMonster(builder);
}
}

View File

@@ -842,6 +842,34 @@ class Monster : Table() {
null
}
}
val longEnumNonEnumDefault : ULong
get() {
val o = __offset(108)
return if(o != 0) bb.getLong(o + bb_pos).toULong() else 0UL
}
fun mutateLongEnumNonEnumDefault(longEnumNonEnumDefault: ULong) : Boolean {
val o = __offset(108)
return if (o != 0) {
bb.putLong(o + bb_pos, longEnumNonEnumDefault.toLong())
true
} else {
false
}
}
val longEnumNormalDefault : ULong
get() {
val o = __offset(110)
return if(o != 0) bb.getLong(o + bb_pos).toULong() else 2UL
}
fun mutateLongEnumNormalDefault(longEnumNormalDefault: ULong) : Boolean {
val o = __offset(110)
return if (o != 0) {
bb.putLong(o + bb_pos, longEnumNormalDefault.toLong())
true
} else {
false
}
}
override fun keysCompare(o1: Int, o2: Int, _bb: ByteBuffer) : Int {
return compareStrings(__offset(10, o1, _bb), __offset(10, o2, _bb), _bb)
}
@@ -853,7 +881,7 @@ class Monster : Table() {
return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb))
}
fun MonsterBufferHasIdentifier(_bb: ByteBuffer) : Boolean = __has_identifier(_bb, "MONS")
fun startMonster(builder: FlatBufferBuilder) = builder.startTable(52)
fun startMonster(builder: FlatBufferBuilder) = builder.startTable(54)
fun addPos(builder: FlatBufferBuilder, pos: Int) = builder.addStruct(0, pos, 0)
fun addMana(builder: FlatBufferBuilder, mana: Short) = builder.addShort(1, mana, 150)
fun addHp(builder: FlatBufferBuilder, hp: Short) = builder.addShort(2, hp, 100)
@@ -1044,6 +1072,8 @@ class Monster : Table() {
}
fun startScalarKeySortedTablesVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(4, numElems, 4)
fun addNativeInline(builder: FlatBufferBuilder, nativeInline: Int) = builder.addStruct(51, nativeInline, 0)
fun addLongEnumNonEnumDefault(builder: FlatBufferBuilder, longEnumNonEnumDefault: ULong) = builder.addLong(52, longEnumNonEnumDefault.toLong(), 0)
fun addLongEnumNormalDefault(builder: FlatBufferBuilder, longEnumNormalDefault: ULong) = builder.addLong(53, longEnumNormalDefault.toLong(), 2)
fun endMonster(builder: FlatBufferBuilder) : Int {
val o = builder.endTable()
builder.required(o, 10)

View File

@@ -687,8 +687,24 @@ function mt:NativeInline()
end
end
function mt:LongEnumNonEnumDefault()
local o = self.view:Offset(108)
if o ~= 0 then
return self.view:Get(flatbuffers.N.Uint64, self.view.pos + o)
end
return 0
end
function mt:LongEnumNormalDefault()
local o = self.view:Offset(110)
if o ~= 0 then
return self.view:Get(flatbuffers.N.Uint64, self.view.pos + o)
end
return 2
end
function Monster.Start(builder)
builder:StartObject(52)
builder:StartObject(54)
end
function Monster.AddPos(builder, pos)
@@ -975,6 +991,14 @@ function Monster.AddNativeInline(builder, nativeInline)
builder:PrependStructSlot(51, nativeInline, 0)
end
function Monster.AddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault)
builder:PrependUint64Slot(52, longEnumNonEnumDefault, 0)
end
function Monster.AddLongEnumNormalDefault(builder, longEnumNormalDefault)
builder:PrependUint64Slot(53, longEnumNormalDefault, 2)
end
function Monster.End(builder)
return builder:EndObject()
end

View File

@@ -736,22 +736,40 @@ class Monster extends Table
return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
}
/**
* @return ulong
*/
public function getLongEnumNonEnumDefault()
{
$o = $this->__offset(108);
return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : 0;
}
/**
* @return ulong
*/
public function getLongEnumNormalDefault()
{
$o = $this->__offset(110);
return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : \MyGame\Example\LongEnum::LongOne;
}
/**
* @param FlatBufferBuilder $builder
* @return void
*/
public static function startMonster(FlatBufferBuilder $builder)
{
$builder->StartObject(52);
$builder->StartObject(54);
}
/**
* @param FlatBufferBuilder $builder
* @return Monster
*/
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct, $flex, $test5, $vector_of_longs, $vector_of_doubles, $parent_namespace_test, $vector_of_referrables, $single_weak_reference, $vector_of_weak_references, $vector_of_strong_referrables, $co_owning_reference, $vector_of_co_owning_references, $non_owning_reference, $vector_of_non_owning_references, $any_unique_type, $any_unique, $any_ambiguous_type, $any_ambiguous, $vector_of_enums, $signed_enum, $testrequirednestedflatbuffer, $scalar_key_sorted_tables, $native_inline)
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct, $flex, $test5, $vector_of_longs, $vector_of_doubles, $parent_namespace_test, $vector_of_referrables, $single_weak_reference, $vector_of_weak_references, $vector_of_strong_referrables, $co_owning_reference, $vector_of_co_owning_references, $non_owning_reference, $vector_of_non_owning_references, $any_unique_type, $any_unique, $any_ambiguous_type, $any_ambiguous, $vector_of_enums, $signed_enum, $testrequirednestedflatbuffer, $scalar_key_sorted_tables, $native_inline, $long_enum_non_enum_default, $long_enum_normal_default)
{
$builder->startObject(52);
$builder->startObject(54);
self::addPos($builder, $pos);
self::addMana($builder, $mana);
self::addHp($builder, $hp);
@@ -803,6 +821,8 @@ class Monster extends Table
self::addTestrequirednestedflatbuffer($builder, $testrequirednestedflatbuffer);
self::addScalarKeySortedTables($builder, $scalar_key_sorted_tables);
self::addNativeInline($builder, $native_inline);
self::addLongEnumNonEnumDefault($builder, $long_enum_non_enum_default);
self::addLongEnumNormalDefault($builder, $long_enum_normal_default);
$o = $builder->endObject();
$builder->required($o, 10); // name
return $o;
@@ -1783,6 +1803,26 @@ class Monster extends Table
$builder->addStructX(51, $nativeInline, 0);
}
/**
* @param FlatBufferBuilder $builder
* @param ulong
* @return void
*/
public static function addLongEnumNonEnumDefault(FlatBufferBuilder $builder, $longEnumNonEnumDefault)
{
$builder->addUlongX(52, $longEnumNonEnumDefault, 0);
}
/**
* @param FlatBufferBuilder $builder
* @param ulong
* @return void
*/
public static function addLongEnumNormalDefault(FlatBufferBuilder $builder, $longEnumNormalDefault)
{
$builder->addUlongX(53, $longEnumNormalDefault, 2);
}
/**
* @param FlatBufferBuilder $builder
* @return int table offset

View File

@@ -802,7 +802,21 @@ class Monster(object):
return obj
return None
def MonsterStart(builder): builder.StartObject(52)
# Monster
def LongEnumNonEnumDefault(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(108))
if o != 0:
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
return 0
# Monster
def LongEnumNormalDefault(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(110))
if o != 0:
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
return 2
def MonsterStart(builder): builder.StartObject(54)
def Start(builder):
return MonsterStart(builder)
def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
@@ -1032,6 +1046,12 @@ def StartScalarKeySortedTablesVector(builder, numElems):
def MonsterAddNativeInline(builder, nativeInline): builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0)
def AddNativeInline(builder, nativeInline):
return MonsterAddNativeInline(builder, nativeInline)
def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0)
def AddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault):
return MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault)
def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): builder.PrependUint64Slot(53, longEnumNormalDefault, 2)
def AddLongEnumNormalDefault(builder, longEnumNormalDefault):
return MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault)
def MonsterEnd(builder): return builder.EndObject()
def End(builder):
return MonsterEnd(builder)
@@ -1106,6 +1126,8 @@ class MonsterT(object):
self.testrequirednestedflatbuffer = None # type: List[int]
self.scalarKeySortedTables = None # type: List[MyGame.Example.Stat.StatT]
self.nativeInline = None # type: Optional[MyGame.Example.Test.TestT]
self.longEnumNonEnumDefault = 0 # type: int
self.longEnumNormalDefault = 2 # type: int
@classmethod
def InitFromBuf(cls, buf, pos):
@@ -1300,6 +1322,8 @@ class MonsterT(object):
self.scalarKeySortedTables.append(stat_)
if monster.NativeInline() is not None:
self.nativeInline = MyGame.Example.Test.TestT.InitFromObj(monster.NativeInline())
self.longEnumNonEnumDefault = monster.LongEnumNonEnumDefault()
self.longEnumNormalDefault = monster.LongEnumNormalDefault()
# MonsterT
def Pack(self, builder):
@@ -1551,5 +1575,7 @@ class MonsterT(object):
if self.nativeInline is not None:
nativeInline = self.nativeInline.Pack(builder)
MonsterAddNativeInline(builder, nativeInline)
MonsterAddLongEnumNonEnumDefault(builder, self.longEnumNonEnumDefault)
MonsterAddLongEnumNormalDefault(builder, self.longEnumNormalDefault)
monster = MonsterEnd(builder)
return monster

View File

@@ -56,6 +56,8 @@ public class MonsterT {
private int[] testrequirednestedflatbuffer;
private MyGame.Example.StatT[] scalarKeySortedTables;
private MyGame.Example.TestT nativeInline;
private long longEnumNonEnumDefault;
private long longEnumNormalDefault;
public MyGame.Example.Vec3T getPos() { return pos; }
@@ -249,6 +251,14 @@ public class MonsterT {
public void setNativeInline(MyGame.Example.TestT nativeInline) { this.nativeInline = nativeInline; }
public long getLongEnumNonEnumDefault() { return longEnumNonEnumDefault; }
public void setLongEnumNonEnumDefault(long longEnumNonEnumDefault) { this.longEnumNonEnumDefault = longEnumNonEnumDefault; }
public long getLongEnumNormalDefault() { return longEnumNormalDefault; }
public void setLongEnumNormalDefault(long longEnumNormalDefault) { this.longEnumNormalDefault = longEnumNormalDefault; }
public MonsterT() {
this.pos = new MyGame.Example.Vec3T();
@@ -299,6 +309,8 @@ public class MonsterT {
this.testrequirednestedflatbuffer = null;
this.scalarKeySortedTables = null;
this.nativeInline = new MyGame.Example.TestT();
this.longEnumNonEnumDefault = 0L;
this.longEnumNormalDefault = 2L;
}
public static MonsterT deserializeFromBinary(byte[] fbBuffer) {
return Monster.getRootAsMonster(ByteBuffer.wrap(fbBuffer)).unpack();

View File

@@ -160,6 +160,33 @@ inline const char *EnumNameRace(Race e) {
return EnumNamesRace()[index];
}
enum class LongEnum : uint64_t {
LongOne = 2ULL,
LongTwo = 4ULL,
LongBig = 1099511627776ULL,
NONE = 0,
ANY = 1099511627782ULL
};
FLATBUFFERS_DEFINE_BITMASK_OPERATORS(LongEnum, uint64_t)
inline const LongEnum (&EnumValuesLongEnum())[3] {
static const LongEnum values[] = {
LongEnum::LongOne,
LongEnum::LongTwo,
LongEnum::LongBig
};
return values;
}
inline const char *EnumNameLongEnum(LongEnum e) {
switch (e) {
case LongEnum::LongOne: return "LongOne";
case LongEnum::LongTwo: return "LongTwo";
case LongEnum::LongBig: return "LongBig";
default: return "";
}
}
enum class Any : uint8_t {
NONE = 0,
Monster = 1,
@@ -1239,6 +1266,8 @@ struct MonsterT : public flatbuffers::NativeTable {
std::vector<uint8_t> testrequirednestedflatbuffer{};
std::vector<std::unique_ptr<MyGame::Example::StatT>> scalar_key_sorted_tables{};
MyGame::Example::Test native_inline{};
MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0);
MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum::LongOne;
MonsterT() = default;
MonsterT(const MonsterT &o);
MonsterT(MonsterT&&) FLATBUFFERS_NOEXCEPT = default;
@@ -1304,7 +1333,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VT_SIGNED_ENUM = 100,
VT_TESTREQUIREDNESTEDFLATBUFFER = 102,
VT_SCALAR_KEY_SORTED_TABLES = 104,
VT_NATIVE_INLINE = 106
VT_NATIVE_INLINE = 106,
VT_LONG_ENUM_NON_ENUM_DEFAULT = 108,
VT_LONG_ENUM_NORMAL_DEFAULT = 110
};
const MyGame::Example::Vec3 *pos() const {
return GetStruct<const MyGame::Example::Vec3 *>(VT_POS);
@@ -1649,6 +1680,18 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
MyGame::Example::Test *mutable_native_inline() {
return GetStruct<MyGame::Example::Test *>(VT_NATIVE_INLINE);
}
MyGame::Example::LongEnum long_enum_non_enum_default() const {
return static_cast<MyGame::Example::LongEnum>(GetField<uint64_t>(VT_LONG_ENUM_NON_ENUM_DEFAULT, 0));
}
bool mutate_long_enum_non_enum_default(MyGame::Example::LongEnum _long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0)) {
return SetField<uint64_t>(VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast<uint64_t>(_long_enum_non_enum_default), 0);
}
MyGame::Example::LongEnum long_enum_normal_default() const {
return static_cast<MyGame::Example::LongEnum>(GetField<uint64_t>(VT_LONG_ENUM_NORMAL_DEFAULT, 2ULL));
}
bool mutate_long_enum_normal_default(MyGame::Example::LongEnum _long_enum_normal_default = static_cast<MyGame::Example::LongEnum>(2ULL)) {
return SetField<uint64_t>(VT_LONG_ENUM_NORMAL_DEFAULT, static_cast<uint64_t>(_long_enum_normal_default), 2ULL);
}
template<size_t Index>
auto get_field() const {
if constexpr (Index == 0) return pos();
@@ -1702,6 +1745,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
else if constexpr (Index == 48) return testrequirednestedflatbuffer();
else if constexpr (Index == 49) return scalar_key_sorted_tables();
else if constexpr (Index == 50) return native_inline();
else if constexpr (Index == 51) return long_enum_non_enum_default();
else if constexpr (Index == 52) return long_enum_normal_default();
else static_assert(Index != Index, "Invalid Field Index");
}
bool Verify(flatbuffers::Verifier &verifier) const {
@@ -1793,6 +1838,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
verifier.VerifyVector(scalar_key_sorted_tables()) &&
verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) &&
VerifyField<MyGame::Example::Test>(verifier, VT_NATIVE_INLINE, 2) &&
VerifyField<uint64_t>(verifier, VT_LONG_ENUM_NON_ENUM_DEFAULT, 8) &&
VerifyField<uint64_t>(verifier, VT_LONG_ENUM_NORMAL_DEFAULT, 8) &&
verifier.EndTable();
}
MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -1981,6 +2028,12 @@ struct MonsterBuilder {
void add_native_inline(const MyGame::Example::Test *native_inline) {
fbb_.AddStruct(Monster::VT_NATIVE_INLINE, native_inline);
}
void add_long_enum_non_enum_default(MyGame::Example::LongEnum long_enum_non_enum_default) {
fbb_.AddElement<uint64_t>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast<uint64_t>(long_enum_non_enum_default), 0);
}
void add_long_enum_normal_default(MyGame::Example::LongEnum long_enum_normal_default) {
fbb_.AddElement<uint64_t>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, static_cast<uint64_t>(long_enum_normal_default), 2ULL);
}
explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
@@ -2045,8 +2098,12 @@ inline flatbuffers::Offset<Monster> CreateMonster(
MyGame::Example::Race signed_enum = MyGame::Example::Race::None,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testrequirednestedflatbuffer = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>>> scalar_key_sorted_tables = 0,
const MyGame::Example::Test *native_inline = nullptr) {
const MyGame::Example::Test *native_inline = nullptr,
MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0),
MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum::LongOne) {
MonsterBuilder builder_(_fbb);
builder_.add_long_enum_normal_default(long_enum_normal_default);
builder_.add_long_enum_non_enum_default(long_enum_non_enum_default);
builder_.add_non_owning_reference(non_owning_reference);
builder_.add_co_owning_reference(co_owning_reference);
builder_.add_single_weak_reference(single_weak_reference);
@@ -2106,7 +2163,7 @@ struct Monster::Traits {
static auto constexpr Create = CreateMonster;
static constexpr auto name = "Monster";
static constexpr auto fully_qualified_name = "MyGame.Example.Monster";
static constexpr size_t fields_number = 51;
static constexpr size_t fields_number = 53;
static constexpr std::array<const char *, fields_number> field_names = {
"pos",
"mana",
@@ -2158,7 +2215,9 @@ struct Monster::Traits {
"signed_enum",
"testrequirednestedflatbuffer",
"scalar_key_sorted_tables",
"native_inline"
"native_inline",
"long_enum_non_enum_default",
"long_enum_normal_default"
};
template<size_t Index>
using FieldType = decltype(std::declval<type>().get_field<Index>());
@@ -2216,7 +2275,9 @@ inline flatbuffers::Offset<Monster> CreateMonsterDirect(
MyGame::Example::Race signed_enum = MyGame::Example::Race::None,
const std::vector<uint8_t> *testrequirednestedflatbuffer = nullptr,
std::vector<flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables = nullptr,
const MyGame::Example::Test *native_inline = nullptr) {
const MyGame::Example::Test *native_inline = nullptr,
MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0),
MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum::LongOne) {
auto name__ = name ? _fbb.CreateString(name) : 0;
auto inventory__ = inventory ? _fbb.CreateVector<uint8_t>(*inventory) : 0;
auto test4__ = test4 ? _fbb.CreateVectorOfStructs<MyGame::Example::Test>(*test4) : 0;
@@ -2290,7 +2351,9 @@ inline flatbuffers::Offset<Monster> CreateMonsterDirect(
signed_enum,
testrequirednestedflatbuffer__,
scalar_key_sorted_tables__,
native_inline);
native_inline,
long_enum_non_enum_default,
long_enum_normal_default);
}
flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
@@ -2763,7 +2826,9 @@ inline MonsterT::MonsterT(const MonsterT &o)
vector_of_enums(o.vector_of_enums),
signed_enum(o.signed_enum),
testrequirednestedflatbuffer(o.testrequirednestedflatbuffer),
native_inline(o.native_inline) {
native_inline(o.native_inline),
long_enum_non_enum_default(o.long_enum_non_enum_default),
long_enum_normal_default(o.long_enum_normal_default) {
testarrayoftables.reserve(o.testarrayoftables.size());
for (const auto &testarrayoftables_ : o.testarrayoftables) { testarrayoftables.emplace_back((testarrayoftables_) ? new MyGame::Example::MonsterT(*testarrayoftables_) : nullptr); }
vector_of_referrables.reserve(o.vector_of_referrables.size());
@@ -2825,6 +2890,8 @@ inline MonsterT &MonsterT::operator=(MonsterT o) FLATBUFFERS_NOEXCEPT {
std::swap(testrequirednestedflatbuffer, o.testrequirednestedflatbuffer);
std::swap(scalar_key_sorted_tables, o.scalar_key_sorted_tables);
std::swap(native_inline, o.native_inline);
std::swap(long_enum_non_enum_default, o.long_enum_non_enum_default);
std::swap(long_enum_normal_default, o.long_enum_normal_default);
return *this;
}
@@ -2895,6 +2962,8 @@ if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_non_owning_
{ auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } }
{ auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver); } else { _o->scalar_key_sorted_tables[_i] = std::unique_ptr<MyGame::Example::StatT>(_e->Get(_i)->UnPack(_resolver)); }; } } }
{ auto _e = native_inline(); if (_e) _o->native_inline = *_e; }
{ auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; }
{ auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; }
}
inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
@@ -2956,6 +3025,8 @@ inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder
auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0;
auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<flatbuffers::Offset<MyGame::Example::Stat>> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0;
auto _native_inline = &_o->native_inline;
auto _long_enum_non_enum_default = _o->long_enum_non_enum_default;
auto _long_enum_normal_default = _o->long_enum_normal_default;
return MyGame::Example::CreateMonster(
_fbb,
_pos,
@@ -3008,7 +3079,9 @@ inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder
_signed_enum,
_testrequirednestedflatbuffer,
_scalar_key_sorted_tables,
_native_inline);
_native_inline,
_long_enum_non_enum_default,
_long_enum_normal_default);
}
inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
@@ -3453,6 +3526,27 @@ inline const flatbuffers::TypeTable *RaceTypeTable() {
return &tt;
}
inline const flatbuffers::TypeTable *LongEnumTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_ULONG, 0, 0 },
{ flatbuffers::ET_ULONG, 0, 0 },
{ flatbuffers::ET_ULONG, 0, 0 }
};
static const flatbuffers::TypeFunction type_refs[] = {
MyGame::Example::LongEnumTypeTable
};
static const int64_t values[] = { 2ULL, 4ULL, 1099511627776ULL };
static const char * const names[] = {
"LongOne",
"LongTwo",
"LongBig"
};
static const flatbuffers::TypeTable tt = {
flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
inline const flatbuffers::TypeTable *AnyTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_SEQUENCE, 0, -1 },
@@ -3726,7 +3820,9 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() {
{ flatbuffers::ET_CHAR, 0, 11 },
{ flatbuffers::ET_UCHAR, 1, -1 },
{ flatbuffers::ET_SEQUENCE, 1, 5 },
{ flatbuffers::ET_SEQUENCE, 0, 3 }
{ flatbuffers::ET_SEQUENCE, 0, 3 },
{ flatbuffers::ET_ULONG, 0, 12 },
{ flatbuffers::ET_ULONG, 0, 12 }
};
static const flatbuffers::TypeFunction type_refs[] = {
MyGame::Example::Vec3TypeTable,
@@ -3740,7 +3836,8 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() {
MyGame::Example::ReferrableTypeTable,
MyGame::Example::AnyUniqueAliasesTypeTable,
MyGame::Example::AnyAmbiguousAliasesTypeTable,
MyGame::Example::RaceTypeTable
MyGame::Example::RaceTypeTable,
MyGame::Example::LongEnumTypeTable
};
static const char * const names[] = {
"pos",
@@ -3794,10 +3891,12 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() {
"signed_enum",
"testrequirednestedflatbuffer",
"scalar_key_sorted_tables",
"native_inline"
"native_inline",
"long_enum_non_enum_default",
"long_enum_normal_default"
};
static const flatbuffers::TypeTable tt = {
flatbuffers::ST_TABLE, 52, type_codes, type_refs, nullptr, nullptr, names
flatbuffers::ST_TABLE, 54, type_codes, type_refs, nullptr, nullptr, names
};
return &tt;
}

View File

@@ -83,7 +83,7 @@ class MonsterExtraT implements fb.Packable {
: fbBuilder.writeListFloat64(dvec!);
final int? fvecOffset = fvec == null ? null
: fbBuilder.writeListFloat32(fvec!);
fbBuilder.startTable(10);
fbBuilder.startTable(11);
fbBuilder.addFloat64(0, d0);
fbBuilder.addFloat64(1, d1);
fbBuilder.addFloat64(2, d2);
@@ -117,7 +117,7 @@ class MonsterExtraBuilder {
final fb.Builder fbBuilder;
void begin() {
fbBuilder.startTable(10);
fbBuilder.startTable(11);
}
int addD0(double? d0) {
@@ -208,7 +208,7 @@ class MonsterExtraObjectBuilder extends fb.ObjectBuilder {
: fbBuilder.writeListFloat64(_dvec!);
final int? fvecOffset = _fvec == null ? null
: fbBuilder.writeListFloat32(_fvec!);
fbBuilder.startTable(10);
fbBuilder.startTable(11);
fbBuilder.addFloat64(0, _d0);
fbBuilder.addFloat64(1, _d1);
fbBuilder.addFloat64(2, _d2);

Binary file not shown.

View File

@@ -31,6 +31,14 @@ enum Race:byte {
Elf,
}
enum LongEnum:ulong (bit_flags) {
LongOne = 1,
LongTwo = 2,
// Because this is a bitflag, 40 will be out of range of a 32-bit integer,
// allowing us to exercise any logic special to big numbers.
LongBig = 40,
}
union Any { Monster, TestSimpleTableWithEnum, MyGame.Example2.Monster }
union AnyUniqueAliases { M: Monster, TS: TestSimpleTableWithEnum, M2: MyGame.Example2.Monster }
@@ -125,6 +133,10 @@ table Monster {
testrequirednestedflatbuffer:[ubyte] (id:49, nested_flatbuffer: "Monster");
scalar_key_sorted_tables:[Stat] (id: 50);
native_inline:Test (id: 51, native_inline);
// The default value of this enum will be a numeric zero, which isn't a valid
// enum value.
long_enum_non_enum_default:LongEnum (id: 52);
long_enum_normal_default:LongEnum = LongOne (id: 53);
}
table TypeAliases {

View File

@@ -13,6 +13,10 @@
"type" : "string",
"enum": ["None", "Human", "Dwarf", "Elf"]
},
"MyGame_Example_LongEnum" : {
"type" : "string",
"enum": ["LongOne", "LongTwo", "LongBig"]
},
"MyGame_Example_Any" : {
"type" : "string",
"enum": ["NONE", "Monster", "TestSimpleTableWithEnum", "MyGame_Example2_Monster"]
@@ -321,6 +325,12 @@
},
"native_inline" : {
"$ref" : "#/definitions/MyGame_Example_Test"
},
"long_enum_non_enum_default" : {
"$ref" : "#/definitions/MyGame_Example_LongEnum"
},
"long_enum_normal_default" : {
"$ref" : "#/definitions/MyGame_Example_LongEnum"
}
},
"required" : ["name"],

View File

@@ -7,6 +7,8 @@ pub mod my_game {
pub use self::color_generated::*;
mod race_generated;
pub use self::race_generated::*;
mod long_enum_generated;
pub use self::long_enum_generated::*;
mod any_generated;
pub use self::any_generated::*;
mod any_unique_aliases_generated;

View File

@@ -0,0 +1,63 @@
// automatically generated by the FlatBuffers compiler, do not modify
extern crate flatbuffers;
use std::mem;
use std::cmp::Ordering;
use self::flatbuffers::{EndianScalar, Follow};
use super::*;
#[allow(non_upper_case_globals)]
mod bitflags_long_enum {
flatbuffers::bitflags::bitflags! {
#[derive(Default)]
pub struct LongEnum: u64 {
const LongOne = 2;
const LongTwo = 4;
const LongBig = 1099511627776;
}
}
}
pub use self::bitflags_long_enum::LongEnum;
impl<'a> flatbuffers::Follow<'a> for LongEnum {
type Inner = Self;
#[inline]
fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
let b = unsafe {
flatbuffers::read_scalar_at::<u64>(buf, loc)
};
unsafe { Self::from_bits_unchecked(b) }
}
}
impl flatbuffers::Push for LongEnum {
type Output = LongEnum;
#[inline]
fn push(&self, dst: &mut [u8], _rest: &[u8]) {
unsafe { flatbuffers::emplace_scalar::<u64>(dst, self.bits()); }
}
}
impl flatbuffers::EndianScalar for LongEnum {
#[inline]
fn to_little_endian(self) -> Self {
let b = u64::to_le(self.bits());
unsafe { Self::from_bits_unchecked(b) }
}
#[inline]
#[allow(clippy::wrong_self_convention)]
fn from_little_endian(self) -> Self {
let b = u64::from_le(self.bits());
unsafe { Self::from_bits_unchecked(b) }
}
}
impl<'a> flatbuffers::Verifiable for LongEnum {
#[inline]
fn run_verifier(
v: &mut flatbuffers::Verifier, pos: usize
) -> Result<(), flatbuffers::InvalidFlatbuffer> {
use self::flatbuffers::Verifiable;
u64::run_verifier(v, pos)
}
}
impl flatbuffers::SimpleToVerifyInSlice for LongEnum {}

View File

@@ -72,6 +72,8 @@ impl<'a> Monster<'a> {
pub const VT_TESTREQUIREDNESTEDFLATBUFFER: flatbuffers::VOffsetT = 102;
pub const VT_SCALAR_KEY_SORTED_TABLES: flatbuffers::VOffsetT = 104;
pub const VT_NATIVE_INLINE: flatbuffers::VOffsetT = 106;
pub const VT_LONG_ENUM_NON_ENUM_DEFAULT: flatbuffers::VOffsetT = 108;
pub const VT_LONG_ENUM_NORMAL_DEFAULT: flatbuffers::VOffsetT = 110;
pub const fn get_fully_qualified_name() -> &'static str {
"MyGame.Example.Monster"
@@ -87,6 +89,8 @@ impl<'a> Monster<'a> {
args: &'args MonsterArgs<'args>
) -> flatbuffers::WIPOffset<Monster<'bldr>> {
let mut builder = MonsterBuilder::new(_fbb);
builder.add_long_enum_normal_default(args.long_enum_normal_default);
builder.add_long_enum_non_enum_default(args.long_enum_non_enum_default);
builder.add_non_owning_reference(args.non_owning_reference);
builder.add_co_owning_reference(args.co_owning_reference);
builder.add_single_weak_reference(args.single_weak_reference);
@@ -297,6 +301,8 @@ impl<'a> Monster<'a> {
let native_inline = self.native_inline().map(|x| {
x.unpack()
});
let long_enum_non_enum_default = self.long_enum_non_enum_default();
let long_enum_normal_default = self.long_enum_normal_default();
MonsterT {
pos,
mana,
@@ -346,6 +352,8 @@ impl<'a> Monster<'a> {
testrequirednestedflatbuffer,
scalar_key_sorted_tables,
native_inline,
long_enum_non_enum_default,
long_enum_normal_default,
}
}
@@ -578,6 +586,14 @@ impl<'a> Monster<'a> {
self._tab.get::<Test>(Monster::VT_NATIVE_INLINE, None)
}
#[inline]
pub fn long_enum_non_enum_default(&self) -> LongEnum {
self._tab.get::<LongEnum>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, Some(Default::default())).unwrap()
}
#[inline]
pub fn long_enum_normal_default(&self) -> LongEnum {
self._tab.get::<LongEnum>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, Some(LongEnum::LongOne)).unwrap()
}
#[inline]
#[allow(non_snake_case)]
pub fn test_as_monster(&self) -> Option<Monster<'a>> {
if self.test_type() == Any::Monster {
@@ -745,6 +761,8 @@ impl flatbuffers::Verifiable for Monster<'_> {
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("testrequirednestedflatbuffer", Self::VT_TESTREQUIREDNESTEDFLATBUFFER, false)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Stat>>>>("scalar_key_sorted_tables", Self::VT_SCALAR_KEY_SORTED_TABLES, false)?
.visit_field::<Test>("native_inline", Self::VT_NATIVE_INLINE, false)?
.visit_field::<LongEnum>("long_enum_non_enum_default", Self::VT_LONG_ENUM_NON_ENUM_DEFAULT, false)?
.visit_field::<LongEnum>("long_enum_normal_default", Self::VT_LONG_ENUM_NORMAL_DEFAULT, false)?
.finish();
Ok(())
}
@@ -801,6 +819,8 @@ pub struct MonsterArgs<'a> {
pub testrequirednestedflatbuffer: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
pub scalar_key_sorted_tables: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Stat<'a>>>>>,
pub native_inline: Option<&'a Test>,
pub long_enum_non_enum_default: LongEnum,
pub long_enum_normal_default: LongEnum,
}
impl<'a> Default for MonsterArgs<'a> {
#[inline]
@@ -857,6 +877,8 @@ impl<'a> Default for MonsterArgs<'a> {
testrequirednestedflatbuffer: None,
scalar_key_sorted_tables: None,
native_inline: None,
long_enum_non_enum_default: Default::default(),
long_enum_normal_default: LongEnum::LongOne,
}
}
}
@@ -1071,6 +1093,14 @@ impl<'a: 'b, 'b> MonsterBuilder<'a, 'b> {
self.fbb_.push_slot_always::<&Test>(Monster::VT_NATIVE_INLINE, native_inline);
}
#[inline]
pub fn add_long_enum_non_enum_default(&mut self, long_enum_non_enum_default: LongEnum) {
self.fbb_.push_slot::<LongEnum>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, long_enum_non_enum_default, Default::default());
}
#[inline]
pub fn add_long_enum_normal_default(&mut self, long_enum_normal_default: LongEnum) {
self.fbb_.push_slot::<LongEnum>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, long_enum_normal_default, LongEnum::LongOne);
}
#[inline]
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MonsterBuilder<'a, 'b> {
let start = _fbb.start_table();
MonsterBuilder {
@@ -1218,6 +1248,8 @@ impl std::fmt::Debug for Monster<'_> {
ds.field("testrequirednestedflatbuffer", &self.testrequirednestedflatbuffer());
ds.field("scalar_key_sorted_tables", &self.scalar_key_sorted_tables());
ds.field("native_inline", &self.native_inline());
ds.field("long_enum_non_enum_default", &self.long_enum_non_enum_default());
ds.field("long_enum_normal_default", &self.long_enum_normal_default());
ds.finish()
}
}
@@ -1272,6 +1304,8 @@ pub struct MonsterT {
pub testrequirednestedflatbuffer: Option<Vec<u8>>,
pub scalar_key_sorted_tables: Option<Vec<StatT>>,
pub native_inline: Option<TestT>,
pub long_enum_non_enum_default: LongEnum,
pub long_enum_normal_default: LongEnum,
}
impl Default for MonsterT {
fn default() -> Self {
@@ -1324,6 +1358,8 @@ impl Default for MonsterT {
testrequirednestedflatbuffer: None,
scalar_key_sorted_tables: None,
native_inline: None,
long_enum_non_enum_default: Default::default(),
long_enum_normal_default: LongEnum::LongOne,
}
}
}
@@ -1434,6 +1470,8 @@ impl MonsterT {
});
let native_inline_tmp = self.native_inline.as_ref().map(|x| x.pack());
let native_inline = native_inline_tmp.as_ref();
let long_enum_non_enum_default = self.long_enum_non_enum_default;
let long_enum_normal_default = self.long_enum_normal_default;
Monster::create(_fbb, &MonsterArgs{
pos,
mana,
@@ -1486,6 +1524,8 @@ impl MonsterT {
testrequirednestedflatbuffer,
scalar_key_sorted_tables,
native_inline,
long_enum_non_enum_default,
long_enum_normal_default,
})
}
}

View File

@@ -12,198 +12,226 @@ namespace Example {
struct MonsterBinarySchema {
static const uint8_t *data() {
// Buffer containing the binary schema.
static const uint8_t bfbsData[14088] = {
0x1C,0x00,0x00,0x00,0x42,0x46,0x42,0x53,0x14,0x00,0x20,0x00,0x04,0x00,0x08,0x00,0x0C,0x00,0x10,0x00,
0x14,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x14,0x00,0x00,0x00,0x54,0x00,0x00,0x00,0x34,0x00,0x00,0x00,
0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x68,0x0D,0x00,0x00,0x08,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0xD4,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x6D,0x6F,0x6E,0x00,0x04,0x00,0x00,0x00,
0x4D,0x4F,0x4E,0x53,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x44,0x05,0x00,0x00,0xB0,0x02,0x00,0x00,
0xF0,0x03,0x00,0x00,0xCC,0x07,0x00,0x00,0x88,0x06,0x00,0x00,0xB8,0x09,0x00,0x00,0x0E,0x00,0x00,0x00,
0xE8,0x2E,0x00,0x00,0x1C,0x0D,0x00,0x00,0xBC,0x2B,0x00,0x00,0x98,0x2C,0x00,0x00,0xB0,0x2D,0x00,0x00,
0xF0,0x32,0x00,0x00,0xD0,0x31,0x00,0x00,0x40,0x0A,0x00,0x00,0xC8,0x2F,0x00,0x00,0xB8,0x33,0x00,0x00,
0xF0,0x33,0x00,0x00,0xE0,0x34,0x00,0x00,0x94,0x35,0x00,0x00,0x3C,0x34,0x00,0x00,0x03,0x00,0x00,0x00,
0x38,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x14,0xCE,0xFF,0xFF,0xE4,0x33,0x00,0x00,
0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x34,0x00,0x00,0x28,0xCE,0xFF,0xFF,0x84,0x35,0x00,0x00,
0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1C,0x34,0x00,0x00,0x74,0x35,0x00,0x00,0x40,0xCE,0xFF,0xFF,
0x10,0x34,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x34,0x00,0x00,0x5C,0x35,0x00,0x00,
0x00,0x00,0x0E,0x00,0x14,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x10,0x00,0x0E,0x00,0x00,0x00,
0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x84,0x33,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x88,0x01,0x00,0x00,0xF4,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x28,0x00,0x00,0x00,
0x1D,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4D,
0x6F,0x6E,0x73,0x74,0x65,0x72,0x53,0x74,0x6F,0x72,0x61,0x67,0x65,0x00,0x00,0x00,0xBA,0xFE,0xFF,0xFF,
0x48,0x00,0x00,0x00,0x2C,0x0C,0x00,0x00,0xAC,0x2B,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xDC,0xCE,0xFF,0xFF,0x14,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x62,0x69,0x64,0x69,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,
0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x47,0x65,0x74,0x4D,
0x69,0x6E,0x4D,0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,0x74,0x73,0x00,0x00,0x1E,0xFF,0xFF,0xFF,
0x48,0x00,0x00,0x00,0xC8,0x0B,0x00,0x00,0x48,0x2B,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x40,0xCF,0xFF,0xFF,0x14,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x63,0x6C,0x69,0x65,0x6E,0x74,0x00,0x00,0x09,0x00,0x00,0x00,
0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x47,0x65,0x74,0x4D,
0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,0x74,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,
0xEC,0x2A,0x00,0x00,0x64,0x0B,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xA4,0xCF,0xFF,0xFF,0x14,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x73,0x65,0x72,0x76,0x65,0x72,0x00,0x00,0x09,0x00,0x00,0x00,
0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0xCC,0xCF,0xFF,0xFF,0x10,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x69,0x64,0x65,0x6D,
0x70,0x6F,0x74,0x65,0x6E,0x74,0x00,0x00,0x08,0x00,0x00,0x00,0x52,0x65,0x74,0x72,0x69,0x65,0x76,0x65,
0x00,0x00,0x0E,0x00,0x18,0x00,0x04,0x00,0x08,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x0E,0x00,0x00,0x00,
0x48,0x00,0x00,0x00,0xD8,0x0A,0x00,0x00,0x58,0x2A,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x30,0xD0,0xFF,0xFF,0x14,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x6E,0x6F,0x6E,0x65,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,
0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x53,0x74,0x6F,0x72,
0x65,0x00,0x00,0x00,0x82,0xFD,0xFF,0xFF,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,
0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x80,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0xCF,0xFF,0xFF,
0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0xE0,0x00,0x00,0x00,0xA4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x22,0x00,0x00,0x00,
0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,0x6E,0x79,0x41,0x6D,
0x62,0x69,0x67,0x75,0x6F,0x75,0x73,0x41,0x6C,0x69,0x61,0x73,0x65,0x73,0x00,0x00,0xAE,0xF9,0xFF,0xFF,
0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x33,0x00,0x00,0xE6,0xF9,0xFF,0xFF,0x2C,0x00,0x00,0x00,
0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xD8,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,0x1E,0xFA,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0xCE,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x4D,0x31,0x00,0x00,0xA2,0xF9,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x94,0xF9,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,0xC6,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,
0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x3C,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
0x28,0xD1,0xFF,0xFF,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x28,0x00,0x00,0x00,
0x1F,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,
0x6E,0x79,0x55,0x6E,0x69,0x71,0x75,0x65,0x41,0x6C,0x69,0x61,0x73,0x65,0x73,0x00,0xEE,0xFA,0xFF,0xFF,
0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xCE,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x09,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,0x26,0xFB,0xFF,0xFF,0x2C,0x00,0x00,0x00,
0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0xCF,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x54,0x53,0x00,0x00,0x4E,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0xCF,0xFF,0xFF,
0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,
0xDE,0xFA,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xD0,0xFA,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,
0x00,0x00,0x12,0x00,0x1C,0x00,0x08,0x00,0x0C,0x00,0x07,0x00,0x10,0x00,0x00,0x00,0x14,0x00,0x18,0x00,
0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x08,0x00,0x00,0x00,0xF0,0x2E,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0xD2,0xFF,0xFF,0x00,0x00,0x00,0x01,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
0xB4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,
0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,0x6E,0x79,0x00,0x00,0x1E,0xFE,0xFF,0xFF,
0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1C,0xD0,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x17,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x5F,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x32,0x5F,
0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x66,0xFE,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xD0,0xFF,0xFF,
0x00,0x00,0x00,0x0F,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x54,0x65,0x73,0x74,
0x53,0x69,0x6D,0x70,0x6C,0x65,0x54,0x61,0x62,0x6C,0x65,0x57,0x69,0x74,0x68,0x45,0x6E,0x75,0x6D,0x00,
0xAE,0xFE,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAC,0xD0,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x42,0xFC,0xFF,0xFF,
0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xFC,0xFF,0xFF,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,
0xDE,0xFC,0xFF,0xFF,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0xA0,0x2D,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xD3,0xFF,0xFF,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xC8,0x00,0x00,0x00,0x8C,0x00,0x00,0x00,
0x50,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,
0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x52,0x61,0x63,0x65,0x00,0x6E,0xFF,0xFF,0xFF,0x24,0x00,0x00,0x00,
0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xC4,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x45,0x6C,0x66,0x00,
0xAE,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x44,0x77,0x61,0x72,0x66,0x00,0x00,0x00,0x32,0xFD,0xFF,0xFF,
0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xFD,0xFF,0xFF,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x48,0x75,0x6D,0x61,0x6E,0x00,0x0E,0x00,
0x18,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x24,0x00,0x00,0x00,
0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x64,0xFD,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x6F,0x6E,0x65,
0x00,0x00,0x12,0x00,0x1C,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,
0x12,0x00,0x00,0x00,0x9C,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
0x08,0x00,0x00,0x00,0x5C,0x2C,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00,
0x20,0x43,0x6F,0x6D,0x70,0x6F,0x73,0x69,0x74,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6F,0x6E,0x65,0x6E,0x74,
0x73,0x20,0x6F,0x66,0x20,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x2E,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xE0,0xD5,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
static const uint8_t bfbsData[14648] = {
0x20,0x00,0x00,0x00,0x42,0x46,0x42,0x53,0x00,0x00,0x00,0x00,0x14,0x00,0x20,0x00,0x04,0x00,0x08,0x00,
0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x14,0x00,0x00,0x00,0x58,0x00,0x00,0x00,
0x34,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x9C,0x0E,0x00,0x00,0x08,0x00,0x00,0x00,
0x7C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x6D,0x6F,0x6E,0x00,
0x04,0x00,0x00,0x00,0x4D,0x4F,0x4E,0x53,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x48,0x05,0x00,0x00,
0xB4,0x02,0x00,0x00,0xF4,0x03,0x00,0x00,0x00,0x09,0x00,0x00,0x8C,0x06,0x00,0x00,0xB8,0x07,0x00,0x00,
0xE8,0x0A,0x00,0x00,0x0E,0x00,0x00,0x00,0x10,0x31,0x00,0x00,0x4C,0x0E,0x00,0x00,0xE4,0x2D,0x00,0x00,
0xC0,0x2E,0x00,0x00,0xD8,0x2F,0x00,0x00,0x18,0x35,0x00,0x00,0xF8,0x33,0x00,0x00,0x70,0x0B,0x00,0x00,
0xF0,0x31,0x00,0x00,0xE0,0x35,0x00,0x00,0x18,0x36,0x00,0x00,0x08,0x37,0x00,0x00,0xBC,0x37,0x00,0x00,
0x64,0x36,0x00,0x00,0x03,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0xEC,0xCB,0xFF,0xFF,0x0C,0x36,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x58,0x36,0x00,0x00,
0x00,0xCC,0xFF,0xFF,0xAC,0x37,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x44,0x36,0x00,0x00,
0x9C,0x37,0x00,0x00,0x18,0xCC,0xFF,0xFF,0x38,0x36,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x2C,0x36,0x00,0x00,0x84,0x37,0x00,0x00,0x00,0x00,0x0E,0x00,0x14,0x00,0x04,0x00,0x08,0x00,0x00,0x00,
0x0C,0x00,0x10,0x00,0x0E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0xAC,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x88,0x01,0x00,0x00,0xF4,0x00,0x00,0x00,
0x90,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,
0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x53,0x74,0x6F,0x72,0x61,0x67,
0x65,0x00,0x00,0x00,0xBA,0xFE,0xFF,0xFF,0x48,0x00,0x00,0x00,0x5C,0x0D,0x00,0x00,0xD4,0x2D,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0xB4,0xCC,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x62,0x69,0x64,0x69,
0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,
0x12,0x00,0x00,0x00,0x47,0x65,0x74,0x4D,0x69,0x6E,0x4D,0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,
0x74,0x73,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x48,0x00,0x00,0x00,0xF8,0x0C,0x00,0x00,0x70,0x2D,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x18,0xCD,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x63,0x6C,0x69,0x65,
0x6E,0x74,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,
0x0E,0x00,0x00,0x00,0x47,0x65,0x74,0x4D,0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,0x74,0x00,0x00,
0x7E,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,0x14,0x2D,0x00,0x00,0x94,0x0C,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x7C,0xCD,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x73,0x65,0x72,0x76,
0x65,0x72,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,
0xA4,0xCD,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
0x0A,0x00,0x00,0x00,0x69,0x64,0x65,0x6D,0x70,0x6F,0x74,0x65,0x6E,0x74,0x00,0x00,0x08,0x00,0x00,0x00,
0x52,0x65,0x74,0x72,0x69,0x65,0x76,0x65,0x00,0x00,0x0E,0x00,0x18,0x00,0x04,0x00,0x08,0x00,0x0C,0x00,
0x10,0x00,0x14,0x00,0x0E,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x08,0x0C,0x00,0x00,0x80,0x2C,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x08,0xCE,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x6E,0x6F,0x6E,0x65,
0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,
0x05,0x00,0x00,0x00,0x53,0x74,0x6F,0x72,0x65,0x00,0x00,0x00,0x82,0xFD,0xFF,0xFF,0x00,0x00,0x00,0x01,
0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xA8,0x33,0x00,0x00,
0x00,0x00,0x00,0x00,0xBC,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xA4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,
0x2C,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,
0x6C,0x65,0x2E,0x41,0x6E,0x79,0x41,0x6D,0x62,0x69,0x67,0x75,0x6F,0x75,0x73,0x41,0x6C,0x69,0x61,0x73,
0x65,0x73,0x00,0x00,0x7E,0xF8,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xCB,0xFF,0xFF,
0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x33,0x00,0x00,
0xB6,0xF8,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xCB,0xFF,0xFF,0x00,0x00,0x00,0x0F,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,0xEE,0xF8,0xFF,0xFF,
0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE8,0xCB,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x31,0x00,0x00,0x72,0xF8,0xFF,0xFF,0x1C,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xF8,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,0xC6,0xFE,0xFF,0xFF,
0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0x64,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,
0x64,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,
0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,0x6E,0x79,0x55,0x6E,0x69,0x71,0x75,0x65,0x41,0x6C,0x69,0x61,
0x73,0x65,0x73,0x00,0xBE,0xF9,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB8,0xCC,0xFF,0xFF,
0x00,0x00,0x00,0x0F,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,
0xF6,0xF9,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xCC,0xFF,0xFF,0x00,0x00,0x00,0x0F,
0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x54,0x53,0x00,0x00,0x1E,0xFC,0xFF,0xFF,
0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x24,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0xAE,0xF9,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xF9,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,0x00,0x00,0x12,0x00,0x1C,0x00,0x08,0x00,0x0C,0x00,0x07,0x00,
0x10,0x00,0x00,0x00,0x14,0x00,0x18,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,
0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x31,0x00,0x00,0x00,0x00,0x00,0x00,
0x4C,0xD0,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xB4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,
0x12,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,
0x6E,0x79,0x00,0x00,0xEE,0xFC,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF4,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,
0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x5F,0x45,
0x78,0x61,0x6D,0x70,0x6C,0x65,0x32,0x5F,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x36,0xFD,0xFF,0xFF,
0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0xCE,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x17,0x00,0x00,0x00,0x54,0x65,0x73,0x74,0x53,0x69,0x6D,0x70,0x6C,0x65,0x54,0x61,0x62,0x6C,0x65,0x57,
0x69,0x74,0x68,0x45,0x6E,0x75,0x6D,0x00,0x7E,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0xCE,0xFF,0xFF,
0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4D,0x6F,0x6E,0x73,
0x74,0x65,0x72,0x00,0x12,0xFB,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0xFB,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,0xA2,0xFD,0xFF,0xFF,0x6C,0x00,0x00,0x00,0x58,0x00,0x00,0x00,
0x40,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xC4,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x48,0xD2,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x62,0x69,0x74,0x5F,0x66,0x6C,0x61,0x67,
0x73,0x00,0x00,0x00,0x64,0xD5,0xFF,0xFF,0x00,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x18,0x01,0x00,0x00,0x84,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
0x14,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x43,
0x6F,0x6C,0x6F,0x72,0x00,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x50,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,0x63,0x6F,0x6C,0x6F,
0x72,0x20,0x42,0x6C,0x75,0x65,0x20,0x28,0x31,0x75,0x20,0x3C,0x3C,0x20,0x33,0x29,0x00,0x00,0x00,0x00,
0x90,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x42,0x6C,0x75,0x65,
0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x34,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x20,0x47,0x72,0x65,0x65,0x6E,0x20,0x69,0x73,0x20,0x62,0x69,
0x74,0x5F,0x66,0x6C,0x61,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x76,0x61,0x6C,0x75,0x65,0x20,0x28,0x31,
0x75,0x20,0x3C,0x3C,0x20,0x31,0x29,0x00,0x13,0x00,0x00,0x00,0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,
0x63,0x6F,0x6C,0x6F,0x72,0x20,0x47,0x72,0x65,0x65,0x6E,0x00,0x14,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x47,0x72,0x65,0x65,0x6E,0x00,0x0E,0x00,0x1C,0x00,0x04,0x00,
0x10,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x58,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x52,0x65,0x64,0x00,
0x00,0x00,0x12,0x00,0x18,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x10,0x00,0x14,0x00,
0x12,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0x20,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x09,0x05,0x00,0x00,0x00,
0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x21,0x00,0x00,0x00,
0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x4F,0x74,0x68,0x65,0x72,0x4E,0x61,0x6D,0x65,0x53,0x70,0x61,0x63,
0x65,0x2E,0x46,0x72,0x6F,0x6D,0x49,0x6E,0x63,0x6C,0x75,0x64,0x65,0x00,0x0E,0x00,0x10,0x00,0x04,0x00,
0x00,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,
0x49,0x6E,0x63,0x6C,0x75,0x64,0x65,0x56,0x61,0x6C,0x00,0x00,0x64,0xD5,0xFF,0xFF,0x4C,0x00,0x00,0x00,
0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xC0,0x29,0x00,0x00,0x00,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0xE4,0x00,0x00,0x00,0xB0,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x90,0x01,0x00,0x00,
0x30,0x01,0x00,0x00,0x60,0x02,0x00,0x00,0xB0,0x01,0x00,0x00,0x54,0x01,0x00,0x00,0xF0,0x00,0x00,0x00,
0x04,0x02,0x00,0x00,0x5C,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,
0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x54,0x79,0x70,0x65,0x41,0x6C,0x69,0x61,0x73,
0x65,0x73,0x00,0x00,0x80,0xDC,0xFF,0xFF,0x00,0x00,0x00,0x01,0x0B,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xE2,0xFF,0xFF,0x00,0x00,0x0E,0x0C,
0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x76,0x66,0x36,0x34,0x00,0x00,0x00,0x00,0xB4,0xDC,0xFF,0xFF,
0x00,0x00,0x00,0x01,0x0A,0x00,0x18,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0xE2,0xFF,0xFF,0x00,0x00,0x0E,0x03,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x76,0x38,0x00,0x00,0xCA,0xD9,0xFF,0xFF,0x09,0x00,0x16,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x0C,0x08,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x66,0x36,0x34,0x00,0xFA,0xD9,0xFF,0xFF,0x08,0x00,0x14,0x00,
0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xD5,0xFF,0xFF,
0x00,0x00,0x00,0x0B,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x66,0x33,0x32,0x00,0x26,0xDA,0xFF,0xFF,
0x07,0x00,0x12,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x0A,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x75,0x36,0x34,0x00,0x56,0xDA,0xFF,0xFF,0x06,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x09,0x08,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x36,0x34,0x00,0x86,0xDA,0xFF,0xFF,0x05,0x00,0x0E,0x00,
0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0xD5,0xFF,0xFF,
0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x75,0x33,0x32,0x00,0xB2,0xDA,0xFF,0xFF,
0x04,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xC4,0xD5,0xFF,0xFF,0x00,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x33,0x32,0x00,
0xDE,0xDA,0xFF,0xFF,0x03,0x00,0x0A,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xA8,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x06,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x75,0x31,0x36,0x00,0x0E,0xDB,0xFF,0xFF,0x02,0x00,0x08,0x00,0x20,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x05,
0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x31,0x36,0x00,0x3E,0xDB,0xFF,0xFF,
0x01,0x00,0x06,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0xD9,0xFF,0xFF,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x75,0x38,0x00,0x00,0x00,0x00,0x1A,0x00,0x14,0x00,0x08,0x00,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x54,0xD9,0xFF,0xFF,
0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x38,0x00,0x00,
0x28,0xD8,0xFF,0xFF,0x28,0x01,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0xFC,0x26,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x20,0x61,0x6E,0x20,
0x65,0x78,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,0x61,0x74,0x69,0x6F,
0x6E,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x74,0x3A,0x20,0x22,0x6D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x20,
0x6F,0x62,0x6A,0x65,0x63,0x74,0x22,0x00,0x34,0x00,0x00,0x00,0x88,0x03,0x00,0x00,0xEC,0x03,0x00,0x00,
0x54,0x04,0x00,0x00,0xB4,0x04,0x00,0x00,0xB0,0x08,0x00,0x00,0x80,0x1A,0x00,0x00,0x90,0x17,0x00,0x00,
0x4C,0x0E,0x00,0x00,0x84,0x1B,0x00,0x00,0xC8,0x1C,0x00,0x00,0xF4,0x1A,0x00,0x00,0x40,0x1D,0x00,0x00,
0x40,0x1C,0x00,0x00,0xB8,0x00,0x00,0x00,0x20,0x06,0x00,0x00,0x90,0x0C,0x00,0x00,0xB0,0x1D,0x00,0x00,
0x3C,0x01,0x00,0x00,0x6C,0x02,0x00,0x00,0x18,0x0B,0x00,0x00,0x68,0x19,0x00,0x00,0xF4,0x18,0x00,0x00,
0xB0,0x0D,0x00,0x00,0xD4,0x19,0x00,0x00,0xA0,0x10,0x00,0x00,0x88,0x0E,0x00,0x00,0x78,0x18,0x00,0x00,
0xF0,0x0E,0x00,0x00,0x98,0x17,0x00,0x00,0xD0,0x15,0x00,0x00,0x2C,0x16,0x00,0x00,0x20,0x10,0x00,0x00,
0x9C,0x0F,0x00,0x00,0x40,0x0F,0x00,0x00,0x30,0x15,0x00,0x00,0xF0,0x12,0x00,0x00,0x0C,0x14,0x00,0x00,
0x68,0x11,0x00,0x00,0x94,0x14,0x00,0x00,0xF4,0x11,0x00,0x00,0x6C,0x13,0x00,0x00,0xC4,0x10,0x00,0x00,
0x60,0x16,0x00,0x00,0x48,0x01,0x00,0x00,0xD0,0x06,0x00,0x00,0x88,0x0C,0x00,0x00,0x68,0x02,0x00,0x00,
0xE8,0x0C,0x00,0x00,0x68,0x04,0x00,0x00,0x98,0x0B,0x00,0x00,0xEC,0x08,0x00,0x00,0x9C,0x09,0x00,0x00,
0x73,0x00,0x00,0x00,0xCC,0xD1,0xFF,0xFF,0x00,0x00,0x00,0x0A,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x5C,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
0x17,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4C,
0x6F,0x6E,0x67,0x45,0x6E,0x75,0x6D,0x00,0x7E,0xFC,0xFF,0xFF,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xC8,0xFB,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4C,0x6F,0x6E,0x67,
0x42,0x69,0x67,0x00,0xB6,0xFC,0xFF,0xFF,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4C,0x6F,0x6E,0x67,0x54,0x77,0x6F,0x00,
0xDE,0xFE,0xFF,0xFF,0x24,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x07,0x00,0x00,0x00,0x4C,0x6F,0x6E,0x67,0x4F,0x6E,0x65,0x00,0xDE,0xFC,0xFF,0xFF,0x40,0x00,0x00,0x00,
0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x98,0x2E,0x00,0x00,0x00,0x00,0x00,0x00,
0xCC,0xD2,0xFF,0xFF,0x00,0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0xC8,0x00,0x00,0x00,0x8C,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,
0x13,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x52,
0x61,0x63,0x65,0x00,0x6E,0xFF,0xFF,0xFF,0x24,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x45,0x6C,0x66,0x00,0xAE,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,
0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF8,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,
0x44,0x77,0x61,0x72,0x66,0x00,0x00,0x00,0x32,0xFD,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xFD,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x05,0x00,0x00,0x00,0x48,0x75,0x6D,0x61,0x6E,0x00,0x0E,0x00,0x18,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x64,0xFD,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x6F,0x6E,0x65,0x00,0x00,0x12,0x00,0x1C,0x00,0x04,0x00,
0x08,0x00,0x00,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x12,0x00,0x00,0x00,0x9C,0x00,0x00,0x00,
0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x54,0x2D,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x20,0x43,0x6F,0x6D,0x70,0x6F,0x73,0x69,
0x74,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6F,0x6E,0x65,0x6E,0x74,0x73,0x20,0x6F,0x66,0x20,0x4D,0x6F,0x6E,
0x73,0x74,0x65,0x72,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x2E,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0xE8,0xD4,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
0x09,0x00,0x00,0x00,0x62,0x69,0x74,0x5F,0x66,0x6C,0x61,0x67,0x73,0x00,0x00,0x00,0x6C,0xD4,0xFF,0xFF,
0x00,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x18,0x01,0x00,0x00,0x84,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,
0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x43,0x6F,0x6C,0x6F,0x72,0x00,0x00,0x00,0x00,
0x1E,0xFF,0xFF,0xFF,0x50,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,
0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x20,0x42,0x6C,0x75,0x65,0x20,0x28,
0x31,0x75,0x20,0x3C,0x3C,0x20,0x33,0x29,0x00,0x00,0x00,0x00,0x90,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x42,0x6C,0x75,0x65,0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,
0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00,
0x20,0x47,0x72,0x65,0x65,0x6E,0x20,0x69,0x73,0x20,0x62,0x69,0x74,0x5F,0x66,0x6C,0x61,0x67,0x20,0x77,
0x69,0x74,0x68,0x20,0x76,0x61,0x6C,0x75,0x65,0x20,0x28,0x31,0x75,0x20,0x3C,0x3C,0x20,0x31,0x29,0x00,
0x13,0x00,0x00,0x00,0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x20,0x47,0x72,
0x65,0x65,0x6E,0x00,0x14,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,
0x47,0x72,0x65,0x65,0x6E,0x00,0x0E,0x00,0x1C,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,
0x0E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x52,0x65,0x64,0x00,0x00,0x00,0x12,0x00,0x18,0x00,0x04,0x00,
0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x10,0x00,0x14,0x00,0x12,0x00,0x00,0x00,0x34,0x00,0x00,0x00,
0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x2D,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x09,0x06,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x4F,
0x74,0x68,0x65,0x72,0x4E,0x61,0x6D,0x65,0x53,0x70,0x61,0x63,0x65,0x2E,0x46,0x72,0x6F,0x6D,0x49,0x6E,
0x63,0x6C,0x75,0x64,0x65,0x00,0x0E,0x00,0x10,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,
0x0E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x49,0x6E,0x63,0x6C,0x75,0x64,0x65,0x56,
0x61,0x6C,0x00,0x00,0x6C,0xD4,0xFF,0xFF,0x4C,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x08,0x00,0x00,0x00,0xB8,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xE4,0x00,0x00,0x00,
0xB0,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x90,0x01,0x00,0x00,0x30,0x01,0x00,0x00,0x60,0x02,0x00,0x00,
0xB0,0x01,0x00,0x00,0x54,0x01,0x00,0x00,0xF0,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x5C,0x00,0x00,0x00,
0x24,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,
0x6C,0x65,0x2E,0x54,0x79,0x70,0x65,0x41,0x6C,0x69,0x61,0x73,0x65,0x73,0x00,0x00,0x88,0xDB,0xFF,0xFF,
0x00,0x00,0x00,0x01,0x0B,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x14,0xE1,0xFF,0xFF,0x00,0x00,0x0E,0x0C,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x76,0x66,0x36,0x34,0x00,0x00,0x00,0x00,0xBC,0xDB,0xFF,0xFF,0x00,0x00,0x00,0x01,0x0A,0x00,0x18,0x00,
0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xE1,0xFF,0xFF,
0x00,0x00,0x0E,0x03,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x76,0x38,0x00,0x00,0xD2,0xD8,0xFF,0xFF,
0x09,0x00,0x16,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x9C,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x0C,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x66,0x36,0x34,0x00,0x02,0xD9,0xFF,0xFF,0x08,0x00,0x14,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0xD4,0xFF,0xFF,0x00,0x00,0x00,0x0B,0x01,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x66,0x33,0x32,0x00,0x2E,0xD9,0xFF,0xFF,0x07,0x00,0x12,0x00,0x20,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x0A,
0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x75,0x36,0x34,0x00,0x5E,0xD9,0xFF,0xFF,
0x06,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x28,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x09,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x69,0x36,0x34,0x00,0x8E,0xD9,0xFF,0xFF,0x05,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xD4,0xFF,0xFF,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x75,0x33,0x32,0x00,0xBA,0xD9,0xFF,0xFF,0x04,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xD4,0xFF,0xFF,0x00,0x00,0x00,0x07,
0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x33,0x32,0x00,0xE6,0xD9,0xFF,0xFF,0x03,0x00,0x0A,0x00,
0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xD7,0xFF,0xFF,
0x00,0x00,0x00,0x06,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x75,0x31,0x36,0x00,
0x16,0xDA,0xFF,0xFF,0x02,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x69,0x31,0x36,0x00,0x46,0xDA,0xFF,0xFF,0x01,0x00,0x06,0x00,0x20,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x04,
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x75,0x38,0x00,0x00,0x00,0x00,0x1A,0x00,
0x14,0x00,0x08,0x00,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x38,0x00,0x00,0x30,0xD7,0xFF,0xFF,0x30,0x01,0x00,0x00,
0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xF4,0x27,0x00,0x00,0x01,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x20,0x61,0x6E,0x20,0x65,0x78,0x61,0x6D,0x70,0x6C,0x65,0x20,
0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E,
0x74,0x3A,0x20,0x22,0x6D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x22,0x00,
0x36,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0xE4,0x04,0x00,0x00,0x4C,0x05,0x00,0x00,0xAC,0x05,0x00,0x00,
0xA8,0x09,0x00,0x00,0x78,0x1B,0x00,0x00,0x88,0x18,0x00,0x00,0x44,0x0F,0x00,0x00,0x7C,0x1C,0x00,0x00,
0xC0,0x1D,0x00,0x00,0xEC,0x1B,0x00,0x00,0x44,0x01,0x00,0x00,0xC4,0x00,0x00,0x00,0x30,0x1E,0x00,0x00,
0x30,0x1D,0x00,0x00,0xA8,0x01,0x00,0x00,0x10,0x07,0x00,0x00,0x80,0x0D,0x00,0x00,0xA0,0x1E,0x00,0x00,
0x2C,0x02,0x00,0x00,0x5C,0x03,0x00,0x00,0x08,0x0C,0x00,0x00,0x58,0x1A,0x00,0x00,0xE4,0x19,0x00,0x00,
0xA0,0x0E,0x00,0x00,0xC4,0x1A,0x00,0x00,0x90,0x11,0x00,0x00,0x78,0x0F,0x00,0x00,0x68,0x19,0x00,0x00,
0xE0,0x0F,0x00,0x00,0x88,0x18,0x00,0x00,0xC0,0x16,0x00,0x00,0x1C,0x17,0x00,0x00,0x10,0x11,0x00,0x00,
0x8C,0x10,0x00,0x00,0x30,0x10,0x00,0x00,0x20,0x16,0x00,0x00,0xE0,0x13,0x00,0x00,0xFC,0x14,0x00,0x00,
0x58,0x12,0x00,0x00,0x84,0x15,0x00,0x00,0xE4,0x12,0x00,0x00,0x5C,0x14,0x00,0x00,0xB4,0x11,0x00,0x00,
0x50,0x17,0x00,0x00,0x38,0x02,0x00,0x00,0xC0,0x07,0x00,0x00,0x78,0x0D,0x00,0x00,0x58,0x03,0x00,0x00,
0xD8,0x0D,0x00,0x00,0x58,0x05,0x00,0x00,0x88,0x0C,0x00,0x00,0xDC,0x09,0x00,0x00,0x8C,0x0A,0x00,0x00,
0x16,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4D,
0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x00,0xEC,0xE5,0xFF,0xFF,0x00,0x00,0x00,0x01,0x33,0x00,0x6A,0x00,
0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x00,0x62,0xFD,0xFF,0xFF,0x35,0x00,0x6E,0x00,0x54,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x70,0xDB,0xFF,0xFF,0x10,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x35,0x33,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x64,0x00,0x00,
0xEC,0xDA,0xFF,0xFF,0x00,0x00,0x00,0x0A,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x18,0x00,0x00,0x00,0x6C,0x6F,0x6E,0x67,0x5F,0x65,0x6E,0x75,0x6D,0x5F,0x6E,0x6F,0x72,0x6D,0x61,0x6C,
0x5F,0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x00,0x00,0x00,0x00,0x62,0xE6,0xFF,0xFF,0x34,0x00,0x6C,0x00,
0x4C,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xE4,0xDB,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x35,0x32,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x64,0x00,0x00,0x60,0xDB,0xFF,0xFF,
0x00,0x00,0x00,0x0A,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,
0x6C,0x6F,0x6E,0x67,0x5F,0x65,0x6E,0x75,0x6D,0x5F,0x6E,0x6F,0x6E,0x5F,0x65,0x6E,0x75,0x6D,0x5F,0x64,
0x65,0x66,0x61,0x75,0x6C,0x74,0x00,0x00,0xEC,0xE5,0xFF,0xFF,0x00,0x00,0x00,0x01,0x33,0x00,0x6A,0x00,
0x74,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x60,0xDC,0xFF,0xFF,0x10,0x00,0x00,0x00,
0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x6E,0x61,0x74,0x69,
@@ -230,7 +258,7 @@ struct MonsterBinarySchema {
0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x28,0xDE,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x34,0x38,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x64,0x00,0x00,0xA4,0xDD,0xFF,0xFF,
0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,
0x73,0x69,0x67,0x6E,0x65,0x64,0x5F,0x65,0x6E,0x75,0x6D,0x00,0x20,0xE8,0xFF,0xFF,0x00,0x00,0x00,0x01,
0x2F,0x00,0x62,0x00,0x48,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x90,0xDE,0xFF,0xFF,0x10,0x00,0x00,0x00,
@@ -722,7 +750,7 @@ struct MonsterBinarySchema {
return bfbsData;
}
static size_t size() {
return 14088;
return 14648;
}
const uint8_t *begin() {
return data();

View File

@@ -190,6 +190,32 @@ inline const char *EnumNameRace(Race e) {
return EnumNamesRace()[index];
}
enum LongEnum : uint64_t {
LongEnum_LongOne = 2ULL,
LongEnum_LongTwo = 4ULL,
LongEnum_LongBig = 1099511627776ULL,
LongEnum_NONE = 0,
LongEnum_ANY = 1099511627782ULL
};
inline const LongEnum (&EnumValuesLongEnum())[3] {
static const LongEnum values[] = {
LongEnum_LongOne,
LongEnum_LongTwo,
LongEnum_LongBig
};
return values;
}
inline const char *EnumNameLongEnum(LongEnum e) {
switch (e) {
case LongEnum_LongOne: return "LongOne";
case LongEnum_LongTwo: return "LongTwo";
case LongEnum_LongBig: return "LongBig";
default: return "";
}
}
enum Any : uint8_t {
Any_NONE = 0,
Any_Monster = 1,
@@ -1234,6 +1260,8 @@ struct MonsterT : public flatbuffers::NativeTable {
std::vector<uint8_t> testrequirednestedflatbuffer{};
std::vector<flatbuffers::unique_ptr<MyGame::Example::StatT>> scalar_key_sorted_tables{};
MyGame::Example::Test native_inline{};
MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0);
MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne;
MonsterT() = default;
MonsterT(const MonsterT &o);
MonsterT(MonsterT&&) FLATBUFFERS_NOEXCEPT = default;
@@ -1298,7 +1326,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VT_SIGNED_ENUM = 100,
VT_TESTREQUIREDNESTEDFLATBUFFER = 102,
VT_SCALAR_KEY_SORTED_TABLES = 104,
VT_NATIVE_INLINE = 106
VT_NATIVE_INLINE = 106,
VT_LONG_ENUM_NON_ENUM_DEFAULT = 108,
VT_LONG_ENUM_NORMAL_DEFAULT = 110
};
const MyGame::Example::Vec3 *pos() const {
return GetStruct<const MyGame::Example::Vec3 *>(VT_POS);
@@ -1643,6 +1673,18 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
MyGame::Example::Test *mutable_native_inline() {
return GetStruct<MyGame::Example::Test *>(VT_NATIVE_INLINE);
}
MyGame::Example::LongEnum long_enum_non_enum_default() const {
return static_cast<MyGame::Example::LongEnum>(GetField<uint64_t>(VT_LONG_ENUM_NON_ENUM_DEFAULT, 0));
}
bool mutate_long_enum_non_enum_default(MyGame::Example::LongEnum _long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0)) {
return SetField<uint64_t>(VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast<uint64_t>(_long_enum_non_enum_default), 0);
}
MyGame::Example::LongEnum long_enum_normal_default() const {
return static_cast<MyGame::Example::LongEnum>(GetField<uint64_t>(VT_LONG_ENUM_NORMAL_DEFAULT, 2ULL));
}
bool mutate_long_enum_normal_default(MyGame::Example::LongEnum _long_enum_normal_default = static_cast<MyGame::Example::LongEnum>(2ULL)) {
return SetField<uint64_t>(VT_LONG_ENUM_NORMAL_DEFAULT, static_cast<uint64_t>(_long_enum_normal_default), 2ULL);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<MyGame::Example::Vec3>(verifier, VT_POS, 8) &&
@@ -1732,6 +1774,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
verifier.VerifyVector(scalar_key_sorted_tables()) &&
verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) &&
VerifyField<MyGame::Example::Test>(verifier, VT_NATIVE_INLINE, 2) &&
VerifyField<uint64_t>(verifier, VT_LONG_ENUM_NON_ENUM_DEFAULT, 8) &&
VerifyField<uint64_t>(verifier, VT_LONG_ENUM_NORMAL_DEFAULT, 8) &&
verifier.EndTable();
}
MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -1920,6 +1964,12 @@ struct MonsterBuilder {
void add_native_inline(const MyGame::Example::Test *native_inline) {
fbb_.AddStruct(Monster::VT_NATIVE_INLINE, native_inline);
}
void add_long_enum_non_enum_default(MyGame::Example::LongEnum long_enum_non_enum_default) {
fbb_.AddElement<uint64_t>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast<uint64_t>(long_enum_non_enum_default), 0);
}
void add_long_enum_normal_default(MyGame::Example::LongEnum long_enum_normal_default) {
fbb_.AddElement<uint64_t>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, static_cast<uint64_t>(long_enum_normal_default), 2ULL);
}
explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
@@ -1984,8 +2034,12 @@ inline flatbuffers::Offset<Monster> CreateMonster(
MyGame::Example::Race signed_enum = MyGame::Example::Race_None,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testrequirednestedflatbuffer = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>>> scalar_key_sorted_tables = 0,
const MyGame::Example::Test *native_inline = nullptr) {
const MyGame::Example::Test *native_inline = nullptr,
MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0),
MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne) {
MonsterBuilder builder_(_fbb);
builder_.add_long_enum_normal_default(long_enum_normal_default);
builder_.add_long_enum_non_enum_default(long_enum_non_enum_default);
builder_.add_non_owning_reference(non_owning_reference);
builder_.add_co_owning_reference(co_owning_reference);
builder_.add_single_weak_reference(single_weak_reference);
@@ -2092,7 +2146,9 @@ inline flatbuffers::Offset<Monster> CreateMonsterDirect(
MyGame::Example::Race signed_enum = MyGame::Example::Race_None,
const std::vector<uint8_t> *testrequirednestedflatbuffer = nullptr,
std::vector<flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables = nullptr,
const MyGame::Example::Test *native_inline = nullptr) {
const MyGame::Example::Test *native_inline = nullptr,
MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0),
MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne) {
auto name__ = name ? _fbb.CreateString(name) : 0;
auto inventory__ = inventory ? _fbb.CreateVector<uint8_t>(*inventory) : 0;
auto test4__ = test4 ? _fbb.CreateVectorOfStructs<MyGame::Example::Test>(*test4) : 0;
@@ -2166,7 +2222,9 @@ inline flatbuffers::Offset<Monster> CreateMonsterDirect(
signed_enum,
testrequirednestedflatbuffer__,
scalar_key_sorted_tables__,
native_inline);
native_inline,
long_enum_non_enum_default,
long_enum_normal_default);
}
flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
@@ -2660,7 +2718,9 @@ inline bool operator==(const MonsterT &lhs, const MonsterT &rhs) {
(lhs.signed_enum == rhs.signed_enum) &&
(lhs.testrequirednestedflatbuffer == rhs.testrequirednestedflatbuffer) &&
(lhs.scalar_key_sorted_tables == rhs.scalar_key_sorted_tables) &&
(lhs.native_inline == rhs.native_inline);
(lhs.native_inline == rhs.native_inline) &&
(lhs.long_enum_non_enum_default == rhs.long_enum_non_enum_default) &&
(lhs.long_enum_normal_default == rhs.long_enum_normal_default);
}
inline bool operator!=(const MonsterT &lhs, const MonsterT &rhs) {
@@ -2711,7 +2771,9 @@ inline MonsterT::MonsterT(const MonsterT &o)
vector_of_enums(o.vector_of_enums),
signed_enum(o.signed_enum),
testrequirednestedflatbuffer(o.testrequirednestedflatbuffer),
native_inline(o.native_inline) {
native_inline(o.native_inline),
long_enum_non_enum_default(o.long_enum_non_enum_default),
long_enum_normal_default(o.long_enum_normal_default) {
testarrayoftables.reserve(o.testarrayoftables.size());
for (const auto &testarrayoftables_ : o.testarrayoftables) { testarrayoftables.emplace_back((testarrayoftables_) ? new MyGame::Example::MonsterT(*testarrayoftables_) : nullptr); }
vector_of_referrables.reserve(o.vector_of_referrables.size());
@@ -2773,6 +2835,8 @@ inline MonsterT &MonsterT::operator=(MonsterT o) FLATBUFFERS_NOEXCEPT {
std::swap(testrequirednestedflatbuffer, o.testrequirednestedflatbuffer);
std::swap(scalar_key_sorted_tables, o.scalar_key_sorted_tables);
std::swap(native_inline, o.native_inline);
std::swap(long_enum_non_enum_default, o.long_enum_non_enum_default);
std::swap(long_enum_normal_default, o.long_enum_normal_default);
return *this;
}
@@ -2843,6 +2907,8 @@ if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_non_owning_
{ auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } }
{ auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver); } else { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr<MyGame::Example::StatT>(_e->Get(_i)->UnPack(_resolver)); }; } } }
{ auto _e = native_inline(); if (_e) _o->native_inline = *_e; }
{ auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; }
{ auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; }
}
inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
@@ -2904,6 +2970,8 @@ inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder
auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0;
auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<flatbuffers::Offset<MyGame::Example::Stat>> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0;
auto _native_inline = &_o->native_inline;
auto _long_enum_non_enum_default = _o->long_enum_non_enum_default;
auto _long_enum_normal_default = _o->long_enum_normal_default;
return MyGame::Example::CreateMonster(
_fbb,
_pos,
@@ -2956,7 +3024,9 @@ inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder
_signed_enum,
_testrequirednestedflatbuffer,
_scalar_key_sorted_tables,
_native_inline);
_native_inline,
_long_enum_non_enum_default,
_long_enum_normal_default);
}
@@ -3423,6 +3493,27 @@ inline const flatbuffers::TypeTable *RaceTypeTable() {
return &tt;
}
inline const flatbuffers::TypeTable *LongEnumTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_ULONG, 0, 0 },
{ flatbuffers::ET_ULONG, 0, 0 },
{ flatbuffers::ET_ULONG, 0, 0 }
};
static const flatbuffers::TypeFunction type_refs[] = {
MyGame::Example::LongEnumTypeTable
};
static const int64_t values[] = { 2ULL, 4ULL, 1099511627776ULL };
static const char * const names[] = {
"LongOne",
"LongTwo",
"LongBig"
};
static const flatbuffers::TypeTable tt = {
flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
inline const flatbuffers::TypeTable *AnyTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_SEQUENCE, 0, -1 },
@@ -3696,7 +3787,9 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() {
{ flatbuffers::ET_CHAR, 0, 11 },
{ flatbuffers::ET_UCHAR, 1, -1 },
{ flatbuffers::ET_SEQUENCE, 1, 5 },
{ flatbuffers::ET_SEQUENCE, 0, 3 }
{ flatbuffers::ET_SEQUENCE, 0, 3 },
{ flatbuffers::ET_ULONG, 0, 12 },
{ flatbuffers::ET_ULONG, 0, 12 }
};
static const flatbuffers::TypeFunction type_refs[] = {
MyGame::Example::Vec3TypeTable,
@@ -3710,7 +3803,8 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() {
MyGame::Example::ReferrableTypeTable,
MyGame::Example::AnyUniqueAliasesTypeTable,
MyGame::Example::AnyAmbiguousAliasesTypeTable,
MyGame::Example::RaceTypeTable
MyGame::Example::RaceTypeTable,
MyGame::Example::LongEnumTypeTable
};
static const char * const names[] = {
"pos",
@@ -3764,10 +3858,12 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() {
"signed_enum",
"testrequirednestedflatbuffer",
"scalar_key_sorted_tables",
"native_inline"
"native_inline",
"long_enum_non_enum_default",
"long_enum_normal_default"
};
static const flatbuffers::TypeTable tt = {
flatbuffers::ST_TABLE, 52, type_codes, type_refs, nullptr, nullptr, names
flatbuffers::ST_TABLE, 54, type_codes, type_refs, nullptr, nullptr, names
};
return &tt;
}

View File

@@ -18,6 +18,11 @@ enum Race:
Race_Dwarf = 1
Race_Elf = 2
enum LongEnum:
LongEnum_LongOne = 2
LongEnum_LongTwo = 4
LongEnum_LongBig = 1099511627776
enum Any:
Any_NONE = 0
Any_Monster = 1
@@ -395,13 +400,17 @@ class Monster : flatbuffers_handle
def native_inline():
let o = buf_.flatbuffers_field_struct(pos_, 106)
return if o: MyGame_Example_Test { buf_, o } else: nil
def long_enum_non_enum_default():
return LongEnum(buf_.flatbuffers_field_int64(pos_, 108, 0))
def long_enum_normal_default():
return LongEnum(buf_.flatbuffers_field_int64(pos_, 110, 2))
def GetRootAsMonster(buf:string): return Monster { buf, buf.flatbuffers_indirect(0) }
struct MonsterBuilder:
b_:flatbuffers_builder
def start():
b_.StartObject(52)
b_.StartObject(54)
return this
def add_pos(pos:flatbuffers_offset):
b_.PrependStructSlot(0, pos)
@@ -556,6 +565,12 @@ struct MonsterBuilder:
def add_native_inline(native_inline:flatbuffers_offset):
b_.PrependStructSlot(51, native_inline)
return this
def add_long_enum_non_enum_default(long_enum_non_enum_default:LongEnum):
b_.PrependUint64Slot(52, long_enum_non_enum_default, 0)
return this
def add_long_enum_normal_default(long_enum_normal_default:LongEnum):
b_.PrependUint64Slot(53, long_enum_normal_default, 2)
return this
def end():
return b_.EndObject()

View File

@@ -23,6 +23,12 @@ class Race(object):
Elf = 2
class LongEnum(object):
LongOne = 2
LongTwo = 4
LongBig = 1099511627776
class Any(object):
NONE = 0
Monster = 1
@@ -1478,7 +1484,21 @@ class Monster(object):
return obj
return None
def MonsterStart(builder): builder.StartObject(52)
# Monster
def LongEnumNonEnumDefault(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(108))
if o != 0:
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
return 0
# Monster
def LongEnumNormalDefault(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(110))
if o != 0:
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
return 2
def MonsterStart(builder): builder.StartObject(54)
def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150)
def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100)
@@ -1560,6 +1580,8 @@ def MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes):
def MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables): builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0)
def MonsterStartScalarKeySortedTablesVector(builder, numElems): return builder.StartVector(4, numElems, 4)
def MonsterAddNativeInline(builder, nativeInline): builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0)
def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0)
def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): builder.PrependUint64Slot(53, longEnumNormalDefault, 2)
def MonsterEnd(builder): return builder.EndObject()
try:
@@ -1622,6 +1644,8 @@ class MonsterT(object):
self.testrequirednestedflatbuffer = None # type: List[int]
self.scalarKeySortedTables = None # type: List[StatT]
self.nativeInline = None # type: Optional[TestT]
self.longEnumNonEnumDefault = 0 # type: int
self.longEnumNormalDefault = 2 # type: int
@classmethod
def InitFromBuf(cls, buf, pos):
@@ -1816,6 +1840,8 @@ class MonsterT(object):
self.scalarKeySortedTables.append(stat_)
if monster.NativeInline() is not None:
self.nativeInline = TestT.InitFromObj(monster.NativeInline())
self.longEnumNonEnumDefault = monster.LongEnumNonEnumDefault()
self.longEnumNormalDefault = monster.LongEnumNormalDefault()
# MonsterT
def Pack(self, builder):
@@ -2067,6 +2093,8 @@ class MonsterT(object):
if self.nativeInline is not None:
nativeInline = self.nativeInline.Pack(builder)
MonsterAddNativeInline(builder, nativeInline)
MonsterAddLongEnumNonEnumDefault(builder, self.longEnumNonEnumDefault)
MonsterAddLongEnumNormalDefault(builder, self.longEnumNormalDefault)
monster = MonsterEnd(builder)
return monster

View File

@@ -17,7 +17,11 @@ class Color {
factory Color.fromValue(int value) {
final result = values[value];
if (result == null) {
throw StateError('Invalid value $value for bit flag enum Color');
if (value == 0) {
return Color._(0);
} else {
throw StateError('Invalid value $value for bit flag enum Color');
}
}
return result;
}
@@ -66,7 +70,7 @@ class Race {
factory Race.fromValue(int value) {
final result = values[value];
if (result == null) {
throw StateError('Invalid value $value for bit flag enum Race');
throw StateError('Invalid value $value for bit flag enum Race');
}
return result;
}
@@ -107,6 +111,54 @@ class _RaceReader extends fb.Reader<Race> {
Race.fromValue(const fb.Int8Reader().read(bc, offset));
}
class LongEnum {
final int value;
const LongEnum._(this.value);
factory LongEnum.fromValue(int value) {
final result = values[value];
if (result == null) {
if (value == 0) {
return LongEnum._(0);
} else {
throw StateError('Invalid value $value for bit flag enum LongEnum');
}
}
return result;
}
static LongEnum? _createOrNull(int? value) =>
value == null ? null : LongEnum.fromValue(value);
static bool containsValue(int value) => values.containsKey(value);
static const LongEnum LongOne = LongEnum._(2);
static const LongEnum LongTwo = LongEnum._(4);
static const LongEnum LongBig = LongEnum._(1099511627776);
static const Map<int, LongEnum> values = {
2: LongOne,
4: LongTwo,
1099511627776: LongBig};
static const fb.Reader<LongEnum> reader = _LongEnumReader();
@override
String toString() {
return 'LongEnum{value: $value}';
}
}
class _LongEnumReader extends fb.Reader<LongEnum> {
const _LongEnumReader();
@override
int get size => 1;
@override
LongEnum read(fb.BufferContext bc, int offset) =>
LongEnum.fromValue(const fb.Uint64Reader().read(bc, offset));
}
class AnyTypeId {
final int value;
const AnyTypeId._(this.value);
@@ -114,7 +166,7 @@ class AnyTypeId {
factory AnyTypeId.fromValue(int value) {
final result = values[value];
if (result == null) {
throw StateError('Invalid value $value for bit flag enum AnyTypeId');
throw StateError('Invalid value $value for bit flag enum AnyTypeId');
}
return result;
}
@@ -162,7 +214,7 @@ class AnyUniqueAliasesTypeId {
factory AnyUniqueAliasesTypeId.fromValue(int value) {
final result = values[value];
if (result == null) {
throw StateError('Invalid value $value for bit flag enum AnyUniqueAliasesTypeId');
throw StateError('Invalid value $value for bit flag enum AnyUniqueAliasesTypeId');
}
return result;
}
@@ -210,7 +262,7 @@ class AnyAmbiguousAliasesTypeId {
factory AnyAmbiguousAliasesTypeId.fromValue(int value) {
final result = values[value];
if (result == null) {
throw StateError('Invalid value $value for bit flag enum AnyAmbiguousAliasesTypeId');
throw StateError('Invalid value $value for bit flag enum AnyAmbiguousAliasesTypeId');
}
return result;
}
@@ -1116,10 +1168,12 @@ class Monster {
List<int>? get testrequirednestedflatbuffer => const fb.Uint8ListReader().vTableGetNullable(_bc, _bcOffset, 102);
List<Stat>? get scalarKeySortedTables => const fb.ListReader<Stat>(Stat.reader).vTableGetNullable(_bc, _bcOffset, 104);
Test? get nativeInline => Test.reader.vTableGetNullable(_bc, _bcOffset, 106);
LongEnum get longEnumNonEnumDefault => LongEnum.fromValue(const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 108, 0));
LongEnum get longEnumNormalDefault => LongEnum.fromValue(const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 110, 2));
@override
String toString() {
return 'Monster{pos: $pos, mana: $mana, hp: $hp, name: $name, inventory: $inventory, color: $color, testType: $testType, test: $test, test4: $test4, testarrayofstring: $testarrayofstring, testarrayoftables: $testarrayoftables, enemy: $enemy, testnestedflatbuffer: $testnestedflatbuffer, testempty: $testempty, testbool: $testbool, testhashs32Fnv1: $testhashs32Fnv1, testhashu32Fnv1: $testhashu32Fnv1, testhashs64Fnv1: $testhashs64Fnv1, testhashu64Fnv1: $testhashu64Fnv1, testhashs32Fnv1a: $testhashs32Fnv1a, testhashu32Fnv1a: $testhashu32Fnv1a, testhashs64Fnv1a: $testhashs64Fnv1a, testhashu64Fnv1a: $testhashu64Fnv1a, testarrayofbools: $testarrayofbools, testf: $testf, testf2: $testf2, testf3: $testf3, testarrayofstring2: $testarrayofstring2, testarrayofsortedstruct: $testarrayofsortedstruct, flex: $flex, test5: $test5, vectorOfLongs: $vectorOfLongs, vectorOfDoubles: $vectorOfDoubles, parentNamespaceTest: $parentNamespaceTest, vectorOfReferrables: $vectorOfReferrables, singleWeakReference: $singleWeakReference, vectorOfWeakReferences: $vectorOfWeakReferences, vectorOfStrongReferrables: $vectorOfStrongReferrables, coOwningReference: $coOwningReference, vectorOfCoOwningReferences: $vectorOfCoOwningReferences, nonOwningReference: $nonOwningReference, vectorOfNonOwningReferences: $vectorOfNonOwningReferences, anyUniqueType: $anyUniqueType, anyUnique: $anyUnique, anyAmbiguousType: $anyAmbiguousType, anyAmbiguous: $anyAmbiguous, vectorOfEnums: $vectorOfEnums, signedEnum: $signedEnum, testrequirednestedflatbuffer: $testrequirednestedflatbuffer, scalarKeySortedTables: $scalarKeySortedTables, nativeInline: $nativeInline}';
return 'Monster{pos: $pos, mana: $mana, hp: $hp, name: $name, inventory: $inventory, color: $color, testType: $testType, test: $test, test4: $test4, testarrayofstring: $testarrayofstring, testarrayoftables: $testarrayoftables, enemy: $enemy, testnestedflatbuffer: $testnestedflatbuffer, testempty: $testempty, testbool: $testbool, testhashs32Fnv1: $testhashs32Fnv1, testhashu32Fnv1: $testhashu32Fnv1, testhashs64Fnv1: $testhashs64Fnv1, testhashu64Fnv1: $testhashu64Fnv1, testhashs32Fnv1a: $testhashs32Fnv1a, testhashu32Fnv1a: $testhashu32Fnv1a, testhashs64Fnv1a: $testhashs64Fnv1a, testhashu64Fnv1a: $testhashu64Fnv1a, testarrayofbools: $testarrayofbools, testf: $testf, testf2: $testf2, testf3: $testf3, testarrayofstring2: $testarrayofstring2, testarrayofsortedstruct: $testarrayofsortedstruct, flex: $flex, test5: $test5, vectorOfLongs: $vectorOfLongs, vectorOfDoubles: $vectorOfDoubles, parentNamespaceTest: $parentNamespaceTest, vectorOfReferrables: $vectorOfReferrables, singleWeakReference: $singleWeakReference, vectorOfWeakReferences: $vectorOfWeakReferences, vectorOfStrongReferrables: $vectorOfStrongReferrables, coOwningReference: $coOwningReference, vectorOfCoOwningReferences: $vectorOfCoOwningReferences, nonOwningReference: $nonOwningReference, vectorOfNonOwningReferences: $vectorOfNonOwningReferences, anyUniqueType: $anyUniqueType, anyUnique: $anyUnique, anyAmbiguousType: $anyAmbiguousType, anyAmbiguous: $anyAmbiguous, vectorOfEnums: $vectorOfEnums, signedEnum: $signedEnum, testrequirednestedflatbuffer: $testrequirednestedflatbuffer, scalarKeySortedTables: $scalarKeySortedTables, nativeInline: $nativeInline, longEnumNonEnumDefault: $longEnumNonEnumDefault, longEnumNormalDefault: $longEnumNormalDefault}';
}
MonsterT unpack() => MonsterT(
@@ -1173,7 +1227,9 @@ class Monster {
signedEnum: signedEnum,
testrequirednestedflatbuffer: const fb.Uint8ListReader(lazy: false).vTableGetNullable(_bc, _bcOffset, 102),
scalarKeySortedTables: scalarKeySortedTables?.map((e) => e.unpack()).toList(),
nativeInline: nativeInline?.unpack());
nativeInline: nativeInline?.unpack(),
longEnumNonEnumDefault: longEnumNonEnumDefault,
longEnumNormalDefault: longEnumNormalDefault);
static int pack(fb.Builder fbBuilder, MonsterT? object) {
if (object == null) return 0;
@@ -1236,6 +1292,8 @@ class MonsterT implements fb.Packable {
List<int>? testrequirednestedflatbuffer;
List<StatT>? scalarKeySortedTables;
TestT? nativeInline;
LongEnum longEnumNonEnumDefault;
LongEnum longEnumNormalDefault;
MonsterT({
this.pos,
@@ -1288,7 +1346,9 @@ class MonsterT implements fb.Packable {
this.signedEnum = Race.None,
this.testrequirednestedflatbuffer,
this.scalarKeySortedTables,
this.nativeInline});
this.nativeInline,
this.longEnumNonEnumDefault = const LongEnum._(0),
this.longEnumNormalDefault = LongEnum.LongOne});
@override
int pack(fb.Builder fbBuilder) {
@@ -1349,7 +1409,7 @@ class MonsterT implements fb.Packable {
: fbBuilder.writeListUint8(testrequirednestedflatbuffer!);
final int? scalarKeySortedTablesOffset = scalarKeySortedTables == null ? null
: fbBuilder.writeList(scalarKeySortedTables!.map((b) => b.pack(fbBuilder)).toList());
fbBuilder.startTable(51);
fbBuilder.startTable(54);
if (pos != null) {
fbBuilder.addStruct(0, pos!.pack(fbBuilder));
}
@@ -1405,12 +1465,14 @@ class MonsterT implements fb.Packable {
if (nativeInline != null) {
fbBuilder.addStruct(51, nativeInline!.pack(fbBuilder));
}
fbBuilder.addUint64(52, longEnumNonEnumDefault.value);
fbBuilder.addUint64(53, longEnumNormalDefault.value);
return fbBuilder.endTable();
}
@override
String toString() {
return 'MonsterT{pos: $pos, mana: $mana, hp: $hp, name: $name, inventory: $inventory, color: $color, testType: $testType, test: $test, test4: $test4, testarrayofstring: $testarrayofstring, testarrayoftables: $testarrayoftables, enemy: $enemy, testnestedflatbuffer: $testnestedflatbuffer, testempty: $testempty, testbool: $testbool, testhashs32Fnv1: $testhashs32Fnv1, testhashu32Fnv1: $testhashu32Fnv1, testhashs64Fnv1: $testhashs64Fnv1, testhashu64Fnv1: $testhashu64Fnv1, testhashs32Fnv1a: $testhashs32Fnv1a, testhashu32Fnv1a: $testhashu32Fnv1a, testhashs64Fnv1a: $testhashs64Fnv1a, testhashu64Fnv1a: $testhashu64Fnv1a, testarrayofbools: $testarrayofbools, testf: $testf, testf2: $testf2, testf3: $testf3, testarrayofstring2: $testarrayofstring2, testarrayofsortedstruct: $testarrayofsortedstruct, flex: $flex, test5: $test5, vectorOfLongs: $vectorOfLongs, vectorOfDoubles: $vectorOfDoubles, parentNamespaceTest: $parentNamespaceTest, vectorOfReferrables: $vectorOfReferrables, singleWeakReference: $singleWeakReference, vectorOfWeakReferences: $vectorOfWeakReferences, vectorOfStrongReferrables: $vectorOfStrongReferrables, coOwningReference: $coOwningReference, vectorOfCoOwningReferences: $vectorOfCoOwningReferences, nonOwningReference: $nonOwningReference, vectorOfNonOwningReferences: $vectorOfNonOwningReferences, anyUniqueType: $anyUniqueType, anyUnique: $anyUnique, anyAmbiguousType: $anyAmbiguousType, anyAmbiguous: $anyAmbiguous, vectorOfEnums: $vectorOfEnums, signedEnum: $signedEnum, testrequirednestedflatbuffer: $testrequirednestedflatbuffer, scalarKeySortedTables: $scalarKeySortedTables, nativeInline: $nativeInline}';
return 'MonsterT{pos: $pos, mana: $mana, hp: $hp, name: $name, inventory: $inventory, color: $color, testType: $testType, test: $test, test4: $test4, testarrayofstring: $testarrayofstring, testarrayoftables: $testarrayoftables, enemy: $enemy, testnestedflatbuffer: $testnestedflatbuffer, testempty: $testempty, testbool: $testbool, testhashs32Fnv1: $testhashs32Fnv1, testhashu32Fnv1: $testhashu32Fnv1, testhashs64Fnv1: $testhashs64Fnv1, testhashu64Fnv1: $testhashu64Fnv1, testhashs32Fnv1a: $testhashs32Fnv1a, testhashu32Fnv1a: $testhashu32Fnv1a, testhashs64Fnv1a: $testhashs64Fnv1a, testhashu64Fnv1a: $testhashu64Fnv1a, testarrayofbools: $testarrayofbools, testf: $testf, testf2: $testf2, testf3: $testf3, testarrayofstring2: $testarrayofstring2, testarrayofsortedstruct: $testarrayofsortedstruct, flex: $flex, test5: $test5, vectorOfLongs: $vectorOfLongs, vectorOfDoubles: $vectorOfDoubles, parentNamespaceTest: $parentNamespaceTest, vectorOfReferrables: $vectorOfReferrables, singleWeakReference: $singleWeakReference, vectorOfWeakReferences: $vectorOfWeakReferences, vectorOfStrongReferrables: $vectorOfStrongReferrables, coOwningReference: $coOwningReference, vectorOfCoOwningReferences: $vectorOfCoOwningReferences, nonOwningReference: $nonOwningReference, vectorOfNonOwningReferences: $vectorOfNonOwningReferences, anyUniqueType: $anyUniqueType, anyUnique: $anyUnique, anyAmbiguousType: $anyAmbiguousType, anyAmbiguous: $anyAmbiguous, vectorOfEnums: $vectorOfEnums, signedEnum: $signedEnum, testrequirednestedflatbuffer: $testrequirednestedflatbuffer, scalarKeySortedTables: $scalarKeySortedTables, nativeInline: $nativeInline, longEnumNonEnumDefault: $longEnumNonEnumDefault, longEnumNormalDefault: $longEnumNormalDefault}';
}
}
@@ -1428,7 +1490,7 @@ class MonsterBuilder {
final fb.Builder fbBuilder;
void begin() {
fbBuilder.startTable(51);
fbBuilder.startTable(54);
}
int addPos(int offset) {
@@ -1635,6 +1697,14 @@ class MonsterBuilder {
fbBuilder.addStruct(51, offset);
return fbBuilder.offset;
}
int addLongEnumNonEnumDefault(LongEnum? longEnumNonEnumDefault) {
fbBuilder.addUint64(52, longEnumNonEnumDefault?.value);
return fbBuilder.offset;
}
int addLongEnumNormalDefault(LongEnum? longEnumNormalDefault) {
fbBuilder.addUint64(53, longEnumNormalDefault?.value);
return fbBuilder.offset;
}
int finish() {
return fbBuilder.endTable();
@@ -1693,6 +1763,8 @@ class MonsterObjectBuilder extends fb.ObjectBuilder {
final List<int>? _testrequirednestedflatbuffer;
final List<StatObjectBuilder>? _scalarKeySortedTables;
final TestObjectBuilder? _nativeInline;
final LongEnum? _longEnumNonEnumDefault;
final LongEnum? _longEnumNormalDefault;
MonsterObjectBuilder({
Vec3ObjectBuilder? pos,
@@ -1746,6 +1818,8 @@ class MonsterObjectBuilder extends fb.ObjectBuilder {
List<int>? testrequirednestedflatbuffer,
List<StatObjectBuilder>? scalarKeySortedTables,
TestObjectBuilder? nativeInline,
LongEnum? longEnumNonEnumDefault,
LongEnum? longEnumNormalDefault,
})
: _pos = pos,
_mana = mana,
@@ -1797,7 +1871,9 @@ class MonsterObjectBuilder extends fb.ObjectBuilder {
_signedEnum = signedEnum,
_testrequirednestedflatbuffer = testrequirednestedflatbuffer,
_scalarKeySortedTables = scalarKeySortedTables,
_nativeInline = nativeInline;
_nativeInline = nativeInline,
_longEnumNonEnumDefault = longEnumNonEnumDefault,
_longEnumNormalDefault = longEnumNormalDefault;
/// Finish building, and store into the [fbBuilder].
@override
@@ -1850,7 +1926,7 @@ class MonsterObjectBuilder extends fb.ObjectBuilder {
: fbBuilder.writeListUint8(_testrequirednestedflatbuffer!);
final int? scalarKeySortedTablesOffset = _scalarKeySortedTables == null ? null
: fbBuilder.writeList(_scalarKeySortedTables!.map((b) => b.getOrCreateOffset(fbBuilder)).toList());
fbBuilder.startTable(51);
fbBuilder.startTable(54);
if (_pos != null) {
fbBuilder.addStruct(0, _pos!.finish(fbBuilder));
}
@@ -1906,6 +1982,8 @@ class MonsterObjectBuilder extends fb.ObjectBuilder {
if (_nativeInline != null) {
fbBuilder.addStruct(51, _nativeInline!.finish(fbBuilder));
}
fbBuilder.addUint64(52, _longEnumNonEnumDefault?.value);
fbBuilder.addUint64(53, _longEnumNormalDefault?.value);
return fbBuilder.endTable();
}

View File

@@ -7,6 +7,8 @@ pub mod my_game {
pub use self::color_generated::*;
mod race_generated;
pub use self::race_generated::*;
mod long_enum_generated;
pub use self::long_enum_generated::*;
mod any_generated;
pub use self::any_generated::*;
mod any_unique_aliases_generated;

View File

@@ -0,0 +1,74 @@
// automatically generated by the FlatBuffers compiler, do not modify
extern crate flatbuffers;
use std::mem;
use std::cmp::Ordering;
extern crate serde;
use self::serde::ser::{Serialize, Serializer, SerializeStruct};
use self::flatbuffers::{EndianScalar, Follow};
use super::*;
#[allow(non_upper_case_globals)]
mod bitflags_long_enum {
flatbuffers::bitflags::bitflags! {
#[derive(Default)]
pub struct LongEnum: u64 {
const LongOne = 2;
const LongTwo = 4;
const LongBig = 1099511627776;
}
}
}
pub use self::bitflags_long_enum::LongEnum;
impl Serialize for LongEnum {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_u32(self.bits() as u32)
}
}
impl<'a> flatbuffers::Follow<'a> for LongEnum {
type Inner = Self;
#[inline]
fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
let b = unsafe {
flatbuffers::read_scalar_at::<u64>(buf, loc)
};
unsafe { Self::from_bits_unchecked(b) }
}
}
impl flatbuffers::Push for LongEnum {
type Output = LongEnum;
#[inline]
fn push(&self, dst: &mut [u8], _rest: &[u8]) {
unsafe { flatbuffers::emplace_scalar::<u64>(dst, self.bits()); }
}
}
impl flatbuffers::EndianScalar for LongEnum {
#[inline]
fn to_little_endian(self) -> Self {
let b = u64::to_le(self.bits());
unsafe { Self::from_bits_unchecked(b) }
}
#[inline]
#[allow(clippy::wrong_self_convention)]
fn from_little_endian(self) -> Self {
let b = u64::from_le(self.bits());
unsafe { Self::from_bits_unchecked(b) }
}
}
impl<'a> flatbuffers::Verifiable for LongEnum {
#[inline]
fn run_verifier(
v: &mut flatbuffers::Verifier, pos: usize
) -> Result<(), flatbuffers::InvalidFlatbuffer> {
use self::flatbuffers::Verifiable;
u64::run_verifier(v, pos)
}
}
impl flatbuffers::SimpleToVerifyInSlice for LongEnum {}

View File

@@ -74,6 +74,8 @@ impl<'a> Monster<'a> {
pub const VT_TESTREQUIREDNESTEDFLATBUFFER: flatbuffers::VOffsetT = 102;
pub const VT_SCALAR_KEY_SORTED_TABLES: flatbuffers::VOffsetT = 104;
pub const VT_NATIVE_INLINE: flatbuffers::VOffsetT = 106;
pub const VT_LONG_ENUM_NON_ENUM_DEFAULT: flatbuffers::VOffsetT = 108;
pub const VT_LONG_ENUM_NORMAL_DEFAULT: flatbuffers::VOffsetT = 110;
pub const fn get_fully_qualified_name() -> &'static str {
"MyGame.Example.Monster"
@@ -89,6 +91,8 @@ impl<'a> Monster<'a> {
args: &'args MonsterArgs<'args>
) -> flatbuffers::WIPOffset<Monster<'bldr>> {
let mut builder = MonsterBuilder::new(_fbb);
builder.add_long_enum_normal_default(args.long_enum_normal_default);
builder.add_long_enum_non_enum_default(args.long_enum_non_enum_default);
builder.add_non_owning_reference(args.non_owning_reference);
builder.add_co_owning_reference(args.co_owning_reference);
builder.add_single_weak_reference(args.single_weak_reference);
@@ -299,6 +303,8 @@ impl<'a> Monster<'a> {
let native_inline = self.native_inline().map(|x| {
x.unpack()
});
let long_enum_non_enum_default = self.long_enum_non_enum_default();
let long_enum_normal_default = self.long_enum_normal_default();
MonsterT {
pos,
mana,
@@ -348,6 +354,8 @@ impl<'a> Monster<'a> {
testrequirednestedflatbuffer,
scalar_key_sorted_tables,
native_inline,
long_enum_non_enum_default,
long_enum_normal_default,
}
}
@@ -580,6 +588,14 @@ impl<'a> Monster<'a> {
self._tab.get::<Test>(Monster::VT_NATIVE_INLINE, None)
}
#[inline]
pub fn long_enum_non_enum_default(&self) -> LongEnum {
self._tab.get::<LongEnum>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, Some(Default::default())).unwrap()
}
#[inline]
pub fn long_enum_normal_default(&self) -> LongEnum {
self._tab.get::<LongEnum>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, Some(LongEnum::LongOne)).unwrap()
}
#[inline]
#[allow(non_snake_case)]
pub fn test_as_monster(&self) -> Option<Monster<'a>> {
if self.test_type() == Any::Monster {
@@ -747,6 +763,8 @@ impl flatbuffers::Verifiable for Monster<'_> {
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("testrequirednestedflatbuffer", Self::VT_TESTREQUIREDNESTEDFLATBUFFER, false)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Stat>>>>("scalar_key_sorted_tables", Self::VT_SCALAR_KEY_SORTED_TABLES, false)?
.visit_field::<Test>("native_inline", Self::VT_NATIVE_INLINE, false)?
.visit_field::<LongEnum>("long_enum_non_enum_default", Self::VT_LONG_ENUM_NON_ENUM_DEFAULT, false)?
.visit_field::<LongEnum>("long_enum_normal_default", Self::VT_LONG_ENUM_NORMAL_DEFAULT, false)?
.finish();
Ok(())
}
@@ -803,6 +821,8 @@ pub struct MonsterArgs<'a> {
pub testrequirednestedflatbuffer: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
pub scalar_key_sorted_tables: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Stat<'a>>>>>,
pub native_inline: Option<&'a Test>,
pub long_enum_non_enum_default: LongEnum,
pub long_enum_normal_default: LongEnum,
}
impl<'a> Default for MonsterArgs<'a> {
#[inline]
@@ -859,6 +879,8 @@ impl<'a> Default for MonsterArgs<'a> {
testrequirednestedflatbuffer: None,
scalar_key_sorted_tables: None,
native_inline: None,
long_enum_non_enum_default: Default::default(),
long_enum_normal_default: LongEnum::LongOne,
}
}
}
@@ -868,7 +890,7 @@ impl Serialize for Monster<'_> {
where
S: Serializer,
{
let mut s = serializer.serialize_struct("Monster", 52)?;
let mut s = serializer.serialize_struct("Monster", 54)?;
if let Some(f) = self.pos() {
s.serialize_field("pos", &f)?;
} else {
@@ -1074,6 +1096,8 @@ impl Serialize for Monster<'_> {
} else {
s.skip_field("native_inline")?;
}
s.serialize_field("long_enum_non_enum_default", &self.long_enum_non_enum_default())?;
s.serialize_field("long_enum_normal_default", &self.long_enum_normal_default())?;
s.end()
}
}
@@ -1288,6 +1312,14 @@ impl<'a: 'b, 'b> MonsterBuilder<'a, 'b> {
self.fbb_.push_slot_always::<&Test>(Monster::VT_NATIVE_INLINE, native_inline);
}
#[inline]
pub fn add_long_enum_non_enum_default(&mut self, long_enum_non_enum_default: LongEnum) {
self.fbb_.push_slot::<LongEnum>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, long_enum_non_enum_default, Default::default());
}
#[inline]
pub fn add_long_enum_normal_default(&mut self, long_enum_normal_default: LongEnum) {
self.fbb_.push_slot::<LongEnum>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, long_enum_normal_default, LongEnum::LongOne);
}
#[inline]
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MonsterBuilder<'a, 'b> {
let start = _fbb.start_table();
MonsterBuilder {
@@ -1435,6 +1467,8 @@ impl std::fmt::Debug for Monster<'_> {
ds.field("testrequirednestedflatbuffer", &self.testrequirednestedflatbuffer());
ds.field("scalar_key_sorted_tables", &self.scalar_key_sorted_tables());
ds.field("native_inline", &self.native_inline());
ds.field("long_enum_non_enum_default", &self.long_enum_non_enum_default());
ds.field("long_enum_normal_default", &self.long_enum_normal_default());
ds.finish()
}
}
@@ -1489,6 +1523,8 @@ pub struct MonsterT {
pub testrequirednestedflatbuffer: Option<Vec<u8>>,
pub scalar_key_sorted_tables: Option<Vec<StatT>>,
pub native_inline: Option<TestT>,
pub long_enum_non_enum_default: LongEnum,
pub long_enum_normal_default: LongEnum,
}
impl Default for MonsterT {
fn default() -> Self {
@@ -1541,6 +1577,8 @@ impl Default for MonsterT {
testrequirednestedflatbuffer: None,
scalar_key_sorted_tables: None,
native_inline: None,
long_enum_non_enum_default: Default::default(),
long_enum_normal_default: LongEnum::LongOne,
}
}
}
@@ -1651,6 +1689,8 @@ impl MonsterT {
});
let native_inline_tmp = self.native_inline.as_ref().map(|x| x.pack());
let native_inline = native_inline_tmp.as_ref();
let long_enum_non_enum_default = self.long_enum_non_enum_default;
let long_enum_normal_default = self.long_enum_normal_default;
Monster::create(_fbb, &MonsterArgs{
pos,
mana,
@@ -1703,6 +1743,8 @@ impl MonsterT {
testrequirednestedflatbuffer,
scalar_key_sorted_tables,
native_inline,
long_enum_non_enum_default,
long_enum_normal_default,
})
}
}

View File

@@ -0,0 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
export enum LongEnum{
LongOne = '2',
LongTwo = '4',
LongBig = '1099511627776'
}

View File

@@ -651,12 +651,44 @@ nativeInline(obj?:Test):Test|null {
return offset ? (obj || new Test()).__init(this.bb_pos + offset, this.bb!) : null;
}
longEnumNonEnumDefault():bigint {
const offset = this.bb!.__offset(this.bb_pos, 108);
return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('0');
}
mutate_long_enum_non_enum_default(value:bigint):boolean {
const offset = this.bb!.__offset(this.bb_pos, 108);
if (offset === 0) {
return false;
}
this.bb!.writeUint64(this.bb_pos + offset, value);
return true;
}
longEnumNormalDefault():bigint {
const offset = this.bb!.__offset(this.bb_pos, 110);
return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('2');
}
mutate_long_enum_normal_default(value:bigint):boolean {
const offset = this.bb!.__offset(this.bb_pos, 110);
if (offset === 0) {
return false;
}
this.bb!.writeUint64(this.bb_pos + offset, value);
return true;
}
static getFullyQualifiedName():string {
return 'MyGame.Example.Monster';
}
static startMonster(builder:flatbuffers.Builder) {
builder.startObject(52);
builder.startObject(54);
}
static addPos(builder:flatbuffers.Builder, posOffset:flatbuffers.Offset) {
@@ -1084,6 +1116,14 @@ static addNativeInline(builder:flatbuffers.Builder, nativeInlineOffset:flatbuffe
builder.addFieldStruct(51, nativeInlineOffset, 0);
}
static addLongEnumNonEnumDefault(builder:flatbuffers.Builder, longEnumNonEnumDefault:bigint) {
builder.addFieldInt64(52, longEnumNonEnumDefault, BigInt('0'));
}
static addLongEnumNormalDefault(builder:flatbuffers.Builder, longEnumNormalDefault:bigint) {
builder.addFieldInt64(53, longEnumNormalDefault, BigInt('2'));
}
static endMonster(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
builder.requiredField(offset, 10) // name
@@ -1171,7 +1211,9 @@ unpack(): MonsterT {
this.signedEnum(),
this.bb!.createScalarList(this.testrequirednestedflatbuffer.bind(this), this.testrequirednestedflatbufferLength()),
this.bb!.createObjList(this.scalarKeySortedTables.bind(this), this.scalarKeySortedTablesLength()),
(this.nativeInline() !== null ? this.nativeInline()!.unpack() : null)
(this.nativeInline() !== null ? this.nativeInline()!.unpack() : null),
this.longEnumNonEnumDefault(),
this.longEnumNormalDefault()
);
}
@@ -1240,6 +1282,8 @@ unpackTo(_o: MonsterT): void {
_o.testrequirednestedflatbuffer = this.bb!.createScalarList(this.testrequirednestedflatbuffer.bind(this), this.testrequirednestedflatbufferLength());
_o.scalarKeySortedTables = this.bb!.createObjList(this.scalarKeySortedTables.bind(this), this.scalarKeySortedTablesLength());
_o.nativeInline = (this.nativeInline() !== null ? this.nativeInline()!.unpack() : null);
_o.longEnumNonEnumDefault = this.longEnumNonEnumDefault();
_o.longEnumNormalDefault = this.longEnumNormalDefault();
}
}
@@ -1295,7 +1339,9 @@ constructor(
public signedEnum: Race = Race.None,
public testrequirednestedflatbuffer: (number)[] = [],
public scalarKeySortedTables: (StatT)[] = [],
public nativeInline: TestT|null = null
public nativeInline: TestT|null = null,
public longEnumNonEnumDefault: bigint = BigInt('0'),
public longEnumNormalDefault: bigint = BigInt('2')
){}
@@ -1380,6 +1426,8 @@ pack(builder:flatbuffers.Builder): flatbuffers.Offset {
Monster.addTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer);
Monster.addScalarKeySortedTables(builder, scalarKeySortedTables);
Monster.addNativeInline(builder, (this.nativeInline !== null ? this.nativeInline!.pack(builder) : 0));
Monster.addLongEnumNonEnumDefault(builder, this.longEnumNonEnumDefault);
Monster.addLongEnumNormalDefault(builder, this.longEnumNormalDefault);
return Monster.endMonster(builder);
}

View File

@@ -191,6 +191,8 @@ fn object_api_defaults() {
testrequirednestedflatbuffer: None, // despite the name, it is not required.
scalar_key_sorted_tables: None,
native_inline: None,
long_enum_non_enum_default: Default::default(),
long_enum_normal_default: LongEnum::LongOne,
}
);
}
@@ -1832,7 +1834,8 @@ mod write_and_read_examples {
any_unique: None, any_ambiguous_type: NONE, any_ambiguous: None, \
vector_of_enums: None, signed_enum: None, \
testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, \
native_inline: None }, \
native_inline: None, long_enum_non_enum_default: (empty), \
long_enum_normal_default: LongOne }, \
test4: Some([Test { a: 10, b: 20 }, Test { a: 30, b: 40 }]), \
testarrayofstring: Some([\"test1\", \"test2\"]), \
testarrayoftables: None, enemy: None, testnestedflatbuffer: None, \
@@ -1851,7 +1854,8 @@ mod write_and_read_examples {
any_unique: None, any_ambiguous_type: NONE, any_ambiguous: None, \
vector_of_enums: None, signed_enum: None, \
testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, \
native_inline: None }"
native_inline: None, long_enum_non_enum_default: (empty), \
long_enum_normal_default: LongOne }"
);
}