From 3ab8fe0d710033cefee63ea5b96d9222f41a79ee Mon Sep 17 00:00:00 2001 From: MegaMech <7255464+MegaMech@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:52:01 -0600 Subject: [PATCH] Editor matrix, icons, rotation, impl light --- src/ending/code_80280000.c | 1 + src/ending/podium_ceremony_actors.c | 1 + src/engine/CoreMath.h | 5 + src/engine/World.cpp | 14 +- src/engine/World.h | 6 +- src/engine/courses/Course.cpp | 1 + src/engine/editor/Collision.cpp | 177 +-- src/engine/editor/Collision.h | 5 +- src/engine/editor/Editor.cpp | 186 +-- src/engine/editor/Editor.h | 10 +- src/engine/editor/EditorMath.cpp | 76 +- src/engine/editor/EditorMath.h | 28 +- src/engine/editor/GameObject.cpp | 30 + src/engine/editor/GameObject.h | 44 + src/engine/editor/Gizmo.cpp | 101 +- src/engine/editor/Gizmo.h | 504 +------ src/engine/editor/Handle.cpp | 493 ++++++ src/engine/editor/Handle.h | 7 + src/engine/editor/Light.cpp | 75 + src/engine/editor/Light.h | 2142 +++++++++++++++++++++++++++ src/engine/editor/ObjectPicker.cpp | 44 +- src/engine/editor/ObjectPicker.h | 14 +- src/main.c | 1 + src/port/Game.cpp | 13 +- src/port/Game.h | 4 +- src/port/ui/ContentBrowser.cpp | 2 +- src/port/ui/ContentBrowser.h | 2 +- src/port/ui/ImguiUI.cpp | 8 +- src/port/ui/SceneExplorer.cpp | 6 +- src/port/ui/SceneExplorer.h | 2 +- src/port/ui/Tools.cpp | 49 +- src/port/ui/Tools.h | 2 +- src/port/ui/TrackProperties.cpp | 2 +- src/port/ui/TrackProperties.h | 2 +- src/racing/math_util.c | 3 +- 35 files changed, 3247 insertions(+), 813 deletions(-) create mode 100644 src/engine/editor/GameObject.cpp create mode 100644 src/engine/editor/GameObject.h create mode 100644 src/engine/editor/Handle.cpp create mode 100644 src/engine/editor/Handle.h create mode 100644 src/engine/editor/Light.cpp create mode 100644 src/engine/editor/Light.h diff --git a/src/ending/code_80280000.c b/src/ending/code_80280000.c index b4d5ca103..927fcce2e 100644 --- a/src/ending/code_80280000.c +++ b/src/ending/code_80280000.c @@ -46,6 +46,7 @@ void func_80280038(void) { Mat4 matrix; ClearMatrixPools(); + Editor_ClearMatrix(); gMatrixObjectCount = 0; gMatrixEffectCount = 0; diff --git a/src/ending/podium_ceremony_actors.c b/src/ending/podium_ceremony_actors.c index c7698893d..288d21897 100644 --- a/src/ending/podium_ceremony_actors.c +++ b/src/ending/podium_ceremony_actors.c @@ -452,6 +452,7 @@ void func_80281540(void) { void podium_ceremony_loop(void) { ClearMatrixPools(); + Editor_ClearMatrix(); gMatrixObjectCount = 0; D_802874FC = 0; update_camera_podium_ceremony(); diff --git a/src/engine/CoreMath.h b/src/engine/CoreMath.h index 062692776..83dd540ee 100644 --- a/src/engine/CoreMath.h +++ b/src/engine/CoreMath.h @@ -34,6 +34,7 @@ struct FVector { return x * other.x + y * other.y + z * other.z; } + FVector Cross(const FVector& other) const { return FVector( y * other.z - z * other.y, @@ -42,6 +43,10 @@ struct FVector { ); } + float Magnitude() const { + return std::sqrt(x * x + y * y + z * z); + } + FVector Normalize() const { float len = std::sqrt(x * x + y * y + z * z); return FVector( diff --git a/src/engine/World.cpp b/src/engine/World.cpp index 133aa75cd..aae54ab10 100644 --- a/src/engine/World.cpp +++ b/src/engine/World.cpp @@ -8,6 +8,8 @@ #include "objects/Object.h" #include "port/Game.h" +#include "editor/GameObject.h" + extern "C" { #include "camera.h" #include "objects.h" @@ -117,9 +119,9 @@ AActor* World::AddActor(AActor* actor) { Actors.push_back(actor); if (actor->Model != NULL) { - gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, (Gfx*)LOAD_ASSET_RAW(actor->Model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); + gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, &actor->Rot, nullptr, (Gfx*)LOAD_ASSET_RAW(actor->Model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); } else { - gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); + gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, &actor->Rot, nullptr, nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); } return Actors.back(); } @@ -135,9 +137,9 @@ struct Actor* World::AddBaseActor() { void World::AddEditorObject(Actor* actor, const char* name) { if (actor->model != NULL) { - gEditor.AddObject(name, (FVector*) &actor->pos, (Gfx*)LOAD_ASSET_RAW(actor->model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->type, 0); + gEditor.AddObject(name, (FVector*) &actor->pos, &actor->rot, nullptr, (Gfx*)LOAD_ASSET_RAW(actor->model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->type, 0); } else { - gEditor.AddObject(name, (FVector*) &actor->pos, NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->type, 0); + gEditor.AddObject(name, (FVector*) &actor->pos, &actor->rot, nullptr, nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->type, 0); } } @@ -180,9 +182,9 @@ OObject* World::AddObject(OObject* object) { Object* cObj = &gObjectList[object->_objectIndex]; if (cObj->model != NULL) { - gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (Gfx*)LOAD_ASSET_RAW(cObj->model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); + gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (Vec3s*)&cObj->orientation, nullptr, (Gfx*)LOAD_ASSET_RAW(cObj->model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); } else { - gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); + gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (Vec3s*)&cObj->orientation, nullptr, nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); } } diff --git a/src/engine/World.h b/src/engine/World.h index 7589c7d52..c68ee91ef 100644 --- a/src/engine/World.h +++ b/src/engine/World.h @@ -20,18 +20,22 @@ #include "Actor.h" #include "particles/ParticleEmitter.h" +#include "editor/Editor.h" +#include "editor/GameObject.h" + extern "C" { #include "camera.h" #include "objects.h" }; -class OObject; class Cup; // <-- Forward declaration +class OObject; class Course; class AVehicle; class OBombKart; class TrainCrossing; class OLakitu; +class GameObject; // <-- Editor class World { typedef struct { diff --git a/src/engine/courses/Course.cpp b/src/engine/courses/Course.cpp index 3e5c0b2ab..b830c7eb2 100644 --- a/src/engine/courses/Course.cpp +++ b/src/engine/courses/Course.cpp @@ -3,6 +3,7 @@ #include "Course.h" #include "MarioRaceway.h" #include "ChocoMountain.h" +#include "port/Game.h" extern "C" { #include "main.h" diff --git a/src/engine/editor/Collision.cpp b/src/engine/editor/Collision.cpp index 1de664b3a..e0e983885 100644 --- a/src/engine/editor/Collision.cpp +++ b/src/engine/editor/Collision.cpp @@ -1,105 +1,106 @@ #include "Collision.h" +namespace Editor { + void GenerateCollisionMesh(GameObject* object, Gfx* model, float scale) { + int8_t opcode; + uintptr_t lo; + uintptr_t hi; -void GenerateCollisionMesh(GameObject& object, Gfx* model, float scale) { - int8_t opcode; - uintptr_t lo; - uintptr_t hi; + Gfx* ptr = model; + Vtx* vtx = NULL; + size_t i = 0; + bool run = true; + while (run) { + i++; + lo = ptr->words.w0; + hi = ptr->words.w1; - Gfx* ptr = model; - Vtx* vtx = NULL; - size_t i = 0; - bool run = true; - while (run) { - i++; - lo = ptr->words.w0; - hi = ptr->words.w1; + opcode = (EDITOR_GFX_GET_OPCODE(lo) >> 24); - opcode = (EDITOR_GFX_GET_OPCODE(lo) >> 24); - - switch(opcode) { - case G_DL: - GenerateCollisionMesh(object, (Gfx*)hi, scale); - break; - case G_DL_OTR_HASH: - ptr++; - GenerateCollisionMesh(object, (Gfx*)ResourceGetDataByCrc(((uint64_t)(ptr->words.w0 << 32)) + ptr->words.w1), scale); - break; - case G_VTX: - vtx = (Vtx*)ptr->words.w1; - break; - case G_VTX_OTR_HASH: { - const uintptr_t offset = hi; - ptr++; - vtx = (Vtx*)ResourceGetDataByCrc(((uint64_t)(ptr->words.w0 << 32)) + ptr->words.w1); - break; - } - case G_TRI1: { - if (vtx == NULL) { + switch(opcode) { + case G_DL: + GenerateCollisionMesh(object, (Gfx*)hi, scale); + break; + case G_DL_OTR_HASH: ptr++; - continue; - } - uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; - uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; - uint32_t v3 = (hi & 0x000000FF) / 2; - - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - - object.Triangles.push_back({p1, p2, p3}); - break; - } - case G_TRI2: { - if (vtx == NULL) { + GenerateCollisionMesh(object, (Gfx*)ResourceGetDataByCrc(((uint64_t)(ptr->words.w0 << 32)) + ptr->words.w1), scale); + break; + case G_VTX: + vtx = (Vtx*)ptr->words.w1; + break; + case G_VTX_OTR_HASH: { + const uintptr_t offset = hi; ptr++; - continue; + vtx = (Vtx*)ResourceGetDataByCrc(((uint64_t)(ptr->words.w0 << 32)) + ptr->words.w1); + break; } - uint32_t v1 = ((lo & 0x00FF0000) >> 16) / 2; - uint32_t v2 = ((lo & 0x0000FF00) >> 8) / 2; - uint32_t v3 = (lo & 0x000000FF) / 2; + case G_TRI1: { + if (vtx == NULL) { + ptr++; + continue; + } + uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; + uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; + uint32_t v3 = (hi & 0x000000FF) / 2; - // This is actually triangle 2; vert 1,2,3. - uint32_t v4 = ((hi & 0x00FF0000) >> 16) / 2; - uint32_t v5 = ((hi & 0x0000FF00) >> 8) / 2; - uint32_t v6 = (hi & 0x000000FF) / 2; + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - - FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); - FVector p5 = FVector(vtx[v5].v.ob[0], vtx[v5].v.ob[1], vtx[v5].v.ob[2]); - FVector p6 = FVector(vtx[v6].v.ob[0], vtx[v6].v.ob[1], vtx[v6].v.ob[2]); - - object.Triangles.push_back({p1, p2, p3}); - object.Triangles.push_back({p4, p5, p6}); - break; - } - case G_QUAD: { - if (vtx == NULL) { - ptr++; - continue; + object->Triangles.push_back({p1, p2, p3}); + break; } - uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; - uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; - uint32_t v3 = (hi & 0x000000FF) / 2; - uint32_t v4 = ((hi & 0xFF000000) >> 24) / 2; + case G_TRI2: { + if (vtx == NULL) { + ptr++; + continue; + } + uint32_t v1 = ((lo & 0x00FF0000) >> 16) / 2; + uint32_t v2 = ((lo & 0x0000FF00) >> 8) / 2; + uint32_t v3 = (lo & 0x000000FF) / 2; - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); + // This is actually triangle 2; vert 1,2,3. + uint32_t v4 = ((hi & 0x00FF0000) >> 16) / 2; + uint32_t v5 = ((hi & 0x0000FF00) >> 8) / 2; + uint32_t v6 = (hi & 0x000000FF) / 2; - object.Triangles.push_back({p1, p2, p3}); - object.Triangles.push_back({p1, p3, p4}); - break; + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); + + FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); + FVector p5 = FVector(vtx[v5].v.ob[0], vtx[v5].v.ob[1], vtx[v5].v.ob[2]); + FVector p6 = FVector(vtx[v6].v.ob[0], vtx[v6].v.ob[1], vtx[v6].v.ob[2]); + + object->Triangles.push_back({p1, p2, p3}); + object->Triangles.push_back({p4, p5, p6}); + break; + } + case G_QUAD: { + if (vtx == NULL) { + ptr++; + continue; + } + uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; + uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; + uint32_t v3 = (hi & 0x000000FF) / 2; + uint32_t v4 = ((hi & 0xFF000000) >> 24) / 2; + + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); + FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); + + object->Triangles.push_back({p1, p2, p3}); + object->Triangles.push_back({p1, p3, p4}); + break; + } + case G_ENDDL: + run = false; + break; } - case G_ENDDL: - run = false; - break; + + ptr++; } - - ptr++; } } diff --git a/src/engine/editor/Collision.h b/src/engine/editor/Collision.h index 5596b6acf..2b6c99848 100644 --- a/src/engine/editor/Collision.h +++ b/src/engine/editor/Collision.h @@ -2,6 +2,7 @@ #include #include +#include "GameObject.h" #include "EditorMath.h" @@ -16,4 +17,6 @@ #define EDITOR_GFX_GET_OPCODE(var) ((uint32_t) ((var) & 0xFF000000)) -void GenerateCollisionMesh(GameObject& object, Gfx* model, float scale); +namespace Editor { + void GenerateCollisionMesh(GameObject* object, Gfx* model, float scale); +} \ No newline at end of file diff --git a/src/engine/editor/Editor.cpp b/src/engine/editor/Editor.cpp index 99fd8ac27..d424876ed 100644 --- a/src/engine/editor/Editor.cpp +++ b/src/engine/editor/Editor.cpp @@ -6,6 +6,7 @@ #include "Editor.h" #include "Collision.h" +#include "Light.h" #include "port/Engine.h" #include @@ -22,101 +23,118 @@ extern "C" { #include "camera.h" } -namespace EditorNamespace { +namespace Editor { + int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height, + uint8_t resize); -int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height, - uint8_t resize); - -Editor::Editor() { -} - -void Editor::Load() { - printf("Editor: Loading Editor...\n"); - eObjectPicker.Load();; - for (auto& object : eGameObjects) { - GenerateCollisionMesh(object, object.Model, 1.0f); - } - printf("Editor: Loading Complete!\n"); -} - -void Editor::Tick() { - auto wnd = GameEngine::Instance->context->GetWindow(); - - static bool wasMouseDown = false; - static bool isDragging = false; - static Ship::Coords mouseStartPos; - - Ship::Coords mousePos = wnd->GetMousePos(); - bool isMouseDown = wnd->GetMouseState(Ship::LUS_MOUSE_BTN_LEFT); - - eGameObjects.erase( - std::remove_if(eGameObjects.begin(), eGameObjects.end(), - [](const auto& object) { return (*object.DespawnFlag) == object.DespawnValue; printf("DELETED OBJ\n"); }), - eGameObjects.end()); - - if (isMouseDown && !wasMouseDown) { - // Mouse just pressed (Pressed state) - mouseStartPos = mousePos; - isDragging = false; + Editor::Editor() { } - if (isMouseDown) { - // Mouse is being held (Held state) - int dx = mousePos.x - mouseStartPos.x; - int dy = mousePos.y - mouseStartPos.y; - int dragThreshold = 5; // Adjust as needed + void Editor::Load() { + printf("Editor: Loading Editor...\n"); + eObjectPicker.Load();; + for (auto& object : eGameObjects) { + GenerateCollisionMesh(object, object->Model, 1.0f); + object->Load(); + } + printf("Editor: Loading Complete!\n"); + } - if ((dx * dx + dy * dy) > (dragThreshold * dragThreshold)) { - // Squared distance check to avoid unnecessary sqrt() - isDragging = true; - eObjectPicker.DragHandle(); // Call drag logic + void Editor::Tick() { + auto wnd = GameEngine::Instance->context->GetWindow(); + + static bool wasMouseDown = false; + static bool isDragging = false; + static Ship::Coords mouseStartPos; + + Ship::Coords mousePos = wnd->GetMousePos(); + bool isMouseDown = wnd->GetMouseState(Ship::LUS_MOUSE_BTN_LEFT); + + eGameObjects.erase( + std::remove_if(eGameObjects.begin(), eGameObjects.end(), + [](const auto& object) { return (*object->DespawnFlag) == object->DespawnValue; printf("DELETED OBJ\n"); }), + eGameObjects.end()); + + if (isMouseDown && !wasMouseDown) { + // Mouse just pressed (Pressed state) + mouseStartPos = mousePos; + isDragging = false; + } + + if (isMouseDown) { + // Mouse is being held (Held state) + int dx = mousePos.x - mouseStartPos.x; + int dy = mousePos.y - mouseStartPos.y; + int dragThreshold = 5; // Adjust as needed + + if ((dx * dx + dy * dy) > (dragThreshold * dragThreshold)) { + // Squared distance check to avoid unnecessary sqrt() + isDragging = true; + eObjectPicker.DragHandle(); // Call drag logic + } + } + + if (!isMouseDown && wasMouseDown) { + // Mouse just released (Released state) + eObjectPicker.eGizmo.SelectedHandle = Gizmo::GizmoHandle::None; + if (!isDragging) { + eObjectPicker.SelectObject(eGameObjects); + } + + } + + wasMouseDown = isMouseDown; // Update previous state + + eObjectPicker.Tick(); + + for (auto& object : eGameObjects) { + object->Tick(); } } - if (!isMouseDown && wasMouseDown) { - // Mouse just released (Released state) - eObjectPicker.eGizmo.SelectedHandle = Gizmo::GizmoHandle::None; - if (!isDragging) { - eObjectPicker.SelectObject(eGameObjects); + void Editor::Draw() { + eObjectPicker.Draw(); + for (auto& object : eGameObjects) { + object->Draw(); } - } - wasMouseDown = isMouseDown; // Update previous state + void Editor::AddObject(const char* name, FVector* pos, Vec3s* rot, FVector* scale, Gfx* model, float collScale, GameObject::CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue) { + if (model != NULL) { + eGameObjects.push_back(new GameObject(name, pos, rot, scale, model, {}, collision, boundingBoxSize, despawnFlag, despawnValue)); + GenerateCollisionMesh(eGameObjects.back(), model, collScale); + } else { // to bounding box or sphere collision + eGameObjects.push_back(new GameObject(name, pos, rot, scale, model, {}, GameObject::CollisionType::BOUNDING_BOX, + 22.0f, despawnFlag, despawnValue)); + } + } - eObjectPicker.Tick(); -} - -void Editor::Draw() { - eObjectPicker.Draw(); -} + void Editor::AddLight(const char* name, FVector* pos, s8* rot) { + eGameObjects.push_back(new LightObject(name, pos, rot)); + } -void Editor::AddObject(const char* name, FVector* pos, Gfx* model, float scale, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue) { - if (model != NULL) { - eGameObjects.push_back({name, pos, model, {}, collision, boundingBoxSize, despawnFlag, despawnValue}); - GenerateCollisionMesh(eGameObjects.back(), model, scale); - } else { // to bounding box or sphere collision - eGameObjects.push_back({name, pos, model, {}, CollisionType::BOUNDING_BOX, 22.0f, despawnFlag, despawnValue}); + void Editor::ClearObjects() { + for (auto& obj : eGameObjects) { + delete obj; + } + } + + void Editor::ClearMatrixPool() { + EditorMatrix.clear(); + } + + void Editor::SelectObjectFromSceneExplorer(GameObject* object) { + eObjectPicker._selected = object; + eObjectPicker.eGizmo.Enabled = true; + eObjectPicker.eGizmo.SetGizmoNoCursor(object); + } + + void Editor::SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 minY, s16 maxY) { + eObjectPicker.eGizmo.dimensions.MinX = minX + -1000; + eObjectPicker.eGizmo.dimensions.MaxX = maxX + 1000; + eObjectPicker.eGizmo.dimensions.MinY = minY + -100; + eObjectPicker.eGizmo.dimensions.MaxY = maxY + 500; + eObjectPicker.eGizmo.dimensions.MinZ = minZ + -1000; + eObjectPicker.eGizmo.dimensions.MaxZ = maxZ + 1000; } } - -void Editor::ClearObjects() { - eGameObjects.clear(); -} - -void Editor::SelectObjectFromSceneExplorer(GameObject* object) { - eObjectPicker._selected = object; - eObjectPicker.eGizmo.Enabled = true; - eObjectPicker.eGizmo.SetGizmoNoCursor(object); -} - -void Editor::SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 minY, s16 maxY) { - eObjectPicker.eGizmo.dimensions.MinX = minX + -1000; - eObjectPicker.eGizmo.dimensions.MaxX = maxX + 1000; - eObjectPicker.eGizmo.dimensions.MinY = minY + -100; - eObjectPicker.eGizmo.dimensions.MaxY = maxY + 500; - eObjectPicker.eGizmo.dimensions.MinZ = minZ + -1000; - eObjectPicker.eGizmo.dimensions.MaxZ = maxZ + 1000; -} - -} diff --git a/src/engine/editor/Editor.h b/src/engine/editor/Editor.h index 00552e375..1352c9d34 100644 --- a/src/engine/editor/Editor.h +++ b/src/engine/editor/Editor.h @@ -3,30 +3,32 @@ #include #include +#include "GameObject.h" #ifdef __cplusplus #include "ObjectPicker.h" -namespace EditorNamespace { +namespace Editor { class ObjectPicker; class Editor { public: Editor(); - ObjectPicker eObjectPicker; - std::vector eGameObjects; + std::vector eGameObjects; void Tick(); void Draw(); void MouseClick(); void Load(); - void AddObject(const char* name, FVector* pos, Gfx* model, float scale, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue); + void AddObject(const char* name, FVector* pos, Vec3s* rot, FVector* scale, Gfx* model, float collScale, GameObject::CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue); + void AddLight(const char* name, FVector* pos, s8* rot); void ClearObjects(); void RemoveObject(); void SelectObjectFromSceneExplorer(GameObject* object); void SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 minY, s16 maxY); + void ClearMatrixPool(); private: bool _draw = false; diff --git a/src/engine/editor/EditorMath.cpp b/src/engine/editor/EditorMath.cpp index 7313c0a1a..06d51f8ce 100644 --- a/src/engine/editor/EditorMath.cpp +++ b/src/engine/editor/EditorMath.cpp @@ -3,6 +3,8 @@ #include #include "port/Game.h" #include "port/Engine.h" +#include +#include "GameObject.h" #include #include @@ -18,6 +20,8 @@ extern "C" { #include "camera.h" } +std::vector EditorMatrix; + bool IsInGameScreen() { auto wnd = GameEngine::Instance->context->GetWindow(); Ship::Coords mouse = wnd->GetMousePos(); @@ -278,26 +282,60 @@ bool IntersectRaySphere(const Ray& ray, const FVector& sphereCenter, float radiu return false; // Sphere is behind the ray origin } +// bool FindClosestObject(const Ray& ray, const std::vector& objects, GameObject* outObject, float& outDistance) { +// float closestDist = std::numeric_limits::max(); +// bool found = false; -bool FindClosestObject(const Ray& ray, const std::vector& objects, GameObject& outObject, float& outDistance) { - float closestDist = std::numeric_limits::max(); - bool found = false; +// for (const auto& obj : objects) { +// for (const auto& tri : obj.Triangles) { +// float t; +// if (IntersectRayTriangle(ray, tri, *obj.Pos, t) && t < closestDist) { +// closestDist = t; +// outObject = obj; +// found = true; +// } +// } +// } - for (const auto& obj : objects) { - for (const auto& tri : obj.Triangles) { - float t; - if (IntersectRayTriangle(ray, tri, *obj.Pos, t) && t < closestDist) { - closestDist = t; - outObject = obj; - found = true; - } - } - } - - if (found) { - outDistance = closestDist; - return true; - } +// if (found) { +// outDistance = closestDist; +// return true; +// } - return false; +// return false; +// } + +void Editor_AddMatrix(Mat4 mtx, int32_t flags) { + EditorMatrix.emplace_back(); + guMtxF2L(mtx, &EditorMatrix.back()); + gSPMatrix(gDisplayListHead++, &EditorMatrix.back(), flags); +} + +float CalculateAngle(const FVector& start, const FVector& end) { + float dot = start.Dot(end); + + float magStart = start.Magnitude(); + float magEnd = end.Magnitude(); + + float cosAngle = dot / (magStart * magEnd); + cosAngle = std::min(1.0f, std::max(-1.0f, cosAngle)); + + return acos(cosAngle); +} + +void SetDirectionFromRotator(s16 rotator[3], s8 direction[3]) { + float yaw = rotator[1] * (M_PI / 32768.0f); // Convert from s16 (0 to 32767) to radians + float pitch = rotator[0] * (M_PI / 32768.0f); + + // Compute unit direction vector + float x = cosf(yaw) * cosf(pitch); + float y = -sinf(pitch); + float z = -sinf(yaw) * cosf(pitch); + + // Scale into -127 to 127 range (not 128 to avoid overflow) + direction[0] = static_cast(x * 127.0f); + direction[1] = static_cast(y * 127.0f); + direction[2] = static_cast(z * 127.0f); + + printf("Light dir %d %d %d (from rot 0x%X 0x%X 0x%X)\n", direction[0], direction[1], direction[2], rotator[0], rotator[1], rotator[2]); } diff --git a/src/engine/editor/EditorMath.h b/src/engine/editor/EditorMath.h index 4c4a9ffdd..b377c38a4 100644 --- a/src/engine/editor/EditorMath.h +++ b/src/engine/editor/EditorMath.h @@ -1,19 +1,17 @@ #pragma once #include +#include +#include #include "../CoreMath.h" +#include +#include "GameObject.h" extern "C" { #include "common_structs.h" } -std::vector EditorMatrix; - -enum class CollisionType { - VTX_INTERSECT, - BOUNDING_BOX, - BOUNDING_SPHERE -}; +extern std::vector EditorMatrix; struct Ray { FVector Origin; @@ -24,17 +22,6 @@ struct Triangle { FVector v0, v1, v2; }; -struct GameObject { - const char* Name; - FVector* Pos; - Gfx* Model; - std::vector Triangles; - CollisionType Collision; - float BoundingBoxSize; - int32_t* DespawnFlag; - int32_t DespawnValue; -}; - /** * Projects 2D cursor into the game world * @@ -55,5 +42,6 @@ void Clear(MtxF* mf); bool IntersectRayTriangle(const Ray& ray, const Triangle& tri, const FVector& objectPos, float& t); bool IntersectRaySphere(const Ray& ray, const FVector& sphereCenter, float radius, float& t); - - +void Editor_AddMatrix(Mat4 mtx, int32_t flags); +float CalculateAngle(const FVector& start, const FVector& end); +void SetDirectionFromRotator(s16 rotator[3], s8 direction[3]); diff --git a/src/engine/editor/GameObject.cpp b/src/engine/editor/GameObject.cpp new file mode 100644 index 000000000..ceae71440 --- /dev/null +++ b/src/engine/editor/GameObject.cpp @@ -0,0 +1,30 @@ +#include +#include "GameObject.h" + +namespace Editor { + + GameObject::GameObject(const char* name, FVector* pos, Vec3s* rot, FVector* scale, Gfx* model, std::vector triangles, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue) { + Name = name; + Pos = pos; + Rot = rot; + Scale = scale; + Model = model; + Triangles = triangles; + Collision = collision; + BoundingBoxSize = boundingBoxSize; + DespawnFlag = despawnFlag; + DespawnValue = despawnValue; + } + + GameObject::GameObject(FVector* pos, Vec3s* rot) { + //Pos = pos; + //Rot = rot; + } + + GameObject::GameObject() {}; + + void GameObject::Draw(){}; + + void GameObject::Tick(){}; + +} // namespace Editor diff --git a/src/engine/editor/GameObject.h b/src/engine/editor/GameObject.h new file mode 100644 index 000000000..a613c9bf8 --- /dev/null +++ b/src/engine/editor/GameObject.h @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include +#include "../CoreMath.h" +#include "EditorMath.h" +#include + +extern "C" { +#include "common_structs.h" +} + +struct Triangle; + +namespace Editor { + class GameObject { +public: + enum class CollisionType { + VTX_INTERSECT, + BOUNDING_BOX, + BOUNDING_SPHERE + }; + + GameObject(const char* name, FVector* pos, Vec3s* rot, FVector* scale, Gfx* model, std::vector triangles, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue); + GameObject(FVector* pos, Vec3s* rot); + GameObject(); + virtual void Tick(); + virtual void Draw(); + virtual void Load() {}; + + const char* Name; + FVector* Pos; + Vec3s* Rot; + FVector* Scale; + Gfx* Model; + std::vector Triangles; + CollisionType Collision; + float BoundingBoxSize; + int32_t* DespawnFlag; + int32_t DespawnValue; + + }; +} diff --git a/src/engine/editor/Gizmo.cpp b/src/engine/editor/Gizmo.cpp index beb961d9f..eb1d73908 100644 --- a/src/engine/editor/Gizmo.cpp +++ b/src/engine/editor/Gizmo.cpp @@ -4,6 +4,7 @@ #include #include "../World.h" +#include "EditorMath.h" #include "Gizmo.h" #include "port/Engine.h" #include @@ -11,6 +12,7 @@ #include "engine/actors/Ship.h" #include "port/Game.h" +#include "Handle.h" extern "C" { #include "common_structs.h" @@ -24,10 +26,7 @@ extern "C" { #include "src/racing/collision.h" } -namespace EditorNamespace { - -Gizmo::Gizmo() { -} +namespace Editor { void Gizmo::Load() { RedCollision.Pos = &Pos; @@ -39,14 +38,25 @@ void Gizmo::Load() { BlueCollision.Pos = &Pos; BlueCollision.Model = handle_Cylinder_mesh; - GenerateCollisionMesh(RedCollision, RedCollision.Model, 0.05f); - GenerateCollisionMesh(GreenCollision, GreenCollision.Model, 0.05f); - GenerateCollisionMesh(BlueCollision, BlueCollision.Model, 0.05f); + GenerateCollisionMesh(&RedCollision, RedCollision.Model, 0.05f); + GenerateCollisionMesh(&GreenCollision, GreenCollision.Model, 0.05f); + GenerateCollisionMesh(&BlueCollision, BlueCollision.Model, 0.05f); } void Gizmo::Tick() { if (Enabled) { - Gizmo::Translate(); + TranslationMode mode = static_cast(CVarGetInteger("eGizmoMode", 0)); + switch(mode) { + case TranslationMode::Move: + Gizmo::Translate(); + break; + case TranslationMode::Rotate: + Gizmo::Rotate(); + break; + case TranslationMode::Scale: + Gizmo::Scale(); + break; + } } } @@ -141,13 +151,50 @@ f32 Gizmo::SnapToSurface(FVector* pos) { return y; } -// void Gizmo::Rotate() { +void Gizmo::Rotate() { + float length = 180.0f; + float sensitivity = 0.2f; -// } + if (_selected->Rot == nullptr) { + return; + } -// void Gizmo::Scale() { - -// } + length = sqrt( + pow(_selected->Pos->x - cameras[0].pos[0], 2) + + pow(_selected->Pos->y - cameras[0].pos[1], 2) + + pow(_selected->Pos->z - cameras[0].pos[2], 2) + ); + + FVector cameraPos = { + cameras[0].pos[0] + _ray.x * length, + cameras[0].pos[1] + _ray.y * length, + cameras[0].pos[2] + _ray.z * length, + }; + + float angle = CalculateAngle(_cursorOffset, cameraPos) * 100; + + // printf("start %f %f %f end %f %f %f angle %f\n", _cursorOffset.x, _cursorOffset.y, _cursorOffset.z, cameraPos.x, cameraPos.y, cameraPos.z, angle); + // Depending on which axis or handle you want to rotate, apply rotation. + switch(SelectedHandle) { + case GizmoHandle::All_Axis: + (*_selected->Rot)[0] = static_cast((s16)((*_selected->Rot)[0] + angle) & 0xFFFF); // Wrap to 0xFFFF + (*_selected->Rot)[1] = static_cast((s16)((*_selected->Rot)[1] + angle) & 0xFFFF); // Wrap to 0xFFFF + break; + case GizmoHandle::X_Axis: + (*_selected->Rot)[0] = static_cast((s16)((*_selected->Rot)[0] + angle) & 0xFFFF); // Wrap to 0xFFFF + break; + case GizmoHandle::Y_Axis: + (*_selected->Rot)[1] = static_cast((s16)((*_selected->Rot)[1] + angle) & 0xFFFF); // Wrap to 0xFFFF + break; + case GizmoHandle::Z_Axis: + (*_selected->Rot)[2] = static_cast((s16)((*_selected->Rot)[2] + angle) & 0xFFFF); // Wrap to 0xFFFF + break; + } +} + +void Gizmo::Scale() { + +} void Gizmo::Draw() { if (Enabled) { @@ -161,10 +208,13 @@ void Gizmo::DrawHandles() { Vec3s rot = {0, 0, 0}; mtxf_pos_rotation_xyz(mainMtx, &Pos.x, rot); //mtxf_scale(mainMtx, 0.05f); - if (render_set_position(mainMtx, 0) != 0) { + + + Editor_AddMatrix(mainMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + //if (render_set_position(mainMtx, 0) != 0) { //gSPDisplayList(gDisplayListHead++, wheels_Spaghetti_002_mesh); //gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); - } + //} handle_f3dlite_material_lights = gdSPDefLights1( 0x7F, 0x7F, 0x7F, @@ -175,9 +225,10 @@ void Gizmo::DrawHandles() { Vec3f pos1 = {Pos.x, Pos.y, Pos.z - _gizmoOffset}; mtxf_pos_rotation_xyz(RedXMtx, pos1, rot1); mtxf_scale(RedXMtx, 0.05); - if (render_set_position(RedXMtx, 0) != 0) { - gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); - } + Editor_AddMatrix(RedXMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); + //if (render_set_position(RedXMtx, 0) != 0) { + //} Vec3s rot2 = {0, 0x4000, 0}; @@ -189,9 +240,10 @@ void Gizmo::DrawHandles() { Vec3f pos2 = {Pos.x - _gizmoOffset, Pos.y, Pos.z}; mtxf_pos_rotation_xyz(GreenYMtx, pos2, rot2); mtxf_scale(GreenYMtx, 0.05); - if (render_set_position(GreenYMtx, 0) != 0) { - gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); - } + Editor_AddMatrix(GreenYMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); + //if (render_set_position(GreenYMtx, 0) != 0) { + //} Vec3s rot3 = {0x4000, 0, 0}; @@ -203,8 +255,9 @@ void Gizmo::DrawHandles() { Vec3f pos3 = {Pos.x, Pos.y + _gizmoOffset, Pos.z}; mtxf_pos_rotation_xyz(BlueZMtx, pos3, rot3); mtxf_scale(BlueZMtx, 0.05); - if (render_set_position(BlueZMtx, 0) != 0) { - gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); - } + Editor_AddMatrix(BlueZMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); + //if (render_set_position(BlueZMtx, 0) != 0) { + //} } } diff --git a/src/engine/editor/Gizmo.h b/src/engine/editor/Gizmo.h index d7bae44c0..30f4f640d 100644 --- a/src/engine/editor/Gizmo.h +++ b/src/engine/editor/Gizmo.h @@ -3,8 +3,9 @@ #include #include #include "Collision.h" +#include "GameObject.h" -namespace EditorNamespace { +namespace Editor { class Gizmo { public: @@ -17,7 +18,11 @@ public: Z_Axis }; - Gizmo(); + enum class TranslationMode { + Move, + Rotate, + Scale + }; void Tick(); void Draw(); @@ -26,6 +31,8 @@ public: void SetGizmo(GameObject* object, Ray ray); void SetGizmoNoCursor(GameObject* object); // Used for scene explorer selection void Translate(); + void Rotate(); + void Scale(); void DrawHandles(); f32 SnapToSurface(FVector* pos); @@ -61,496 +68,5 @@ public: GameObject* _selected = nullptr; private: bool _draw = false; - - -Lights1 handle_f3dlite_material_lights = gdSPDefLights1( - 0x7F, 0x7F, 0x7F, - 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49); - - - Vtx handle_Cylinder_mesh_vtx_cull[8] = { - {{ {-22, -22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-22, -22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-22, 22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-22, 22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {22, -22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {22, -22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {22, 22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {22, 22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, - }; - - Vtx handle_Cylinder_mesh_vtx_0[329] = { - {{ {0, -22, -194}, 0, {240, 506}, {12, 134, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {12, 134, 222, 255} }}, - {{ {4, -21, -194}, 0, {288, 511}, {12, 134, 222, 255} }}, - {{ {4, -21, -194}, 0, {288, 511}, {35, 139, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {35, 139, 222, 255} }}, - {{ {8, -20, -194}, 0, {334, 525}, {35, 139, 222, 255} }}, - {{ {8, -20, -194}, 0, {334, 525}, {58, 148, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {58, 148, 222, 255} }}, - {{ {12, -18, -194}, 0, {377, 548}, {58, 148, 222, 255} }}, - {{ {12, -18, -194}, 0, {377, 548}, {78, 162, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {78, 162, 222, 255} }}, - {{ {15, -15, -194}, 0, {414, 578}, {78, 162, 222, 255} }}, - {{ {15, -15, -194}, 0, {414, 578}, {94, 178, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {94, 178, 222, 255} }}, - {{ {18, -12, -194}, 0, {444, 615}, {94, 178, 222, 255} }}, - {{ {18, -12, -194}, 0, {444, 615}, {108, 198, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {108, 198, 222, 255} }}, - {{ {20, -8, -194}, 0, {467, 658}, {108, 198, 222, 255} }}, - {{ {20, -8, -194}, 0, {467, 658}, {117, 221, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {117, 221, 222, 255} }}, - {{ {21, -4, -194}, 0, {481, 704}, {117, 221, 222, 255} }}, - {{ {21, -4, -194}, 0, {481, 704}, {122, 244, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {122, 244, 222, 255} }}, - {{ {22, 0, -194}, 0, {486, 752}, {122, 244, 222, 255} }}, - {{ {22, 0, -194}, 0, {486, 752}, {122, 12, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {122, 12, 222, 255} }}, - {{ {21, 4, -194}, 0, {481, 800}, {122, 12, 222, 255} }}, - {{ {21, 4, -194}, 0, {481, 800}, {117, 35, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {117, 35, 222, 255} }}, - {{ {20, 8, -194}, 0, {467, 846}, {117, 35, 222, 255} }}, - {{ {20, 8, -194}, 0, {467, 846}, {108, 58, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {108, 58, 222, 255} }}, - {{ {18, 12, -194}, 0, {444, 889}, {108, 58, 222, 255} }}, - {{ {18, 12, -194}, 0, {444, 889}, {94, 78, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {94, 78, 222, 255} }}, - {{ {15, 15, -194}, 0, {414, 926}, {94, 78, 222, 255} }}, - {{ {15, 15, -194}, 0, {414, 926}, {78, 94, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {78, 94, 222, 255} }}, - {{ {12, 18, -194}, 0, {377, 956}, {78, 94, 222, 255} }}, - {{ {12, 18, -194}, 0, {377, 956}, {58, 108, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {58, 108, 222, 255} }}, - {{ {8, 20, -194}, 0, {334, 979}, {58, 108, 222, 255} }}, - {{ {8, 20, -194}, 0, {334, 979}, {35, 117, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {35, 117, 222, 255} }}, - {{ {4, 21, -194}, 0, {288, 993}, {35, 117, 222, 255} }}, - {{ {4, 21, -194}, 0, {288, 993}, {12, 122, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {12, 122, 222, 255} }}, - {{ {0, 22, -194}, 0, {240, 998}, {12, 122, 222, 255} }}, - {{ {0, 22, -194}, 0, {240, 998}, {244, 122, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {244, 122, 222, 255} }}, - {{ {-4, 21, -194}, 0, {192, 993}, {244, 122, 222, 255} }}, - {{ {-4, 21, -194}, 0, {192, 993}, {221, 117, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {221, 117, 222, 255} }}, - {{ {-8, 20, -194}, 0, {146, 979}, {221, 117, 222, 255} }}, - {{ {-8, 20, -194}, 0, {146, 979}, {198, 108, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {198, 108, 222, 255} }}, - {{ {-12, 18, -194}, 0, {103, 956}, {198, 108, 222, 255} }}, - {{ {-12, 18, -194}, 0, {103, 956}, {178, 94, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {178, 94, 222, 255} }}, - {{ {-15, 15, -194}, 0, {66, 926}, {178, 94, 222, 255} }}, - {{ {-15, 15, -194}, 0, {66, 926}, {162, 78, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {162, 78, 222, 255} }}, - {{ {-18, 12, -194}, 0, {36, 889}, {162, 78, 222, 255} }}, - {{ {-18, 12, -194}, 0, {36, 889}, {148, 58, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {148, 58, 222, 255} }}, - {{ {-20, 8, -194}, 0, {13, 846}, {148, 58, 222, 255} }}, - {{ {-20, 8, -194}, 0, {13, 846}, {139, 35, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {139, 35, 222, 255} }}, - {{ {-21, 4, -194}, 0, {-1, 800}, {139, 35, 222, 255} }}, - {{ {-21, 4, -194}, 0, {-1, 800}, {134, 12, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {134, 12, 222, 255} }}, - {{ {-22, 0, -194}, 0, {-6, 752}, {134, 12, 222, 255} }}, - {{ {-22, 0, -194}, 0, {-6, 752}, {134, 244, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {134, 244, 222, 255} }}, - {{ {-21, -4, -194}, 0, {-1, 704}, {134, 244, 222, 255} }}, - {{ {-21, -4, -194}, 0, {-1, 704}, {139, 221, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {139, 221, 222, 255} }}, - {{ {-20, -8, -194}, 0, {13, 658}, {139, 221, 222, 255} }}, - {{ {-20, -8, -194}, 0, {13, 658}, {148, 198, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {148, 198, 222, 255} }}, - {{ {-18, -12, -194}, 0, {36, 615}, {148, 198, 222, 255} }}, - {{ {-18, -12, -194}, 0, {36, 615}, {162, 178, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {162, 178, 222, 255} }}, - {{ {-15, -15, -194}, 0, {66, 578}, {162, 178, 222, 255} }}, - {{ {-15, -15, -194}, 0, {66, 578}, {178, 162, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {178, 162, 222, 255} }}, - {{ {-12, -18, -194}, 0, {103, 548}, {178, 162, 222, 255} }}, - {{ {-12, -18, -194}, 0, {103, 548}, {198, 148, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {198, 148, 222, 255} }}, - {{ {-8, -20, -194}, 0, {146, 525}, {198, 148, 222, 255} }}, - {{ {-8, -20, -194}, 0, {146, 525}, {221, 139, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {221, 139, 222, 255} }}, - {{ {-4, -21, -194}, 0, {192, 511}, {221, 139, 222, 255} }}, - {{ {-4, -21, -194}, 0, {192, 511}, {244, 134, 222, 255} }}, - {{ {0, 0, -271}, 0, {240, 752}, {244, 134, 222, 255} }}, - {{ {0, -22, -194}, 0, {240, 506}, {244, 134, 222, 255} }}, - {{ {0, 9, -194}, 0, {1008, 496}, {12, 126, 0, 255} }}, - {{ {0, 9, 0}, 0, {1008, -16}, {12, 126, 0, 255} }}, - {{ {2, 9, 0}, 0, {976, -16}, {12, 126, 0, 255} }}, - {{ {2, 9, -194}, 0, {976, 496}, {12, 126, 0, 255} }}, - {{ {2, 9, -194}, 0, {976, 496}, {37, 122, 0, 255} }}, - {{ {2, 9, 0}, 0, {976, -16}, {37, 122, 0, 255} }}, - {{ {3, 8, 0}, 0, {944, -16}, {37, 122, 0, 255} }}, - {{ {3, 8, -194}, 0, {944, 496}, {37, 122, 0, 255} }}, - {{ {3, 8, -194}, 0, {944, 496}, {60, 112, 0, 255} }}, - {{ {3, 8, 0}, 0, {944, -16}, {60, 112, 0, 255} }}, - {{ {5, 7, 0}, 0, {912, -16}, {60, 112, 0, 255} }}, - {{ {5, 7, -194}, 0, {912, 496}, {60, 112, 0, 255} }}, - {{ {5, 7, -194}, 0, {912, 496}, {81, 98, 0, 255} }}, - {{ {5, 7, 0}, 0, {912, -16}, {81, 98, 0, 255} }}, - {{ {6, 6, 0}, 0, {880, -16}, {81, 98, 0, 255} }}, - {{ {6, 6, -194}, 0, {880, 496}, {81, 98, 0, 255} }}, - {{ {6, 6, -194}, 0, {880, 496}, {98, 81, 0, 255} }}, - {{ {6, 6, 0}, 0, {880, -16}, {98, 81, 0, 255} }}, - {{ {7, 5, 0}, 0, {848, -16}, {98, 81, 0, 255} }}, - {{ {7, 5, -194}, 0, {848, 496}, {98, 81, 0, 255} }}, - {{ {7, 5, -194}, 0, {848, 496}, {112, 60, 0, 255} }}, - {{ {7, 5, 0}, 0, {848, -16}, {112, 60, 0, 255} }}, - {{ {8, 3, 0}, 0, {816, -16}, {112, 60, 0, 255} }}, - {{ {8, 3, -194}, 0, {816, 496}, {112, 60, 0, 255} }}, - {{ {8, 3, -194}, 0, {816, 496}, {122, 37, 0, 255} }}, - {{ {8, 3, 0}, 0, {816, -16}, {122, 37, 0, 255} }}, - {{ {9, 2, 0}, 0, {784, -16}, {122, 37, 0, 255} }}, - {{ {9, 2, -194}, 0, {784, 496}, {122, 37, 0, 255} }}, - {{ {9, 2, -194}, 0, {784, 496}, {126, 12, 0, 255} }}, - {{ {9, 2, 0}, 0, {784, -16}, {126, 12, 0, 255} }}, - {{ {9, 0, 0}, 0, {752, -16}, {126, 12, 0, 255} }}, - {{ {9, 0, -194}, 0, {752, 496}, {126, 12, 0, 255} }}, - {{ {9, 0, -194}, 0, {752, 496}, {126, 244, 0, 255} }}, - {{ {9, 0, 0}, 0, {752, -16}, {126, 244, 0, 255} }}, - {{ {9, -2, 0}, 0, {720, -16}, {126, 244, 0, 255} }}, - {{ {9, -2, -194}, 0, {720, 496}, {126, 244, 0, 255} }}, - {{ {9, -2, -194}, 0, {720, 496}, {122, 219, 0, 255} }}, - {{ {9, -2, 0}, 0, {720, -16}, {122, 219, 0, 255} }}, - {{ {8, -3, 0}, 0, {688, -16}, {122, 219, 0, 255} }}, - {{ {8, -3, -194}, 0, {688, 496}, {122, 219, 0, 255} }}, - {{ {8, -3, -194}, 0, {688, 496}, {112, 196, 0, 255} }}, - {{ {8, -3, 0}, 0, {688, -16}, {112, 196, 0, 255} }}, - {{ {7, -5, 0}, 0, {656, -16}, {112, 196, 0, 255} }}, - {{ {7, -5, -194}, 0, {656, 496}, {112, 196, 0, 255} }}, - {{ {7, -5, -194}, 0, {656, 496}, {98, 175, 0, 255} }}, - {{ {7, -5, 0}, 0, {656, -16}, {98, 175, 0, 255} }}, - {{ {6, -6, 0}, 0, {624, -16}, {98, 175, 0, 255} }}, - {{ {6, -6, -194}, 0, {624, 496}, {98, 175, 0, 255} }}, - {{ {6, -6, -194}, 0, {624, 496}, {81, 158, 0, 255} }}, - {{ {6, -6, 0}, 0, {624, -16}, {81, 158, 0, 255} }}, - {{ {5, -7, 0}, 0, {592, -16}, {81, 158, 0, 255} }}, - {{ {5, -7, -194}, 0, {592, 496}, {81, 158, 0, 255} }}, - {{ {5, -7, -194}, 0, {592, 496}, {60, 144, 0, 255} }}, - {{ {5, -7, 0}, 0, {592, -16}, {60, 144, 0, 255} }}, - {{ {3, -8, 0}, 0, {560, -16}, {60, 144, 0, 255} }}, - {{ {3, -8, -194}, 0, {560, 496}, {60, 144, 0, 255} }}, - {{ {3, -8, -194}, 0, {560, 496}, {37, 134, 0, 255} }}, - {{ {3, -8, 0}, 0, {560, -16}, {37, 134, 0, 255} }}, - {{ {2, -9, 0}, 0, {528, -16}, {37, 134, 0, 255} }}, - {{ {2, -9, -194}, 0, {528, 496}, {37, 134, 0, 255} }}, - {{ {2, -9, -194}, 0, {528, 496}, {12, 130, 0, 255} }}, - {{ {2, -9, 0}, 0, {528, -16}, {12, 130, 0, 255} }}, - {{ {0, -9, 0}, 0, {496, -16}, {12, 130, 0, 255} }}, - {{ {0, -9, -194}, 0, {496, 496}, {12, 130, 0, 255} }}, - {{ {0, -9, -194}, 0, {496, 496}, {244, 130, 0, 255} }}, - {{ {0, -9, 0}, 0, {496, -16}, {244, 130, 0, 255} }}, - {{ {-2, -9, 0}, 0, {464, -16}, {244, 130, 0, 255} }}, - {{ {-2, -9, -194}, 0, {464, 496}, {244, 130, 0, 255} }}, - {{ {-2, -9, -194}, 0, {464, 496}, {219, 134, 0, 255} }}, - {{ {-2, -9, 0}, 0, {464, -16}, {219, 134, 0, 255} }}, - {{ {-3, -8, 0}, 0, {432, -16}, {219, 134, 0, 255} }}, - {{ {-3, -8, -194}, 0, {432, 496}, {219, 134, 0, 255} }}, - {{ {-3, -8, -194}, 0, {432, 496}, {196, 144, 0, 255} }}, - {{ {-3, -8, 0}, 0, {432, -16}, {196, 144, 0, 255} }}, - {{ {-5, -7, 0}, 0, {400, -16}, {196, 144, 0, 255} }}, - {{ {-5, -7, -194}, 0, {400, 496}, {196, 144, 0, 255} }}, - {{ {-5, -7, -194}, 0, {400, 496}, {175, 158, 0, 255} }}, - {{ {-5, -7, 0}, 0, {400, -16}, {175, 158, 0, 255} }}, - {{ {-6, -6, 0}, 0, {368, -16}, {175, 158, 0, 255} }}, - {{ {-6, -6, -194}, 0, {368, 496}, {175, 158, 0, 255} }}, - {{ {-6, -6, -194}, 0, {368, 496}, {158, 175, 0, 255} }}, - {{ {-6, -6, 0}, 0, {368, -16}, {158, 175, 0, 255} }}, - {{ {-7, -5, 0}, 0, {336, -16}, {158, 175, 0, 255} }}, - {{ {-7, -5, -194}, 0, {336, 496}, {158, 175, 0, 255} }}, - {{ {-7, -5, -194}, 0, {336, 496}, {144, 196, 0, 255} }}, - {{ {-7, -5, 0}, 0, {336, -16}, {144, 196, 0, 255} }}, - {{ {-8, -3, 0}, 0, {304, -16}, {144, 196, 0, 255} }}, - {{ {-8, -3, -194}, 0, {304, 496}, {144, 196, 0, 255} }}, - {{ {-8, -3, -194}, 0, {304, 496}, {134, 219, 0, 255} }}, - {{ {-8, -3, 0}, 0, {304, -16}, {134, 219, 0, 255} }}, - {{ {-9, -2, 0}, 0, {272, -16}, {134, 219, 0, 255} }}, - {{ {-9, -2, -194}, 0, {272, 496}, {134, 219, 0, 255} }}, - {{ {-9, -2, -194}, 0, {272, 496}, {130, 244, 0, 255} }}, - {{ {-9, -2, 0}, 0, {272, -16}, {130, 244, 0, 255} }}, - {{ {-9, 0, 0}, 0, {240, -16}, {130, 244, 0, 255} }}, - {{ {-9, 0, -194}, 0, {240, 496}, {130, 244, 0, 255} }}, - {{ {-9, 0, -194}, 0, {240, 496}, {130, 12, 0, 255} }}, - {{ {-9, 0, 0}, 0, {240, -16}, {130, 12, 0, 255} }}, - {{ {-9, 2, 0}, 0, {208, -16}, {130, 12, 0, 255} }}, - {{ {-9, 2, -194}, 0, {208, 496}, {130, 12, 0, 255} }}, - {{ {-9, 2, -194}, 0, {208, 496}, {134, 37, 0, 255} }}, - {{ {-9, 2, 0}, 0, {208, -16}, {134, 37, 0, 255} }}, - {{ {-8, 3, 0}, 0, {176, -16}, {134, 37, 0, 255} }}, - {{ {-8, 3, -194}, 0, {176, 496}, {134, 37, 0, 255} }}, - {{ {-8, 3, -194}, 0, {176, 496}, {144, 60, 0, 255} }}, - {{ {-8, 3, 0}, 0, {176, -16}, {144, 60, 0, 255} }}, - {{ {-7, 5, 0}, 0, {144, -16}, {144, 60, 0, 255} }}, - {{ {-7, 5, -194}, 0, {144, 496}, {144, 60, 0, 255} }}, - {{ {-7, 5, -194}, 0, {144, 496}, {158, 81, 0, 255} }}, - {{ {-7, 5, 0}, 0, {144, -16}, {158, 81, 0, 255} }}, - {{ {-6, 6, 0}, 0, {112, -16}, {158, 81, 0, 255} }}, - {{ {-6, 6, -194}, 0, {112, 496}, {158, 81, 0, 255} }}, - {{ {-6, 6, -194}, 0, {112, 496}, {175, 98, 0, 255} }}, - {{ {-6, 6, 0}, 0, {112, -16}, {175, 98, 0, 255} }}, - {{ {-5, 7, 0}, 0, {80, -16}, {175, 98, 0, 255} }}, - {{ {-5, 7, -194}, 0, {80, 496}, {175, 98, 0, 255} }}, - {{ {-5, 7, -194}, 0, {80, 496}, {196, 112, 0, 255} }}, - {{ {-5, 7, 0}, 0, {80, -16}, {196, 112, 0, 255} }}, - {{ {-3, 8, 0}, 0, {48, -16}, {196, 112, 0, 255} }}, - {{ {-3, 8, -194}, 0, {48, 496}, {196, 112, 0, 255} }}, - {{ {3, 8, 0}, 0, {334, 525}, {0, 0, 127, 255} }}, - {{ {2, 9, 0}, 0, {288, 511}, {0, 0, 127, 255} }}, - {{ {0, 9, 0}, 0, {240, 506}, {0, 0, 127, 255} }}, - {{ {-3, 8, 0}, 0, {146, 525}, {0, 0, 127, 255} }}, - {{ {-2, 9, 0}, 0, {192, 511}, {0, 0, 127, 255} }}, - {{ {-8, 3, 0}, 0, {13, 658}, {0, 0, 127, 255} }}, - {{ {-6, 6, 0}, 0, {66, 578}, {0, 0, 127, 255} }}, - {{ {-5, 7, 0}, 0, {103, 548}, {0, 0, 127, 255} }}, - {{ {-7, 5, 0}, 0, {36, 615}, {0, 0, 127, 255} }}, - {{ {-9, 2, 0}, 0, {-1, 704}, {0, 0, 127, 255} }}, - {{ {-9, 0, 0}, 0, {-6, 752}, {0, 0, 127, 255} }}, - {{ {-8, -3, 0}, 0, {13, 846}, {0, 0, 127, 255} }}, - {{ {-9, -2, 0}, 0, {-1, 800}, {0, 0, 127, 255} }}, - {{ {-3, -8, 0}, 0, {146, 979}, {0, 0, 127, 255} }}, - {{ {-6, -6, 0}, 0, {66, 926}, {0, 0, 127, 255} }}, - {{ {-7, -5, 0}, 0, {36, 889}, {0, 0, 127, 255} }}, - {{ {-5, -7, 0}, 0, {103, 956}, {0, 0, 127, 255} }}, - {{ {-2, -9, 0}, 0, {192, 993}, {0, 0, 127, 255} }}, - {{ {0, -9, 0}, 0, {240, 998}, {0, 0, 127, 255} }}, - {{ {3, -8, 0}, 0, {334, 979}, {0, 0, 127, 255} }}, - {{ {2, -9, 0}, 0, {288, 993}, {0, 0, 127, 255} }}, - {{ {8, -3, 0}, 0, {467, 846}, {0, 0, 127, 255} }}, - {{ {6, -6, 0}, 0, {414, 926}, {0, 0, 127, 255} }}, - {{ {5, -7, 0}, 0, {377, 956}, {0, 0, 127, 255} }}, - {{ {7, -5, 0}, 0, {444, 889}, {0, 0, 127, 255} }}, - {{ {9, -2, 0}, 0, {481, 800}, {0, 0, 127, 255} }}, - {{ {9, 0, 0}, 0, {486, 752}, {0, 0, 127, 255} }}, - {{ {8, 3, 0}, 0, {467, 658}, {0, 0, 127, 255} }}, - {{ {9, 2, 0}, 0, {481, 704}, {0, 0, 127, 255} }}, - {{ {6, 6, 0}, 0, {414, 578}, {0, 0, 127, 255} }}, - {{ {7, 5, 0}, 0, {444, 615}, {0, 0, 127, 255} }}, - {{ {5, 7, 0}, 0, {377, 548}, {0, 0, 127, 255} }}, - {{ {-3, 8, -194}, 0, {48, 496}, {219, 122, 0, 255} }}, - {{ {-3, 8, 0}, 0, {48, -16}, {219, 122, 0, 255} }}, - {{ {-2, 9, 0}, 0, {16, -16}, {219, 122, 0, 255} }}, - {{ {-2, 9, -194}, 0, {16, 496}, {219, 122, 0, 255} }}, - {{ {-2, 9, -194}, 0, {16, 496}, {244, 126, 0, 255} }}, - {{ {-2, 9, 0}, 0, {16, -16}, {244, 126, 0, 255} }}, - {{ {0, 9, 0}, 0, {-16, -16}, {244, 126, 0, 255} }}, - {{ {0, 9, -194}, 0, {-16, 496}, {244, 126, 0, 255} }}, - {{ {-2, 9, -194}, 0, {704, 511}, {0, 0, 129, 255} }}, - {{ {0, 9, -194}, 0, {752, 506}, {0, 0, 129, 255} }}, - {{ {2, 9, -194}, 0, {800, 511}, {0, 0, 129, 255} }}, - {{ {5, 7, -194}, 0, {889, 548}, {0, 0, 129, 255} }}, - {{ {3, 8, -194}, 0, {846, 525}, {0, 0, 129, 255} }}, - {{ {9, 2, -194}, 0, {993, 704}, {0, 0, 129, 255} }}, - {{ {7, 5, -194}, 0, {956, 615}, {0, 0, 129, 255} }}, - {{ {6, 6, -194}, 0, {926, 578}, {0, 0, 129, 255} }}, - {{ {8, 3, -194}, 0, {979, 658}, {0, 0, 129, 255} }}, - {{ {9, 0, -194}, 0, {998, 752}, {0, 0, 129, 255} }}, - {{ {9, -2, -194}, 0, {993, 800}, {0, 0, 129, 255} }}, - {{ {7, -5, -194}, 0, {956, 889}, {0, 0, 129, 255} }}, - {{ {8, -3, -194}, 0, {979, 846}, {0, 0, 129, 255} }}, - {{ {2, -9, -194}, 0, {800, 993}, {0, 0, 129, 255} }}, - {{ {5, -7, -194}, 0, {889, 956}, {0, 0, 129, 255} }}, - {{ {6, -6, -194}, 0, {926, 926}, {0, 0, 129, 255} }}, - {{ {3, -8, -194}, 0, {846, 979}, {0, 0, 129, 255} }}, - {{ {0, -9, -194}, 0, {752, 998}, {0, 0, 129, 255} }}, - {{ {-2, -9, -194}, 0, {704, 993}, {0, 0, 129, 255} }}, - {{ {-5, -7, -194}, 0, {615, 956}, {0, 0, 129, 255} }}, - {{ {-3, -8, -194}, 0, {658, 979}, {0, 0, 129, 255} }}, - {{ {-9, -2, -194}, 0, {511, 800}, {0, 0, 129, 255} }}, - {{ {-7, -5, -194}, 0, {548, 889}, {0, 0, 129, 255} }}, - {{ {-6, -6, -194}, 0, {578, 926}, {0, 0, 129, 255} }}, - {{ {-7, -5, -194}, 0, {548, 889}, {0, 0, 129, 255} }}, - {{ {-8, -3, -194}, 0, {525, 846}, {0, 0, 129, 255} }}, - {{ {-9, -2, -194}, 0, {511, 800}, {0, 0, 129, 255} }}, - {{ {-9, 0, -194}, 0, {506, 752}, {0, 0, 129, 255} }}, - {{ {-9, 2, -194}, 0, {511, 704}, {0, 0, 129, 255} }}, - {{ {-7, 5, -194}, 0, {548, 615}, {0, 0, 129, 255} }}, - {{ {-8, 3, -194}, 0, {525, 658}, {0, 0, 129, 255} }}, - {{ {-2, 9, -194}, 0, {704, 511}, {0, 0, 129, 255} }}, - {{ {-5, 7, -194}, 0, {615, 548}, {0, 0, 129, 255} }}, - {{ {-6, 6, -194}, 0, {578, 578}, {0, 0, 129, 255} }}, - {{ {-3, 8, -194}, 0, {658, 525}, {0, 0, 129, 255} }}, - {{ {9, 2, -194}, 0, {993, 704}, {0, 0, 129, 255} }}, - {{ {2, -9, -194}, 0, {800, 993}, {0, 0, 129, 255} }}, - {{ {-4, -21, -194}, 0, {704, 511}, {0, 0, 127, 255} }}, - {{ {0, -22, -194}, 0, {752, 506}, {0, 0, 127, 255} }}, - {{ {4, -21, -194}, 0, {800, 511}, {0, 0, 127, 255} }}, - {{ {12, -18, -194}, 0, {889, 548}, {0, 0, 127, 255} }}, - {{ {8, -20, -194}, 0, {846, 525}, {0, 0, 127, 255} }}, - {{ {21, -4, -194}, 0, {993, 704}, {0, 0, 127, 255} }}, - {{ {18, -12, -194}, 0, {956, 615}, {0, 0, 127, 255} }}, - {{ {15, -15, -194}, 0, {926, 578}, {0, 0, 127, 255} }}, - {{ {20, -8, -194}, 0, {979, 658}, {0, 0, 127, 255} }}, - {{ {22, 0, -194}, 0, {998, 752}, {0, 0, 127, 255} }}, - {{ {21, 4, -194}, 0, {993, 800}, {0, 0, 127, 255} }}, - {{ {18, 12, -194}, 0, {956, 889}, {0, 0, 127, 255} }}, - {{ {20, 8, -194}, 0, {979, 846}, {0, 0, 127, 255} }}, - {{ {4, 21, -194}, 0, {800, 993}, {0, 0, 127, 255} }}, - {{ {12, 18, -194}, 0, {889, 956}, {0, 0, 127, 255} }}, - {{ {15, 15, -194}, 0, {926, 926}, {0, 0, 127, 255} }}, - {{ {8, 20, -194}, 0, {846, 979}, {0, 0, 127, 255} }}, - {{ {0, 22, -194}, 0, {752, 998}, {0, 0, 127, 255} }}, - {{ {-4, 21, -194}, 0, {704, 993}, {0, 0, 127, 255} }}, - {{ {4, 21, -194}, 0, {800, 993}, {0, 0, 127, 255} }}, - {{ {-4, 21, -194}, 0, {704, 993}, {0, 0, 127, 255} }}, - {{ {-12, 18, -194}, 0, {615, 956}, {0, 0, 127, 255} }}, - {{ {-8, 20, -194}, 0, {658, 979}, {0, 0, 127, 255} }}, - {{ {-21, 4, -194}, 0, {511, 800}, {0, 0, 127, 255} }}, - {{ {-18, 12, -194}, 0, {548, 889}, {0, 0, 127, 255} }}, - {{ {-15, 15, -194}, 0, {578, 926}, {0, 0, 127, 255} }}, - {{ {-20, 8, -194}, 0, {525, 846}, {0, 0, 127, 255} }}, - {{ {-22, 0, -194}, 0, {506, 752}, {0, 0, 127, 255} }}, - {{ {-21, -4, -194}, 0, {511, 704}, {0, 0, 127, 255} }}, - {{ {-18, -12, -194}, 0, {548, 615}, {0, 0, 127, 255} }}, - {{ {-20, -8, -194}, 0, {525, 658}, {0, 0, 127, 255} }}, - {{ {-4, -21, -194}, 0, {704, 511}, {0, 0, 127, 255} }}, - {{ {-12, -18, -194}, 0, {615, 548}, {0, 0, 127, 255} }}, - {{ {-15, -15, -194}, 0, {578, 578}, {0, 0, 127, 255} }}, - {{ {-8, -20, -194}, 0, {658, 525}, {0, 0, 127, 255} }}, - {{ {21, -4, -194}, 0, {993, 704}, {0, 0, 127, 255} }}, - }; -Gfx handle_Cylinder_mesh_tri_0[106] = { - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 0, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 30, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 60, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 90, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), - gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), - gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), - gsSP2Triangles(22, 23, 24, 0, 22, 24, 25, 0), - gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 120, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 152, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 184, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 216, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(2, 4, 3, 0, 0, 3, 5, 0), - gsSP2Triangles(3, 6, 5, 0, 3, 7, 6, 0), - gsSP2Triangles(6, 8, 5, 0, 5, 9, 10, 0), - gsSP2Triangles(5, 10, 11, 0, 10, 12, 11, 0), - gsSP2Triangles(5, 11, 13, 0, 11, 14, 13, 0), - gsSP2Triangles(11, 15, 14, 0, 14, 16, 13, 0), - gsSP2Triangles(13, 17, 18, 0, 13, 18, 19, 0), - gsSP2Triangles(18, 20, 19, 0, 13, 19, 21, 0), - gsSP2Triangles(19, 22, 21, 0, 19, 23, 22, 0), - gsSP2Triangles(22, 24, 21, 0, 21, 25, 26, 0), - gsSP2Triangles(21, 26, 27, 0, 26, 28, 27, 0), - gsSP2Triangles(21, 27, 0, 0, 27, 29, 0, 0), - gsSP2Triangles(27, 30, 29, 0, 29, 31, 0, 0), - gsSP2Triangles(0, 5, 13, 0, 13, 21, 0, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 248, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(10, 12, 11, 0, 8, 11, 13, 0), - gsSP2Triangles(11, 14, 13, 0, 11, 15, 14, 0), - gsSP2Triangles(14, 16, 13, 0, 13, 17, 18, 0), - gsSP2Triangles(13, 18, 19, 0, 18, 20, 19, 0), - gsSP2Triangles(13, 19, 21, 0, 19, 22, 21, 0), - gsSP2Triangles(19, 23, 22, 0, 22, 24, 21, 0), - gsSP2Triangles(21, 25, 26, 0, 21, 26, 27, 0), - gsSP2Triangles(26, 28, 27, 0, 21, 27, 29, 0), - gsSP2Triangles(27, 30, 29, 0, 27, 31, 30, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 280, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), - gsSP2Triangles(2, 4, 5, 0, 4, 6, 5, 0), - gsSP2Triangles(2, 5, 7, 0, 5, 8, 7, 0), - gsSP2Triangles(5, 9, 8, 0, 8, 10, 7, 0), - gsSP2Triangles(7, 11, 12, 0, 12, 2, 7, 0), - gsSP2Triangles(13, 14, 15, 0, 13, 15, 16, 0), - gsSP2Triangles(15, 17, 16, 0, 13, 16, 18, 0), - gsSP2Triangles(16, 19, 18, 0, 16, 20, 19, 0), - gsSP2Triangles(19, 21, 18, 0, 18, 22, 23, 0), - gsSP2Triangles(18, 23, 24, 0, 23, 25, 24, 0), - gsSP2Triangles(18, 24, 26, 0, 24, 27, 26, 0), - gsSP2Triangles(24, 28, 27, 0, 27, 29, 26, 0), - gsSP1Triangle(26, 30, 31, 0), - gsSPVertex(handle_Cylinder_mesh_vtx_0 + 312, 17, 0), - gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), - gsSP2Triangles(0, 2, 4, 0, 2, 5, 4, 0), - gsSP2Triangles(2, 6, 5, 0, 5, 7, 4, 0), - gsSP2Triangles(4, 8, 9, 0, 4, 9, 10, 0), - gsSP2Triangles(9, 11, 10, 0, 4, 10, 12, 0), - gsSP2Triangles(10, 13, 12, 0, 10, 14, 13, 0), - gsSP2Triangles(13, 15, 12, 0, 12, 16, 0, 0), - gsSP1Triangle(0, 4, 12, 0), - gsSPEndDisplayList(), }; - -Gfx mat_handle_f3dlite_material[9] = { - gsSPClearGeometryMode(G_CLIPPING | G_ZBUFFER), - gsSPSetLights1(handle_f3dlite_material_lights), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsDPSetAlphaDither(G_AD_NOISE), - gsSPTexture(65535, 65535, 0, 0, 1), - gsSPEndDisplayList(), -}; - -Gfx mat_revert_handle_f3dlite_material[4] = { - gsSPSetGeometryMode(G_CLIPPING | G_ZBUFFER), - gsDPPipeSync(), - gsDPSetAlphaDither(G_AD_DISABLE), - gsSPEndDisplayList(), -}; - -Gfx handle_Cylinder_mesh[13] = { - gsSPClearGeometryMode(G_LIGHTING), - gsSPVertex(handle_Cylinder_mesh_vtx_cull + 0, 8, 0), - gsSPSetGeometryMode(G_LIGHTING), - gsSPCullDisplayList(0, 7), - gsSPDisplayList(mat_handle_f3dlite_material), - gsSPDisplayList(handle_Cylinder_mesh_tri_0), - gsSPDisplayList(mat_revert_handle_f3dlite_material), - gsDPPipeSync(), - gsSPSetGeometryMode(G_LIGHTING), - gsSPClearGeometryMode(G_TEXTURE_GEN), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsSPTexture(65535, 65535, 0, 0, 0), - gsSPEndDisplayList(), -}; - -}; -} \ No newline at end of file +} diff --git a/src/engine/editor/Handle.cpp b/src/engine/editor/Handle.cpp new file mode 100644 index 000000000..212e802eb --- /dev/null +++ b/src/engine/editor/Handle.cpp @@ -0,0 +1,493 @@ +#include +#include + +#include "Handle.h" + +Lights1 handle_f3dlite_material_lights = gdSPDefLights1( + 0x7F, 0x7F, 0x7F, + 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49); + + +Vtx handle_Cylinder_mesh_vtx_cull[8] = { + {{ {-22, -22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-22, -22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-22, 22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-22, 22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {22, -22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {22, -22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {22, 22, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {22, 22, -271}, 0, {0, 0}, {0, 0, 0, 0} }}, +}; + +Vtx handle_Cylinder_mesh_vtx_0[329] = { + {{ {0, -22, -194}, 0, {240, 506}, {12, 134, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {12, 134, 222, 255} }}, + {{ {4, -21, -194}, 0, {288, 511}, {12, 134, 222, 255} }}, + {{ {4, -21, -194}, 0, {288, 511}, {35, 139, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {35, 139, 222, 255} }}, + {{ {8, -20, -194}, 0, {334, 525}, {35, 139, 222, 255} }}, + {{ {8, -20, -194}, 0, {334, 525}, {58, 148, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {58, 148, 222, 255} }}, + {{ {12, -18, -194}, 0, {377, 548}, {58, 148, 222, 255} }}, + {{ {12, -18, -194}, 0, {377, 548}, {78, 162, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {78, 162, 222, 255} }}, + {{ {15, -15, -194}, 0, {414, 578}, {78, 162, 222, 255} }}, + {{ {15, -15, -194}, 0, {414, 578}, {94, 178, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {94, 178, 222, 255} }}, + {{ {18, -12, -194}, 0, {444, 615}, {94, 178, 222, 255} }}, + {{ {18, -12, -194}, 0, {444, 615}, {108, 198, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {108, 198, 222, 255} }}, + {{ {20, -8, -194}, 0, {467, 658}, {108, 198, 222, 255} }}, + {{ {20, -8, -194}, 0, {467, 658}, {117, 221, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {117, 221, 222, 255} }}, + {{ {21, -4, -194}, 0, {481, 704}, {117, 221, 222, 255} }}, + {{ {21, -4, -194}, 0, {481, 704}, {122, 244, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {122, 244, 222, 255} }}, + {{ {22, 0, -194}, 0, {486, 752}, {122, 244, 222, 255} }}, + {{ {22, 0, -194}, 0, {486, 752}, {122, 12, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {122, 12, 222, 255} }}, + {{ {21, 4, -194}, 0, {481, 800}, {122, 12, 222, 255} }}, + {{ {21, 4, -194}, 0, {481, 800}, {117, 35, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {117, 35, 222, 255} }}, + {{ {20, 8, -194}, 0, {467, 846}, {117, 35, 222, 255} }}, + {{ {20, 8, -194}, 0, {467, 846}, {108, 58, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {108, 58, 222, 255} }}, + {{ {18, 12, -194}, 0, {444, 889}, {108, 58, 222, 255} }}, + {{ {18, 12, -194}, 0, {444, 889}, {94, 78, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {94, 78, 222, 255} }}, + {{ {15, 15, -194}, 0, {414, 926}, {94, 78, 222, 255} }}, + {{ {15, 15, -194}, 0, {414, 926}, {78, 94, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {78, 94, 222, 255} }}, + {{ {12, 18, -194}, 0, {377, 956}, {78, 94, 222, 255} }}, + {{ {12, 18, -194}, 0, {377, 956}, {58, 108, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {58, 108, 222, 255} }}, + {{ {8, 20, -194}, 0, {334, 979}, {58, 108, 222, 255} }}, + {{ {8, 20, -194}, 0, {334, 979}, {35, 117, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {35, 117, 222, 255} }}, + {{ {4, 21, -194}, 0, {288, 993}, {35, 117, 222, 255} }}, + {{ {4, 21, -194}, 0, {288, 993}, {12, 122, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {12, 122, 222, 255} }}, + {{ {0, 22, -194}, 0, {240, 998}, {12, 122, 222, 255} }}, + {{ {0, 22, -194}, 0, {240, 998}, {244, 122, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {244, 122, 222, 255} }}, + {{ {-4, 21, -194}, 0, {192, 993}, {244, 122, 222, 255} }}, + {{ {-4, 21, -194}, 0, {192, 993}, {221, 117, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {221, 117, 222, 255} }}, + {{ {-8, 20, -194}, 0, {146, 979}, {221, 117, 222, 255} }}, + {{ {-8, 20, -194}, 0, {146, 979}, {198, 108, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {198, 108, 222, 255} }}, + {{ {-12, 18, -194}, 0, {103, 956}, {198, 108, 222, 255} }}, + {{ {-12, 18, -194}, 0, {103, 956}, {178, 94, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {178, 94, 222, 255} }}, + {{ {-15, 15, -194}, 0, {66, 926}, {178, 94, 222, 255} }}, + {{ {-15, 15, -194}, 0, {66, 926}, {162, 78, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {162, 78, 222, 255} }}, + {{ {-18, 12, -194}, 0, {36, 889}, {162, 78, 222, 255} }}, + {{ {-18, 12, -194}, 0, {36, 889}, {148, 58, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {148, 58, 222, 255} }}, + {{ {-20, 8, -194}, 0, {13, 846}, {148, 58, 222, 255} }}, + {{ {-20, 8, -194}, 0, {13, 846}, {139, 35, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {139, 35, 222, 255} }}, + {{ {-21, 4, -194}, 0, {-1, 800}, {139, 35, 222, 255} }}, + {{ {-21, 4, -194}, 0, {-1, 800}, {134, 12, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {134, 12, 222, 255} }}, + {{ {-22, 0, -194}, 0, {-6, 752}, {134, 12, 222, 255} }}, + {{ {-22, 0, -194}, 0, {-6, 752}, {134, 244, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {134, 244, 222, 255} }}, + {{ {-21, -4, -194}, 0, {-1, 704}, {134, 244, 222, 255} }}, + {{ {-21, -4, -194}, 0, {-1, 704}, {139, 221, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {139, 221, 222, 255} }}, + {{ {-20, -8, -194}, 0, {13, 658}, {139, 221, 222, 255} }}, + {{ {-20, -8, -194}, 0, {13, 658}, {148, 198, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {148, 198, 222, 255} }}, + {{ {-18, -12, -194}, 0, {36, 615}, {148, 198, 222, 255} }}, + {{ {-18, -12, -194}, 0, {36, 615}, {162, 178, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {162, 178, 222, 255} }}, + {{ {-15, -15, -194}, 0, {66, 578}, {162, 178, 222, 255} }}, + {{ {-15, -15, -194}, 0, {66, 578}, {178, 162, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {178, 162, 222, 255} }}, + {{ {-12, -18, -194}, 0, {103, 548}, {178, 162, 222, 255} }}, + {{ {-12, -18, -194}, 0, {103, 548}, {198, 148, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {198, 148, 222, 255} }}, + {{ {-8, -20, -194}, 0, {146, 525}, {198, 148, 222, 255} }}, + {{ {-8, -20, -194}, 0, {146, 525}, {221, 139, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {221, 139, 222, 255} }}, + {{ {-4, -21, -194}, 0, {192, 511}, {221, 139, 222, 255} }}, + {{ {-4, -21, -194}, 0, {192, 511}, {244, 134, 222, 255} }}, + {{ {0, 0, -271}, 0, {240, 752}, {244, 134, 222, 255} }}, + {{ {0, -22, -194}, 0, {240, 506}, {244, 134, 222, 255} }}, + {{ {0, 9, -194}, 0, {1008, 496}, {12, 126, 0, 255} }}, + {{ {0, 9, 0}, 0, {1008, -16}, {12, 126, 0, 255} }}, + {{ {2, 9, 0}, 0, {976, -16}, {12, 126, 0, 255} }}, + {{ {2, 9, -194}, 0, {976, 496}, {12, 126, 0, 255} }}, + {{ {2, 9, -194}, 0, {976, 496}, {37, 122, 0, 255} }}, + {{ {2, 9, 0}, 0, {976, -16}, {37, 122, 0, 255} }}, + {{ {3, 8, 0}, 0, {944, -16}, {37, 122, 0, 255} }}, + {{ {3, 8, -194}, 0, {944, 496}, {37, 122, 0, 255} }}, + {{ {3, 8, -194}, 0, {944, 496}, {60, 112, 0, 255} }}, + {{ {3, 8, 0}, 0, {944, -16}, {60, 112, 0, 255} }}, + {{ {5, 7, 0}, 0, {912, -16}, {60, 112, 0, 255} }}, + {{ {5, 7, -194}, 0, {912, 496}, {60, 112, 0, 255} }}, + {{ {5, 7, -194}, 0, {912, 496}, {81, 98, 0, 255} }}, + {{ {5, 7, 0}, 0, {912, -16}, {81, 98, 0, 255} }}, + {{ {6, 6, 0}, 0, {880, -16}, {81, 98, 0, 255} }}, + {{ {6, 6, -194}, 0, {880, 496}, {81, 98, 0, 255} }}, + {{ {6, 6, -194}, 0, {880, 496}, {98, 81, 0, 255} }}, + {{ {6, 6, 0}, 0, {880, -16}, {98, 81, 0, 255} }}, + {{ {7, 5, 0}, 0, {848, -16}, {98, 81, 0, 255} }}, + {{ {7, 5, -194}, 0, {848, 496}, {98, 81, 0, 255} }}, + {{ {7, 5, -194}, 0, {848, 496}, {112, 60, 0, 255} }}, + {{ {7, 5, 0}, 0, {848, -16}, {112, 60, 0, 255} }}, + {{ {8, 3, 0}, 0, {816, -16}, {112, 60, 0, 255} }}, + {{ {8, 3, -194}, 0, {816, 496}, {112, 60, 0, 255} }}, + {{ {8, 3, -194}, 0, {816, 496}, {122, 37, 0, 255} }}, + {{ {8, 3, 0}, 0, {816, -16}, {122, 37, 0, 255} }}, + {{ {9, 2, 0}, 0, {784, -16}, {122, 37, 0, 255} }}, + {{ {9, 2, -194}, 0, {784, 496}, {122, 37, 0, 255} }}, + {{ {9, 2, -194}, 0, {784, 496}, {126, 12, 0, 255} }}, + {{ {9, 2, 0}, 0, {784, -16}, {126, 12, 0, 255} }}, + {{ {9, 0, 0}, 0, {752, -16}, {126, 12, 0, 255} }}, + {{ {9, 0, -194}, 0, {752, 496}, {126, 12, 0, 255} }}, + {{ {9, 0, -194}, 0, {752, 496}, {126, 244, 0, 255} }}, + {{ {9, 0, 0}, 0, {752, -16}, {126, 244, 0, 255} }}, + {{ {9, -2, 0}, 0, {720, -16}, {126, 244, 0, 255} }}, + {{ {9, -2, -194}, 0, {720, 496}, {126, 244, 0, 255} }}, + {{ {9, -2, -194}, 0, {720, 496}, {122, 219, 0, 255} }}, + {{ {9, -2, 0}, 0, {720, -16}, {122, 219, 0, 255} }}, + {{ {8, -3, 0}, 0, {688, -16}, {122, 219, 0, 255} }}, + {{ {8, -3, -194}, 0, {688, 496}, {122, 219, 0, 255} }}, + {{ {8, -3, -194}, 0, {688, 496}, {112, 196, 0, 255} }}, + {{ {8, -3, 0}, 0, {688, -16}, {112, 196, 0, 255} }}, + {{ {7, -5, 0}, 0, {656, -16}, {112, 196, 0, 255} }}, + {{ {7, -5, -194}, 0, {656, 496}, {112, 196, 0, 255} }}, + {{ {7, -5, -194}, 0, {656, 496}, {98, 175, 0, 255} }}, + {{ {7, -5, 0}, 0, {656, -16}, {98, 175, 0, 255} }}, + {{ {6, -6, 0}, 0, {624, -16}, {98, 175, 0, 255} }}, + {{ {6, -6, -194}, 0, {624, 496}, {98, 175, 0, 255} }}, + {{ {6, -6, -194}, 0, {624, 496}, {81, 158, 0, 255} }}, + {{ {6, -6, 0}, 0, {624, -16}, {81, 158, 0, 255} }}, + {{ {5, -7, 0}, 0, {592, -16}, {81, 158, 0, 255} }}, + {{ {5, -7, -194}, 0, {592, 496}, {81, 158, 0, 255} }}, + {{ {5, -7, -194}, 0, {592, 496}, {60, 144, 0, 255} }}, + {{ {5, -7, 0}, 0, {592, -16}, {60, 144, 0, 255} }}, + {{ {3, -8, 0}, 0, {560, -16}, {60, 144, 0, 255} }}, + {{ {3, -8, -194}, 0, {560, 496}, {60, 144, 0, 255} }}, + {{ {3, -8, -194}, 0, {560, 496}, {37, 134, 0, 255} }}, + {{ {3, -8, 0}, 0, {560, -16}, {37, 134, 0, 255} }}, + {{ {2, -9, 0}, 0, {528, -16}, {37, 134, 0, 255} }}, + {{ {2, -9, -194}, 0, {528, 496}, {37, 134, 0, 255} }}, + {{ {2, -9, -194}, 0, {528, 496}, {12, 130, 0, 255} }}, + {{ {2, -9, 0}, 0, {528, -16}, {12, 130, 0, 255} }}, + {{ {0, -9, 0}, 0, {496, -16}, {12, 130, 0, 255} }}, + {{ {0, -9, -194}, 0, {496, 496}, {12, 130, 0, 255} }}, + {{ {0, -9, -194}, 0, {496, 496}, {244, 130, 0, 255} }}, + {{ {0, -9, 0}, 0, {496, -16}, {244, 130, 0, 255} }}, + {{ {-2, -9, 0}, 0, {464, -16}, {244, 130, 0, 255} }}, + {{ {-2, -9, -194}, 0, {464, 496}, {244, 130, 0, 255} }}, + {{ {-2, -9, -194}, 0, {464, 496}, {219, 134, 0, 255} }}, + {{ {-2, -9, 0}, 0, {464, -16}, {219, 134, 0, 255} }}, + {{ {-3, -8, 0}, 0, {432, -16}, {219, 134, 0, 255} }}, + {{ {-3, -8, -194}, 0, {432, 496}, {219, 134, 0, 255} }}, + {{ {-3, -8, -194}, 0, {432, 496}, {196, 144, 0, 255} }}, + {{ {-3, -8, 0}, 0, {432, -16}, {196, 144, 0, 255} }}, + {{ {-5, -7, 0}, 0, {400, -16}, {196, 144, 0, 255} }}, + {{ {-5, -7, -194}, 0, {400, 496}, {196, 144, 0, 255} }}, + {{ {-5, -7, -194}, 0, {400, 496}, {175, 158, 0, 255} }}, + {{ {-5, -7, 0}, 0, {400, -16}, {175, 158, 0, 255} }}, + {{ {-6, -6, 0}, 0, {368, -16}, {175, 158, 0, 255} }}, + {{ {-6, -6, -194}, 0, {368, 496}, {175, 158, 0, 255} }}, + {{ {-6, -6, -194}, 0, {368, 496}, {158, 175, 0, 255} }}, + {{ {-6, -6, 0}, 0, {368, -16}, {158, 175, 0, 255} }}, + {{ {-7, -5, 0}, 0, {336, -16}, {158, 175, 0, 255} }}, + {{ {-7, -5, -194}, 0, {336, 496}, {158, 175, 0, 255} }}, + {{ {-7, -5, -194}, 0, {336, 496}, {144, 196, 0, 255} }}, + {{ {-7, -5, 0}, 0, {336, -16}, {144, 196, 0, 255} }}, + {{ {-8, -3, 0}, 0, {304, -16}, {144, 196, 0, 255} }}, + {{ {-8, -3, -194}, 0, {304, 496}, {144, 196, 0, 255} }}, + {{ {-8, -3, -194}, 0, {304, 496}, {134, 219, 0, 255} }}, + {{ {-8, -3, 0}, 0, {304, -16}, {134, 219, 0, 255} }}, + {{ {-9, -2, 0}, 0, {272, -16}, {134, 219, 0, 255} }}, + {{ {-9, -2, -194}, 0, {272, 496}, {134, 219, 0, 255} }}, + {{ {-9, -2, -194}, 0, {272, 496}, {130, 244, 0, 255} }}, + {{ {-9, -2, 0}, 0, {272, -16}, {130, 244, 0, 255} }}, + {{ {-9, 0, 0}, 0, {240, -16}, {130, 244, 0, 255} }}, + {{ {-9, 0, -194}, 0, {240, 496}, {130, 244, 0, 255} }}, + {{ {-9, 0, -194}, 0, {240, 496}, {130, 12, 0, 255} }}, + {{ {-9, 0, 0}, 0, {240, -16}, {130, 12, 0, 255} }}, + {{ {-9, 2, 0}, 0, {208, -16}, {130, 12, 0, 255} }}, + {{ {-9, 2, -194}, 0, {208, 496}, {130, 12, 0, 255} }}, + {{ {-9, 2, -194}, 0, {208, 496}, {134, 37, 0, 255} }}, + {{ {-9, 2, 0}, 0, {208, -16}, {134, 37, 0, 255} }}, + {{ {-8, 3, 0}, 0, {176, -16}, {134, 37, 0, 255} }}, + {{ {-8, 3, -194}, 0, {176, 496}, {134, 37, 0, 255} }}, + {{ {-8, 3, -194}, 0, {176, 496}, {144, 60, 0, 255} }}, + {{ {-8, 3, 0}, 0, {176, -16}, {144, 60, 0, 255} }}, + {{ {-7, 5, 0}, 0, {144, -16}, {144, 60, 0, 255} }}, + {{ {-7, 5, -194}, 0, {144, 496}, {144, 60, 0, 255} }}, + {{ {-7, 5, -194}, 0, {144, 496}, {158, 81, 0, 255} }}, + {{ {-7, 5, 0}, 0, {144, -16}, {158, 81, 0, 255} }}, + {{ {-6, 6, 0}, 0, {112, -16}, {158, 81, 0, 255} }}, + {{ {-6, 6, -194}, 0, {112, 496}, {158, 81, 0, 255} }}, + {{ {-6, 6, -194}, 0, {112, 496}, {175, 98, 0, 255} }}, + {{ {-6, 6, 0}, 0, {112, -16}, {175, 98, 0, 255} }}, + {{ {-5, 7, 0}, 0, {80, -16}, {175, 98, 0, 255} }}, + {{ {-5, 7, -194}, 0, {80, 496}, {175, 98, 0, 255} }}, + {{ {-5, 7, -194}, 0, {80, 496}, {196, 112, 0, 255} }}, + {{ {-5, 7, 0}, 0, {80, -16}, {196, 112, 0, 255} }}, + {{ {-3, 8, 0}, 0, {48, -16}, {196, 112, 0, 255} }}, + {{ {-3, 8, -194}, 0, {48, 496}, {196, 112, 0, 255} }}, + {{ {3, 8, 0}, 0, {334, 525}, {0, 0, 127, 255} }}, + {{ {2, 9, 0}, 0, {288, 511}, {0, 0, 127, 255} }}, + {{ {0, 9, 0}, 0, {240, 506}, {0, 0, 127, 255} }}, + {{ {-3, 8, 0}, 0, {146, 525}, {0, 0, 127, 255} }}, + {{ {-2, 9, 0}, 0, {192, 511}, {0, 0, 127, 255} }}, + {{ {-8, 3, 0}, 0, {13, 658}, {0, 0, 127, 255} }}, + {{ {-6, 6, 0}, 0, {66, 578}, {0, 0, 127, 255} }}, + {{ {-5, 7, 0}, 0, {103, 548}, {0, 0, 127, 255} }}, + {{ {-7, 5, 0}, 0, {36, 615}, {0, 0, 127, 255} }}, + {{ {-9, 2, 0}, 0, {-1, 704}, {0, 0, 127, 255} }}, + {{ {-9, 0, 0}, 0, {-6, 752}, {0, 0, 127, 255} }}, + {{ {-8, -3, 0}, 0, {13, 846}, {0, 0, 127, 255} }}, + {{ {-9, -2, 0}, 0, {-1, 800}, {0, 0, 127, 255} }}, + {{ {-3, -8, 0}, 0, {146, 979}, {0, 0, 127, 255} }}, + {{ {-6, -6, 0}, 0, {66, 926}, {0, 0, 127, 255} }}, + {{ {-7, -5, 0}, 0, {36, 889}, {0, 0, 127, 255} }}, + {{ {-5, -7, 0}, 0, {103, 956}, {0, 0, 127, 255} }}, + {{ {-2, -9, 0}, 0, {192, 993}, {0, 0, 127, 255} }}, + {{ {0, -9, 0}, 0, {240, 998}, {0, 0, 127, 255} }}, + {{ {3, -8, 0}, 0, {334, 979}, {0, 0, 127, 255} }}, + {{ {2, -9, 0}, 0, {288, 993}, {0, 0, 127, 255} }}, + {{ {8, -3, 0}, 0, {467, 846}, {0, 0, 127, 255} }}, + {{ {6, -6, 0}, 0, {414, 926}, {0, 0, 127, 255} }}, + {{ {5, -7, 0}, 0, {377, 956}, {0, 0, 127, 255} }}, + {{ {7, -5, 0}, 0, {444, 889}, {0, 0, 127, 255} }}, + {{ {9, -2, 0}, 0, {481, 800}, {0, 0, 127, 255} }}, + {{ {9, 0, 0}, 0, {486, 752}, {0, 0, 127, 255} }}, + {{ {8, 3, 0}, 0, {467, 658}, {0, 0, 127, 255} }}, + {{ {9, 2, 0}, 0, {481, 704}, {0, 0, 127, 255} }}, + {{ {6, 6, 0}, 0, {414, 578}, {0, 0, 127, 255} }}, + {{ {7, 5, 0}, 0, {444, 615}, {0, 0, 127, 255} }}, + {{ {5, 7, 0}, 0, {377, 548}, {0, 0, 127, 255} }}, + {{ {-3, 8, -194}, 0, {48, 496}, {219, 122, 0, 255} }}, + {{ {-3, 8, 0}, 0, {48, -16}, {219, 122, 0, 255} }}, + {{ {-2, 9, 0}, 0, {16, -16}, {219, 122, 0, 255} }}, + {{ {-2, 9, -194}, 0, {16, 496}, {219, 122, 0, 255} }}, + {{ {-2, 9, -194}, 0, {16, 496}, {244, 126, 0, 255} }}, + {{ {-2, 9, 0}, 0, {16, -16}, {244, 126, 0, 255} }}, + {{ {0, 9, 0}, 0, {-16, -16}, {244, 126, 0, 255} }}, + {{ {0, 9, -194}, 0, {-16, 496}, {244, 126, 0, 255} }}, + {{ {-2, 9, -194}, 0, {704, 511}, {0, 0, 129, 255} }}, + {{ {0, 9, -194}, 0, {752, 506}, {0, 0, 129, 255} }}, + {{ {2, 9, -194}, 0, {800, 511}, {0, 0, 129, 255} }}, + {{ {5, 7, -194}, 0, {889, 548}, {0, 0, 129, 255} }}, + {{ {3, 8, -194}, 0, {846, 525}, {0, 0, 129, 255} }}, + {{ {9, 2, -194}, 0, {993, 704}, {0, 0, 129, 255} }}, + {{ {7, 5, -194}, 0, {956, 615}, {0, 0, 129, 255} }}, + {{ {6, 6, -194}, 0, {926, 578}, {0, 0, 129, 255} }}, + {{ {8, 3, -194}, 0, {979, 658}, {0, 0, 129, 255} }}, + {{ {9, 0, -194}, 0, {998, 752}, {0, 0, 129, 255} }}, + {{ {9, -2, -194}, 0, {993, 800}, {0, 0, 129, 255} }}, + {{ {7, -5, -194}, 0, {956, 889}, {0, 0, 129, 255} }}, + {{ {8, -3, -194}, 0, {979, 846}, {0, 0, 129, 255} }}, + {{ {2, -9, -194}, 0, {800, 993}, {0, 0, 129, 255} }}, + {{ {5, -7, -194}, 0, {889, 956}, {0, 0, 129, 255} }}, + {{ {6, -6, -194}, 0, {926, 926}, {0, 0, 129, 255} }}, + {{ {3, -8, -194}, 0, {846, 979}, {0, 0, 129, 255} }}, + {{ {0, -9, -194}, 0, {752, 998}, {0, 0, 129, 255} }}, + {{ {-2, -9, -194}, 0, {704, 993}, {0, 0, 129, 255} }}, + {{ {-5, -7, -194}, 0, {615, 956}, {0, 0, 129, 255} }}, + {{ {-3, -8, -194}, 0, {658, 979}, {0, 0, 129, 255} }}, + {{ {-9, -2, -194}, 0, {511, 800}, {0, 0, 129, 255} }}, + {{ {-7, -5, -194}, 0, {548, 889}, {0, 0, 129, 255} }}, + {{ {-6, -6, -194}, 0, {578, 926}, {0, 0, 129, 255} }}, + {{ {-7, -5, -194}, 0, {548, 889}, {0, 0, 129, 255} }}, + {{ {-8, -3, -194}, 0, {525, 846}, {0, 0, 129, 255} }}, + {{ {-9, -2, -194}, 0, {511, 800}, {0, 0, 129, 255} }}, + {{ {-9, 0, -194}, 0, {506, 752}, {0, 0, 129, 255} }}, + {{ {-9, 2, -194}, 0, {511, 704}, {0, 0, 129, 255} }}, + {{ {-7, 5, -194}, 0, {548, 615}, {0, 0, 129, 255} }}, + {{ {-8, 3, -194}, 0, {525, 658}, {0, 0, 129, 255} }}, + {{ {-2, 9, -194}, 0, {704, 511}, {0, 0, 129, 255} }}, + {{ {-5, 7, -194}, 0, {615, 548}, {0, 0, 129, 255} }}, + {{ {-6, 6, -194}, 0, {578, 578}, {0, 0, 129, 255} }}, + {{ {-3, 8, -194}, 0, {658, 525}, {0, 0, 129, 255} }}, + {{ {9, 2, -194}, 0, {993, 704}, {0, 0, 129, 255} }}, + {{ {2, -9, -194}, 0, {800, 993}, {0, 0, 129, 255} }}, + {{ {-4, -21, -194}, 0, {704, 511}, {0, 0, 127, 255} }}, + {{ {0, -22, -194}, 0, {752, 506}, {0, 0, 127, 255} }}, + {{ {4, -21, -194}, 0, {800, 511}, {0, 0, 127, 255} }}, + {{ {12, -18, -194}, 0, {889, 548}, {0, 0, 127, 255} }}, + {{ {8, -20, -194}, 0, {846, 525}, {0, 0, 127, 255} }}, + {{ {21, -4, -194}, 0, {993, 704}, {0, 0, 127, 255} }}, + {{ {18, -12, -194}, 0, {956, 615}, {0, 0, 127, 255} }}, + {{ {15, -15, -194}, 0, {926, 578}, {0, 0, 127, 255} }}, + {{ {20, -8, -194}, 0, {979, 658}, {0, 0, 127, 255} }}, + {{ {22, 0, -194}, 0, {998, 752}, {0, 0, 127, 255} }}, + {{ {21, 4, -194}, 0, {993, 800}, {0, 0, 127, 255} }}, + {{ {18, 12, -194}, 0, {956, 889}, {0, 0, 127, 255} }}, + {{ {20, 8, -194}, 0, {979, 846}, {0, 0, 127, 255} }}, + {{ {4, 21, -194}, 0, {800, 993}, {0, 0, 127, 255} }}, + {{ {12, 18, -194}, 0, {889, 956}, {0, 0, 127, 255} }}, + {{ {15, 15, -194}, 0, {926, 926}, {0, 0, 127, 255} }}, + {{ {8, 20, -194}, 0, {846, 979}, {0, 0, 127, 255} }}, + {{ {0, 22, -194}, 0, {752, 998}, {0, 0, 127, 255} }}, + {{ {-4, 21, -194}, 0, {704, 993}, {0, 0, 127, 255} }}, + {{ {4, 21, -194}, 0, {800, 993}, {0, 0, 127, 255} }}, + {{ {-4, 21, -194}, 0, {704, 993}, {0, 0, 127, 255} }}, + {{ {-12, 18, -194}, 0, {615, 956}, {0, 0, 127, 255} }}, + {{ {-8, 20, -194}, 0, {658, 979}, {0, 0, 127, 255} }}, + {{ {-21, 4, -194}, 0, {511, 800}, {0, 0, 127, 255} }}, + {{ {-18, 12, -194}, 0, {548, 889}, {0, 0, 127, 255} }}, + {{ {-15, 15, -194}, 0, {578, 926}, {0, 0, 127, 255} }}, + {{ {-20, 8, -194}, 0, {525, 846}, {0, 0, 127, 255} }}, + {{ {-22, 0, -194}, 0, {506, 752}, {0, 0, 127, 255} }}, + {{ {-21, -4, -194}, 0, {511, 704}, {0, 0, 127, 255} }}, + {{ {-18, -12, -194}, 0, {548, 615}, {0, 0, 127, 255} }}, + {{ {-20, -8, -194}, 0, {525, 658}, {0, 0, 127, 255} }}, + {{ {-4, -21, -194}, 0, {704, 511}, {0, 0, 127, 255} }}, + {{ {-12, -18, -194}, 0, {615, 548}, {0, 0, 127, 255} }}, + {{ {-15, -15, -194}, 0, {578, 578}, {0, 0, 127, 255} }}, + {{ {-8, -20, -194}, 0, {658, 525}, {0, 0, 127, 255} }}, + {{ {21, -4, -194}, 0, {993, 704}, {0, 0, 127, 255} }}, +}; +Gfx handle_Cylinder_mesh_tri_0[106] = { + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 0, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 30, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 60, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 90, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), + gsSP2Triangles(22, 23, 24, 0, 22, 24, 25, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 120, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 152, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 184, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 216, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 3, 0, 0, 3, 5, 0), + gsSP2Triangles(3, 6, 5, 0, 3, 7, 6, 0), + gsSP2Triangles(6, 8, 5, 0, 5, 9, 10, 0), + gsSP2Triangles(5, 10, 11, 0, 10, 12, 11, 0), + gsSP2Triangles(5, 11, 13, 0, 11, 14, 13, 0), + gsSP2Triangles(11, 15, 14, 0, 14, 16, 13, 0), + gsSP2Triangles(13, 17, 18, 0, 13, 18, 19, 0), + gsSP2Triangles(18, 20, 19, 0, 13, 19, 21, 0), + gsSP2Triangles(19, 22, 21, 0, 19, 23, 22, 0), + gsSP2Triangles(22, 24, 21, 0, 21, 25, 26, 0), + gsSP2Triangles(21, 26, 27, 0, 26, 28, 27, 0), + gsSP2Triangles(21, 27, 0, 0, 27, 29, 0, 0), + gsSP2Triangles(27, 30, 29, 0, 29, 31, 0, 0), + gsSP2Triangles(0, 5, 13, 0, 13, 21, 0, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 248, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(10, 12, 11, 0, 8, 11, 13, 0), + gsSP2Triangles(11, 14, 13, 0, 11, 15, 14, 0), + gsSP2Triangles(14, 16, 13, 0, 13, 17, 18, 0), + gsSP2Triangles(13, 18, 19, 0, 18, 20, 19, 0), + gsSP2Triangles(13, 19, 21, 0, 19, 22, 21, 0), + gsSP2Triangles(19, 23, 22, 0, 22, 24, 21, 0), + gsSP2Triangles(21, 25, 26, 0, 21, 26, 27, 0), + gsSP2Triangles(26, 28, 27, 0, 21, 27, 29, 0), + gsSP2Triangles(27, 30, 29, 0, 27, 31, 30, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 280, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP2Triangles(2, 4, 5, 0, 4, 6, 5, 0), + gsSP2Triangles(2, 5, 7, 0, 5, 8, 7, 0), + gsSP2Triangles(5, 9, 8, 0, 8, 10, 7, 0), + gsSP2Triangles(7, 11, 12, 0, 12, 2, 7, 0), + gsSP2Triangles(13, 14, 15, 0, 13, 15, 16, 0), + gsSP2Triangles(15, 17, 16, 0, 13, 16, 18, 0), + gsSP2Triangles(16, 19, 18, 0, 16, 20, 19, 0), + gsSP2Triangles(19, 21, 18, 0, 18, 22, 23, 0), + gsSP2Triangles(18, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(18, 24, 26, 0, 24, 27, 26, 0), + gsSP2Triangles(24, 28, 27, 0, 27, 29, 26, 0), + gsSP1Triangle(26, 30, 31, 0), + gsSPVertex(handle_Cylinder_mesh_vtx_0 + 312, 17, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 2, 4, 0, 2, 5, 4, 0), + gsSP2Triangles(2, 6, 5, 0, 5, 7, 4, 0), + gsSP2Triangles(4, 8, 9, 0, 4, 9, 10, 0), + gsSP2Triangles(9, 11, 10, 0, 4, 10, 12, 0), + gsSP2Triangles(10, 13, 12, 0, 10, 14, 13, 0), + gsSP2Triangles(13, 15, 12, 0, 12, 16, 0, 0), + gsSP1Triangle(0, 4, 12, 0), + gsSPEndDisplayList(), +}; + +Gfx mat_handle_f3dlite_material[9] = { + gsSPClearGeometryMode(G_CLIPPING | G_ZBUFFER), + //gsSPSetLights1(handle_f3dlite_material_lights), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsDPSetAlphaDither(G_AD_NOISE), + gsSPTexture(65535, 65535, 0, 0, 1), + gsSPEndDisplayList(), +}; + +Gfx mat_revert_handle_f3dlite_material[4] = { + gsSPSetGeometryMode(G_CLIPPING | G_ZBUFFER), + gsDPPipeSync(), + gsDPSetAlphaDither(G_AD_DISABLE), + gsSPEndDisplayList(), +}; + +Gfx handle_Cylinder_mesh[13] = { + gsSPClearGeometryMode(G_LIGHTING), + gsSPVertex(handle_Cylinder_mesh_vtx_cull + 0, 8, 0), + gsSPSetGeometryMode(G_LIGHTING), + gsSPCullDisplayList(0, 7), + gsSPDisplayList(mat_handle_f3dlite_material), + gsSPDisplayList(handle_Cylinder_mesh_tri_0), + gsSPDisplayList(mat_revert_handle_f3dlite_material), + gsDPPipeSync(), + gsSPSetGeometryMode(G_LIGHTING), + gsSPClearGeometryMode(G_TEXTURE_GEN), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsSPTexture(65535, 65535, 0, 0, 0), + gsSPEndDisplayList(), +}; diff --git a/src/engine/editor/Handle.h b/src/engine/editor/Handle.h new file mode 100644 index 000000000..7db4595f7 --- /dev/null +++ b/src/engine/editor/Handle.h @@ -0,0 +1,7 @@ +#pragma once + +#include +#include + +extern Gfx handle_Cylinder_mesh[]; +extern Lights1 handle_f3dlite_material_lights; \ No newline at end of file diff --git a/src/engine/editor/Light.cpp b/src/engine/editor/Light.cpp new file mode 100644 index 000000000..f8deb3f8b --- /dev/null +++ b/src/engine/editor/Light.cpp @@ -0,0 +1,75 @@ +#include +#include +#include +#include "../CoreMath.h" +#include +#include "../World.h" + +#include "Light.h" +#include "port/Engine.h" +#include +#include + +#include "engine/actors/Ship.h" +#include "port/Game.h" +#include "Gizmo.h" + +#include "EditorMath.h" +#include "Handle.h" + +extern "C" { +#include "common_structs.h" +#include "main.h" +#include "defines.h" +#include "actors.h" +#include "camera.h" +#include "math_util.h" +#include "math_util_2.h" +} + +namespace Editor { + +size_t LightObject::NumLights = 0; + + LightObject::LightObject(const char* name, FVector* pos, s8* direction) : GameObject(nullptr, nullptr) { + Name = name; + // If pos is nullptr, allocate memory, otherwise assign pos + // if (pos != nullptr) { + // Pos = pos; + // } + Pos = &LightPos; + Rot = &LightRot; + + // Pos = &LightPos; + DespawnFlag = &_despawnFlag; + DespawnValue = -1; + + Direction = direction; + + NumLights += 1; + } + + void LightObject::Load() { + //Pos = &LightPos; + } + + void LightObject::Tick() { + //Pos = &LightPos; + SetDirectionFromRotator(*Rot, Direction); + //Direction[0] = static_cast(((*Rot)[0] / 256 - 128) & 0xFF); + //Direction[1] = static_cast(((*Rot)[1] / 256 - 128) & 0xFF); + //Direction[2] = static_cast(((*Rot)[2] / 256 - 128) & 0xFF); + //printf("Light rot %d %d %d %d %d %d\n", Direction[0], Direction[1], Direction[2], (*Rot)[0], (*Rot)[1], (*Rot)[2]); + } + void LightObject::Draw() { + Mat4 mtx; + + Vec3f pos = {Pos->x, Pos->y, Pos->z}; + Vec3s rot = {(*Rot)[0], (*Rot)[1] + 0x4000, (*Rot)[2]}; + mtxf_pos_rotation_xyz(mtx, pos, rot); + mtxf_scale(mtx, 0.3); + Editor_AddMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, sun_LightModel_mesh); + gSPDisplayList(gDisplayListHead++, handle_Cylinder_mesh); + } +} diff --git a/src/engine/editor/Light.h b/src/engine/editor/Light.h new file mode 100644 index 000000000..f01842b1d --- /dev/null +++ b/src/engine/editor/Light.h @@ -0,0 +1,2142 @@ +#pragma once + +#include +#include +#include "Collision.h" +#include "Gizmo.h" +#include "GameObject.h" + +namespace Editor { + +class LightObject : public GameObject { +public: + LightObject(const char* name, FVector* pos, s8* direction); + + virtual void Draw() override; + virtual void Tick() override; + virtual void Load() override; + + static size_t NumLights; + FVector LightPos = FVector(0, 100, 0); + s8* Direction; + Vec3s LightRot = {0, 0, 0}; + s32 _despawnFlag = 0; + +u8 sun_sun_rgba32[16384] = { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xed, 0x8e, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xe4, 0x85, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfb, 0x9d, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xdb, 0x7d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xac, 0x01, 0xff, + 0xe5, 0x87, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xae, 0x01, 0xff, + 0xd1, 0x72, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xba, 0x00, 0xff, + 0xff, 0xaa, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc4, 0x01, 0xff, 0xfe, 0xba, 0x00, 0xff, + 0xc6, 0x67, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xc9, 0x00, 0xff, + 0xff, 0xc8, 0x01, 0xff, 0xda, 0x7c, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0x00, 0xff, + 0xff, 0xd1, 0x01, 0xff, 0xff, 0xc0, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xd8, 0x00, 0xff, + 0xff, 0xd8, 0x01, 0xff, 0xfe, 0xa2, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xe5, 0x00, 0xff, + 0xff, 0xde, 0x00, 0xff, 0xff, 0xb8, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, 0x01, 0xff, + 0xff, 0xe9, 0x01, 0xff, 0xff, 0xcc, 0x01, 0xff, + 0xcd, 0x6f, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xf9, 0x00, 0xff, 0xff, 0xf3, 0x00, 0xff, + 0xff, 0xec, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf5, 0x00, 0xff, + 0xff, 0xf8, 0x00, 0xff, 0xff, 0xf2, 0x00, 0xff, + 0xf8, 0x99, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xfa, 0x01, 0xff, 0xff, 0xa5, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xca, 0x00, 0xff, 0xc1, 0x63, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xfd, 0x01, 0xff, 0xf6, 0x98, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xef, 0x91, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf6, 0x01, 0xff, 0xef, 0x91, 0x00, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf9, 0x01, 0xff, 0xeb, 0x8c, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xfe, 0xa0, 0x01, 0xff, + 0xef, 0x91, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfd, 0x9e, 0x00, 0xff, + 0xff, 0xa4, 0x00, 0xff, 0xcf, 0x70, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xc6, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xf3, 0x01, 0xff, 0xdc, 0x7e, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xc2, 0x01, 0xff, + 0xff, 0xb3, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xb3, 0x01, 0xff, 0xff, 0xb9, 0x01, 0xff, + 0xe2, 0x84, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xf7, 0x01, 0xff, + 0xe1, 0x82, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xec, 0x00, 0xff, 0xcd, 0x6e, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xe4, 0x00, 0xff, + 0xff, 0xd7, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, + 0xff, 0xb9, 0x00, 0xff, 0xcf, 0x70, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc0, 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, + 0xff, 0xcf, 0x01, 0xff, 0xf8, 0x99, 0x01, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xbe, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xe5, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf8, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, + 0xff, 0xde, 0x00, 0xff, 0xff, 0xcf, 0x00, 0xff, + 0xe1, 0x82, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xd5, 0x00, 0xff, + 0xfe, 0xdc, 0x00, 0xff, 0xff, 0xe7, 0x01, 0xff, + 0xff, 0xb2, 0x00, 0xff, 0xd0, 0x72, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xf7, 0x00, 0xff, 0xea, 0x8b, 0x00, 0xff, + 0xfc, 0x9e, 0x00, 0xff, 0xff, 0xb0, 0x01, 0xff, + 0xff, 0xb1, 0x00, 0xff, 0xff, 0xa2, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xdc, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xf4, 0x00, 0xff, + 0xff, 0xe7, 0x01, 0xff, 0xf6, 0x98, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xe1, 0x00, 0xff, + 0xff, 0xea, 0x00, 0xff, 0xff, 0xf3, 0x01, 0xff, + 0xfe, 0xfc, 0x00, 0xff, 0xfe, 0xcb, 0x00, 0xff, + 0xe2, 0x84, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xa2, 0x00, 0xff, 0xfe, 0xb5, 0x00, 0xff, + 0xff, 0xc9, 0x01, 0xff, 0xff, 0xda, 0x01, 0xff, + 0xff, 0xe1, 0x01, 0xff, 0xff, 0xe6, 0x01, 0xff, + 0xff, 0xe7, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, + 0xff, 0xda, 0x01, 0xff, 0xfe, 0xcb, 0x00, 0xff, + 0xff, 0xbd, 0x00, 0xff, 0xff, 0xaa, 0x01, 0xff, + 0xf1, 0x93, 0x00, 0xff, 0xda, 0x7c, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xfd, 0x00, 0xff, + 0xff, 0xb0, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xff, 0xf5, 0x01, 0xff, 0xff, 0xfe, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xe3, 0x00, 0xff, 0xff, 0xa0, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, + 0xff, 0xd4, 0x00, 0xff, 0xff, 0xdc, 0x01, 0xff, + 0xff, 0xe2, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, + 0xff, 0xee, 0x00, 0xff, 0xfe, 0xf3, 0x00, 0xff, + 0xfe, 0xf7, 0x00, 0xff, 0xff, 0xfd, 0x00, 0xff, + 0xfe, 0xfc, 0x00, 0xff, 0xfe, 0xf9, 0x00, 0xff, + 0xff, 0xf5, 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, + 0xff, 0xe9, 0x00, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xdc, 0x00, 0xff, 0xff, 0xd4, 0x00, 0xff, + 0xff, 0xb9, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xcb, 0x01, 0xff, + 0xce, 0x6f, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xca, 0x00, 0xff, 0xd5, 0x76, 0x01, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xfa, 0x9b, 0x01, 0xff, + 0xfe, 0xd2, 0x00, 0xff, 0xfe, 0xe2, 0x00, 0xff, + 0xff, 0xf0, 0x00, 0xff, 0xfe, 0xf5, 0x00, 0xff, + 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xfe, 0x01, 0xff, + 0xff, 0xf7, 0x00, 0xff, 0xfe, 0xf0, 0x00, 0xff, + 0xff, 0xe4, 0x01, 0xff, 0xff, 0xd4, 0x01, 0xff, + 0xff, 0xa7, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xe2, 0x01, 0xff, 0xe0, 0x82, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xd4, 0x75, 0x00, 0xff, + 0xff, 0xbb, 0x00, 0xff, 0xfe, 0xd7, 0x00, 0xff, + 0xff, 0xe8, 0x01, 0xff, 0xff, 0xf7, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf8, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, + 0xff, 0xda, 0x00, 0xff, 0xff, 0xc1, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfb, 0x9d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xf6, 0x98, 0x01, 0xff, 0xff, 0xcb, 0x01, 0xff, + 0xff, 0xdc, 0x01, 0xff, 0xff, 0xed, 0x01, 0xff, + 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xf1, 0x01, 0xff, 0xff, 0xdf, 0x00, 0xff, + 0xff, 0xcc, 0x00, 0xff, 0xf6, 0x97, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xc6, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xca, 0x00, 0xff, 0xfe, 0xe3, 0x00, 0xff, + 0xfe, 0xf3, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xf5, 0x00, 0xff, + 0xff, 0xe3, 0x00, 0xff, 0xff, 0xca, 0x01, 0xff, + 0xd1, 0x73, 0x01, 0xff, 0xcf, 0x71, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xbc, 0x01, 0xff, + 0xff, 0xdb, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xf3, 0x01, 0xff, 0xff, 0xd9, 0x01, 0xff, + 0xff, 0xb6, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xfd, 0x9f, 0x00, 0xff, 0xff, 0xd3, 0x00, 0xff, + 0xff, 0xec, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, + 0xff, 0xd1, 0x01, 0xff, 0xf1, 0x92, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xc9, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xfe, 0xf8, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf5, 0x01, 0xff, + 0xff, 0xe0, 0x01, 0xff, 0xff, 0xc8, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcf, 0x71, 0x00, 0xff, 0xc7, 0x68, 0x01, 0xff, + 0xbd, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, + 0xff, 0xd8, 0x01, 0xff, 0xff, 0xef, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xed, 0x00, 0xff, 0xff, 0xd7, 0x01, 0xff, + 0xff, 0xa9, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xf6, 0x00, 0xff, + 0xff, 0xe7, 0x01, 0xff, 0xff, 0xd7, 0x01, 0xff, + 0xff, 0xc7, 0x01, 0xff, 0xff, 0xb8, 0x01, 0xff, + 0xff, 0xa7, 0x00, 0xff, 0xf6, 0x98, 0x00, 0xff, + 0xe7, 0x89, 0x01, 0xff, 0xd9, 0x7b, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x99, 0x00, 0xff, 0xff, 0xa6, 0x00, 0xff, + 0xff, 0xac, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, + 0xfa, 0x9b, 0x01, 0xff, 0xf0, 0x91, 0x00, 0xff, + 0xe4, 0x85, 0x00, 0xff, 0xd9, 0x7a, 0x01, 0xff, + 0xcb, 0x6c, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xca, 0x6b, 0x01, 0xff, 0xff, 0xc5, 0x00, 0xff, + 0xff, 0xe4, 0x01, 0xff, 0xfe, 0xfa, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xfb, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xc5, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0x00, 0xff, + 0xff, 0xe7, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, + 0xff, 0xc5, 0x00, 0xff, 0xff, 0xb4, 0x00, 0xff, + 0xf4, 0x95, 0x00, 0xff, 0xd0, 0x71, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xaf, 0x00, 0xff, + 0xff, 0xbc, 0x01, 0xff, 0xff, 0xca, 0x01, 0xff, + 0xff, 0xd9, 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, + 0xff, 0xec, 0x00, 0xff, 0xff, 0xe8, 0x01, 0xff, + 0xff, 0xe2, 0x01, 0xff, 0xff, 0xdc, 0x00, 0xff, + 0xff, 0xd5, 0x00, 0xff, 0xff, 0xcd, 0x01, 0xff, + 0xdf, 0x80, 0x00, 0xff, 0xfe, 0xcb, 0x00, 0xff, + 0xff, 0xe9, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xe8, 0x01, 0xff, + 0xff, 0xcc, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xfa, 0x00, 0xff, + 0xff, 0xe0, 0x00, 0xff, 0xff, 0xb8, 0x00, 0xff, + 0xec, 0x8e, 0x01, 0xff, 0xc4, 0x65, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc4, 0x00, 0xff, 0xff, 0xd1, 0x00, 0xff, + 0xff, 0xdf, 0x01, 0xff, 0xfe, 0xed, 0x00, 0xff, + 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xf4, 0x96, 0x01, 0xff, 0xff, 0xd1, 0x00, 0xff, + 0xff, 0xee, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xec, 0x01, 0xff, + 0xff, 0xd0, 0x00, 0xff, 0xec, 0x8d, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xe4, 0x01, 0xff, 0xfe, 0xb5, 0x00, 0xff, + 0xe2, 0x83, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xfe, 0xe4, 0x00, 0xff, 0xff, 0xf2, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xa8, 0x00, 0xff, 0xff, 0xd6, 0x00, 0xff, + 0xff, 0xf3, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xef, 0x00, 0xff, + 0xff, 0xd5, 0x01, 0xff, 0xff, 0xa0, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xe3, 0x00, 0xff, 0xff, 0xaf, 0x00, 0xff, + 0xd8, 0x79, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xf7, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xdb, 0x01, 0xff, + 0xff, 0xf6, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, + 0xff, 0xd9, 0x00, 0xff, 0xfe, 0xb1, 0x00, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xa6, 0x00, 0xff, + 0xc9, 0x6a, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xc3, 0x00, 0xff, 0xff, 0xe0, 0x01, 0xff, + 0xff, 0xf9, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf7, 0x00, 0xff, + 0xff, 0xde, 0x01, 0xff, 0xfe, 0xc2, 0x00, 0xff, + 0xd0, 0x72, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xe5, 0x87, 0x01, 0xff, + 0xff, 0xc9, 0x01, 0xff, 0xfe, 0xe2, 0x00, 0xff, + 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xfa, 0x00, 0xff, + 0xff, 0xe2, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, + 0xe1, 0x83, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0xff, 0xf4, 0x95, 0x01, 0xff, + 0xff, 0xcd, 0x01, 0xff, 0xff, 0xe5, 0x00, 0xff, + 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xfd, 0x01, 0xff, + 0xff, 0xe4, 0x00, 0xff, 0xff, 0xcc, 0x00, 0xff, + 0xf2, 0x93, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbb, 0x5d, 0x00, 0xff, 0xf1, 0x92, 0x01, 0xff, + 0xff, 0xca, 0x00, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xfb, 0x00, 0xff, + 0xff, 0xe3, 0x00, 0xff, 0xff, 0xcb, 0x00, 0xff, + 0xf2, 0x93, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xdd, 0x7f, 0x00, 0xff, + 0xff, 0xc4, 0x00, 0xff, 0xff, 0xdd, 0x00, 0xff, + 0xff, 0xf6, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xf7, 0x00, 0xff, + 0xff, 0xde, 0x01, 0xff, 0xfe, 0xc4, 0x00, 0xff, + 0xe1, 0x82, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xca, 0x6b, 0x01, 0xff, + 0xff, 0xbb, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, + 0xff, 0xf1, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf2, 0x01, 0xff, + 0xff, 0xd9, 0x01, 0xff, 0xff, 0xbc, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0xbf, 0x60, 0x00, 0xff, + 0xfc, 0x9e, 0x00, 0xff, 0xff, 0xdb, 0x00, 0xff, + 0xfe, 0xa8, 0x00, 0xff, 0xfe, 0xcf, 0x00, 0xff, + 0xff, 0xea, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xed, 0x01, 0xff, + 0xff, 0xd1, 0x00, 0xff, 0xff, 0xac, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, + 0xff, 0xf0, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xcd, 0x6f, 0x00, 0xff, + 0xff, 0xa5, 0x01, 0xff, 0xff, 0xd9, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xf2, 0x94, 0x00, 0xff, 0xff, 0xc9, 0x01, 0xff, + 0xff, 0xe3, 0x00, 0xff, 0xff, 0xfb, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xfc, 0x01, 0xff, 0xff, 0xe6, 0x01, 0xff, + 0xff, 0xc9, 0x00, 0xff, 0xf9, 0x9b, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x01, 0xff, + 0xff, 0xea, 0x01, 0xff, 0xff, 0xdd, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xd6, 0x77, 0x01, 0xff, + 0xff, 0xa9, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xdc, 0x7e, 0x00, 0xff, 0xfe, 0xc1, 0x00, 0xff, + 0xff, 0xdd, 0x01, 0xff, 0xfe, 0xf4, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf6, 0x01, 0xff, 0xff, 0xdf, 0x01, 0xff, + 0xff, 0xc2, 0x00, 0xff, 0xe4, 0x86, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xf3, 0x00, 0xff, + 0xff, 0xe3, 0x00, 0xff, 0xff, 0xd5, 0x01, 0xff, + 0xff, 0xc7, 0x01, 0xff, 0xff, 0xb9, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xde, 0x80, 0x00, 0xff, + 0xff, 0xaa, 0x01, 0xff, 0xff, 0xd3, 0x00, 0xff, + 0xff, 0xed, 0x01, 0xff, 0xff, 0xfd, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xba, 0x00, 0xff, + 0xfe, 0xd5, 0x00, 0xff, 0xff, 0xee, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xee, 0x00, 0xff, 0xff, 0xd7, 0x01, 0xff, + 0xff, 0xba, 0x01, 0xff, 0xcd, 0x6e, 0x01, 0xff, + 0xff, 0xba, 0x01, 0xff, 0xff, 0xc4, 0x01, 0xff, + 0xff, 0xcc, 0x00, 0xff, 0xff, 0xd3, 0x01, 0xff, + 0xff, 0xd9, 0x00, 0xff, 0xfe, 0xde, 0x00, 0xff, + 0xff, 0xdc, 0x00, 0xff, 0xfe, 0xcc, 0x00, 0xff, + 0xff, 0xbe, 0x01, 0xff, 0xff, 0xaf, 0x00, 0xff, + 0xff, 0xa3, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xc2, 0x64, 0x01, 0xff, 0xe6, 0x87, 0x00, 0xff, + 0xff, 0xa7, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, + 0xff, 0xc8, 0x00, 0xff, 0xff, 0xd8, 0x00, 0xff, + 0xff, 0xea, 0x01, 0xff, 0xff, 0xf9, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xb1, 0x01, 0xff, + 0xff, 0xce, 0x00, 0xff, 0xff, 0xe6, 0x00, 0xff, + 0xff, 0xf9, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x00, 0xff, + 0xff, 0xe6, 0x01, 0xff, 0xff, 0xcf, 0x01, 0xff, + 0xff, 0xb1, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xc6, 0x67, 0x01, 0xff, 0xd2, 0x73, 0x00, 0xff, + 0xdf, 0x80, 0x00, 0xff, 0xe9, 0x8b, 0x00, 0xff, + 0xf3, 0x95, 0x00, 0xff, 0xfb, 0x9d, 0x00, 0xff, + 0xf6, 0x98, 0x00, 0xff, 0xea, 0x8b, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xc9, 0x6a, 0x00, 0xff, 0xd8, 0x79, 0x01, 0xff, + 0xe6, 0x88, 0x01, 0xff, 0xf5, 0x97, 0x00, 0xff, + 0xfe, 0xa6, 0x00, 0xff, 0xff, 0xb7, 0x01, 0xff, + 0xff, 0xc7, 0x01, 0xff, 0xff, 0xd6, 0x00, 0xff, + 0xff, 0xe6, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xf0, 0x91, 0x00, 0xff, + 0xff, 0xbf, 0x01, 0xff, 0xfe, 0xd4, 0x00, 0xff, + 0xff, 0xe9, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xf9, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, + 0xff, 0xd6, 0x00, 0xff, 0xff, 0xc1, 0x01, 0xff, + 0xf1, 0x92, 0x00, 0xff, 0xbc, 0x5e, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xc0, 0x62, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xae, 0x01, 0xff, 0xfe, 0xc3, 0x00, 0xff, + 0xfe, 0xd9, 0x00, 0xff, 0xfe, 0xef, 0x00, 0xff, + 0xff, 0xfd, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xf8, 0x00, 0xff, + 0xfe, 0xee, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, + 0xfe, 0xc7, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xd1, 0x73, 0x00, 0xff, 0xff, 0xb2, 0x00, 0xff, + 0xff, 0xc8, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, + 0xfe, 0xf1, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf9, 0x01, 0xff, 0xff, 0xee, 0x00, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xce, 0x00, 0xff, + 0xff, 0xb5, 0x01, 0xff, 0xdf, 0x80, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xf3, 0x94, 0x01, 0xff, + 0xff, 0xb6, 0x00, 0xff, 0xff, 0xd1, 0x01, 0xff, + 0xfe, 0xe4, 0x00, 0xff, 0xff, 0xf0, 0x01, 0xff, + 0xff, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x00, 0xff, + 0xff, 0xed, 0x00, 0xff, 0xfe, 0xe3, 0x00, 0xff, + 0xff, 0xd2, 0x01, 0xff, 0xff, 0xba, 0x01, 0xff, + 0xf9, 0x9a, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0xff, 0xa4, 0x00, 0xff, 0xff, 0xbf, 0x01, 0xff, + 0xfe, 0xd0, 0x00, 0xff, 0xff, 0xdf, 0x01, 0xff, + 0xff, 0xec, 0x01, 0xff, 0xff, 0xf5, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xfe, 0x00, 0xff, + 0xfe, 0xf3, 0x00, 0xff, 0xff, 0xeb, 0x01, 0xff, + 0xff, 0xde, 0x00, 0xff, 0xff, 0xcf, 0x00, 0xff, + 0xff, 0xbf, 0x01, 0xff, 0xff, 0xa6, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xff, 0xa3, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xcd, 0x6f, 0x01, 0xff, 0xff, 0xa4, 0x00, 0xff, + 0xff, 0xb7, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, + 0xff, 0xd7, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xf1, 0x01, 0xff, 0xff, 0xf7, 0x00, 0xff, + 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xfe, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, + 0xff, 0xf7, 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xd3, 0x01, 0xff, + 0xff, 0xc4, 0x00, 0xff, 0xff, 0xb3, 0x00, 0xff, + 0xfe, 0xa2, 0x00, 0xff, 0xcd, 0x6e, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5c, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xd7, 0x78, 0x01, 0xff, + 0xfe, 0xe3, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xf3, 0x95, 0x01, 0xff, 0xff, 0xae, 0x00, 0xff, + 0xfe, 0xbf, 0x00, 0xff, 0xff, 0xcd, 0x01, 0xff, + 0xff, 0xdb, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xe9, 0x01, 0xff, 0xff, 0xee, 0x01, 0xff, + 0xff, 0xf1, 0x00, 0xff, 0xff, 0xf5, 0x00, 0xff, + 0xfe, 0xf8, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, + 0xff, 0xfc, 0x01, 0xff, 0xff, 0xf9, 0x01, 0xff, + 0xff, 0xf5, 0x01, 0xff, 0xff, 0xf1, 0x00, 0xff, + 0xff, 0xec, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xda, 0x00, 0xff, + 0xff, 0xcb, 0x01, 0xff, 0xff, 0xbc, 0x00, 0xff, + 0xff, 0xac, 0x01, 0xff, 0xed, 0x8e, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xf6, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xbe, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xd6, 0x77, 0x01, 0xff, + 0xff, 0xa4, 0x00, 0xff, 0xfe, 0xb4, 0x00, 0xff, + 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, + 0xff, 0xcf, 0x01, 0xff, 0xff, 0xd5, 0x01, 0xff, + 0xff, 0xda, 0x01, 0xff, 0xff, 0xdf, 0x01, 0xff, + 0xff, 0xe3, 0x01, 0xff, 0xff, 0xe6, 0x00, 0xff, + 0xff, 0xe6, 0x01, 0xff, 0xff, 0xe1, 0x00, 0xff, + 0xff, 0xdd, 0x01, 0xff, 0xff, 0xd7, 0x01, 0xff, + 0xff, 0xd2, 0x01, 0xff, 0xff, 0xcd, 0x01, 0xff, + 0xff, 0xc7, 0x01, 0xff, 0xfe, 0xc1, 0x00, 0xff, + 0xfe, 0xb3, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, + 0xc9, 0x6b, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xfe, 0x9f, 0x00, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x01, 0xff, + 0xff, 0xec, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0xff, 0xa5, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xe3, 0x85, 0x00, 0xff, + 0xfe, 0xa1, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, + 0xff, 0xb0, 0x00, 0xff, 0xff, 0xb7, 0x00, 0xff, + 0xff, 0xbd, 0x00, 0xff, 0xff, 0xc3, 0x01, 0xff, + 0xff, 0xc7, 0x00, 0xff, 0xff, 0xcb, 0x00, 0xff, + 0xff, 0xcb, 0x01, 0xff, 0xff, 0xc6, 0x01, 0xff, + 0xff, 0xc1, 0x01, 0xff, 0xff, 0xbb, 0x00, 0xff, + 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xb0, 0x01, 0xff, + 0xff, 0xaa, 0x01, 0xff, 0xff, 0xa2, 0x01, 0xff, + 0xe2, 0x84, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0xd3, 0x74, 0x00, 0xff, 0xff, 0xbd, 0x01, 0xff, + 0xff, 0xf3, 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, + 0xff, 0xde, 0x00, 0xff, 0xff, 0xd5, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xe7, 0x89, 0x00, 0xff, + 0xff, 0xdb, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, + 0xff, 0xf4, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xd1, 0x72, 0x00, 0xff, 0xe4, 0x86, 0x00, 0xff, + 0xf4, 0x96, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, + 0xff, 0xac, 0x00, 0xff, 0xff, 0xb2, 0x01, 0xff, + 0xff, 0xb1, 0x00, 0xff, 0xfe, 0xab, 0x00, 0xff, + 0xff, 0xa4, 0x00, 0xff, 0xf0, 0x91, 0x00, 0xff, + 0xdd, 0x7e, 0x00, 0xff, 0xc9, 0x6a, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xff, 0xa4, 0x01, 0xff, 0xff, 0xdb, 0x00, 0xff, + 0xff, 0xd1, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, + 0xff, 0xbf, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, + 0xcf, 0x70, 0x01, 0xff, 0xff, 0xc2, 0x01, 0xff, + 0xff, 0xd0, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, + 0xff, 0xe9, 0x00, 0xff, 0xff, 0xf3, 0x01, 0xff, + 0xff, 0xfc, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xab, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xc6, 0x67, 0x00, 0xff, 0xd6, 0x78, 0x01, 0xff, + 0xd5, 0x77, 0x01, 0xff, 0xc2, 0x64, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xc6, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xe7, 0x89, 0x01, 0xff, + 0xfe, 0xc1, 0x00, 0xff, 0xff, 0xb9, 0x00, 0xff, + 0xff, 0xb0, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, + 0xff, 0xa9, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, + 0xff, 0xc6, 0x01, 0xff, 0xff, 0xd2, 0x00, 0xff, + 0xff, 0xdf, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0xff, 0xb3, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xe5, 0x87, 0x01, 0xff, + 0xff, 0xf5, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xcd, 0x6f, 0x00, 0xff, 0xff, 0xa9, 0x01, 0xff, + 0xff, 0xa1, 0x00, 0xff, 0xf9, 0x9a, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5c, 0x00, 0xff, 0xef, 0x91, 0x00, 0xff, + 0xfe, 0xa0, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, + 0xff, 0xbd, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xbc, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0xff, 0xc6, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xf0, 0x91, 0x01, 0xff, 0xea, 0x8b, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xda, 0x7b, 0x00, 0xff, 0xe9, 0x8b, 0x01, 0xff, + 0xf7, 0x98, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xc3, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xed, 0x8e, 0x00, 0xff, 0xff, 0xef, 0x01, 0xff, + 0xff, 0xfe, 0x01, 0xff, 0xff, 0xfa, 0x00, 0xff, + 0xff, 0xf5, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5d, 0x00, 0xff, 0xda, 0x7c, 0x01, 0xff, + 0xd6, 0x77, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc6, 0x67, 0x00, 0xff, + 0xd4, 0x76, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, + 0xff, 0xf2, 0x01, 0xff, 0xff, 0xf6, 0x00, 0xff, + 0xff, 0xfa, 0x01, 0xff, 0xff, 0xfc, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc5, 0x01, 0xff, + 0xff, 0xee, 0x01, 0xff, 0xff, 0xea, 0x00, 0xff, + 0xff, 0xe7, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xc6, 0x67, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xc0, 0x61, 0x01, 0xff, 0xff, 0xcd, 0x00, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, + 0xff, 0xeb, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xf3, 0x94, 0x00, 0xff, + 0xff, 0xdd, 0x01, 0xff, 0xff, 0xda, 0x00, 0xff, + 0xff, 0xd8, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xcc, 0x6e, 0x01, 0xff, 0xff, 0xca, 0x00, 0xff, + 0xff, 0xd1, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, + 0xff, 0xdb, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x00, 0xff, 0xbf, 0x60, 0x00, 0xff, + 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, + 0xfe, 0xc6, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xd6, 0x77, 0x00, 0xff, 0xff, 0xb9, 0x00, 0xff, + 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbb, 0x5c, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xf4, 0x96, 0x00, 0xff, 0xff, 0xb6, 0x00, 0xff, + 0xff, 0xb6, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xdf, 0x81, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, + 0xff, 0xb2, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xc9, 0x6b, 0x01, 0xff, 0xff, 0xa5, 0x01, 0xff, + 0xff, 0xa6, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xe8, 0x89, 0x00, 0xff, 0xf9, 0x9b, 0x00, 0xff, + 0xff, 0xa4, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5c, 0x00, 0xff, 0xf1, 0x92, 0x00, 0xff, + 0xf3, 0x94, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xe2, 0x83, 0x00, 0xff, 0xec, 0x8e, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xd1, 0x73, 0x00, 0xff, + 0xe2, 0x84, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xd6, 0x77, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xd3, 0x74, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5c, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x64, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + +}; + +Vtx sun_LightModel_mesh_vtx_cull[8] = { + {{ {-100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, +}; + +Vtx sun_LightModel_mesh_vtx_0[4] = { + {{ {-100, -100, 0}, 0, {-16, 2032}, {0, 0, 127, 255} }}, + {{ {100, -100, 0}, 0, {2032, 2032}, {0, 0, 127, 255} }}, + {{ {100, 100, 0}, 0, {2032, -16}, {0, 0, 127, 255} }}, + {{ {-100, 100, 0}, 0, {-16, -16}, {0, 0, 127, 255} }}, +}; + +Gfx sun_LightModel_mesh_tri_0[3] = { + gsSPVertex(sun_LightModel_mesh_vtx_0 + 0, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), +}; + +Gfx mat_sun_sun[13] = { + gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CULL_BACK | G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 255, 255, 255, 128), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_32b_LOAD_BLOCK, 1, sun_sun_rgba32), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_32b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0), + gsDPLoadBlock(7, 0, 0, 4095, 64), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPEndDisplayList(), +}; + +Gfx mat_revert_sun_sun[4] = { + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CULL_BACK | G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; + +Gfx sun_LightModel_mesh[13] = { + gsSPClearGeometryMode(G_LIGHTING), + gsSPVertex(sun_LightModel_mesh_vtx_cull + 0, 8, 0), + gsSPSetGeometryMode(G_LIGHTING), + gsSPCullDisplayList(0, 7), + gsSPDisplayList(mat_sun_sun), + gsSPDisplayList(sun_LightModel_mesh_tri_0), + gsSPDisplayList(mat_revert_sun_sun), + gsDPPipeSync(), + gsSPSetGeometryMode(G_LIGHTING), + gsSPClearGeometryMode(G_TEXTURE_GEN), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsSPTexture(65535, 65535, 0, 0, 0), + gsSPEndDisplayList(), +}; + + +}; +} diff --git a/src/engine/editor/ObjectPicker.cpp b/src/engine/editor/ObjectPicker.cpp index 6815c79f5..d94f60ebb 100644 --- a/src/engine/editor/ObjectPicker.cpp +++ b/src/engine/editor/ObjectPicker.cpp @@ -23,21 +23,16 @@ extern "C" { #include "camera.h" } -namespace EditorNamespace { - -ObjectPicker::ObjectPicker() { - -} +namespace Editor { void ObjectPicker::Load() { eGizmo.Load(); } void ObjectPicker::Tick() { - eGizmo.Tick(); } -void ObjectPicker::SelectObject(std::vector& objects) { +void ObjectPicker::SelectObject(std::vector objects) { Ray ray; ray.Origin = FVector(cameras[0].pos[0], cameras[0].pos[1], cameras[0].pos[2]); @@ -67,6 +62,7 @@ void ObjectPicker::DragHandle() { // Skip if a drag is already in progress if (eGizmo.SelectedHandle != Gizmo::GizmoHandle::None) { eGizmo._ray = ray.Direction; + eGizmo.Tick(); return; } @@ -126,35 +122,35 @@ void ObjectPicker::Draw() { } } -void ObjectPicker::FindObject(Ray ray, std::vector& objects) { +void ObjectPicker::FindObject(Ray ray, std::vector objects) { bool found = false; for (auto& object : objects) { - float boundingBox = object.BoundingBoxSize; + float boundingBox = object->BoundingBoxSize; if (boundingBox == 0.0f) { boundingBox = 2.0f; } - switch(object.Collision) { - case CollisionType::VTX_INTERSECT: - for (const auto& tri : object.Triangles) { + switch(object->Collision) { + case GameObject::CollisionType::VTX_INTERSECT: + for (const auto& tri : object->Triangles) { float t; - if (IntersectRayTriangle(ray, tri, *object.Pos, t)) { + if (IntersectRayTriangle(ray, tri, *object->Pos, t)) { printf("\nSELECTED OBJECT\n\n"); - _selected = &object; + _selected = object; found = true; } } break; - case CollisionType::BOUNDING_BOX: { + case GameObject::CollisionType::BOUNDING_BOX: { float max = 2.0f; float min = -2.0f; - Vec3f boxMin = { object.Pos->x + boundingBox * min, - object.Pos->y + boundingBox * min, - object.Pos->z + boundingBox * min }; + Vec3f boxMin = { object->Pos->x + boundingBox * min, + object->Pos->y + boundingBox * min, + object->Pos->z + boundingBox * min }; - Vec3f boxMax = { object.Pos->x + boundingBox * max, - object.Pos->y + boundingBox * max, - object.Pos->z + boundingBox * max }; + Vec3f boxMax = { object->Pos->x + boundingBox * max, + object->Pos->y + boundingBox * max, + object->Pos->z + boundingBox * max }; float t; if (QueryCollisionRayActor(&ray.Origin.x, &ray.Direction.x, boxMin, boxMax, &t)) { // if (actor == _selected) { @@ -164,13 +160,13 @@ void ObjectPicker::FindObject(Ray ray, std::vector& objects) { printf("FOUND BOUNDING BOX OBJECT\n"); found = true; //foundActor = &actor; - //type = object.Type; - _selected = &object; + //type = object->Type; + _selected = object; break; } break; } - case CollisionType::BOUNDING_SPHERE: + case GameObject::CollisionType::BOUNDING_SPHERE: printf("Editor::ObjectPicker.cpp Bounding sphere collision type not yet supported\n"); break; } diff --git a/src/engine/editor/ObjectPicker.h b/src/engine/editor/ObjectPicker.h index 03ba4fc94..788604838 100644 --- a/src/engine/editor/ObjectPicker.h +++ b/src/engine/editor/ObjectPicker.h @@ -4,17 +4,15 @@ #include #include "Collision.h" #include "Gizmo.h" +#include "GameObject.h" -namespace EditorNamespace { - -class ObjectPicker { +namespace Editor { + class ObjectPicker { public: - ObjectPicker(); - - void SelectObject(std::vector& objects); + void SelectObject(std::vector objects); void DragHandle(); void Draw(); - void FindObject(Ray ray, std::vector& objects); + void FindObject(Ray ray, std::vector objects); void Load(); void Tick(); Gizmo eGizmo; @@ -26,5 +24,5 @@ class ObjectPicker { s32 Inverse(MtxF* src, MtxF* dest); void Copy(MtxF* src, MtxF* dest); void Clear(MtxF* mf); -}; + }; } diff --git a/src/main.c b/src/main.c index f86e05ed3..7b7e05cda 100644 --- a/src/main.c +++ b/src/main.c @@ -798,6 +798,7 @@ void race_logic_loop(void) { ClearMatrixPools(); ClearObjectsMatrixPool(); ClearEffectsMatrixPool(); + Editor_ClearMatrix(); gMatrixObjectCount = 0; gMatrixEffectCount = 0; diff --git a/src/port/Game.cpp b/src/port/Game.cpp index 1db51d73a..2a91e4a25 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -102,7 +102,7 @@ ModelLoader gModelLoader; HarbourMastersIntro gMenuIntro; -EditorNamespace::Editor gEditor; +Editor::Editor gEditor; s32 gTrophyIndex = NULL; @@ -387,6 +387,7 @@ void CM_BeginPlay() { gWorldInstance.AddActor(new AFinishline(course->FinishlineSpawnPoint)); } + gEditor.AddLight("Sun", nullptr, D_800DC610[1].l->l.dir); course->BeginPlay(); } } @@ -689,6 +690,16 @@ void CM_AddEditorObject(struct Actor* actor, const char* name) { gWorldInstance.AddEditorObject(actor, name); } +void Editor_AddLight(s8* direction) { + static size_t i = 0; + gEditor.AddLight(("Light "+std::to_string(i)).c_str(), nullptr, direction); + i += 1; +} + +void Editor_ClearMatrix() { + gEditor.ClearMatrixPool(); +} + size_t CM_GetActorSize() { return gWorldInstance.Actors.size(); } diff --git a/src/port/Game.h b/src/port/Game.h index 8743a6bdf..d07ae269d 100644 --- a/src/port/Game.h +++ b/src/port/Game.h @@ -16,7 +16,7 @@ extern "C" { extern s32 gTrophyIndex; #ifdef __cplusplus -extern EditorNamespace::Editor gEditor; +extern Editor::Editor gEditor; #endif Properties* CM_GetProps(); @@ -72,6 +72,7 @@ void CM_DrawObjects(s32 cameraId); void CM_TickEditor(); void CM_TickDraw(); +void Editor_ClearMatrix(); void CM_TickParticles(void); void CM_DrawParticles(s32 cameraId); @@ -144,6 +145,7 @@ struct Actor* CM_GetActor(size_t index); void CM_DeleteActor(size_t index); struct Actor* CM_AddBaseActor(); void CM_AddEditorObject(struct Actor* actor, const char* name); +void Editor_AddLight(s8* direction); size_t CM_GetActorSize(); size_t CM_FindActorIndex(struct Actor* actor); void CM_ActorCollision(Player* player, struct Actor* actor); diff --git a/src/port/ui/ContentBrowser.cpp b/src/port/ui/ContentBrowser.cpp index ed008a58c..189d703dd 100644 --- a/src/port/ui/ContentBrowser.cpp +++ b/src/port/ui/ContentBrowser.cpp @@ -11,7 +11,7 @@ #include #include -namespace EditorNamespace { +namespace Editor { ContentBrowserWindow::~ContentBrowserWindow() { SPDLOG_TRACE("destruct content browser window"); diff --git a/src/port/ui/ContentBrowser.h b/src/port/ui/ContentBrowser.h index 185e51c4f..d986aa0e3 100644 --- a/src/port/ui/ContentBrowser.h +++ b/src/port/ui/ContentBrowser.h @@ -2,7 +2,7 @@ #include -namespace EditorNamespace { +namespace Editor { class ContentBrowserWindow : public Ship::GuiWindow { public: using Ship::GuiWindow::GuiWindow; diff --git a/src/port/ui/ImguiUI.cpp b/src/port/ui/ImguiUI.cpp index aacafe463..f6165eda7 100644 --- a/src/port/ui/ImguiUI.cpp +++ b/src/port/ui/ImguiUI.cpp @@ -81,18 +81,18 @@ void SetupGuiElements() { SPDLOG_ERROR("Could not find input GfxDebuggerWindow"); } - mToolsWindow = std::make_shared("gEditorEnabled", true, "Tools", ImVec2(100, 100), + mToolsWindow = std::make_shared("gEditorEnabled", true, "Tools", ImVec2(100, 100), (ImGuiWindowFlags_NoTitleBar)); gui->AddGuiWindow(mToolsWindow); - mSceneExplorerWindow = std::make_shared("gEditorEnabled", "Scene Explorer"); + mSceneExplorerWindow = std::make_shared("gEditorEnabled", "Scene Explorer"); gui->AddGuiWindow(mSceneExplorerWindow); - mTrackPropertiesWindow = std::make_shared("gEditorEnabled", "Track Properties"); + mTrackPropertiesWindow = std::make_shared("gEditorEnabled", "Track Properties"); gui->AddGuiWindow(mTrackPropertiesWindow); mContentBrowserWindow = - std::make_shared("gEditorEnabled", "Content Browser"); + std::make_shared("gEditorEnabled", "Content Browser"); gui->AddGuiWindow(mContentBrowserWindow); mGameInfoWindow = std::make_shared("gGameInfoEnabled", "Game Info"); diff --git a/src/port/ui/SceneExplorer.cpp b/src/port/ui/SceneExplorer.cpp index 8143cfa02..79b9c08e0 100644 --- a/src/port/ui/SceneExplorer.cpp +++ b/src/port/ui/SceneExplorer.cpp @@ -14,7 +14,7 @@ #include "engine/editor/Editor.h" #include "port/Game.h" -namespace EditorNamespace { +namespace Editor { SceneExplorerWindow::~SceneExplorerWindow() { SPDLOG_TRACE("destruct scene explorer window"); @@ -26,13 +26,13 @@ namespace EditorNamespace { size_t id = 0; // id for now because we don't have unique names atm for (auto& object : gEditor.eGameObjects) { // Convert const char* to std::string before formatting - std::string objectName = object.Name ? object.Name : "Obj"; + std::string objectName = object->Name ? object->Name : "Obj"; // Ensure unique label using index std::string label = fmt::format("{}##{}", objectName, id); if (ImGui::Button(label.c_str())) { - gEditor.SelectObjectFromSceneExplorer(&object); + gEditor.SelectObjectFromSceneExplorer(object); } id += 1; } diff --git a/src/port/ui/SceneExplorer.h b/src/port/ui/SceneExplorer.h index 85dee05bb..187d94b88 100644 --- a/src/port/ui/SceneExplorer.h +++ b/src/port/ui/SceneExplorer.h @@ -4,7 +4,7 @@ #include "port/Game.h" -namespace EditorNamespace { +namespace Editor { class SceneExplorerWindow : public Ship::GuiWindow { public: using Ship::GuiWindow::GuiWindow; diff --git a/src/port/ui/Tools.cpp b/src/port/ui/Tools.cpp index 9ad3fccb4..8bbc141a2 100644 --- a/src/port/ui/Tools.cpp +++ b/src/port/ui/Tools.cpp @@ -16,7 +16,7 @@ extern "C" { #include "code_80057C60.h" } -namespace EditorNamespace { +namespace Editor { ToolsWindow::~ToolsWindow() { SPDLOG_TRACE("destruct tools window"); @@ -38,25 +38,27 @@ namespace EditorNamespace { bool isSelected = (selectedTool == id); ImGui::PushStyleColor(ImGuiCol_Button, isSelected ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - if (ImGui::Button(label, ImVec2(125, 25))) { + if (ImGui::Button(label, ImVec2(50, 25))) { selectedTool = id; // Set the selected tool + CVarSetInteger("eGizmoMode", id); } ImGui::PopStyleColor(); }; // Draw buttons - ToolButton("Move", 0); + ToolButton(ICON_FA_ARROWS, 0); ImGui::SameLine(); - ToolButton("Rotate", 1); + ToolButton(ICON_FA_REPEAT, 1); ImGui::SameLine(); - ToolButton("Scale", 2); + ToolButton(ICON_FA_EXPAND, 2); ImGui::SameLine(); // Snap to ground ImGui::PushStyleColor(ImGuiCol_Button, toggleGroundSnap ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - if (ImGui::Button(toggleGroundSnap ? "SNAP TO GROUND" : "SNAP TO GROUND", ImVec2(125, 25))) { + + if (ImGui::Button(ICON_FA_LINK, ImVec2(50, 25))) { toggleGroundSnap = !toggleGroundSnap; CVarSetInteger("gEditorSnapToGround", toggleGroundSnap); @@ -76,38 +78,37 @@ namespace EditorNamespace { ImGui::SameLine(); - - if (ImGui::Button("Player One AI/Human", ImVec2(160, 25))) { - if (gPlayerOne->type & PLAYER_KART_AI) { + // Toggle player human/ai + bool playerToggle = (gPlayerOne->type & PLAYER_KART_AI); + ImGui::PushStyleColor(ImGuiCol_Button, defaultColor); + if (ImGui::Button(playerToggle ? ICON_FA_DESKTOP : ICON_FA_GAMEPAD, ImVec2(50, 25))) { + if (playerToggle) { gPlayerOne->type &= ~PLAYER_KART_AI; } else { gPlayerOne->type |= PLAYER_KART_AI; } + } + ImGui::PopStyleColor(); ImGui::SameLine(); - auto PlayButton = [&](const char* label, int id) { - bool isSelected = (selectedPlayTool == id); - ImGui::PushStyleColor(ImGuiCol_Button, isSelected ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - - if (ImGui::Button(label, ImVec2(125, 25))) { - selectedPlayTool = id; // Set the selected tool - gIsEditorPaused = (id == 1); - } - - ImGui::PopStyleColor(); - }; + // Play/pause button + ImGui::PushStyleColor(ImGuiCol_Button, defaultColor); + if (ImGui::Button(gIsEditorPaused ? ICON_FA_PLAY : ICON_FA_PAUSE, ImVec2(50, 25))) { - // Draw buttons - PlayButton("Play", 0); - ImGui::SameLine(); - PlayButton("Pause", 1); + gIsEditorPaused = !gIsEditorPaused; + } + ImGui::PopStyleColor(); ImGui::SameLine(); + // Toggle hud + ImGui::PushStyleColor(ImGuiCol_Button, gIsHUDVisible ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); if (ImGui::Button("Toggle HUD", ImVec2(150, 25))) { + gIsHUDVisible = !gIsHUDVisible; } + ImGui::PopStyleColor(); } } diff --git a/src/port/ui/Tools.h b/src/port/ui/Tools.h index ae52ff795..b1afccf18 100644 --- a/src/port/ui/Tools.h +++ b/src/port/ui/Tools.h @@ -2,7 +2,7 @@ #include -namespace EditorNamespace { +namespace Editor { class ToolsWindow : public Ship::GuiWindow { public: using Ship::GuiWindow::GuiWindow; diff --git a/src/port/ui/TrackProperties.cpp b/src/port/ui/TrackProperties.cpp index b461314d9..3d4fc0845 100644 --- a/src/port/ui/TrackProperties.cpp +++ b/src/port/ui/TrackProperties.cpp @@ -20,7 +20,7 @@ extern "C" { #include "render_courses.h" } -namespace EditorNamespace { +namespace Editor { TrackPropertiesWindow::~TrackPropertiesWindow() { SPDLOG_TRACE("destruct track properties window"); diff --git a/src/port/ui/TrackProperties.h b/src/port/ui/TrackProperties.h index db6fa574e..509ff2e70 100644 --- a/src/port/ui/TrackProperties.h +++ b/src/port/ui/TrackProperties.h @@ -6,7 +6,7 @@ extern "C" { #include "sounds.h" } -namespace EditorNamespace { +namespace Editor { class TrackPropertiesWindow : public Ship::GuiWindow { public: using Ship::GuiWindow::GuiWindow; diff --git a/src/racing/math_util.c b/src/racing/math_util.c index 96e5f2ffb..ac34ceda7 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -8,6 +8,7 @@ #include "math.h" #include "memory.h" #include "engine/Matrix.h" +#include "port/Game.h" #pragma intrinsic(sqrtf, fabs) @@ -441,7 +442,7 @@ void set_track_light_direction(Lights1* addr, s16 pitch, s16 yaw, s32 numLights) s32 var_v0; s8 sp2C[3]; Lights1* var_s0; -return; + var_s0 = (Lights1*) addr; sp48 = sins(yaw); sp44 = coss(yaw);