From f277a00596e415d86fc1da1539aedaa4fe506d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tur=C3=A1nszki=20J=C3=A1nos?= Date: Thu, 28 Jul 2022 20:59:25 +0200 Subject: [PATCH] GUI updates (#490) --- Editor/AnimationWindow.cpp | 21 +- Editor/CameraWindow.cpp | 44 +- Editor/CameraWindow.h | 2 +- Editor/DecalWindow.cpp | 44 +- Editor/DecalWindow.h | 1 - Editor/Editor.cpp | 2907 ++++-- Editor/Editor.h | 87 +- Editor/Editor_SOURCE.vcxitems | 48 +- Editor/Editor_SOURCE.vcxitems.filters | 39 +- Editor/EmitterWindow.cpp | 179 +- Editor/EmitterWindow.h | 2 - Editor/EnvProbeWindow.cpp | 48 +- Editor/EnvProbeWindow.h | 1 - Editor/FontAwesomeV6.h | 12188 ++++++++++++++++++++++++ Editor/ForceFieldWindow.cpp | 75 +- Editor/ForceFieldWindow.h | 1 - Editor/HairParticleWindow.cpp | 74 +- Editor/HairParticleWindow.h | 1 - Editor/IKWindow.cpp | 52 +- Editor/IKWindow.h | 1 - Editor/IconDefinitions.h | 33 + Editor/IconsFontAwesome6.h | 1396 +++ Editor/LayerWindow.cpp | 27 +- Editor/LightWindow.cpp | 131 +- Editor/LightWindow.h | 1 - Editor/MaterialWindow.cpp | 116 +- Editor/MaterialWindow.h | 1 - Editor/MeshWindow.cpp | 131 +- Editor/NameWindow.cpp | 28 +- Editor/NameWindow.h | 2 + Editor/ObjectWindow.cpp | 66 +- Editor/PaintToolWindow.cpp | 38 +- Editor/PostprocessWindow.cpp | 50 +- Editor/RendererWindow.cpp | 72 +- Editor/SoundWindow.cpp | 320 +- Editor/SoundWindow.h | 3 +- Editor/SpringWindow.cpp | 56 +- Editor/SpringWindow.h | 1 - Editor/TerrainGenerator.cpp | 792 +- Editor/TerrainGenerator.h | 2 + Editor/TransformWindow.cpp | 211 +- Editor/TransformWindow.h | 1 - Editor/WeatherWindow.cpp | 332 +- Editor/WeatherWindow.h | 3 + Editor/images/armature.dds | Bin 65664 -> 0 bytes Editor/images/camera.dds | Bin 65664 -> 0 bytes Editor/images/decal.dds | Bin 65664 -> 0 bytes Editor/images/directional_light.dds | Bin 65684 -> 0 bytes Editor/images/emitter.dds | Bin 65664 -> 0 bytes Editor/images/forcefield.dds | Bin 65664 -> 0 bytes Editor/images/hair.dds | Bin 65664 -> 0 bytes Editor/images/leaf.dds | Bin 349680 -> 0 bytes Editor/images/pointlight.dds | Bin 65684 -> 0 bytes Editor/images/ripple.png | Bin 7617 -> 0 bytes Editor/images/sound.dds | Bin 65684 -> 0 bytes Editor/images/spotlight.dds | Bin 65684 -> 0 bytes WickedEngine/wiApplication.cpp | 11 +- WickedEngine/wiColor.h | 1 + WickedEngine/wiECS.h | 6 + WickedEngine/wiFont.cpp | 140 +- WickedEngine/wiFont.h | 22 +- WickedEngine/wiGUI.cpp | 868 +- WickedEngine/wiGUI.h | 175 +- WickedEngine/wiImage.h | 29 +- WickedEngine/wiPhysics_Bullet.cpp | 6 +- WickedEngine/wiRenderer.cpp | 24 +- WickedEngine/wiScene.cpp | 295 +- WickedEngine/wiScene.h | 12 + WickedEngine/wiVersion.cpp | 2 +- 69 files changed, 18224 insertions(+), 2995 deletions(-) create mode 100644 Editor/FontAwesomeV6.h create mode 100644 Editor/IconDefinitions.h create mode 100644 Editor/IconsFontAwesome6.h delete mode 100644 Editor/images/armature.dds delete mode 100644 Editor/images/camera.dds delete mode 100644 Editor/images/decal.dds delete mode 100644 Editor/images/directional_light.dds delete mode 100644 Editor/images/emitter.dds delete mode 100644 Editor/images/forcefield.dds delete mode 100644 Editor/images/hair.dds delete mode 100644 Editor/images/leaf.dds delete mode 100644 Editor/images/pointlight.dds delete mode 100644 Editor/images/ripple.png delete mode 100644 Editor/images/sound.dds delete mode 100644 Editor/images/spotlight.dds diff --git a/Editor/AnimationWindow.cpp b/Editor/AnimationWindow.cpp index b991eeaaa..c572bcc2e 100644 --- a/Editor/AnimationWindow.cpp +++ b/Editor/AnimationWindow.cpp @@ -8,17 +8,18 @@ using namespace wi::scene; void AnimationWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Animation Window"); + wi::gui::Window::Create(ICON_ANIMATION " Animation", wi::gui::Window::WindowControls::COLLAPSE); SetSize(XMFLOAT2(520, 140)); - float x = 140; + float x = 80; float y = 0; float hei = 18; + float wid = 200; float step = hei + 2; animationsComboBox.Create("Animation: "); - animationsComboBox.SetSize(XMFLOAT2(300, hei)); + animationsComboBox.SetSize(XMFLOAT2(wid, hei)); animationsComboBox.SetPos(XMFLOAT2(x, y)); animationsComboBox.SetEnabled(false); animationsComboBox.OnSelect([&](wi::gui::EventArgs args) { @@ -30,7 +31,7 @@ void AnimationWindow::Create(EditorComponent* _editor) loopedCheckBox.Create("Looped: "); loopedCheckBox.SetTooltip("Toggle animation looping behaviour."); loopedCheckBox.SetSize(XMFLOAT2(hei, hei)); - loopedCheckBox.SetPos(XMFLOAT2(150, y += step)); + loopedCheckBox.SetPos(XMFLOAT2(x, y += step)); loopedCheckBox.OnClick([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); if (animation != nullptr) @@ -43,7 +44,7 @@ void AnimationWindow::Create(EditorComponent* _editor) playButton.Create("Play"); playButton.SetTooltip("Play/Pause animation."); playButton.SetSize(XMFLOAT2(100, hei)); - playButton.SetPos(XMFLOAT2(200, y)); + playButton.SetPos(XMFLOAT2(loopedCheckBox.GetPos().x + loopedCheckBox.GetSize().x + 5, y)); playButton.OnClick([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); if (animation != nullptr) @@ -63,7 +64,7 @@ void AnimationWindow::Create(EditorComponent* _editor) stopButton.Create("Stop"); stopButton.SetTooltip("Stop animation."); stopButton.SetSize(XMFLOAT2(100, hei)); - stopButton.SetPos(XMFLOAT2(310, y)); + stopButton.SetPos(XMFLOAT2(playButton.GetPos().x + playButton.GetSize().x + 5, y)); stopButton.OnClick([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); if (animation != nullptr) @@ -74,7 +75,7 @@ void AnimationWindow::Create(EditorComponent* _editor) AddWidget(&stopButton); timerSlider.Create(0, 1, 0, 100000, "Timer: "); - timerSlider.SetSize(XMFLOAT2(250, hei)); + timerSlider.SetSize(XMFLOAT2(wid, hei)); timerSlider.SetPos(XMFLOAT2(x, y += step)); timerSlider.OnSlide([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); @@ -88,7 +89,7 @@ void AnimationWindow::Create(EditorComponent* _editor) AddWidget(&timerSlider); amountSlider.Create(0, 1, 1, 100000, "Amount: "); - amountSlider.SetSize(XMFLOAT2(250, hei)); + amountSlider.SetSize(XMFLOAT2(wid, hei)); amountSlider.SetPos(XMFLOAT2(x, y += step)); amountSlider.OnSlide([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); @@ -102,7 +103,7 @@ void AnimationWindow::Create(EditorComponent* _editor) AddWidget(&amountSlider); speedSlider.Create(0, 4, 1, 100000, "Speed: "); - speedSlider.SetSize(XMFLOAT2(250, hei)); + speedSlider.SetSize(XMFLOAT2(wid, hei)); speedSlider.SetPos(XMFLOAT2(x, y += step)); speedSlider.OnSlide([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); @@ -117,7 +118,7 @@ void AnimationWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(100, 50, 0)); + SetMinimized(true); SetVisible(false); } diff --git a/Editor/CameraWindow.cpp b/Editor/CameraWindow.cpp index 7a8c4d87c..92dd6c4f4 100644 --- a/Editor/CameraWindow.cpp +++ b/Editor/CameraWindow.cpp @@ -33,20 +33,21 @@ void CameraWindow::ResetCam() void CameraWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Camera Window"); + wi::gui::Window::Create("Camera", wi::gui::Window::WindowControls::COLLAPSE); editor->GetCurrentEditorScene().camera_transform.MatrixTransform(editor->GetCurrentEditorScene().camera.GetInvView()); editor->GetCurrentEditorScene().camera_transform.UpdateTransform(); - SetSize(XMFLOAT2(380, 360)); + SetSize(XMFLOAT2(320, 360)); - float x = 200; + float x = 140; float y = 0; float hei = 18; float step = hei + 2; + float wid = 120; farPlaneSlider.Create(100, 10000, 5000, 100000, "Far Plane: "); farPlaneSlider.SetTooltip("Controls the camera's far clip plane, geometry farther than this will be clipped."); - farPlaneSlider.SetSize(XMFLOAT2(100, hei)); + farPlaneSlider.SetSize(XMFLOAT2(wid, hei)); farPlaneSlider.SetPos(XMFLOAT2(x, y)); farPlaneSlider.SetValue(editor->GetCurrentEditorScene().camera.zFarP); farPlaneSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -60,7 +61,7 @@ void CameraWindow::Create(EditorComponent* _editor) nearPlaneSlider.Create(0.01f, 10, 0.1f, 10000, "Near Plane: "); nearPlaneSlider.SetTooltip("Controls the camera's near clip plane, geometry closer than this will be clipped."); - nearPlaneSlider.SetSize(XMFLOAT2(100, hei)); + nearPlaneSlider.SetSize(XMFLOAT2(wid, hei)); nearPlaneSlider.SetPos(XMFLOAT2(x, y += step)); nearPlaneSlider.SetValue(editor->GetCurrentEditorScene().camera.zNearP); nearPlaneSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -74,7 +75,7 @@ void CameraWindow::Create(EditorComponent* _editor) fovSlider.Create(1, 179, 60, 10000, "FOV: "); fovSlider.SetTooltip("Controls the camera's top-down field of view (in degrees)"); - fovSlider.SetSize(XMFLOAT2(100, hei)); + fovSlider.SetSize(XMFLOAT2(wid, hei)); fovSlider.SetPos(XMFLOAT2(x, y += step)); fovSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -87,7 +88,7 @@ void CameraWindow::Create(EditorComponent* _editor) focalLengthSlider.Create(0.001f, 100, 1, 10000, "Focal Length: "); focalLengthSlider.SetTooltip("Controls the depth of field effect's focus distance"); - focalLengthSlider.SetSize(XMFLOAT2(100, hei)); + focalLengthSlider.SetSize(XMFLOAT2(wid, hei)); focalLengthSlider.SetPos(XMFLOAT2(x, y += step)); focalLengthSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -100,7 +101,7 @@ void CameraWindow::Create(EditorComponent* _editor) apertureSizeSlider.Create(0, 1, 0, 10000, "Aperture Size: "); apertureSizeSlider.SetTooltip("Controls the depth of field effect's strength"); - apertureSizeSlider.SetSize(XMFLOAT2(100, hei)); + apertureSizeSlider.SetSize(XMFLOAT2(wid, hei)); apertureSizeSlider.SetPos(XMFLOAT2(x, y += step)); apertureSizeSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -113,7 +114,7 @@ void CameraWindow::Create(EditorComponent* _editor) apertureShapeXSlider.Create(0, 2, 1, 10000, "Aperture Shape X: "); apertureShapeXSlider.SetTooltip("Controls the depth of field effect's bokeh shape"); - apertureShapeXSlider.SetSize(XMFLOAT2(100, hei)); + apertureShapeXSlider.SetSize(XMFLOAT2(wid, hei)); apertureShapeXSlider.SetPos(XMFLOAT2(x, y += step)); apertureShapeXSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -126,7 +127,7 @@ void CameraWindow::Create(EditorComponent* _editor) apertureShapeYSlider.Create(0, 2, 1, 10000, "Aperture Shape Y: "); apertureShapeYSlider.SetTooltip("Controls the depth of field effect's bokeh shape"); - apertureShapeYSlider.SetSize(XMFLOAT2(100, hei)); + apertureShapeYSlider.SetSize(XMFLOAT2(wid, hei)); apertureShapeYSlider.SetPos(XMFLOAT2(x, y += step)); apertureShapeYSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -138,22 +139,22 @@ void CameraWindow::Create(EditorComponent* _editor) AddWidget(&apertureShapeYSlider); movespeedSlider.Create(1, 100, 10, 10000, "Movement Speed: "); - movespeedSlider.SetSize(XMFLOAT2(100, hei)); + movespeedSlider.SetSize(XMFLOAT2(wid, hei)); movespeedSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&movespeedSlider); accelerationSlider.Create(0.01f, 1, 0.18f, 10000, "Acceleration: "); - accelerationSlider.SetSize(XMFLOAT2(100, hei)); + accelerationSlider.SetSize(XMFLOAT2(wid, hei)); accelerationSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&accelerationSlider); rotationspeedSlider.Create(0.1f, 2, 1, 10000, "Rotation Speed: "); - rotationspeedSlider.SetSize(XMFLOAT2(100, hei)); + rotationspeedSlider.SetSize(XMFLOAT2(wid, hei)); rotationspeedSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&rotationspeedSlider); resetButton.Create("Reset Camera"); - resetButton.SetSize(XMFLOAT2(140, hei)); + resetButton.SetSize(XMFLOAT2(wid, hei)); resetButton.SetPos(XMFLOAT2(x, y += step)); resetButton.OnClick([&](wi::gui::EventArgs args) { ResetCam(); @@ -170,7 +171,7 @@ void CameraWindow::Create(EditorComponent* _editor) proxyButton.Create("Place Proxy"); proxyButton.SetTooltip("Copy the current camera and place a proxy of it in the world."); - proxyButton.SetSize(XMFLOAT2(140, hei)); + proxyButton.SetSize(XMFLOAT2(wid, hei)); proxyButton.SetPos(XMFLOAT2(x, y += step * 2)); proxyButton.OnClick([=](wi::gui::EventArgs args) { @@ -185,8 +186,7 @@ void CameraWindow::Create(EditorComponent* _editor) CameraComponent& cam = *scene.cameras.GetComponent(entity); cam = camera; - TransformComponent& transform = *scene.transforms.GetComponent(entity); - transform.MatrixTransform(camera.InvView); + scene.transforms.GetComponent(entity)->MatrixTransform(camera.InvView); wi::Archive& archive = editor->AdvanceHistory(); archive << EditorComponent::HISTORYOP_ADD; @@ -196,7 +196,7 @@ void CameraWindow::Create(EditorComponent* _editor) editor->AddSelected(entity); editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); + editor->RecordEntity(archive, entity); editor->RefreshEntityTree(); SetEntity(entity); @@ -211,21 +211,21 @@ void CameraWindow::Create(EditorComponent* _editor) AddWidget(&followCheckBox); followSlider.Create(0.0f, 0.999f, 0.0f, 1000.0f, "Follow Proxy Delay: "); - followSlider.SetSize(XMFLOAT2(100, hei)); + followSlider.SetSize(XMFLOAT2(wid, hei)); followSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&followSlider); SetEntity(INVALID_ENTITY); + SetPos(XMFLOAT2(100, 100)); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 720, 100, 0)); - SetVisible(false); + SetMinimized(true); } void CameraWindow::SetEntity(Entity entity) { - proxy = entity; + this->entity = entity; Scene& scene = editor->GetCurrentScene(); diff --git a/Editor/CameraWindow.h b/Editor/CameraWindow.h index e17cf4984..2e9baac50 100644 --- a/Editor/CameraWindow.h +++ b/Editor/CameraWindow.h @@ -11,7 +11,7 @@ public: void ResetCam(); EditorComponent* editor = nullptr; - wi::ecs::Entity proxy = wi::ecs::INVALID_ENTITY; + wi::ecs::Entity entity = wi::ecs::INVALID_ENTITY; void SetEntity(wi::ecs::Entity entity); void Update(); diff --git a/Editor/DecalWindow.cpp b/Editor/DecalWindow.cpp index 6e93a551c..ad836b812 100644 --- a/Editor/DecalWindow.cpp +++ b/Editor/DecalWindow.cpp @@ -9,8 +9,22 @@ using namespace wi::scene; void DecalWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Decal Window"); - SetSize(XMFLOAT2(420, 200)); + wi::gui::Window::Create(ICON_DECAL " Decal", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 150)); + + closeButton.SetTooltip("Delete DecalComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().decals.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 200; float y = 0; @@ -28,27 +42,13 @@ void DecalWindow::Create(EditorComponent* _editor) infoLabel.Create(""); infoLabel.SetText("Selecting decals will select the according material. Set decal properties (texture, color, etc.) in the Material window."); - infoLabel.SetSize(XMFLOAT2(400 - 20, 100)); + infoLabel.SetSize(XMFLOAT2(300, 100)); infoLabel.SetPos(XMFLOAT2(10, y)); infoLabel.SetColor(wi::Color::Transparent()); AddWidget(&infoLabel); y += infoLabel.GetScale().y - step + 5; - decalNameField.Create("Decal Name"); - decalNameField.SetPos(XMFLOAT2(10, y+=step)); - decalNameField.SetSize(XMFLOAT2(300, hei)); - decalNameField.OnInputAccepted([=](wi::gui::EventArgs args) { - NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); - if (name != nullptr) - { - *name = args.sValue; - - editor->RefreshEntityTree(); - } - }); - AddWidget(&decalNameField); - - Translate(XMFLOAT3(30, 30, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -63,14 +63,10 @@ void DecalWindow::SetEntity(Entity entity) if (decal != nullptr) { - const NameComponent& name = *scene.names.GetComponent(entity); - - decalNameField.SetValue(name.name); - decalNameField.SetEnabled(true); + SetEnabled(true); } else { - decalNameField.SetValue("No decal selected"); - decalNameField.SetEnabled(false); + SetEnabled(false); } } diff --git a/Editor/DecalWindow.h b/Editor/DecalWindow.h index b8668b8b1..e952db109 100644 --- a/Editor/DecalWindow.h +++ b/Editor/DecalWindow.h @@ -14,6 +14,5 @@ public: wi::gui::CheckBox placementCheckBox; wi::gui::Label infoLabel; - wi::gui::TextInputField decalNameField; }; diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index 4918ea6a3..e974d4f12 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -6,6 +6,8 @@ #include "ModelImporter.h" #include "Translator.h" +#include "FontAwesomeV6.h" // font TTF data + #include #include #include @@ -16,6 +18,8 @@ using namespace wi::primitive; using namespace wi::scene; using namespace wi::ecs; +const float shadow_expand = 1; + void Editor::Initialize() { Application::Initialize(); @@ -25,12 +29,12 @@ void Editor::Initialize() infoDisplay.active = true; infoDisplay.watermark = true; - infoDisplay.fpsinfo = true; - infoDisplay.resolution = true; + //infoDisplay.fpsinfo = true; + //infoDisplay.resolution = true; //infoDisplay.logical_size = true; - infoDisplay.colorspace = true; - infoDisplay.heap_allocation_counter = true; - infoDisplay.vram_usage = true; + //infoDisplay.colorspace = true; + //infoDisplay.heap_allocation_counter = true; + //infoDisplay.vram_usage = true; wi::renderer::SetOcclusionCullingEnabled(true); @@ -72,7 +76,6 @@ void EditorLoadingScreen::Update(float dt) LoadingScreen::Update(dt); } - void EditorComponent::ChangeRenderPath(RENDERPATH path) { switch (path) @@ -106,19 +109,21 @@ void EditorComponent::ChangeRenderPath(RENDERPATH path) renderPath->Load(); - wi::gui::GUI& gui = GetGUI(); - // Destroy and recreate renderer and postprocess windows: - gui.RemoveWidget(&rendererWnd); + optionsWnd.RemoveWidget(&rendererWnd); rendererWnd = {}; rendererWnd.Create(this); - gui.AddWidget(&rendererWnd); + rendererWnd.SetShadowRadius(shadow_expand); + optionsWnd.AddWidget(&rendererWnd); - gui.RemoveWidget(&postprocessWnd); + optionsWnd.RemoveWidget(&postprocessWnd); postprocessWnd = {}; postprocessWnd.Create(this); - gui.AddWidget(&postprocessWnd); + postprocessWnd.SetShadowRadius(shadow_expand); + optionsWnd.AddWidget(&postprocessWnd); + + themeCombo.SetSelected(themeCombo.GetSelected()); // destroyed windows need theme set again } void EditorComponent::ResizeBuffers() @@ -231,99 +236,12 @@ void EditorComponent::ResizeLayout() float screenW = GetLogicalWidth(); float screenH = GetLogicalHeight(); - XMFLOAT2 option_size = XMFLOAT2(100, 34); - float x = screenW - option_size.x; - float y = screenH - option_size.y; - float step = (option_size.y + 2) * -1; - float hstep = (option_size.x + 2) * -1; + optionsWnd.SetPos(XMFLOAT2(0, screenH - optionsWnd.GetScale().y)); - rendererWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - rendererWnd_Toggle.SetSize(option_size); - - postprocessWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - postprocessWnd_Toggle.SetSize(option_size); - - paintToolWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - paintToolWnd_Toggle.SetSize(option_size); - - terrainWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - terrainWnd_Toggle.SetSize(option_size); - - ///////////////////////// - - option_size.y = 16; - step = (option_size.y + 2) * -1; - x = screenW - option_size.x; - y = screenH - option_size.y; - - weatherWnd_Toggle.SetPos(XMFLOAT2(x, y)); - weatherWnd_Toggle.SetSize(option_size); - - objectWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - objectWnd_Toggle.SetSize(option_size); - - meshWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - meshWnd_Toggle.SetSize(option_size); - - materialWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - materialWnd_Toggle.SetSize(option_size); - - cameraWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - cameraWnd_Toggle.SetSize(option_size); - - envProbeWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - envProbeWnd_Toggle.SetSize(option_size); - - decalWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - decalWnd_Toggle.SetSize(option_size); - - soundWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - soundWnd_Toggle.SetSize(option_size); - - lightWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - lightWnd_Toggle.SetSize(option_size); - - animWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - animWnd_Toggle.SetSize(option_size); - - emitterWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - emitterWnd_Toggle.SetSize(option_size); - - hairWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - hairWnd_Toggle.SetSize(option_size); - - forceFieldWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - forceFieldWnd_Toggle.SetSize(option_size); - - springWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - springWnd_Toggle.SetSize(option_size); - - ikWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - ikWnd_Toggle.SetSize(option_size); - - transformWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - transformWnd_Toggle.SetSize(option_size); - - layerWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - layerWnd_Toggle.SetSize(option_size); - - nameWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - nameWnd_Toggle.SetSize(option_size); + componentWindow.SetPos(XMFLOAT2(screenW - componentWindow.GetScale().x, screenH - componentWindow.GetScale().y)); //////////////////////////////////////////////////////////////////////////////////// - translatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25, 0)); - translatorCheckBox.SetSize(XMFLOAT2(18, 18)); - - isScalatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25 - 40 * 2, 22)); - isScalatorCheckBox.SetSize(XMFLOAT2(18, 18)); - - isRotatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25 - 40 * 1, 22)); - isRotatorCheckBox.SetSize(XMFLOAT2(18, 18)); - - isTranslatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25, 22)); - isTranslatorCheckBox.SetSize(XMFLOAT2(18, 18)); - saveButton.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3, 0)); saveButton.SetSize(XMFLOAT2(100, 40)); @@ -341,74 +259,845 @@ void EditorComponent::ResizeLayout() exitButton.SetPos(XMFLOAT2(screenW - 50, 0)); exitButton.SetSize(XMFLOAT2(50, 40)); - - profilerEnabledCheckBox.SetSize(XMFLOAT2(18, 18)); - profilerEnabledCheckBox.SetPos(XMFLOAT2(screenW - 485, 45)); - - physicsEnabledCheckBox.SetSize(XMFLOAT2(18, 18)); - physicsEnabledCheckBox.SetPos(XMFLOAT2(screenW - 390, 45)); - - cinemaModeCheckBox.SetSize(XMFLOAT2(18, 18)); - cinemaModeCheckBox.SetPos(XMFLOAT2(screenW - 260, 45)); - - renderPathComboBox.SetSize(XMFLOAT2(120, 18)); - renderPathComboBox.SetPos(XMFLOAT2(screenW - 140, 45)); - - sceneComboBox.SetSize(XMFLOAT2(120, 18)); - sceneComboBox.SetPos(XMFLOAT2(screenW - 140, 67)); - - saveModeComboBox.SetSize(XMFLOAT2(120, 18)); - saveModeComboBox.SetPos(XMFLOAT2(screenW - 140, 89)); - - pathTraceTargetSlider.SetSize(XMFLOAT2(200, 18)); - pathTraceTargetSlider.SetPos(XMFLOAT2(screenW - 240, 111)); - - pathTraceStatisticsLabel.SetSize(XMFLOAT2(240, 60)); - pathTraceStatisticsLabel.SetPos(XMFLOAT2(screenW - 240, 133)); - - entityTree.SetSize(XMFLOAT2(260, 300)); - entityTree.SetPos(XMFLOAT2(0, screenH - entityTree.scale_local.y)); } void EditorComponent::Load() { - wi::jobsystem::context ctx; - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { pointLightTex = wi::resourcemanager::Load("images/pointlight.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { spotLightTex = wi::resourcemanager::Load("images/spotlight.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { dirLightTex = wi::resourcemanager::Load("images/directional_light.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { decalTex = wi::resourcemanager::Load("images/decal.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { forceFieldTex = wi::resourcemanager::Load("images/forcefield.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { emitterTex = wi::resourcemanager::Load("images/emitter.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { hairTex = wi::resourcemanager::Load("images/hair.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { cameraTex = wi::resourcemanager::Load("images/camera.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { armatureTex = wi::resourcemanager::Load("images/armature.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { soundTex = wi::resourcemanager::Load("images/sound.dds"); }); - // wait for ctx is at the end of this function! + // Font icon is from #include "FontAwesomeV6.h" + // We will not directly use this font style, but let the font renderer fall back on it + // when an icon character is not found in the default font. + wi::font::AddFontStyle("FontAwesomeV6", font_awesome_v6, sizeof(font_awesome_v6)); - rendererWnd_Toggle.Create("Renderer"); - rendererWnd_Toggle.SetTooltip("Renderer settings window"); - rendererWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - rendererWnd.SetVisible(!rendererWnd.IsVisible()); + saveButton.Create(ICON_SAVE " Save"); + saveButton.font.params.shadowColor = wi::Color::Transparent(); + saveButton.SetTooltip("Save the current scene to a new file (Ctrl + Shift + S)"); + saveButton.SetColor(wi::Color(50, 180, 100, 180), wi::gui::WIDGETSTATE::IDLE); + saveButton.SetColor(wi::Color(50, 220, 140, 255), wi::gui::WIDGETSTATE::FOCUS); + saveButton.OnClick([&](wi::gui::EventArgs args) { + SaveAs(); }); - GetGUI().AddWidget(&rendererWnd_Toggle); + GetGUI().AddWidget(&saveButton); - postprocessWnd_Toggle.Create("PostProcess"); - postprocessWnd_Toggle.SetTooltip("Postprocess settings window"); - postprocessWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - postprocessWnd.SetVisible(!postprocessWnd.IsVisible()); + + openButton.Create(ICON_OPEN " Open"); + openButton.font.params.shadowColor = wi::Color::Transparent(); + openButton.SetTooltip("Open a scene, import a model or execute a Lua script..."); + openButton.SetColor(wi::Color(50, 100, 255, 180), wi::gui::WIDGETSTATE::IDLE); + openButton.SetColor(wi::Color(120, 160, 255, 255), wi::gui::WIDGETSTATE::FOCUS); + openButton.OnClick([&](wi::gui::EventArgs args) { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = ".wiscene, .obj, .gltf, .glb, .lua"; + params.extensions.push_back("wiscene"); + params.extensions.push_back("obj"); + params.extensions.push_back("gltf"); + params.extensions.push_back("glb"); + params.extensions.push_back("lua"); + wi::helper::FileDialog(params, [&](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + + std::string extension = wi::helper::toUpper(wi::helper::GetExtensionFromFileName(fileName)); + if (!extension.compare("LUA")) + { + wi::lua::RunFile(fileName); + return; + } + + size_t camera_count_prev = GetCurrentScene().cameras.GetCount(); + + main->loader.addLoadingFunction([=](wi::jobsystem::JobArgs args) { + + if (!extension.compare("WISCENE")) // engine-serialized + { + wi::scene::LoadModel(GetCurrentScene(), fileName); + GetCurrentEditorScene().path = fileName; + } + else if (!extension.compare("OBJ")) // wavefront-obj + { + Scene scene; + ImportModel_OBJ(fileName, scene); + GetCurrentScene().Merge(scene); + } + else if (!extension.compare("GLTF")) // text-based gltf + { + Scene scene; + ImportModel_GLTF(fileName, scene); + GetCurrentScene().Merge(scene); + } + else if (!extension.compare("GLB")) // binary gltf + { + Scene scene; + ImportModel_GLTF(fileName, scene); + GetCurrentScene().Merge(scene); + } + }); + main->loader.onFinished([=] { + + // Detect when the new scene contains a new camera, and snap the camera onto it: + size_t camera_count = GetCurrentScene().cameras.GetCount(); + if (camera_count > 0 && camera_count > camera_count_prev) + { + Entity entity = GetCurrentScene().cameras.GetEntity(camera_count_prev); + if (entity != INVALID_ENTITY) + { + TransformComponent* camera_transform = GetCurrentScene().transforms.GetComponent(entity); + if (camera_transform != nullptr) + { + GetCurrentEditorScene().camera_transform = *camera_transform; + } + + CameraComponent* cam = GetCurrentScene().cameras.GetComponent(entity); + if (cam != nullptr) + { + GetCurrentEditorScene().camera = *cam; + // camera aspect should be always for the current screen + GetCurrentEditorScene().camera.width = (float)renderPath->GetInternalResolution().x; + GetCurrentEditorScene().camera.height = (float)renderPath->GetInternalResolution().y; + } + } + } + + main->ActivatePath(this, 0.2f, wi::Color::Black()); + weatherWnd.Update(); + RefreshEntityTree(); + RefreshSceneList(); + }); + main->ActivatePath(&main->loader, 0.2f, wi::Color::Black()); + ResetHistory(); + }); + }); }); - GetGUI().AddWidget(&postprocessWnd_Toggle); + GetGUI().AddWidget(&openButton); - paintToolWnd_Toggle.Create("Paint Tool"); - paintToolWnd_Toggle.SetTooltip("Paint tool window"); - paintToolWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - paintToolWnd.SetVisible(!paintToolWnd.IsVisible()); + + closeButton.Create(ICON_CLOSE " Close"); + closeButton.font.params.shadowColor = wi::Color::Transparent(); + closeButton.SetTooltip("Close the current scene.\nThis will clear everything from the currently selected scene, and delete the scene.\nThis operation cannot be undone!"); + closeButton.SetColor(wi::Color(255, 130, 100, 180), wi::gui::WIDGETSTATE::IDLE); + closeButton.SetColor(wi::Color(255, 200, 150, 255), wi::gui::WIDGETSTATE::FOCUS); + closeButton.OnClick([&](wi::gui::EventArgs args) { + + terragen.Generation_Cancel(); + terragen.terrainEntity = INVALID_ENTITY; + terragen.SetCollapsed(true); + + translator.selected.clear(); + wi::scene::Scene& scene = GetCurrentScene(); + wi::renderer::ClearWorld(scene); + objectWnd.SetEntity(INVALID_ENTITY); + meshWnd.SetEntity(INVALID_ENTITY, -1); + lightWnd.SetEntity(INVALID_ENTITY); + soundWnd.SetEntity(INVALID_ENTITY); + decalWnd.SetEntity(INVALID_ENTITY); + envProbeWnd.SetEntity(INVALID_ENTITY); + materialWnd.SetEntity(INVALID_ENTITY); + emitterWnd.SetEntity(INVALID_ENTITY); + hairWnd.SetEntity(INVALID_ENTITY); + forceFieldWnd.SetEntity(INVALID_ENTITY); + cameraWnd.SetEntity(INVALID_ENTITY); + paintToolWnd.SetEntity(INVALID_ENTITY); + springWnd.SetEntity(INVALID_ENTITY); + ikWnd.SetEntity(INVALID_ENTITY); + transformWnd.SetEntity(INVALID_ENTITY); + layerWnd.SetEntity(INVALID_ENTITY); + nameWnd.SetEntity(INVALID_ENTITY); + + RefreshEntityTree(); + ResetHistory(); + GetCurrentEditorScene().path.clear(); + + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + if (scenes.size() > 1) + { + scenes.erase(scenes.begin() + current_scene); + } + SetCurrentScene(std::max(0, current_scene - 1)); + }); }); - GetGUI().AddWidget(&paintToolWnd_Toggle); + GetGUI().AddWidget(&closeButton); - terrainWnd_Toggle.Create("Terrain"); - terrainWnd_Toggle.SetTooltip("Terrain Generator"); - terrainWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { + + aboutButton.Create(ICON_HELP); + aboutButton.font.params.shadowColor = wi::Color::Transparent(); + aboutButton.SetTooltip("About..."); + aboutButton.SetColor(wi::Color(50, 160, 200, 180), wi::gui::WIDGETSTATE::IDLE); + aboutButton.SetColor(wi::Color(120, 200, 200, 255), wi::gui::WIDGETSTATE::FOCUS); + aboutButton.OnClick([&](wi::gui::EventArgs args) { + aboutLabel.SetVisible(!aboutLabel.IsVisible()); + }); + GetGUI().AddWidget(&aboutButton); + + { + std::string ss; + ss += "Wicked Engine Editor v"; + ss += wi::version::GetVersionString(); + ss += "\nCreated by Turánszki János"; + ss += "\n\nWebsite: https://wickedengine.net/"; + ss += "\nGithub page: https://github.com/turanszkij/WickedEngine"; + ss += "\nDiscord chat: https://discord.gg/CFjRYmE"; + ss += "\nYou can support the project on Patreon: https://www.patreon.com/wickedengine"; + ss += "\n\nControls\n"; + ss += "------------\n"; + ss += "Move camera: WASD, or Contoller left stick or D-pad\n"; + ss += "Look: Middle mouse button / arrow keys / controller right stick\n"; + ss += "Select: Right mouse button\n"; + ss += "Interact with water: Left mouse button when nothing is selected\n"; + ss += "Faster camera: Left Shift button or controller R2/RT\n"; + ss += "Snap transform: Left Ctrl (hold while transforming)\n"; + ss += "Camera up: E\n"; + ss += "Camera down: Q\n"; + ss += "Duplicate entity: Ctrl + D\n"; + ss += "Select All: Ctrl + A\n"; + ss += "Deselect All: Esc\n"; + ss += "Undo: Ctrl + Z\n"; + ss += "Redo: Ctrl + Y\n"; + ss += "Copy: Ctrl + C\n"; + ss += "Cut: Ctrl + X\n"; + ss += "Paste: Ctrl + V\n"; + ss += "Delete: Delete button\n"; + ss += "Save As: Ctrl + Shift + S\n"; + ss += "Save: Ctrl + S\n"; + ss += "Transform: Ctrl + T\n"; + ss += "Wireframe mode: Ctrl + W\n"; + ss += "Color grading reference: Ctrl + G (color grading palette reference will be displayed in top left corner)\n"; + ss += "Inspector mode: I button (hold), hovered entity information will be displayed near mouse position.\n"; + ss += "Place Instances: Ctrl + Shift + Left mouse click (place clipboard onto clicked surface)\n"; + ss += "Script Console / backlog: HOME button\n"; + ss += "\n"; + ss += "\nTips\n"; + ss += "-------\n"; + ss += "You can find sample scenes in the Content/models directory. Try to load one.\n"; + ss += "You can also import models from .OBJ, .GLTF, .GLB files.\n"; +#ifndef PLATFORM_UWP + ss += "You can find a program configuration file at Editor/config.ini\n"; +#endif // PLATFORM_UWP + ss += "You can find sample LUA scripts in the Content/scripts directory. Try to load one.\n"; + ss += "You can find a startup script at Editor/startup.lua (this will be executed on program start, if exists)\n"; + ss += "\nFor questions, bug reports, feedback, requests, please open an issue at:\n"; + ss += "https://github.com/turanszkij/WickedEngine/issues\n"; + + aboutLabel.Create("AboutLabel"); + aboutLabel.SetText(ss); + aboutLabel.SetVisible(false); + aboutLabel.SetColor(wi::Color(113, 183, 214, 100)); + GetGUI().AddWidget(&aboutLabel); + } + + exitButton.Create(ICON_EXIT); + exitButton.font.params.shadowColor = wi::Color::Transparent(); + exitButton.SetTooltip("Exit"); + exitButton.SetColor(wi::Color(160, 50, 50, 180), wi::gui::WIDGETSTATE::IDLE); + exitButton.SetColor(wi::Color(200, 50, 50, 255), wi::gui::WIDGETSTATE::FOCUS); + exitButton.OnClick([this](wi::gui::EventArgs args) { + terragen.Generation_Cancel(); + wi::platform::Exit(); + }); + GetGUI().AddWidget(&exitButton); + + + + //////////////////////////////////////////////////////////////////////////////////// + + + optionsWnd.Create("Options", wi::gui::Window::WindowControls::RESIZE_TOPRIGHT); + optionsWnd.SetPos(XMFLOAT2(100, 120)); + optionsWnd.SetSize(XMFLOAT2(340, 400)); + optionsWnd.SetShadowRadius(2); + GetGUI().AddWidget(&optionsWnd); + + translatorCheckBox.Create("Transform: "); + translatorCheckBox.SetTooltip("Enable the transform tool (Ctrl + T).\nTip: hold Left Ctrl to enable snap transform.\nYou can configure snap mode units in the Transform settings."); + translatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.enabled = args.bValue; + }); + optionsWnd.AddWidget(&translatorCheckBox); + + isScalatorCheckBox.Create("S: "); + isRotatorCheckBox.Create("R: "); + isTranslatorCheckBox.Create("T: "); + { + isScalatorCheckBox.SetTooltip("Scale"); + isScalatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.isScalator = args.bValue; + translator.isTranslator = false; + translator.isRotator = false; + isTranslatorCheckBox.SetCheck(false); + isRotatorCheckBox.SetCheck(false); + }); + isScalatorCheckBox.SetCheck(translator.isScalator); + optionsWnd.AddWidget(&isScalatorCheckBox); + + isRotatorCheckBox.SetTooltip("Rotate"); + isRotatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.isRotator = args.bValue; + translator.isScalator = false; + translator.isTranslator = false; + isScalatorCheckBox.SetCheck(false); + isTranslatorCheckBox.SetCheck(false); + }); + isRotatorCheckBox.SetCheck(translator.isRotator); + optionsWnd.AddWidget(&isRotatorCheckBox); + + isTranslatorCheckBox.SetTooltip("Translate (Move)"); + isTranslatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.isTranslator = args.bValue; + translator.isScalator = false; + translator.isRotator = false; + isScalatorCheckBox.SetCheck(false); + isRotatorCheckBox.SetCheck(false); + }); + isTranslatorCheckBox.SetCheck(translator.isTranslator); + optionsWnd.AddWidget(&isTranslatorCheckBox); + } + + + profilerEnabledCheckBox.Create("Profiler: "); + profilerEnabledCheckBox.SetTooltip("Toggle Profiler On/Off"); + profilerEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { + wi::profiler::SetEnabled(args.bValue); + }); + profilerEnabledCheckBox.SetCheck(wi::profiler::IsEnabled()); + optionsWnd.AddWidget(&profilerEnabledCheckBox); + + physicsEnabledCheckBox.Create("Physics: "); + physicsEnabledCheckBox.SetTooltip("Toggle Physics Simulation On/Off"); + physicsEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { + wi::physics::SetSimulationEnabled(args.bValue); + }); + physicsEnabledCheckBox.SetCheck(wi::physics::IsSimulationEnabled()); + optionsWnd.AddWidget(&physicsEnabledCheckBox); + + cinemaModeCheckBox.Create("Cinema Mode: "); + cinemaModeCheckBox.SetTooltip("Toggle Cinema Mode (All HUD disabled). Press ESC to exit."); + cinemaModeCheckBox.OnClick([&](wi::gui::EventArgs args) { + if (renderPath != nullptr) + { + renderPath->GetGUI().SetVisible(false); + } + GetGUI().SetVisible(false); + wi::profiler::SetEnabled(false); + main->infoDisplay.active = false; + }); + optionsWnd.AddWidget(&cinemaModeCheckBox); + + infoDisplayCheckBox.Create("Info Display: "); + infoDisplayCheckBox.SetTooltip("Toggle the information display (the text in top left corner)."); + infoDisplayCheckBox.OnClick([&](wi::gui::EventArgs args) { + main->infoDisplay.active = args.bValue; + }); + optionsWnd.AddWidget(&infoDisplayCheckBox); + infoDisplayCheckBox.SetCheck(main->infoDisplay.active); + + fpsCheckBox.Create("FPS: "); + fpsCheckBox.SetTooltip("Toggle the FPS display."); + fpsCheckBox.OnClick([&](wi::gui::EventArgs args) { + main->infoDisplay.fpsinfo = args.bValue; + }); + optionsWnd.AddWidget(&fpsCheckBox); + fpsCheckBox.SetCheck(main->infoDisplay.fpsinfo); + + otherinfoCheckBox.Create("Advanced: "); + otherinfoCheckBox.SetTooltip("Toggle advanced data in the info display."); + otherinfoCheckBox.OnClick([&](wi::gui::EventArgs args) { + main->infoDisplay.heap_allocation_counter = args.bValue; + main->infoDisplay.vram_usage = args.bValue; + main->infoDisplay.colorspace = args.bValue; + main->infoDisplay.resolution = args.bValue; + main->infoDisplay.logical_size = args.bValue; + main->infoDisplay.pipeline_count = args.bValue; + }); + optionsWnd.AddWidget(&otherinfoCheckBox); + otherinfoCheckBox.SetCheck(main->infoDisplay.heap_allocation_counter); + + + + + newCombo.Create("New: "); + newCombo.AddItem("...", ~0ull); + newCombo.AddItem("Transform", 0); + newCombo.AddItem("Material", 1); + newCombo.AddItem("Point Light", 2); + newCombo.AddItem("Spot Light", 3); + newCombo.AddItem("Directional Light", 4); + newCombo.AddItem("Environment Probe", 5); + newCombo.AddItem("Force", 6); + newCombo.AddItem("Decal", 7); + newCombo.AddItem("Sound", 8); + newCombo.AddItem("Weather", 9); + newCombo.AddItem("Emitter", 10); + newCombo.AddItem("HairParticle", 11); + newCombo.AddItem("Camera", 12); + newCombo.AddItem("Cube Object", 13); + newCombo.AddItem("Plane Object", 14); + newCombo.OnSelect([&](wi::gui::EventArgs args) { + newCombo.SetSelectedWithoutCallback(0); + const EditorScene& editorscene = GetCurrentEditorScene(); + const CameraComponent& camera = editorscene.camera; + Scene& scene = GetCurrentScene(); + PickResult pick; + + XMFLOAT3 in_front_of_camera; + XMStoreFloat3(&in_front_of_camera, XMVectorAdd(camera.GetEye(), camera.GetAt() * 4)); + + switch (args.userdata) + { + case 0: + pick.entity = scene.Entity_CreateTransform("transform"); + break; + case 1: + pick.entity = scene.Entity_CreateMaterial("material"); + break; + case 2: + pick.entity = scene.Entity_CreateLight("pointlight", in_front_of_camera, XMFLOAT3(1, 1, 1), 2, 60); + scene.lights.GetComponent(pick.entity)->type = LightComponent::POINT; + scene.lights.GetComponent(pick.entity)->intensity = 20; + break; + case 3: + pick.entity = scene.Entity_CreateLight("spotlight", in_front_of_camera, XMFLOAT3(1, 1, 1), 2, 60); + scene.lights.GetComponent(pick.entity)->type = LightComponent::SPOT; + scene.lights.GetComponent(pick.entity)->intensity = 100; + break; + case 4: + pick.entity = scene.Entity_CreateLight("dirlight", XMFLOAT3(0, 3, 0), XMFLOAT3(1, 1, 1), 2, 60); + scene.lights.GetComponent(pick.entity)->type = LightComponent::DIRECTIONAL; + scene.lights.GetComponent(pick.entity)->intensity = 10; + break; + case 5: + pick.entity = scene.Entity_CreateEnvironmentProbe("envprobe", in_front_of_camera); + break; + case 6: + pick.entity = scene.Entity_CreateForce("force"); + break; + case 7: + pick.entity = scene.Entity_CreateDecal("decal", "images/logo_small.png"); + scene.transforms.GetComponent(pick.entity)->RotateRollPitchYaw(XMFLOAT3(XM_PIDIV2, 0, 0)); + break; + case 8: + { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Sound"; + params.extensions = wi::resourcemanager::GetSupportedSoundExtensions(); + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + Entity entity = GetCurrentScene().Entity_CreateSound(wi::helper::GetFileNameFromPath(fileName), fileName); + + wi::Archive& archive = AdvanceHistory(); + archive << EditorComponent::HISTORYOP_ADD; + RecordSelection(archive); + + ClearSelected(); + AddSelected(entity); + + RecordSelection(archive); + RecordEntity(archive, entity); + + RefreshEntityTree(); + soundWnd.SetEntity(entity); + }); + }); + return; + } + break; + case 9: + pick.entity = CreateEntity(); + scene.weathers.Create(pick.entity); + scene.names.Create(pick.entity) = "weather"; + break; + case 10: + pick.entity = scene.Entity_CreateEmitter("emitter"); + break; + case 11: + pick.entity = scene.Entity_CreateHair("hair"); + break; + case 12: + pick.entity = scene.Entity_CreateCamera("camera", camera.width, camera.height); + *scene.cameras.GetComponent(pick.entity) = camera; + *scene.transforms.GetComponent(pick.entity) = editorscene.camera_transform; + break; + case 13: + pick.entity = scene.Entity_CreateCube("cube"); + pick.subsetIndex = 0; + break; + case 14: + pick.entity = scene.Entity_CreatePlane("plane"); + pick.subsetIndex = 0; + break; + default: + break; + } + if (pick.entity != INVALID_ENTITY) + { + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + RecordSelection(archive); + + ClearSelected(); + AddSelected(pick); + + RecordSelection(archive); + RecordEntity(archive, pick.entity); + } + RefreshEntityTree(); + }); + newCombo.SetEnabled(true); + newCombo.SetTooltip("Create new entity"); + optionsWnd.AddWidget(&newCombo); + + + filterCombo.Create("Filter: "); + filterCombo.AddItem("All ", (uint64_t)Filter::All); + filterCombo.AddItem("Transform " ICON_TRANSFORM, (uint64_t)Filter::Transform); + filterCombo.AddItem("Material " ICON_MATERIAL, (uint64_t)Filter::Material); + filterCombo.AddItem("Mesh " ICON_MESH, (uint64_t)Filter::Mesh); + filterCombo.AddItem("Object " ICON_OBJECT, (uint64_t)Filter::Object); + filterCombo.AddItem("Environment Probe " ICON_ENVIRONMENTPROBE, (uint64_t)Filter::EnvironmentProbe); + filterCombo.AddItem("Decal " ICON_DECAL, (uint64_t)Filter::Decal); + filterCombo.AddItem("Sound " ICON_SOUND, (uint64_t)Filter::Sound); + filterCombo.AddItem("Weather " ICON_WEATHER, (uint64_t)Filter::Weather); + filterCombo.AddItem("Light " ICON_POINTLIGHT, (uint64_t)Filter::Light); + filterCombo.SetTooltip("Apply filtering to the Entities"); + filterCombo.OnSelect([&](wi::gui::EventArgs args) { + filter = (Filter)args.userdata; + RefreshEntityTree(); + }); + optionsWnd.AddWidget(&filterCombo); + + + entityTree.Create("Entities"); + entityTree.SetSize(XMFLOAT2(300, 300)); + entityTree.OnSelect([this](wi::gui::EventArgs args) { + + if (args.iValue < 0) + return; + + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_SELECTION; + // record PREVIOUS selection state... + RecordSelection(archive); + + translator.selected.clear(); + + for (int i = 0; i < entityTree.GetItemCount(); ++i) + { + const wi::gui::TreeList::Item& item = entityTree.GetItem(i); + if (item.selected) + { + wi::scene::PickResult pick; + pick.entity = (Entity)item.userdata; + AddSelected(pick); + } + } + + // record NEW selection state... + RecordSelection(archive); + + }); + optionsWnd.AddWidget(&entityTree); + + + renderPathComboBox.Create("Render Path: "); + renderPathComboBox.AddItem("Default"); + renderPathComboBox.AddItem("Path Tracing"); + renderPathComboBox.OnSelect([&](wi::gui::EventArgs args) { + ChangeRenderPath((RENDERPATH)args.iValue); + }); + renderPathComboBox.SetSelected(RENDERPATH_DEFAULT); + renderPathComboBox.SetEnabled(true); + renderPathComboBox.SetTooltip("Choose a render path..."); + optionsWnd.AddWidget(&renderPathComboBox); + + + pathTraceTargetSlider.Create(1, 2048, 1024, 2047, "Sample count: "); + pathTraceTargetSlider.SetSize(XMFLOAT2(200, 18)); + pathTraceTargetSlider.SetTooltip("The path tracing will perform this many samples per pixel."); + optionsWnd.AddWidget(&pathTraceTargetSlider); + pathTraceTargetSlider.SetVisible(false); + + pathTraceStatisticsLabel.Create("Path tracing statistics"); + pathTraceStatisticsLabel.SetSize(XMFLOAT2(240, 60)); + optionsWnd.AddWidget(&pathTraceStatisticsLabel); + pathTraceStatisticsLabel.SetVisible(false); + + // Renderer and Postprocess windows are created in ChangeRenderPath(), because they deal with + // RenderPath related information as well, so it's easier to reset them when changing + + materialWnd.Create(this); + weatherWnd.Create(this); + objectWnd.Create(this); + meshWnd.Create(this); + envProbeWnd.Create(this); + soundWnd.Create(this); + decalWnd.Create(this); + lightWnd.Create(this); + animWnd.Create(this); + emitterWnd.Create(this); + hairWnd.Create(this); + forceFieldWnd.Create(this); + springWnd.Create(this); + ikWnd.Create(this); + transformWnd.Create(this); + layerWnd.Create(this); + nameWnd.Create(this); + + componentWindow.Create("Components ", wi::gui::Window::WindowControls::RESIZE_TOPLEFT); + componentWindow.SetSize(optionsWnd.GetSize()); + componentWindow.font.params.h_align = wi::font::WIFALIGN_RIGHT; + componentWindow.SetShadowRadius(2); + GetGUI().AddWidget(&componentWindow); + + newComponentCombo.Create("Add: "); + newComponentCombo.SetTooltip("Add a component to the first selected entity."); + newComponentCombo.AddItem("...", ~0ull); + newComponentCombo.AddItem("Name", 0); + newComponentCombo.AddItem("Layer " ICON_LAYER, 1); + newComponentCombo.AddItem("Transform " ICON_TRANSFORM, 2); + newComponentCombo.AddItem("Light " ICON_POINTLIGHT, 3); + newComponentCombo.AddItem("Matetial " ICON_MATERIAL, 4); + newComponentCombo.AddItem("Spring", 5); + newComponentCombo.AddItem("Inverse Kinematics", 6); + newComponentCombo.AddItem("Sound " ICON_SOUND, 7); + newComponentCombo.AddItem("Environment Probe " ICON_ENVIRONMENTPROBE, 8); + newComponentCombo.AddItem("Emitted Particle System " ICON_EMITTER, 9); + newComponentCombo.AddItem("Hair Particle System " ICON_HAIR, 10); + newComponentCombo.AddItem("Decal " ICON_DECAL, 11); + newComponentCombo.AddItem("Weather " ICON_WEATHER, 12); + newComponentCombo.AddItem("Force Field " ICON_FORCE, 13); + newComponentCombo.OnSelect([=](wi::gui::EventArgs args) { + newComponentCombo.SetSelectedWithoutCallback(0); + if (translator.selected.empty()) + return; + Scene& scene = GetCurrentScene(); + Entity entity = translator.selected.front().entity; + if (entity == INVALID_ENTITY) + { + assert(0); + return; + } + + // Can early exit before creating history entry! + switch (args.userdata) + { + case 0: + if(scene.names.Contains(entity)) + return; + break; + case 1: + if (scene.layers.Contains(entity)) + return; + break; + case 2: + if (scene.transforms.Contains(entity)) + return; + break; + case 3: + if (scene.lights.Contains(entity)) + return; + break; + case 4: + if (scene.materials.Contains(entity)) + return; + break; + case 5: + if (scene.springs.Contains(entity)) + return; + break; + case 6: + if (scene.inverse_kinematics.Contains(entity)) + return; + break; + case 7: + if (scene.inverse_kinematics.Contains(entity)) + return; + break; + case 8: + if (scene.probes.Contains(entity)) + return; + break; + case 9: + if (scene.emitters.Contains(entity)) + return; + break; + case 10: + if (scene.hairs.Contains(entity)) + return; + break; + case 11: + if (scene.decals.Contains(entity)) + return; + break; + case 12: + if (scene.weathers.Contains(entity)) + return; + break; + case 13: + if (scene.forces.Contains(entity)) + return; + break; + default: + return; + } + + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_COMPONENT_DATA; + RecordEntity(archive, entity); + + switch (args.userdata) + { + case 0: + scene.names.Create(entity); + break; + case 1: + scene.layers.Create(entity); + break; + case 2: + scene.transforms.Create(entity); + break; + case 3: + scene.lights.Create(entity); + scene.aabb_lights.Create(entity); + break; + case 4: + scene.materials.Create(entity); + break; + case 5: + scene.springs.Create(entity); + break; + case 6: + scene.inverse_kinematics.Create(entity); + break; + case 7: + scene.sounds.Create(entity); + break; + case 8: + scene.probes.Create(entity); + scene.aabb_probes.Create(entity); + break; + case 9: + if (!scene.materials.Contains(entity)) + scene.materials.Create(entity); + scene.emitters.Create(entity); + break; + case 10: + if (!scene.materials.Contains(entity)) + scene.materials.Create(entity); + scene.hairs.Create(entity); + break; + case 11: + if (!scene.materials.Contains(entity)) + scene.materials.Create(entity); + scene.decals.Create(entity); + scene.aabb_decals.Create(entity); + break; + case 12: + scene.weathers.Create(entity); + break; + case 13: + scene.forces.Create(entity); + break; + default: + break; + } + + RecordEntity(archive, entity); + + RefreshEntityTree(); + + }); + componentWindow.AddWidget(&newComponentCombo); + + + componentWindow.AddWidget(&materialWnd); + componentWindow.AddWidget(&weatherWnd); + componentWindow.AddWidget(&objectWnd); + componentWindow.AddWidget(&meshWnd); + componentWindow.AddWidget(&envProbeWnd); + componentWindow.AddWidget(&soundWnd); + componentWindow.AddWidget(&decalWnd); + componentWindow.AddWidget(&lightWnd); + componentWindow.AddWidget(&animWnd); + componentWindow.AddWidget(&emitterWnd); + componentWindow.AddWidget(&hairWnd); + componentWindow.AddWidget(&forceFieldWnd); + componentWindow.AddWidget(&springWnd); + componentWindow.AddWidget(&ikWnd); + componentWindow.AddWidget(&transformWnd); + componentWindow.AddWidget(&layerWnd); + componentWindow.AddWidget(&nameWnd); + + materialWnd.SetVisible(false); + weatherWnd.SetVisible(false); + objectWnd.SetVisible(false); + meshWnd.SetVisible(false); + envProbeWnd.SetVisible(false); + soundWnd.SetVisible(false); + decalWnd.SetVisible(false); + lightWnd.SetVisible(false); + animWnd.SetVisible(false); + emitterWnd.SetVisible(false); + hairWnd.SetVisible(false); + forceFieldWnd.SetVisible(false); + springWnd.SetVisible(false); + ikWnd.SetVisible(false); + transformWnd.SetVisible(false); + layerWnd.SetVisible(false); + nameWnd.SetVisible(false); + + materialWnd.SetShadowRadius(shadow_expand); + weatherWnd.SetShadowRadius(shadow_expand); + objectWnd.SetShadowRadius(shadow_expand); + meshWnd.SetShadowRadius(shadow_expand); + envProbeWnd.SetShadowRadius(shadow_expand); + soundWnd.SetShadowRadius(shadow_expand); + decalWnd.SetShadowRadius(shadow_expand); + lightWnd.SetShadowRadius(shadow_expand); + animWnd.SetShadowRadius(shadow_expand); + emitterWnd.SetShadowRadius(shadow_expand); + hairWnd.SetShadowRadius(shadow_expand); + forceFieldWnd.SetShadowRadius(shadow_expand); + springWnd.SetShadowRadius(shadow_expand); + ikWnd.SetShadowRadius(shadow_expand); + transformWnd.SetShadowRadius(shadow_expand); + layerWnd.SetShadowRadius(shadow_expand); + nameWnd.SetShadowRadius(shadow_expand); + + + + cameraWnd.Create(this); + cameraWnd.ResetCam(); + cameraWnd.SetShadowRadius(shadow_expand); + cameraWnd.SetCollapsed(true); + optionsWnd.AddWidget(&cameraWnd); + + paintToolWnd.Create(this); + paintToolWnd.SetShadowRadius(shadow_expand); + paintToolWnd.SetCollapsed(true); + optionsWnd.AddWidget(&paintToolWnd); + + + + sceneComboBox.Create("Scene: "); + sceneComboBox.OnSelect([&](wi::gui::EventArgs args) { + if (args.iValue >= int(scenes.size())) + { + NewScene(); + } + SetCurrentScene(args.iValue); + }); + sceneComboBox.SetEnabled(true); + optionsWnd.AddWidget(&sceneComboBox); + + + saveModeComboBox.Create("Save Mode: "); + saveModeComboBox.AddItem("Embed resources", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); + saveModeComboBox.AddItem("No embedding", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA_BUT_DISABLE_EMBEDDING); + saveModeComboBox.AddItem("Dump to header", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); + saveModeComboBox.SetTooltip("Choose whether to embed resources (textures, sounds...) in the scene file when saving, or keep them as separate files.\nThe Dump to header option will use embedding and create a C++ header file with byte data of the scene to be used with wi::Archive serialization."); + optionsWnd.AddWidget(&saveModeComboBox); + + terragen.Create(); + terragen.SetShadowRadius(shadow_expand); + terragen.OnCollapse([&](wi::gui::EventArgs args) { if (terragen.terrainEntity == INVALID_ENTITY) { @@ -528,612 +1217,96 @@ void EditorComponent::Load() props_scene.Entity_Remove(object_entity); // The objects will be placed by terrain generator, we don't need the default object that the scene has anymore GetCurrentScene().Merge(props_scene); } + terragen.init(); RefreshEntityTree(); } - terragen.SetVisible(!terragen.IsVisible()); - if (terragen.IsVisible() && !GetCurrentScene().transforms.Contains(terragen.terrainEntity)) + if (!terragen.IsCollapsed() && !GetCurrentScene().transforms.Contains(terragen.terrainEntity)) { terragen.Generation_Restart(); RefreshEntityTree(); } - }); - GetGUI().AddWidget(&terrainWnd_Toggle); - GetGUI().AddWidget(&terragen); - - - /////////////////////// - wi::Color option_color_idle = wi::Color(100, 150, 150, 100); - wi::Color option_color_focus = wi::Color(100, 200, 200, 200); - - - weatherWnd_Toggle.Create("Weather"); - weatherWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - weatherWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - weatherWnd_Toggle.SetTooltip("Weather settings window"); - weatherWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - weatherWnd.SetVisible(!weatherWnd.IsVisible()); }); - GetGUI().AddWidget(&weatherWnd_Toggle); - - objectWnd_Toggle.Create("Object"); - objectWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - objectWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - objectWnd_Toggle.SetTooltip("Object settings window"); - objectWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - objectWnd.SetVisible(!objectWnd.IsVisible()); - }); - GetGUI().AddWidget(&objectWnd_Toggle); - - meshWnd_Toggle.Create("Mesh"); - meshWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - meshWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - meshWnd_Toggle.SetTooltip("Mesh settings window"); - meshWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - meshWnd.SetVisible(!meshWnd.IsVisible()); - }); - GetGUI().AddWidget(&meshWnd_Toggle); - - materialWnd_Toggle.Create("Material"); - materialWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - materialWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - materialWnd_Toggle.SetTooltip("Material settings window"); - materialWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - materialWnd.SetVisible(!materialWnd.IsVisible()); - }); - GetGUI().AddWidget(&materialWnd_Toggle); - - cameraWnd_Toggle.Create("Camera"); - cameraWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - cameraWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - cameraWnd_Toggle.SetTooltip("Camera settings window"); - cameraWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - cameraWnd.SetVisible(!cameraWnd.IsVisible()); - }); - GetGUI().AddWidget(&cameraWnd_Toggle); - - envProbeWnd_Toggle.Create("EnvProbe"); - envProbeWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - envProbeWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - envProbeWnd_Toggle.SetTooltip("Environment probe settings window"); - envProbeWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - envProbeWnd.SetVisible(!envProbeWnd.IsVisible()); - }); - GetGUI().AddWidget(&envProbeWnd_Toggle); - - decalWnd_Toggle.Create("Decal"); - decalWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - decalWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - decalWnd_Toggle.SetTooltip("Decal settings window"); - decalWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - decalWnd.SetVisible(!decalWnd.IsVisible()); - }); - GetGUI().AddWidget(&decalWnd_Toggle); - - soundWnd_Toggle.Create("Sound"); - soundWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - soundWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - soundWnd_Toggle.SetTooltip("Sound settings window"); - soundWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - soundWnd.SetVisible(!soundWnd.IsVisible()); - }); - GetGUI().AddWidget(&soundWnd_Toggle); - - lightWnd_Toggle.Create("Light"); - lightWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - lightWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - lightWnd_Toggle.SetTooltip("Light settings window"); - lightWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - lightWnd.SetVisible(!lightWnd.IsVisible()); - }); - GetGUI().AddWidget(&lightWnd_Toggle); - - animWnd_Toggle.Create("Animation"); - animWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - animWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - animWnd_Toggle.SetTooltip("Animation inspector window"); - animWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - animWnd.SetVisible(!animWnd.IsVisible()); - }); - GetGUI().AddWidget(&animWnd_Toggle); - - emitterWnd_Toggle.Create("Emitter"); - emitterWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - emitterWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - emitterWnd_Toggle.SetTooltip("Emitter Particle System properties"); - emitterWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - emitterWnd.SetVisible(!emitterWnd.IsVisible()); - }); - GetGUI().AddWidget(&emitterWnd_Toggle); - - hairWnd_Toggle.Create("HairParticle"); - hairWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - hairWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - hairWnd_Toggle.SetTooltip("Hair Particle System properties"); - hairWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - hairWnd.SetVisible(!hairWnd.IsVisible()); - }); - GetGUI().AddWidget(&hairWnd_Toggle); - - forceFieldWnd_Toggle.Create("ForceField"); - forceFieldWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - forceFieldWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - forceFieldWnd_Toggle.SetTooltip("Force Field properties"); - forceFieldWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - forceFieldWnd.SetVisible(!forceFieldWnd.IsVisible()); - }); - GetGUI().AddWidget(&forceFieldWnd_Toggle); - - springWnd_Toggle.Create("Spring"); - springWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - springWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - springWnd_Toggle.SetTooltip("Spring properties"); - springWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - springWnd.SetVisible(!springWnd.IsVisible()); - }); - GetGUI().AddWidget(&springWnd_Toggle); - - ikWnd_Toggle.Create("IK"); - ikWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - ikWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - ikWnd_Toggle.SetTooltip("Inverse Kinematics properties"); - ikWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - ikWnd.SetVisible(!ikWnd.IsVisible()); - }); - GetGUI().AddWidget(&ikWnd_Toggle); - - transformWnd_Toggle.Create("Transform"); - transformWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - transformWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - transformWnd_Toggle.SetTooltip("Transform properties"); - transformWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - transformWnd.SetVisible(!transformWnd.IsVisible()); - }); - GetGUI().AddWidget(&transformWnd_Toggle); - - layerWnd_Toggle.Create("Layer"); - layerWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - layerWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - layerWnd_Toggle.SetTooltip("Layer Component"); - layerWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - layerWnd.SetVisible(!layerWnd.IsVisible()); - }); - GetGUI().AddWidget(&layerWnd_Toggle); - - nameWnd_Toggle.Create("Name"); - nameWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - nameWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - nameWnd_Toggle.SetTooltip("Name Component"); - nameWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - nameWnd.SetVisible(!nameWnd.IsVisible()); - }); - GetGUI().AddWidget(&nameWnd_Toggle); + optionsWnd.AddWidget(&terragen); - //////////////////////////////////////////////////////////////////////////////////// - translatorCheckBox.Create("Transform: "); - translatorCheckBox.SetTooltip("Enable the transform tool (Ctrl + T).\nTip: hold Left Ctrl to enable snap transform.\nYou can configure snap mode units in the Transform settings."); - translatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.enabled = args.bValue; - }); - GetGUI().AddWidget(&translatorCheckBox); + themeCombo.Create("Theme: "); + themeCombo.SetTooltip("Choose a color theme..."); + themeCombo.AddItem("Dark"); + themeCombo.AddItem("Bright"); + themeCombo.AddItem("Soft"); + themeCombo.OnSelect([=](wi::gui::EventArgs args) { - isScalatorCheckBox.Create("S: "); - isRotatorCheckBox.Create("R: "); - isTranslatorCheckBox.Create("T: "); - { - isScalatorCheckBox.SetTooltip("Scale"); - isScalatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.isScalator = args.bValue; - translator.isTranslator = false; - translator.isRotator = false; - isTranslatorCheckBox.SetCheck(false); - isRotatorCheckBox.SetCheck(false); - }); - isScalatorCheckBox.SetCheck(translator.isScalator); - GetGUI().AddWidget(&isScalatorCheckBox); + // Dark theme defaults: + wi::Color theme_color_idle = wi::Color(100, 130, 150, 150); + wi::Color theme_color_focus = wi::Color(100, 180, 200, 200); + wi::Color dark_point = wi::Color(0, 0, 20, 200); // darker elements will lerp towards this - isRotatorCheckBox.SetTooltip("Rotate"); - isRotatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.isRotator = args.bValue; - translator.isScalator = false; - translator.isTranslator = false; - isScalatorCheckBox.SetCheck(false); - isTranslatorCheckBox.SetCheck(false); - }); - isRotatorCheckBox.SetCheck(translator.isRotator); - GetGUI().AddWidget(&isRotatorCheckBox); - - isTranslatorCheckBox.SetTooltip("Translate (Move)"); - isTranslatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.isTranslator = args.bValue; - translator.isScalator = false; - translator.isRotator = false; - isScalatorCheckBox.SetCheck(false); - isRotatorCheckBox.SetCheck(false); - }); - isTranslatorCheckBox.SetCheck(translator.isTranslator); - GetGUI().AddWidget(&isTranslatorCheckBox); - } - - - saveButton.Create("Save"); - saveButton.SetTooltip("Save the current scene to a new file (Ctrl + Shift + S)"); - saveButton.SetColor(wi::Color(50, 180, 100, 180), wi::gui::WIDGETSTATE::IDLE); - saveButton.SetColor(wi::Color(50, 220, 140, 255), wi::gui::WIDGETSTATE::FOCUS); - saveButton.OnClick([&](wi::gui::EventArgs args) { - SaveAs(); - }); - GetGUI().AddWidget(&saveButton); - - - openButton.Create("Open"); - openButton.SetTooltip("Open a scene, import a model or execute a Lua script..."); - openButton.SetColor(wi::Color(50, 100, 255, 180), wi::gui::WIDGETSTATE::IDLE); - openButton.SetColor(wi::Color(120, 160, 255, 255), wi::gui::WIDGETSTATE::FOCUS); - openButton.OnClick([&](wi::gui::EventArgs args) { - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::OPEN; - params.description = ".wiscene, .obj, .gltf, .glb, .lua"; - params.extensions.push_back("wiscene"); - params.extensions.push_back("obj"); - params.extensions.push_back("gltf"); - params.extensions.push_back("glb"); - params.extensions.push_back("lua"); - wi::helper::FileDialog(params, [&](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - - std::string extension = wi::helper::toUpper(wi::helper::GetExtensionFromFileName(fileName)); - if (!extension.compare("LUA")) - { - wi::lua::RunFile(fileName); - return; - } - - size_t camera_count_prev = GetCurrentScene().cameras.GetCount(); - - main->loader.addLoadingFunction([=](wi::jobsystem::JobArgs args) { - - if (!extension.compare("WISCENE")) // engine-serialized - { - wi::scene::LoadModel(GetCurrentScene(), fileName); - GetCurrentEditorScene().path = fileName; - } - else if (!extension.compare("OBJ")) // wavefront-obj - { - Scene scene; - ImportModel_OBJ(fileName, scene); - GetCurrentScene().Merge(scene); - } - else if (!extension.compare("GLTF")) // text-based gltf - { - Scene scene; - ImportModel_GLTF(fileName, scene); - GetCurrentScene().Merge(scene); - } - else if (!extension.compare("GLB")) // binary gltf - { - Scene scene; - ImportModel_GLTF(fileName, scene); - GetCurrentScene().Merge(scene); - } - }); - main->loader.onFinished([=] { - - // Detect when the new scene contains a new camera, and snap the camera onto it: - size_t camera_count = GetCurrentScene().cameras.GetCount(); - if (camera_count > 0 && camera_count > camera_count_prev) - { - Entity entity = GetCurrentScene().cameras.GetEntity(camera_count_prev); - if (entity != INVALID_ENTITY) - { - TransformComponent* camera_transform = GetCurrentScene().transforms.GetComponent(entity); - if (camera_transform != nullptr) - { - GetCurrentEditorScene().camera_transform = *camera_transform; - } - - CameraComponent* cam = GetCurrentScene().cameras.GetComponent(entity); - if (cam != nullptr) - { - GetCurrentEditorScene().camera = *cam; - // camera aspect should be always for the current screen - GetCurrentEditorScene().camera.width = (float)renderPath->GetInternalResolution().x; - GetCurrentEditorScene().camera.height = (float)renderPath->GetInternalResolution().y; - } - } - } - - main->ActivatePath(this, 0.2f, wi::Color::Black()); - weatherWnd.Update(); - RefreshEntityTree(); - RefreshSceneList(); - }); - main->ActivatePath(&main->loader, 0.2f, wi::Color::Black()); - ResetHistory(); - }); - }); - }); - GetGUI().AddWidget(&openButton); - - - closeButton.Create("Close"); - closeButton.SetTooltip("Close the current scene.\nThis will clear everything from the currently selected scene, and delete the scene.\nThis operation cannot be undone!"); - closeButton.SetColor(wi::Color(255, 130, 100, 180), wi::gui::WIDGETSTATE::IDLE); - closeButton.SetColor(wi::Color(255, 200, 150, 255), wi::gui::WIDGETSTATE::FOCUS); - closeButton.OnClick([&](wi::gui::EventArgs args) { - - terragen.Generation_Cancel(); - // This is to recreate the terragen from scratch, but it has implicitly deleted copy ctor so it's weird: - terragen.~TerrainGenerator(); - new (&terragen) TerrainGenerator; - - translator.selected.clear(); - wi::scene::Scene& scene = GetCurrentScene(); - wi::renderer::ClearWorld(scene); - objectWnd.SetEntity(INVALID_ENTITY); - meshWnd.SetEntity(INVALID_ENTITY, -1); - lightWnd.SetEntity(INVALID_ENTITY); - soundWnd.SetEntity(INVALID_ENTITY); - decalWnd.SetEntity(INVALID_ENTITY); - envProbeWnd.SetEntity(INVALID_ENTITY); - materialWnd.SetEntity(INVALID_ENTITY); - emitterWnd.SetEntity(INVALID_ENTITY); - hairWnd.SetEntity(INVALID_ENTITY); - forceFieldWnd.SetEntity(INVALID_ENTITY); - cameraWnd.SetEntity(INVALID_ENTITY); - paintToolWnd.SetEntity(INVALID_ENTITY); - springWnd.SetEntity(INVALID_ENTITY); - ikWnd.SetEntity(INVALID_ENTITY); - transformWnd.SetEntity(INVALID_ENTITY); - layerWnd.SetEntity(INVALID_ENTITY); - nameWnd.SetEntity(INVALID_ENTITY); - - RefreshEntityTree(); - ResetHistory(); - GetCurrentEditorScene().path.clear(); - - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - if (scenes.size() > 1) - { - scenes.erase(scenes.begin() + current_scene); - } - SetCurrentScene(std::max(0, current_scene - 1)); - }); - }); - GetGUI().AddWidget(&closeButton); - - - aboutButton.Create("?"); - aboutButton.SetTooltip("About..."); - aboutButton.SetColor(wi::Color(50, 160, 200, 180), wi::gui::WIDGETSTATE::IDLE); - aboutButton.SetColor(wi::Color(120, 200, 200, 255), wi::gui::WIDGETSTATE::FOCUS); - aboutButton.OnClick([&](wi::gui::EventArgs args) { - aboutLabel.SetVisible(!aboutLabel.IsVisible()); - }); - GetGUI().AddWidget(&aboutButton); - - { - std::string ss; - ss += "Wicked Engine Editor v"; - ss += wi::version::GetVersionString(); - ss += "\nCreated by Turánszki János"; - ss += "\n\nWebsite: https://wickedengine.net/"; - ss += "\nGithub page: https://github.com/turanszkij/WickedEngine"; - ss += "\nDiscord chat: https://discord.gg/CFjRYmE"; - ss += "\nYou can support the project on Patreon: https://www.patreon.com/wickedengine"; - ss += "\n\nControls\n"; - ss += "------------\n"; - ss += "Move camera: WASD, or Contoller left stick or D-pad\n"; - ss += "Look: Middle mouse button / arrow keys / controller right stick\n"; - ss += "Select: Right mouse button\n"; - ss += "Interact with water: Left mouse button when nothing is selected\n"; - ss += "Faster camera: Left Shift button or controller R2/RT\n"; - ss += "Snap transform: Left Ctrl (hold while transforming)\n"; - ss += "Camera up: E\n"; - ss += "Camera down: Q\n"; - ss += "Duplicate entity: Ctrl + D\n"; - ss += "Select All: Ctrl + A\n"; - ss += "Deselect All: Esc\n"; - ss += "Undo: Ctrl + Z\n"; - ss += "Redo: Ctrl + Y\n"; - ss += "Copy: Ctrl + C\n"; - ss += "Cut: Ctrl + X\n"; - ss += "Paste: Ctrl + V\n"; - ss += "Delete: Delete button\n"; - ss += "Save As: Ctrl + Shift + S\n"; - ss += "Save: Ctrl + S\n"; - ss += "Transform: Ctrl + T\n"; - ss += "Wireframe mode: Ctrl + W\n"; - ss += "Inspector mode: I button (hold), hovered entity information will be displayed near mouse position.\n"; - ss += "Place Instances: Ctrl + Shift + Left mouse click (place clipboard onto clicked surface)\n"; - ss += "Script Console / backlog: HOME button\n"; - ss += "\n"; - ss += "\nTips\n"; - ss += "-------\n"; - ss += "You can find sample scenes in the Content/models directory. Try to load one.\n"; - ss += "You can also import models from .OBJ, .GLTF, .GLB files.\n"; -#ifndef PLATFORM_UWP - ss += "You can find a program configuration file at Editor/config.ini\n"; -#endif // PLATFORM_UWP - ss += "You can find sample LUA scripts in the Content/scripts directory. Try to load one.\n"; - ss += "You can find a startup script at Editor/startup.lua (this will be executed on program start, if exists)\n"; - ss += "\nFor questions, bug reports, feedback, requests, please open an issue at:\n"; - ss += "https://github.com/turanszkij/WickedEngine/issues\n"; - - aboutLabel.Create("AboutLabel"); - aboutLabel.SetText(ss); - aboutLabel.SetVisible(false); - aboutLabel.SetColor(wi::Color(113, 183, 214, 100)); - GetGUI().AddWidget(&aboutLabel); - } - - exitButton.Create("X"); - exitButton.SetTooltip("Exit"); - exitButton.SetColor(wi::Color(160, 50, 50, 180), wi::gui::WIDGETSTATE::IDLE); - exitButton.SetColor(wi::Color(200, 50, 50, 255), wi::gui::WIDGETSTATE::FOCUS); - exitButton.OnClick([this](wi::gui::EventArgs args) { - terragen.Generation_Cancel(); - wi::platform::Exit(); - }); - GetGUI().AddWidget(&exitButton); - - - profilerEnabledCheckBox.Create("Profiler: "); - profilerEnabledCheckBox.SetTooltip("Toggle Profiler On/Off"); - profilerEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { - wi::profiler::SetEnabled(args.bValue); - }); - profilerEnabledCheckBox.SetCheck(wi::profiler::IsEnabled()); - GetGUI().AddWidget(&profilerEnabledCheckBox); - - physicsEnabledCheckBox.Create("Physics: "); - physicsEnabledCheckBox.SetTooltip("Toggle Physics Simulation On/Off"); - physicsEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { - wi::physics::SetSimulationEnabled(args.bValue); - }); - physicsEnabledCheckBox.SetCheck(wi::physics::IsSimulationEnabled()); - GetGUI().AddWidget(&physicsEnabledCheckBox); - - cinemaModeCheckBox.Create("Cinema Mode: "); - cinemaModeCheckBox.SetTooltip("Toggle Cinema Mode (All HUD disabled). Press ESC to exit."); - cinemaModeCheckBox.OnClick([&](wi::gui::EventArgs args) { - if (renderPath != nullptr) + switch (args.iValue) { - renderPath->GetGUI().SetVisible(false); - } - GetGUI().SetVisible(false); - wi::profiler::SetEnabled(false); - main->infoDisplay.active = false; - }); - GetGUI().AddWidget(&cinemaModeCheckBox); - - - entityTree.Create("Entities"); - entityTree.OnSelect([this](wi::gui::EventArgs args) { - - if (args.iValue < 0) - return; - - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_SELECTION; - // record PREVIOUS selection state... - RecordSelection(archive); - - translator.selected.clear(); - - for (int i = 0; i < entityTree.GetItemCount(); ++i) - { - const wi::gui::TreeList::Item& item = entityTree.GetItem(i); - if (item.selected) - { - wi::scene::PickResult pick; - pick.entity = (Entity)item.userdata; - AddSelected(pick); - } + default: + break; + case 1: + // Bright: + theme_color_idle = wi::Color(190, 200, 210, 190); + theme_color_focus = wi::Color(200, 220, 250, 230); + dark_point = wi::Color(80, 80, 90, 200); + break; + case 2: + // Soft: + theme_color_idle = wi::Color(200, 180, 190, 190); + theme_color_focus = wi::Color(240, 190, 200, 230); + dark_point = wi::Color(70, 50, 60, 220); + break; } - // record NEW selection state... - RecordSelection(archive); + wi::Color theme_color_active = wi::Color::White(); + wi::Color theme_color_deactivating = wi::Color::lerp(theme_color_focus, wi::Color::White(), 0.5f); + + auto set_theme = [&](wi::gui::Window& widget) { + widget.SetColor(theme_color_idle, wi::gui::IDLE); + widget.SetColor(theme_color_focus, wi::gui::FOCUS); + widget.SetColor(theme_color_active, wi::gui::ACTIVE); + widget.SetColor(theme_color_deactivating, wi::gui::DEACTIVATING); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.7f), wi::gui::WIDGET_ID_WINDOW_BASE); + + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.75f), wi::gui::WIDGET_ID_SLIDER_BASE_IDLE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SLIDER_BASE_FOCUS); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.85f), wi::gui::WIDGET_ID_SLIDER_BASE_ACTIVE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SLIDER_BASE_DEACTIVATING); + widget.SetColor(theme_color_idle, wi::gui::WIDGET_ID_SLIDER_KNOB_IDLE); + widget.SetColor(theme_color_focus, wi::gui::WIDGET_ID_SLIDER_KNOB_FOCUS); + widget.SetColor(theme_color_active, wi::gui::WIDGET_ID_SLIDER_KNOB_ACTIVE); + widget.SetColor(theme_color_deactivating, wi::gui::WIDGET_ID_SLIDER_KNOB_DEACTIVATING); + + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.75f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_IDLE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_FOCUS); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.85f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_ACTIVE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_DEACTIVATING); + widget.SetColor(theme_color_idle, wi::gui::WIDGET_ID_SCROLLBAR_KNOB_INACTIVE); + widget.SetColor(theme_color_focus, wi::gui::WIDGET_ID_SCROLLBAR_KNOB_HOVER); + widget.SetColor(theme_color_active, wi::gui::WIDGET_ID_SCROLLBAR_KNOB_GRABBED); + + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_COMBO_DROPDOWN); + }; + set_theme(optionsWnd); + set_theme(componentWindow); + + sceneComboBox.SetColor(wi::Color(50, 100, 255, 180), wi::gui::IDLE); + sceneComboBox.SetColor(wi::Color(120, 160, 255, 255), wi::gui::FOCUS); + + saveModeComboBox.SetColor(wi::Color(50, 180, 100, 180), wi::gui::IDLE); + saveModeComboBox.SetColor(wi::Color(50, 220, 140, 255), wi::gui::FOCUS); + + materialWnd.textureSlotButton.SetColor(wi::Color::White(), wi::gui::IDLE); }); - GetGUI().AddWidget(&entityTree); - - - renderPathComboBox.Create("Render Path: "); - renderPathComboBox.AddItem("Default"); - renderPathComboBox.AddItem("Path Tracing"); - renderPathComboBox.OnSelect([&](wi::gui::EventArgs args) { - ChangeRenderPath((RENDERPATH)args.iValue); - }); - renderPathComboBox.SetSelected(RENDERPATH_DEFAULT); - renderPathComboBox.SetEnabled(true); - renderPathComboBox.SetTooltip("Choose a render path..."); - GetGUI().AddWidget(&renderPathComboBox); - - - sceneComboBox.Create("Scene: "); - sceneComboBox.OnSelect([&](wi::gui::EventArgs args) { - if (args.iValue >= int(scenes.size())) - { - NewScene(); - } - SetCurrentScene(args.iValue); - }); - sceneComboBox.SetEnabled(true); - sceneComboBox.SetColor(wi::Color(50, 100, 255, 180), wi::gui::WIDGETSTATE::IDLE); - sceneComboBox.SetColor(wi::Color(120, 160, 255, 255), wi::gui::WIDGETSTATE::FOCUS); - GetGUI().AddWidget(&sceneComboBox); - - - saveModeComboBox.Create("Save Mode: "); - saveModeComboBox.SetColor(wi::Color(50, 180, 100, 180), wi::gui::WIDGETSTATE::IDLE); - saveModeComboBox.SetColor(wi::Color(50, 220, 140, 255), wi::gui::WIDGETSTATE::FOCUS); - saveModeComboBox.AddItem("Embed resources", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); - saveModeComboBox.AddItem("No embedding", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA_BUT_DISABLE_EMBEDDING); - saveModeComboBox.AddItem("Dump to header", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); - saveModeComboBox.SetTooltip("Choose whether to embed resources (textures, sounds...) in the scene file when saving, or keep them as separate files.\nThe Dump to header option will use embedding and create a C++ header file with byte data of the scene to be used with wi::Archive serialization."); - GetGUI().AddWidget(&saveModeComboBox); - - - pathTraceTargetSlider.Create(1, 2048, 1024, 2047, "Path tracing sample count: "); - pathTraceTargetSlider.SetTooltip("The path tracing will perform this many samples per pixel."); - GetGUI().AddWidget(&pathTraceTargetSlider); - - pathTraceStatisticsLabel.Create("Path tracing statistics"); - GetGUI().AddWidget(&pathTraceStatisticsLabel); - - // Renderer and Postprocess windows are created in ChangeRenderPath(), because they deal with - // RenderPath related information as well, so it's easier to reset them when changing - - materialWnd.Create(this); - weatherWnd.Create(this); - objectWnd.Create(this); - meshWnd.Create(this); - cameraWnd.Create(this); - envProbeWnd.Create(this); - soundWnd.Create(this); - decalWnd.Create(this); - lightWnd.Create(this); - animWnd.Create(this); - emitterWnd.Create(this); - hairWnd.Create(this); - forceFieldWnd.Create(this); - paintToolWnd.Create(this); - springWnd.Create(this); - ikWnd.Create(this); - transformWnd.Create(this); - layerWnd.Create(this); - nameWnd.Create(this); - - wi::gui::GUI& gui = GetGUI(); - gui.AddWidget(&materialWnd); - gui.AddWidget(&weatherWnd); - gui.AddWidget(&objectWnd); - gui.AddWidget(&meshWnd); - gui.AddWidget(&cameraWnd); - gui.AddWidget(&envProbeWnd); - gui.AddWidget(&soundWnd); - gui.AddWidget(&decalWnd); - gui.AddWidget(&lightWnd); - gui.AddWidget(&animWnd); - gui.AddWidget(&emitterWnd); - gui.AddWidget(&hairWnd); - gui.AddWidget(&forceFieldWnd); - gui.AddWidget(&paintToolWnd); - gui.AddWidget(&springWnd); - gui.AddWidget(&ikWnd); - gui.AddWidget(&transformWnd); - gui.AddWidget(&layerWnd); - gui.AddWidget(&nameWnd); - - cameraWnd.ResetCam(); - - wi::jobsystem::Wait(ctx); + optionsWnd.AddWidget(&themeCombo); + themeCombo.SetSelected(0); RenderPath2D::Load(); } @@ -1188,6 +1361,7 @@ void EditorComponent::Update(float dt) } GetGUI().SetVisible(true); main->infoDisplay.active = true; + wi::profiler::SetEnabled(profilerEnabledCheckBox.GetCheck()); cinemaModeCheckBox.SetCheck(false); } @@ -1349,6 +1523,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.lights.GetCount(); ++i) { Entity entity = scene.lights.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1366,6 +1542,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.decals.GetCount(); ++i) { Entity entity = scene.decals.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1383,6 +1561,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.forces.GetCount(); ++i) { Entity entity = scene.forces.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1400,6 +1580,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.emitters.GetCount(); ++i) { Entity entity = scene.emitters.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1417,6 +1599,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.hairs.GetCount(); ++i) { Entity entity = scene.hairs.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1434,6 +1618,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.probes.GetCount(); ++i) { Entity entity = scene.probes.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); if (Sphere(transform.GetPosition(), 1).intersects(pickRay)) @@ -1453,7 +1639,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.cameras.GetCount(); ++i) { Entity entity = scene.cameras.GetEntity(i); - + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1471,6 +1658,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.armatures.GetCount(); ++i) { Entity entity = scene.armatures.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1488,6 +1677,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.sounds.GetCount(); ++i) { Entity entity = scene.sounds.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1530,18 +1721,31 @@ void EditorComponent::Update(float dt) // if water, then put a water ripple onto it: scene.PutWaterRipple("images/ripple.png", hovered.position); } - else if (decalWnd.placementCheckBox.GetCheck() && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) + else if (decalWnd.IsEnabled() && decalWnd.placementCheckBox.GetCheck() && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) { - // if not water or softbody, put a decal on it: - static int decalselector = 0; - decalselector = (decalselector + 1) % 2; - Entity entity = scene.Entity_CreateDecal("editorDecal", (decalselector == 0 ? "images/leaf.dds" : "images/logo_small.png")); + // if not water, put a decal on it: + Entity entity = scene.Entity_CreateDecal("editorDecal", ""); + // material and decal parameters will be copied from selected: + if (scene.decals.Contains(decalWnd.entity)) + { + *scene.decals.GetComponent(entity) = *scene.decals.GetComponent(decalWnd.entity); + } + if (scene.materials.Contains(decalWnd.entity)) + { + *scene.materials.GetComponent(entity) = *scene.materials.GetComponent(decalWnd.entity); + } + // place it on picked surface: TransformComponent& transform = *scene.transforms.GetComponent(entity); transform.MatrixTransform(hovered.orientation); transform.RotateRollPitchYaw(XMFLOAT3(XM_PIDIV2, 0, 0)); - transform.Scale(XMFLOAT3(2, 2, 2)); scene.Component_Attach(entity, hovered.entity); + wi::Archive& archive = AdvanceHistory(); + archive << EditorComponent::HISTORYOP_ADD; + RecordSelection(archive); + RecordSelection(archive); + RecordEntity(archive, entity); + RefreshEntityTree(); } else @@ -1575,7 +1779,6 @@ void EditorComponent::Update(float dt) } // Select... - static bool selectAll = false; if (wi::input::Press(wi::input::MOUSE_BUTTON_RIGHT) || selectAll || clear_selected) { @@ -1590,12 +1793,11 @@ void EditorComponent::Update(float dt) selectAll = false; ClearSelected(); - for (size_t i = 0; i < scene.transforms.GetCount(); ++i) + selectAllStorage.clear(); + scene.FindAllEntities(selectAllStorage); + for (auto& entity : selectAllStorage) { - Entity entity = scene.transforms.GetEntity(i); - wi::scene::PickResult picked; - picked.entity = entity; - AddSelected(picked); + AddSelected(entity); } } else if (hovered.entity != INVALID_ENTITY) @@ -1637,174 +1839,181 @@ void EditorComponent::Update(float dt) RefreshEntityTree(); } - // Control operations... - if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LCONTROL)) + } + + main->infoDisplay.colorgrading_helper = false; + + // Control operations... + if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LCONTROL)) + { + // Color Grading helper + if (wi::input::Down((wi::input::BUTTON)'G')) { - // Toggle wireframe mode - if (wi::input::Press((wi::input::BUTTON)'W')) + main->infoDisplay.colorgrading_helper = true; + } + // Toggle wireframe mode + if (wi::input::Press((wi::input::BUTTON)'W')) + { + wi::renderer::SetWireRender(!wi::renderer::IsWireRender()); + rendererWnd.wireFrameCheckBox.SetCheck(wi::renderer::IsWireRender()); + } + // Enable transform tool + if (wi::input::Press((wi::input::BUTTON)'T')) + { + translator.enabled = !translator.enabled; + translatorCheckBox.SetCheck(translator.enabled); + } + // Save + if (wi::input::Press((wi::input::BUTTON)'S')) + { + if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) || GetCurrentEditorScene().path.empty()) { - wi::renderer::SetWireRender(!wi::renderer::IsWireRender()); - rendererWnd.wireFrameCheckBox.SetCheck(wi::renderer::IsWireRender()); + SaveAs(); } - // Enable transform tool - if (wi::input::Press((wi::input::BUTTON)'T')) + else { - translator.enabled = !translator.enabled; - translatorCheckBox.SetCheck(translator.enabled); - } - // Save - if (wi::input::Press((wi::input::BUTTON)'S')) - { - if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) || GetCurrentEditorScene().path.empty()) - { - SaveAs(); - } - else - { - Save(GetCurrentEditorScene().path); - } - } - // Select All - if (wi::input::Press((wi::input::BUTTON)'A')) - { - selectAll = true; - } - // Copy/Cut - if (wi::input::Press((wi::input::BUTTON)'C') || wi::input::Press((wi::input::BUTTON)'X')) - { - auto& prevSel = translator.selectedEntitiesNonRecursive; - - EntitySerializer seri; - clipboard.SetReadModeAndResetPos(false); - clipboard << prevSel.size(); - for (auto& x : prevSel) - { - scene.Entity_Serialize(clipboard, seri, x); - } - - if (wi::input::Press((wi::input::BUTTON)'X')) - { - deleting = true; - } - } - // Paste - if (wi::input::Press((wi::input::BUTTON)'V')) - { - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_ADD; - RecordSelection(archive); - - ClearSelected(); - - EntitySerializer seri; - clipboard.SetReadModeAndResetPos(true); - size_t count; - clipboard >> count; - wi::vector addedEntities; - for (size_t i = 0; i < count; ++i) - { - wi::scene::PickResult picked; - picked.entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE); - AddSelected(picked); - addedEntities.push_back(picked.entity); - } - - RecordSelection(archive); - RecordAddedEntity(archive, addedEntities); - - RefreshEntityTree(); - } - // Duplicate Instances - if (wi::input::Press((wi::input::BUTTON)'D')) - { - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_ADD; - RecordSelection(archive); - - auto& prevSel = translator.selectedEntitiesNonRecursive; - wi::vector addedEntities; - for (auto& x : prevSel) - { - wi::scene::PickResult picked; - picked.entity = scene.Entity_Duplicate(x); - addedEntities.push_back(picked.entity); - } - - ClearSelected(); - - for (auto& x : addedEntities) - { - AddSelected(x); - } - - RecordSelection(archive); - RecordAddedEntity(archive, addedEntities); - - RefreshEntityTree(); - } - // Put Instances - if (clipboard.IsOpen() && hovered.subsetIndex >= 0 && wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) - { - wi::vector addedEntities; - EntitySerializer seri; - clipboard.SetReadModeAndResetPos(true); - size_t count; - clipboard >> count; - for (size_t i = 0; i < count; ++i) - { - Entity entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE | Scene::EntitySerializeFlags::KEEP_INTERNAL_ENTITY_REFERENCES); - const HierarchyComponent* hier = scene.hierarchy.GetComponent(entity); - if (hier != nullptr) - { - scene.Component_Detach(entity); - } - TransformComponent* transform = scene.transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->translation_local = {}; -#if 0 - // orient around surface normal: - transform->MatrixTransform(hovered.orientation); -#else - // orient in random vertical rotation only: - transform->RotateRollPitchYaw(XMFLOAT3(0, wi::random::GetRandom(XM_PI), 0)); - transform->Translate(hovered.position); -#endif - transform->UpdateTransform(); - } - if (hier != nullptr) - { - scene.Component_Attach(entity, hier->parentID); - } - addedEntities.push_back(entity); - } - - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_ADD; - // because selection didn't change here, we record same selection state twice, it's not a bug: - RecordSelection(archive); - RecordSelection(archive); - RecordAddedEntity(archive, addedEntities); - - RefreshEntityTree(); - } - // Undo - if (wi::input::Press((wi::input::BUTTON)'Z')) - { - ConsumeHistoryOperation(true); - - RefreshEntityTree(); - } - // Redo - if (wi::input::Press((wi::input::BUTTON)'Y')) - { - ConsumeHistoryOperation(false); - - RefreshEntityTree(); + Save(GetCurrentEditorScene().path); } } + // Select All + if (wi::input::Press((wi::input::BUTTON)'A')) + { + selectAll = true; + } + // Copy/Cut + if (wi::input::Press((wi::input::BUTTON)'C') || wi::input::Press((wi::input::BUTTON)'X')) + { + auto& prevSel = translator.selectedEntitiesNonRecursive; + EntitySerializer seri; + clipboard.SetReadModeAndResetPos(false); + clipboard << prevSel.size(); + for (auto& x : prevSel) + { + scene.Entity_Serialize(clipboard, seri, x); + } + + if (wi::input::Press((wi::input::BUTTON)'X')) + { + deleting = true; + } + } + // Paste + if (wi::input::Press((wi::input::BUTTON)'V')) + { + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + RecordSelection(archive); + + ClearSelected(); + + EntitySerializer seri; + clipboard.SetReadModeAndResetPos(true); + size_t count; + clipboard >> count; + wi::vector addedEntities; + for (size_t i = 0; i < count; ++i) + { + wi::scene::PickResult picked; + picked.entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE); + AddSelected(picked); + addedEntities.push_back(picked.entity); + } + + RecordSelection(archive); + RecordEntity(archive, addedEntities); + + RefreshEntityTree(); + } + // Duplicate Instances + if (wi::input::Press((wi::input::BUTTON)'D')) + { + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + RecordSelection(archive); + + auto& prevSel = translator.selectedEntitiesNonRecursive; + wi::vector addedEntities; + for (auto& x : prevSel) + { + wi::scene::PickResult picked; + picked.entity = scene.Entity_Duplicate(x); + addedEntities.push_back(picked.entity); + } + + ClearSelected(); + + for (auto& x : addedEntities) + { + AddSelected(x); + } + + RecordSelection(archive); + RecordEntity(archive, addedEntities); + + RefreshEntityTree(); + } + // Put Instances + if (clipboard.IsOpen() && hovered.subsetIndex >= 0 && wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) + { + wi::vector addedEntities; + EntitySerializer seri; + clipboard.SetReadModeAndResetPos(true); + size_t count; + clipboard >> count; + for (size_t i = 0; i < count; ++i) + { + Entity entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE | Scene::EntitySerializeFlags::KEEP_INTERNAL_ENTITY_REFERENCES); + const HierarchyComponent* hier = scene.hierarchy.GetComponent(entity); + if (hier != nullptr) + { + scene.Component_Detach(entity); + } + TransformComponent* transform = scene.transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->translation_local = {}; +#if 0 + // orient around surface normal: + transform->MatrixTransform(hovered.orientation); +#else + // orient in random vertical rotation only: + transform->RotateRollPitchYaw(XMFLOAT3(0, wi::random::GetRandom(XM_PI), 0)); + transform->Translate(hovered.position); +#endif + transform->UpdateTransform(); + } + if (hier != nullptr) + { + scene.Component_Attach(entity, hier->parentID); + } + addedEntities.push_back(entity); + } + + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + // because selection didn't change here, we record same selection state twice, it's not a bug: + RecordSelection(archive); + RecordSelection(archive); + RecordEntity(archive, addedEntities); + + RefreshEntityTree(); } + // Undo + if (wi::input::Press((wi::input::BUTTON)'Z')) + { + ConsumeHistoryOperation(true); + + RefreshEntityTree(); + } + // Redo + if (wi::input::Press((wi::input::BUTTON)'Y')) + { + ConsumeHistoryOperation(false); + + RefreshEntityTree(); + } + } // Delete if (deleting) @@ -1849,6 +2058,7 @@ void EditorComponent::Update(float dt) transformWnd.SetEntity(INVALID_ENTITY); layerWnd.SetEntity(INVALID_ENTITY); nameWnd.SetEntity(INVALID_ENTITY); + weatherWnd.SetEntity(INVALID_ENTITY); } else { @@ -1880,6 +2090,7 @@ void EditorComponent::Update(float dt) transformWnd.SetEntity(picked.entity); layerWnd.SetEntity(picked.entity); nameWnd.SetEntity(picked.entity); + weatherWnd.SetEntity(picked.entity); if (picked.subsetIndex >= 0) { @@ -1950,7 +2161,7 @@ void EditorComponent::Update(float dt) // Follow camera proxy: if (cameraWnd.followCheckBox.IsEnabled() && cameraWnd.followCheckBox.GetCheck()) { - TransformComponent* proxy = scene.transforms.GetComponent(cameraWnd.proxy); + TransformComponent* proxy = scene.transforms.GetComponent(cameraWnd.entity); if (proxy != nullptr) { editorscene.camera_transform.Lerp(editorscene.camera_transform, *proxy, 1.0f - cameraWnd.followSlider.GetValue()); @@ -1988,6 +2199,8 @@ void EditorComponent::Update(float dt) wi::profiler::EndRange(profrange); RenderPath2D::Update(dt); + RefreshComponentWindow(); + RefreshOptionsWindow(); translator.Update(camera, *this); @@ -2223,9 +2436,15 @@ void EditorComponent::Render() const const XMMATRIX R = XMLoadFloat3x3(&cam.rotationMatrix); - wi::image::Params fx; - fx.customRotation = &R; - fx.customProjection = &VP; + wi::font::Params fp; + fp.customRotation = &R; + fp.customProjection = &VP; + fp.size = 32; // icon font render quality + const float scaling = 0.0025f; + fp.h_align = wi::font::WIFALIGN_CENTER; + fp.v_align = wi::font::WIFALIGN_CENTER; + fp.shadowColor = wi::Color::Shadow(); + fp.shadow_softness = 1; if (rendererWnd.GetPickType() & PICK_LIGHT) { @@ -2233,24 +2452,23 @@ void EditorComponent::Render() const { const LightComponent& light = scene.lights[i]; Entity entity = scene.lights.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } @@ -2258,13 +2476,13 @@ void EditorComponent::Render() const switch (light.GetType()) { case LightComponent::POINT: - wi::image::Draw(&pointLightTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_POINTLIGHT, fp, cmd); break; case LightComponent::SPOT: - wi::image::Draw(&spotLightTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_SPOTLIGHT, fp, cmd); break; case LightComponent::DIRECTIONAL: - wi::image::Draw(&dirLightTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_DIRECTIONALLIGHT, fp, cmd); break; default: break; @@ -2277,30 +2495,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.decals.GetCount(); ++i) { Entity entity = scene.decals.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&decalTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_DECAL, fp, cmd); } } @@ -2310,30 +2527,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.forces.GetCount(); ++i) { Entity entity = scene.forces.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&forceFieldTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_FORCE, fp, cmd); } } @@ -2342,31 +2558,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.cameras.GetCount(); ++i) { Entity entity = scene.cameras.GetEntity(i); - + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&cameraTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_CAMERA, fp, cmd); } } @@ -2375,30 +2589,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.armatures.GetCount(); ++i) { Entity entity = scene.armatures.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&armatureTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_ARMATURE, fp, cmd); } } @@ -2407,30 +2620,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.emitters.GetCount(); ++i) { Entity entity = scene.emitters.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&emitterTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_EMITTER, fp, cmd); } } @@ -2439,30 +2651,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.hairs.GetCount(); ++i) { Entity entity = scene.hairs.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&hairTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_HAIR, fp, cmd); } } @@ -2471,30 +2682,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.sounds.GetCount(); ++i) { Entity entity = scene.sounds.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&soundTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_SOUND, fp, cmd); } } @@ -2595,6 +2805,113 @@ void EditorComponent::Compose(CommandList cmd) const RenderPath2D::Compose(cmd); } +void EditorComponent::RefreshOptionsWindow() +{ + const float padding = 4; + XMFLOAT2 pos = XMFLOAT2(padding, padding); + const float width = optionsWnd.GetWidgetAreaSize().x - padding * 2; + float x_off = 100; + + translatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + isScalatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60, pos.y)); + isRotatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 2, pos.y)); + isTranslatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 3, pos.y)); + pos.y += translatorCheckBox.GetSize().y; + pos.y += padding; + + infoDisplayCheckBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + fpsCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 80, pos.y)); + otherinfoCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 3, pos.y)); + pos.y += infoDisplayCheckBox.GetSize().y; + pos.y += padding; + + cinemaModeCheckBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + profilerEnabledCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 80, pos.y)); + physicsEnabledCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 3, pos.y)); + pos.y += cinemaModeCheckBox.GetSize().y; + pos.y += padding; + + sceneComboBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + sceneComboBox.SetSize(XMFLOAT2(width - x_off - sceneComboBox.GetScale().y - 1, sceneComboBox.GetScale().y)); + pos.y += sceneComboBox.GetSize().y; + pos.y += padding; + + saveModeComboBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + saveModeComboBox.SetSize(XMFLOAT2(width - x_off - saveModeComboBox.GetScale().y - 1, saveModeComboBox.GetScale().y)); + pos.y += saveModeComboBox.GetSize().y; + pos.y += padding; + + themeCombo.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + themeCombo.SetSize(XMFLOAT2(width - x_off - themeCombo.GetScale().y - 1, themeCombo.GetScale().y)); + pos.y += themeCombo.GetSize().y; + pos.y += padding; + + renderPathComboBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + renderPathComboBox.SetSize(XMFLOAT2(width - x_off - renderPathComboBox.GetScale().y - 1, renderPathComboBox.GetScale().y)); + pos.y += renderPathComboBox.GetSize().y; + pos.y += padding; + + if (pathTraceTargetSlider.IsVisible()) + { + pathTraceTargetSlider.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + pathTraceTargetSlider.SetSize(XMFLOAT2(width - x_off - pathTraceTargetSlider.GetScale().y * 2 - 1, pathTraceTargetSlider.GetScale().y)); + pos.y += pathTraceTargetSlider.GetSize().y; + pos.y += padding; + } + + if (pathTraceStatisticsLabel.IsVisible()) + { + pathTraceStatisticsLabel.SetPos(pos); + pathTraceStatisticsLabel.SetSize(XMFLOAT2(width, pathTraceStatisticsLabel.GetScale().y)); + pos.y += pathTraceStatisticsLabel.GetSize().y; + pos.y += padding; + } + + rendererWnd.SetPos(pos); + rendererWnd.SetSize(XMFLOAT2(width, rendererWnd.GetScale().y)); + pos.y += rendererWnd.GetSize().y; + pos.y += padding; + + postprocessWnd.SetPos(pos); + postprocessWnd.SetSize(XMFLOAT2(width, postprocessWnd.GetScale().y)); + pos.y += postprocessWnd.GetSize().y; + pos.y += padding; + + cameraWnd.SetPos(pos); + cameraWnd.SetSize(XMFLOAT2(width, cameraWnd.GetScale().y)); + pos.y += cameraWnd.GetSize().y; + pos.y += padding; + + paintToolWnd.SetPos(pos); + paintToolWnd.SetSize(XMFLOAT2(width, paintToolWnd.GetScale().y)); + pos.y += paintToolWnd.GetSize().y; + pos.y += padding; + + terragen.SetPos(pos); + terragen.SetSize(XMFLOAT2(width, terragen.GetScale().y)); + pos.y += terragen.GetSize().y; + pos.y += padding; + + x_off = 45; + + newCombo.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + newCombo.SetSize(XMFLOAT2(width - x_off - newCombo.GetScale().y - 1, newCombo.GetScale().y)); + pos.y += newCombo.GetSize().y; + pos.y += padding; + + filterCombo.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + filterCombo.SetSize(XMFLOAT2(width - x_off - filterCombo.GetScale().y - 1, filterCombo.GetScale().y)); + pos.y += filterCombo.GetSize().y; + pos.y += padding; + + entityTree.SetPos(pos); + entityTree.SetSize(XMFLOAT2(width, std::max(GetLogicalHeight() * 0.75f, GetLogicalHeight() - pos.y))); + pos.y += entityTree.GetSize().y; + pos.y += padding; + + + optionsWnd.Update(*this, 0); +} void EditorComponent::PushToEntityTree(wi::ecs::Entity entity, int level) { if (entitytree_added_items.count(entity) != 0) @@ -2608,18 +2925,110 @@ void EditorComponent::PushToEntityTree(wi::ecs::Entity entity, int level) item.userdata = entity; item.selected = IsSelected(entity); item.open = entitytree_opened_items.count(entity) != 0; + + // Icons: + if (scene.layers.Contains(entity)) + { + item.name += ICON_LAYER " "; + } + if (scene.transforms.Contains(entity)) + { + item.name += ICON_TRANSFORM " "; + } + if (scene.meshes.Contains(entity)) + { + item.name += ICON_MESH " "; + } + if (scene.objects.Contains(entity)) + { + item.name += ICON_OBJECT " "; + } + if (scene.rigidbodies.Contains(entity)) + { + item.name += ICON_RIGIDBODY " "; + } + if (scene.softbodies.Contains(entity)) + { + item.name += ICON_SOFTBODY " "; + } + if (scene.emitters.Contains(entity)) + { + item.name += ICON_EMITTER " "; + } + if (scene.hairs.Contains(entity)) + { + item.name += ICON_HAIR " "; + } + if (scene.forces.Contains(entity)) + { + item.name += ICON_FORCE " "; + } + if (scene.sounds.Contains(entity)) + { + item.name += ICON_SOUND " "; + } + if (scene.decals.Contains(entity)) + { + item.name += ICON_DECAL " "; + } + if (scene.cameras.Contains(entity)) + { + item.name += ICON_CAMERA " "; + } + if (scene.probes.Contains(entity)) + { + item.name += ICON_ENVIRONMENTPROBE " "; + } + if (scene.animations.Contains(entity)) + { + item.name += ICON_ANIMATION " "; + } + if (scene.armatures.Contains(entity)) + { + item.name += ICON_ARMATURE " "; + } + if (scene.lights.Contains(entity)) + { + const LightComponent* light = scene.lights.GetComponent(entity); + switch (light->type) + { + default: + case LightComponent::POINT: + item.name += ICON_POINTLIGHT " "; + break; + case LightComponent::SPOT: + item.name += ICON_SPOTLIGHT " "; + break; + case LightComponent::DIRECTIONAL: + item.name += ICON_DIRECTIONALLIGHT " "; + break; + } + } + if (scene.materials.Contains(entity)) + { + item.name += ICON_MATERIAL " "; + } + if (scene.weathers.Contains(entity)) + { + item.name += ICON_WEATHER " "; + } + if (entity == terragen.terrainEntity) + { + item.name += ICON_TERRAIN " "; + } + const NameComponent* name = scene.names.GetComponent(entity); if (name == nullptr) { - item.name = "[no_name] " + std::to_string(entity); + item.name += "[no_name] " + std::to_string(entity); } else if(name->name.empty()) { - item.name = "[name_empty] " + std::to_string(entity); + item.name += "[name_empty] " + std::to_string(entity); } else { - item.name = name->name; + item.name += name->name; } entityTree.AddItem(item); @@ -2648,61 +3057,438 @@ void EditorComponent::RefreshEntityTree() entityTree.ClearItems(); - // Add hierarchy: - for (size_t i = 0; i < scene.hierarchy.GetCount(); ++i) + if (has_flag(filter, Filter::All)) { - PushToEntityTree(scene.hierarchy[i].parentID, 0); - } - - // Any transform left that is not part of a hierarchy: - for (size_t i = 0; i < scene.transforms.GetCount(); ++i) - { - PushToEntityTree(scene.transforms.GetEntity(i), 0); - } - - // Add materials: - for (size_t i = 0; i < scene.materials.GetCount(); ++i) - { - Entity entity = scene.materials.GetEntity(i); - if (entitytree_added_items.count(entity) != 0) + // Add hierarchy: + for (size_t i = 0; i < scene.hierarchy.GetCount(); ++i) { - continue; + PushToEntityTree(scene.hierarchy[i].parentID, 0); } - - wi::gui::TreeList::Item item; - item.userdata = entity; - item.selected = IsSelected(entity); - item.open = entitytree_opened_items.count(entity) != 0; - const NameComponent* name = scene.names.GetComponent(entity); - item.name = name == nullptr ? std::to_string(entity) : name->name; - entityTree.AddItem(item); - - entitytree_added_items.insert(entity); } - // Add meshes: - for (size_t i = 0; i < scene.meshes.GetCount(); ++i) + if (has_flag(filter, Filter::Transform)) { - Entity entity = scene.meshes.GetEntity(i); - if (entitytree_added_items.count(entity) != 0) + // Any transform left that is not part of a hierarchy: + for (size_t i = 0; i < scene.transforms.GetCount(); ++i) { - continue; + PushToEntityTree(scene.transforms.GetEntity(i), 0); } + } - wi::gui::TreeList::Item item; - item.userdata = entity; - item.selected = IsSelected(entity); - item.open = entitytree_opened_items.count(entity) != 0; - const NameComponent* name = scene.names.GetComponent(entity); - item.name = name == nullptr ? std::to_string(entity) : name->name; - entityTree.AddItem(item); + // Add any left over entities that might not have had a hierarchy or transform: - entitytree_added_items.insert(entity); + if (has_flag(filter, Filter::Light)) + { + for (size_t i = 0; i < scene.lights.GetCount(); ++i) + { + PushToEntityTree(scene.lights.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Decal)) + { + for (size_t i = 0; i < scene.decals.GetCount(); ++i) + { + PushToEntityTree(scene.decals.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.cameras.GetCount(); ++i) + { + PushToEntityTree(scene.cameras.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Material)) + { + for (size_t i = 0; i < scene.materials.GetCount(); ++i) + { + PushToEntityTree(scene.materials.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Mesh)) + { + for (size_t i = 0; i < scene.meshes.GetCount(); ++i) + { + PushToEntityTree(scene.meshes.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.armatures.GetCount(); ++i) + { + PushToEntityTree(scene.armatures.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Object)) + { + for (size_t i = 0; i < scene.objects.GetCount(); ++i) + { + PushToEntityTree(scene.objects.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Weather)) + { + for (size_t i = 0; i < scene.weathers.GetCount(); ++i) + { + PushToEntityTree(scene.weathers.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Sound)) + { + for (size_t i = 0; i < scene.sounds.GetCount(); ++i) + { + PushToEntityTree(scene.sounds.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.hairs.GetCount(); ++i) + { + PushToEntityTree(scene.hairs.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.emitters.GetCount(); ++i) + { + PushToEntityTree(scene.emitters.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.animations.GetCount(); ++i) + { + PushToEntityTree(scene.animations.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.probes.GetCount(); ++i) + { + PushToEntityTree(scene.probes.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.forces.GetCount(); ++i) + { + PushToEntityTree(scene.forces.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.rigidbodies.GetCount(); ++i) + { + PushToEntityTree(scene.rigidbodies.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.softbodies.GetCount(); ++i) + { + PushToEntityTree(scene.softbodies.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.springs.GetCount(); ++i) + { + PushToEntityTree(scene.springs.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.inverse_kinematics.GetCount(); ++i) + { + PushToEntityTree(scene.inverse_kinematics.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.names.GetCount(); ++i) + { + PushToEntityTree(scene.names.GetEntity(i), 0); + } } entitytree_added_items.clear(); entitytree_opened_items.clear(); } +void EditorComponent::RefreshComponentWindow() +{ + const wi::scene::Scene& scene = GetCurrentScene(); + const float padding = 4; + XMFLOAT2 pos = XMFLOAT2(padding, padding); + const float width = componentWindow.GetWidgetAreaSize().x - padding * 2; + + if (!translator.selected.empty()) + { + newComponentCombo.SetVisible(true); + newComponentCombo.SetPos(XMFLOAT2(pos.x + 35, pos.y)); + newComponentCombo.SetSize(XMFLOAT2(width - 35 - 21, 20)); + pos.y += newComponentCombo.GetSize().y; + pos.y += padding; + } + else + { + newComponentCombo.SetVisible(false); + } + + if (scene.names.Contains(nameWnd.entity)) + { + nameWnd.SetVisible(true); + nameWnd.SetPos(pos); + nameWnd.SetSize(XMFLOAT2(width, nameWnd.GetScale().y)); + nameWnd.Update(); + pos.y += nameWnd.GetSize().y; + pos.y += padding; + } + else + { + nameWnd.SetVisible(false); + } + + if (scene.layers.Contains(layerWnd.entity)) + { + layerWnd.SetVisible(true); + layerWnd.SetPos(pos); + layerWnd.SetSize(XMFLOAT2(width, layerWnd.GetScale().y)); + pos.y += layerWnd.GetSize().y; + pos.y += padding; + } + else + { + layerWnd.SetVisible(false); + } + + if (scene.transforms.Contains(transformWnd.entity)) + { + transformWnd.SetVisible(true); + transformWnd.SetPos(pos); + transformWnd.SetSize(XMFLOAT2(width, transformWnd.GetScale().y)); + pos.y += transformWnd.GetSize().y; + pos.y += padding; + } + else + { + transformWnd.SetVisible(false); + } + + if (scene.inverse_kinematics.Contains(ikWnd.entity)) + { + ikWnd.SetVisible(true); + ikWnd.SetPos(pos); + ikWnd.SetSize(XMFLOAT2(width, ikWnd.GetScale().y)); + pos.y += ikWnd.GetSize().y; + pos.y += padding; + } + else + { + ikWnd.SetVisible(false); + } + + if (scene.springs.Contains(springWnd.entity)) + { + springWnd.SetVisible(true); + springWnd.SetPos(pos); + springWnd.SetSize(XMFLOAT2(width, springWnd.GetScale().y)); + pos.y += springWnd.GetSize().y; + pos.y += padding; + } + else + { + springWnd.SetVisible(false); + } + + if (scene.forces.Contains(forceFieldWnd.entity)) + { + forceFieldWnd.SetVisible(true); + forceFieldWnd.SetPos(pos); + forceFieldWnd.SetSize(XMFLOAT2(width, forceFieldWnd.GetScale().y)); + pos.y += forceFieldWnd.GetSize().y; + pos.y += padding; + } + else + { + forceFieldWnd.SetVisible(false); + } + + if (scene.hairs.Contains(hairWnd.entity)) + { + hairWnd.SetVisible(true); + hairWnd.SetPos(pos); + hairWnd.SetSize(XMFLOAT2(width, hairWnd.GetScale().y)); + pos.y += hairWnd.GetSize().y; + pos.y += padding; + } + else + { + hairWnd.SetVisible(false); + } + + if (scene.emitters.Contains(emitterWnd.entity)) + { + emitterWnd.SetVisible(true); + emitterWnd.SetPos(pos); + emitterWnd.SetSize(XMFLOAT2(width, emitterWnd.GetScale().y)); + pos.y += emitterWnd.GetSize().y; + pos.y += padding; + } + else + { + emitterWnd.SetVisible(false); + } + + if (scene.animations.Contains(animWnd.entity)) + { + animWnd.SetVisible(true); + animWnd.SetPos(pos); + animWnd.SetSize(XMFLOAT2(width, animWnd.GetScale().y)); + pos.y += animWnd.GetSize().y; + pos.y += padding; + } + else + { + animWnd.SetVisible(false); + } + + if (scene.lights.Contains(lightWnd.entity)) + { + lightWnd.SetVisible(true); + lightWnd.SetPos(pos); + lightWnd.SetSize(XMFLOAT2(width, lightWnd.GetScale().y)); + pos.y += lightWnd.GetSize().y; + pos.y += padding; + } + else + { + lightWnd.SetVisible(false); + } + + if (scene.sounds.Contains(soundWnd.entity)) + { + soundWnd.SetVisible(true); + soundWnd.SetPos(pos); + soundWnd.SetSize(XMFLOAT2(width, soundWnd.GetScale().y)); + pos.y += soundWnd.GetSize().y; + pos.y += padding; + } + else + { + soundWnd.SetVisible(false); + } + + if (scene.decals.Contains(decalWnd.entity)) + { + decalWnd.SetVisible(true); + decalWnd.SetPos(pos); + decalWnd.SetSize(XMFLOAT2(width, decalWnd.GetScale().y)); + pos.y += decalWnd.GetSize().y; + pos.y += padding; + } + else + { + decalWnd.SetVisible(false); + } + + if (scene.probes.Contains(envProbeWnd.entity)) + { + envProbeWnd.SetVisible(true); + envProbeWnd.SetPos(pos); + envProbeWnd.SetSize(XMFLOAT2(width, envProbeWnd.GetScale().y)); + pos.y += envProbeWnd.GetSize().y; + pos.y += padding; + } + else + { + envProbeWnd.SetVisible(false); + } + + //if (scene.cameras.Contains(cameraWnd.entity)) + //{ + // cameraWnd.SetVisible(true); + // cameraWnd.SetPos(pos); + // cameraWnd.SetSize(XMFLOAT2(width, cameraWnd.GetScale().y)); + // pos.y += cameraWnd.GetSize().y; + // pos.y += padding; + //} + //else + //{ + // cameraWnd.SetVisible(false); + //} + + if (scene.materials.Contains(materialWnd.entity)) + { + materialWnd.SetVisible(true); + materialWnd.SetPos(pos); + materialWnd.SetSize(XMFLOAT2(width, materialWnd.GetScale().y)); + pos.y += materialWnd.GetSize().y; + pos.y += padding; + } + else + { + materialWnd.SetVisible(false); + } + + if (scene.meshes.Contains(meshWnd.entity)) + { + meshWnd.SetVisible(true); + meshWnd.SetPos(pos); + meshWnd.SetSize(XMFLOAT2(width, meshWnd.GetScale().y)); + pos.y += meshWnd.GetSize().y; + pos.y += padding; + } + else + { + meshWnd.SetVisible(false); + } + + if (scene.objects.Contains(objectWnd.entity)) + { + objectWnd.SetVisible(true); + objectWnd.SetPos(pos); + objectWnd.SetSize(XMFLOAT2(width, objectWnd.GetScale().y)); + pos.y += objectWnd.GetSize().y; + pos.y += padding; + } + else + { + objectWnd.SetVisible(false); + } + + if (scene.weathers.Contains(weatherWnd.entity)) + { + weatherWnd.SetVisible(true); + weatherWnd.SetPos(pos); + weatherWnd.SetSize(XMFLOAT2(width, weatherWnd.GetScale().y)); + pos.y += weatherWnd.GetSize().y; + pos.y += padding; + } + else + { + weatherWnd.SetVisible(false); + } + + componentWindow.Update(*this, 0); +} void EditorComponent::ClearSelected() { @@ -2758,12 +3544,12 @@ void EditorComponent::RecordSelection(wi::Archive& archive) const archive << x.distance; } } -void EditorComponent::RecordAddedEntity(wi::Archive& archive, wi::ecs::Entity entity) +void EditorComponent::RecordEntity(wi::Archive& archive, wi::ecs::Entity entity) { const wi::vector entities = { entity }; - RecordAddedEntity(archive, entities); + RecordEntity(archive, entities); } -void EditorComponent::RecordAddedEntity(wi::Archive& archive, const wi::vector& entities) +void EditorComponent::RecordEntity(wi::Archive& archive, const wi::vector& entities) { Scene& scene = GetCurrentScene(); EntitySerializer seri; @@ -2993,6 +3779,45 @@ void EditorComponent::ConsumeHistoryOperation(bool undo) } break; + case HISTORYOP_COMPONENT_DATA: + { + Scene before, after; + wi::vector entities_before, entities_after; + + archive >> entities_before; + for (auto& x : entities_before) + { + EntitySerializer seri; + seri.allow_remap = false; + before.Entity_Serialize(archive, seri); + } + + archive >> entities_after; + for (auto& x : entities_after) + { + EntitySerializer seri; + seri.allow_remap = false; + after.Entity_Serialize(archive, seri); + } + + if (undo) + { + for (auto& x : entities_before) + { + scene.Entity_Remove(x); + } + scene.Merge(before); + } + else + { + for (auto& x : entities_after) + { + scene.Entity_Remove(x); + } + scene.Merge(after); + } + } + break; case HISTORYOP_PAINTTOOL: paintToolWnd.ConsumeHistoryOperation(archive, undo); break; diff --git a/Editor/Editor.h b/Editor/Editor.h index 665ecdca6..861d731cf 100644 --- a/Editor/Editor.h +++ b/Editor/Editor.h @@ -26,6 +26,8 @@ #include "LayerWindow.h" #include "NameWindow.h" +#include "IconDefinitions.h" + class EditorLoadingScreen : public wi::LoadingScreen { private: @@ -39,8 +41,6 @@ public: class Editor; class EditorComponent : public wi::RenderPath2D { -private: - wi::Resource pointLightTex, spotLightTex, dirLightTex, decalTex, forceFieldTex, emitterTex, hairTex, cameraTex, armatureTex, soundTex; public: MaterialWindow materialWnd; PostprocessWindow postprocessWnd; @@ -67,51 +67,56 @@ public: Editor* main = nullptr; - wi::gui::Button rendererWnd_Toggle; - wi::gui::Button postprocessWnd_Toggle; - wi::gui::Button paintToolWnd_Toggle; - wi::gui::Button terrainWnd_Toggle; - wi::gui::Button weatherWnd_Toggle; - wi::gui::Button objectWnd_Toggle; - wi::gui::Button meshWnd_Toggle; - wi::gui::Button materialWnd_Toggle; - wi::gui::Button cameraWnd_Toggle; - wi::gui::Button envProbeWnd_Toggle; - wi::gui::Button decalWnd_Toggle; - wi::gui::Button soundWnd_Toggle; - wi::gui::Button lightWnd_Toggle; - wi::gui::Button animWnd_Toggle; - wi::gui::Button emitterWnd_Toggle; - wi::gui::Button hairWnd_Toggle; - wi::gui::Button forceFieldWnd_Toggle; - wi::gui::Button springWnd_Toggle; - wi::gui::Button ikWnd_Toggle; - wi::gui::Button transformWnd_Toggle; - wi::gui::Button layerWnd_Toggle; - wi::gui::Button nameWnd_Toggle; - wi::gui::CheckBox translatorCheckBox; - wi::gui::CheckBox isScalatorCheckBox; - wi::gui::CheckBox isRotatorCheckBox; - wi::gui::CheckBox isTranslatorCheckBox; wi::gui::Button saveButton; - wi::gui::ComboBox saveModeComboBox; wi::gui::Button openButton; wi::gui::Button closeButton; wi::gui::Button aboutButton; wi::gui::Button exitButton; + wi::gui::Label aboutLabel; + + wi::gui::Window optionsWnd; + wi::gui::CheckBox translatorCheckBox; + wi::gui::CheckBox isScalatorCheckBox; + wi::gui::CheckBox isRotatorCheckBox; + wi::gui::CheckBox isTranslatorCheckBox; wi::gui::CheckBox profilerEnabledCheckBox; wi::gui::CheckBox physicsEnabledCheckBox; wi::gui::CheckBox cinemaModeCheckBox; + wi::gui::CheckBox infoDisplayCheckBox; + wi::gui::CheckBox fpsCheckBox; + wi::gui::CheckBox otherinfoCheckBox; + wi::gui::ComboBox themeCombo; wi::gui::ComboBox renderPathComboBox; + wi::gui::ComboBox saveModeComboBox; wi::gui::ComboBox sceneComboBox; - wi::gui::Label aboutLabel; + void RefreshOptionsWindow(); + enum class Filter : uint64_t + { + Transform = 1 << 0, + Material = 1 << 1, + Mesh = 1 << 2, + Object = 1 << 3, + EnvironmentProbe = 1 << 4, + Decal = 1 << 5, + Sound = 1 << 6, + Weather = 1 << 7, + Light = 1 << 8, + + All = ~0ull, + } filter = Filter::All; + wi::gui::ComboBox newCombo; + wi::gui::ComboBox filterCombo; wi::gui::TreeList entityTree; wi::unordered_set entitytree_added_items; wi::unordered_set entitytree_opened_items; void PushToEntityTree(wi::ecs::Entity entity, int level); void RefreshEntityTree(); + wi::gui::ComboBox newComponentCombo; + wi::gui::Window componentWindow; + void RefreshComponentWindow(); + wi::gui::Slider pathTraceTargetSlider; wi::gui::Label pathTraceStatisticsLabel; @@ -162,23 +167,26 @@ public: void AddSelected(wi::ecs::Entity entity); void AddSelected(const wi::scene::PickResult& picked); bool IsSelected(wi::ecs::Entity entity) const; + bool selectAll = false; + wi::unordered_set selectAllStorage; wi::Archive clipboard; enum HistoryOperationType { - HISTORYOP_TRANSLATOR, - HISTORYOP_SELECTION, - HISTORYOP_ADD, - HISTORYOP_DELETE, - HISTORYOP_PAINTTOOL, + HISTORYOP_TRANSLATOR, // translator interaction + HISTORYOP_SELECTION, // selection changed + HISTORYOP_ADD, // entity added + HISTORYOP_DELETE, // entity removed + HISTORYOP_COMPONENT_DATA, // generic component data changed + HISTORYOP_PAINTTOOL, // paint tool interaction HISTORYOP_NONE }; void RecordSelection(wi::Archive& archive) const; - void RecordAddedEntity(wi::Archive& archive, wi::ecs::Entity entity); - void RecordAddedEntity(wi::Archive& archive, const wi::vector& entities); + void RecordEntity(wi::Archive& archive, wi::ecs::Entity entity); + void RecordEntity(wi::Archive& archive, const wi::vector& entities); void ResetHistory(); wi::Archive& AdvanceHistory(); @@ -255,3 +263,8 @@ public: void Initialize() override; }; + +template<> +struct enable_bitmask_operators { + static const bool enable = true; +}; diff --git a/Editor/Editor_SOURCE.vcxitems b/Editor/Editor_SOURCE.vcxitems index 15601d3d8..4a826905b 100644 --- a/Editor/Editor_SOURCE.vcxitems +++ b/Editor/Editor_SOURCE.vcxitems @@ -128,8 +128,11 @@ + + + @@ -179,55 +182,10 @@ - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - true true - - true - true - - - - true - true - - - true - true - true true diff --git a/Editor/Editor_SOURCE.vcxitems.filters b/Editor/Editor_SOURCE.vcxitems.filters index 8736a0717..0b0e35bbc 100644 --- a/Editor/Editor_SOURCE.vcxitems.filters +++ b/Editor/Editor_SOURCE.vcxitems.filters @@ -109,6 +109,9 @@ meshoptimizer + + + @@ -134,45 +137,9 @@ - - images - - - images - - - images - - - images - - - images - - - images - - - images - - - images - images - - images - - - images - - - images - - - images - terrain diff --git a/Editor/EmitterWindow.cpp b/Editor/EmitterWindow.cpp index 0e4f99ad1..579ee1453 100644 --- a/Editor/EmitterWindow.cpp +++ b/Editor/EmitterWindow.cpp @@ -10,55 +10,32 @@ using namespace wi::scene; void EmitterWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Emitter Window"); - SetSize(XMFLOAT2(680, 420)); + wi::gui::Window::Create(ICON_EMITTER " Emitter", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 900)); - float x = 200; + closeButton.SetTooltip("Delete EmittedParticleSystem"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().emitters.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 130; float y = 0; float itemheight = 18; float step = itemheight + 2; - - - emitterNameField.Create("EmitterName"); - emitterNameField.SetPos(XMFLOAT2(x, y)); - emitterNameField.SetSize(XMFLOAT2(300, itemheight)); - emitterNameField.OnInputAccepted([=](wi::gui::EventArgs args) { - NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); - if (name != nullptr) - { - *name = args.sValue; - - editor->RefreshEntityTree(); - } - }); - AddWidget(&emitterNameField); - - addButton.Create("Add Emitter"); - addButton.SetPos(XMFLOAT2(x, y += step)); - addButton.SetSize(XMFLOAT2(150, itemheight)); - addButton.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - Entity entity = scene.Entity_CreateEmitter("editorEmitter"); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - addButton.SetTooltip("Add new emitter particle system."); - AddWidget(&addButton); + float wid = 140; restartButton.Create("Restart Emitter"); - restartButton.SetPos(XMFLOAT2(x + 160, y)); - restartButton.SetSize(XMFLOAT2(150, itemheight)); + restartButton.SetPos(XMFLOAT2(x, y)); + restartButton.SetSize(XMFLOAT2(wid, itemheight)); restartButton.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); if (emitter != nullptr) @@ -70,7 +47,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&restartButton); meshComboBox.Create("Mesh: "); - meshComboBox.SetSize(XMFLOAT2(300, itemheight)); + meshComboBox.SetSize(XMFLOAT2(wid, itemheight)); meshComboBox.SetPos(XMFLOAT2(x, y += step)); meshComboBox.SetEnabled(false); meshComboBox.OnSelect([&](wi::gui::EventArgs args) { @@ -93,16 +70,16 @@ void EmitterWindow::Create(EditorComponent* _editor) shaderTypeComboBox.Create("ShaderType: "); shaderTypeComboBox.SetPos(XMFLOAT2(x, y += step)); - shaderTypeComboBox.SetSize(XMFLOAT2(300, itemheight)); - shaderTypeComboBox.AddItem("SOFT"); - shaderTypeComboBox.AddItem("SOFT + DISTORTION"); - shaderTypeComboBox.AddItem("SIMPLEST"); - shaderTypeComboBox.AddItem("SOFT + LIGHTING"); + shaderTypeComboBox.SetSize(XMFLOAT2(wid, itemheight)); + shaderTypeComboBox.AddItem("SIMPLE", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SIMPLE); + shaderTypeComboBox.AddItem("SOFT", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SOFT); + shaderTypeComboBox.AddItem("DISTORTION", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SOFT_DISTORTION); + shaderTypeComboBox.AddItem("LIGHTING", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SOFT_LIGHTING); shaderTypeComboBox.OnSelect([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); if (emitter != nullptr) { - emitter->shaderType = (wi::EmittedParticleSystem::PARTICLESHADERTYPE)args.iValue; + emitter->shaderType = (wi::EmittedParticleSystem::PARTICLESHADERTYPE)args.userdata; } }); shaderTypeComboBox.SetEnabled(false); @@ -110,7 +87,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&shaderTypeComboBox); - sortCheckBox.Create("Sorting Enabled: "); + sortCheckBox.Create("Sorting: "); sortCheckBox.SetPos(XMFLOAT2(x, y += step)); sortCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); sortCheckBox.OnClick([&](wi::gui::EventArgs args) { @@ -125,8 +102,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&sortCheckBox); - depthCollisionsCheckBox.Create("Depth Buffer Collisions Enabled: "); - depthCollisionsCheckBox.SetPos(XMFLOAT2(x + 250, y)); + depthCollisionsCheckBox.Create("Depth Buffer: "); + depthCollisionsCheckBox.SetPos(XMFLOAT2(x, y += step)); depthCollisionsCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); depthCollisionsCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -141,7 +118,7 @@ void EmitterWindow::Create(EditorComponent* _editor) sphCheckBox.Create("SPH - FluidSim: "); - sphCheckBox.SetPos(XMFLOAT2(x + 400, y)); + sphCheckBox.SetPos(XMFLOAT2(x, y += step)); sphCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); sphCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -171,7 +148,7 @@ void EmitterWindow::Create(EditorComponent* _editor) debugCheckBox.Create("DEBUG: "); - debugCheckBox.SetPos(XMFLOAT2(x + 120, y)); + debugCheckBox.SetPos(XMFLOAT2(x, y += step)); debugCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); debugCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -186,7 +163,7 @@ void EmitterWindow::Create(EditorComponent* _editor) volumeCheckBox.Create("Volume: "); - volumeCheckBox.SetPos(XMFLOAT2(x + 250, y)); + volumeCheckBox.SetPos(XMFLOAT2(x, y += step)); volumeCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); volumeCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -201,7 +178,7 @@ void EmitterWindow::Create(EditorComponent* _editor) frameBlendingCheckBox.Create("Frame Blending: "); - frameBlendingCheckBox.SetPos(XMFLOAT2(x + 400, y)); + frameBlendingCheckBox.SetPos(XMFLOAT2(x, y += step)); frameBlendingCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); frameBlendingCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -217,16 +194,16 @@ void EmitterWindow::Create(EditorComponent* _editor) infoLabel.Create("EmitterInfo"); - infoLabel.SetSize(XMFLOAT2(380, 120)); - infoLabel.SetPos(XMFLOAT2(x, y += step)); + infoLabel.SetSize(XMFLOAT2(GetSize().x - 20, 120)); + infoLabel.SetPos(XMFLOAT2(10, y += step)); AddWidget(&infoLabel); - y += 125; + y += infoLabel.GetSize().y + 5; frameRateInput.Create(""); frameRateInput.SetPos(XMFLOAT2(x, y)); - frameRateInput.SetSize(XMFLOAT2(40, 18)); + frameRateInput.SetSize(XMFLOAT2(38, 18)); frameRateInput.SetText(""); frameRateInput.SetTooltip("Enter a value to enable looping sprite sheet animation (frames per second). Set 0 for animation along paritcle lifetime."); frameRateInput.SetDescription("Frame Rate: "); @@ -240,8 +217,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&frameRateInput); framesXInput.Create(""); - framesXInput.SetPos(XMFLOAT2(x + 150, y)); - framesXInput.SetSize(XMFLOAT2(40, 18)); + framesXInput.SetPos(XMFLOAT2(x, y += step)); + framesXInput.SetSize(XMFLOAT2(38, 18)); framesXInput.SetText(""); framesXInput.SetTooltip("How many horizontal frames there are in the spritesheet."); framesXInput.SetDescription("Frames X: "); @@ -255,8 +232,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&framesXInput); framesYInput.Create(""); - framesYInput.SetPos(XMFLOAT2(x + 300, y)); - framesYInput.SetSize(XMFLOAT2(40, 18)); + framesYInput.SetPos(XMFLOAT2(x, y += step)); + framesYInput.SetSize(XMFLOAT2(38, 18)); framesYInput.SetText(""); framesYInput.SetTooltip("How many vertical frames there are in the spritesheet."); framesYInput.SetDescription("Frames Y: "); @@ -271,7 +248,7 @@ void EmitterWindow::Create(EditorComponent* _editor) frameCountInput.Create(""); frameCountInput.SetPos(XMFLOAT2(x, y += step)); - frameCountInput.SetSize(XMFLOAT2(40, 18)); + frameCountInput.SetSize(XMFLOAT2(38, 18)); frameCountInput.SetText(""); frameCountInput.SetTooltip("Enter a value to enable the random sprite sheet frame selection's max frame number."); frameCountInput.SetDescription("Frame Count: "); @@ -285,8 +262,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&frameCountInput); frameStartInput.Create(""); - frameStartInput.SetPos(XMFLOAT2(x + 300, y)); - frameStartInput.SetSize(XMFLOAT2(40, 18)); + frameStartInput.SetPos(XMFLOAT2(x, y += step)); + frameStartInput.SetSize(XMFLOAT2(38, 18)); frameStartInput.SetText(""); frameStartInput.SetTooltip("Specifies the starting frame of the animation."); frameStartInput.SetDescription("Start Frame: "); @@ -351,7 +328,7 @@ void EmitterWindow::Create(EditorComponent* _editor) GravityXInput.SetValue(0); GravityXInput.SetDescription("Gravity: "); GravityXInput.SetTooltip("Vector X component"); - GravityXInput.SetPos(XMFLOAT2(x + 200, y)); + GravityXInput.SetPos(XMFLOAT2(x, y += step)); GravityXInput.SetSize(XMFLOAT2(38, itemheight)); GravityXInput.OnInputAccepted([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -365,7 +342,7 @@ void EmitterWindow::Create(EditorComponent* _editor) GravityYInput.Create(""); GravityYInput.SetValue(0); GravityYInput.SetTooltip("Vector Y component"); - GravityYInput.SetPos(XMFLOAT2(x + 240, y)); + GravityYInput.SetPos(XMFLOAT2(x + 40, y)); GravityYInput.SetSize(XMFLOAT2(38, itemheight)); GravityYInput.OnInputAccepted([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -379,7 +356,7 @@ void EmitterWindow::Create(EditorComponent* _editor) GravityZInput.Create(""); GravityZInput.SetValue(0); GravityZInput.SetTooltip("Vector Z component"); - GravityZInput.SetPos(XMFLOAT2(x + 280, y)); + GravityZInput.SetPos(XMFLOAT2(x + 80, y)); GravityZInput.SetSize(XMFLOAT2(38, itemheight)); GravityZInput.OnInputAccepted([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -390,8 +367,8 @@ void EmitterWindow::Create(EditorComponent* _editor) }); AddWidget(&GravityZInput); - maxParticlesSlider.Create(100.0f, 1000000.0f, 10000, 100000, "Max particle count: "); - maxParticlesSlider.SetSize(XMFLOAT2(360, itemheight)); + maxParticlesSlider.Create(100.0f, 1000000.0f, 10000, 100000, "Max count: "); + maxParticlesSlider.SetSize(XMFLOAT2(wid, itemheight)); maxParticlesSlider.SetPos(XMFLOAT2(x, y += step)); maxParticlesSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -404,8 +381,8 @@ void EmitterWindow::Create(EditorComponent* _editor) maxParticlesSlider.SetTooltip("Set the maximum amount of particles this system can handle. This has an effect on the memory budget."); AddWidget(&maxParticlesSlider); - emitCountSlider.Create(0.0f, 10000.0f, 1.0f, 100000, "Emit count per sec: "); - emitCountSlider.SetSize(XMFLOAT2(360, itemheight)); + emitCountSlider.Create(0.0f, 10000.0f, 1.0f, 100000, "Emit: "); + emitCountSlider.SetSize(XMFLOAT2(wid, itemheight)); emitCountSlider.SetPos(XMFLOAT2(x, y += step)); emitCountSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -419,7 +396,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitCountSlider); emitSizeSlider.Create(0.01f, 10.0f, 1.0f, 100000, "Size: "); - emitSizeSlider.SetSize(XMFLOAT2(360, itemheight)); + emitSizeSlider.SetSize(XMFLOAT2(wid, itemheight)); emitSizeSlider.SetPos(XMFLOAT2(x, y += step)); emitSizeSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -433,7 +410,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitSizeSlider); emitRotationSlider.Create(0.0f, 1.0f, 0.0f, 100000, "Rotation: "); - emitRotationSlider.SetSize(XMFLOAT2(360, itemheight)); + emitRotationSlider.SetSize(XMFLOAT2(wid, itemheight)); emitRotationSlider.SetPos(XMFLOAT2(x, y += step)); emitRotationSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -447,7 +424,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitRotationSlider); emitNormalSlider.Create(0.0f, 100.0f, 1.0f, 100000, "Normal factor: "); - emitNormalSlider.SetSize(XMFLOAT2(360, itemheight)); + emitNormalSlider.SetSize(XMFLOAT2(wid, itemheight)); emitNormalSlider.SetPos(XMFLOAT2(x, y += step)); emitNormalSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -461,7 +438,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitNormalSlider); emitScalingSlider.Create(0.0f, 100.0f, 1.0f, 100000, "Scaling: "); - emitScalingSlider.SetSize(XMFLOAT2(360, itemheight)); + emitScalingSlider.SetSize(XMFLOAT2(wid, itemheight)); emitScalingSlider.SetPos(XMFLOAT2(x, y += step)); emitScalingSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -475,7 +452,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitScalingSlider); emitLifeSlider.Create(0.0f, 100.0f, 1.0f, 10000, "Life span: "); - emitLifeSlider.SetSize(XMFLOAT2(360, itemheight)); + emitLifeSlider.SetSize(XMFLOAT2(wid, itemheight)); emitLifeSlider.SetPos(XMFLOAT2(x, y += step)); emitLifeSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -489,7 +466,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitLifeSlider); emitRandomnessSlider.Create(0.0f, 1.0f, 1.0f, 100000, "Randomness: "); - emitRandomnessSlider.SetSize(XMFLOAT2(360, itemheight)); + emitRandomnessSlider.SetSize(XMFLOAT2(wid, itemheight)); emitRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); emitRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -503,7 +480,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitRandomnessSlider); emitLifeRandomnessSlider.Create(0.0f, 2.0f, 0.0f, 100000, "Life randomness: "); - emitLifeRandomnessSlider.SetSize(XMFLOAT2(360, itemheight)); + emitLifeRandomnessSlider.SetSize(XMFLOAT2(wid, itemheight)); emitLifeRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); emitLifeRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -517,7 +494,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitLifeRandomnessSlider); emitColorRandomnessSlider.Create(0.0f, 2.0f, 0.0f, 100000, "Color randomness: "); - emitColorRandomnessSlider.SetSize(XMFLOAT2(360, itemheight)); + emitColorRandomnessSlider.SetSize(XMFLOAT2(wid, itemheight)); emitColorRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); emitColorRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -531,7 +508,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitColorRandomnessSlider); emitMotionBlurSlider.Create(0.0f, 1.0f, 1.0f, 100000, "Motion blur: "); - emitMotionBlurSlider.SetSize(XMFLOAT2(360, itemheight)); + emitMotionBlurSlider.SetSize(XMFLOAT2(wid, itemheight)); emitMotionBlurSlider.SetPos(XMFLOAT2(x, y += step)); emitMotionBlurSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -545,7 +522,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitMotionBlurSlider); emitMassSlider.Create(0.1f, 100.0f, 1.0f, 100000, "Mass: "); - emitMassSlider.SetSize(XMFLOAT2(360, itemheight)); + emitMassSlider.SetSize(XMFLOAT2(wid, itemheight)); emitMassSlider.SetPos(XMFLOAT2(x, y += step)); emitMassSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -561,7 +538,7 @@ void EmitterWindow::Create(EditorComponent* _editor) timestepSlider.Create(-1, 0.016f, -1, 100000, "Timestep: "); - timestepSlider.SetSize(XMFLOAT2(360, itemheight)); + timestepSlider.SetSize(XMFLOAT2(wid, itemheight)); timestepSlider.SetPos(XMFLOAT2(x, y += step)); timestepSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -577,7 +554,7 @@ void EmitterWindow::Create(EditorComponent* _editor) dragSlider.Create(0, 1, 1, 100000, "Drag: "); - dragSlider.SetSize(XMFLOAT2(360, itemheight)); + dragSlider.SetSize(XMFLOAT2(wid, itemheight)); dragSlider.SetPos(XMFLOAT2(x, y += step)); dragSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -591,7 +568,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&dragSlider); restitutionSlider.Create(0, 1, 1, 100000, "Restitution: "); - restitutionSlider.SetSize(XMFLOAT2(360, itemheight)); + restitutionSlider.SetSize(XMFLOAT2(wid, itemheight)); restitutionSlider.SetPos(XMFLOAT2(x, y += step)); restitutionSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -608,8 +585,8 @@ void EmitterWindow::Create(EditorComponent* _editor) //////////////// SPH //////////////////////////// - sph_h_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH Smoothing Radius (h): "); - sph_h_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_h_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH (h): "); + sph_h_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_h_Slider.SetPos(XMFLOAT2(x, y += step)); sph_h_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -622,8 +599,8 @@ void EmitterWindow::Create(EditorComponent* _editor) sph_h_Slider.SetTooltip("Set the SPH parameter: smoothing radius"); AddWidget(&sph_h_Slider); - sph_K_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH Pressure Constant (K): "); - sph_K_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_K_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH (K): "); + sph_K_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_K_Slider.SetPos(XMFLOAT2(x, y += step)); sph_K_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -636,8 +613,8 @@ void EmitterWindow::Create(EditorComponent* _editor) sph_K_Slider.SetTooltip("Set the SPH parameter: pressure constant"); AddWidget(&sph_K_Slider); - sph_p0_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH Reference Density (p0): "); - sph_p0_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_p0_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH (p0): "); + sph_p0_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_p0_Slider.SetPos(XMFLOAT2(x, y += step)); sph_p0_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -650,8 +627,8 @@ void EmitterWindow::Create(EditorComponent* _editor) sph_p0_Slider.SetTooltip("Set the SPH parameter: reference density"); AddWidget(&sph_p0_Slider); - sph_e_Slider.Create(0, 10, 1.0f, 100000, "SPH Viscosity (e): "); - sph_e_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_e_Slider.Create(0, 10, 1.0f, 100000, "SPH (e): "); + sph_e_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_e_Slider.SetPos(XMFLOAT2(x, y += step)); sph_e_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -666,10 +643,7 @@ void EmitterWindow::Create(EditorComponent* _editor) - - - - Translate(XMFLOAT3(200, 50, 0)); + SetMinimized(true); SetVisible(false); SetEntity(entity); @@ -685,7 +659,7 @@ void EmitterWindow::SetEntity(Entity entity) { SetEnabled(true); - shaderTypeComboBox.SetSelected((int)emitter->shaderType); + shaderTypeComboBox.SetSelectedByUserdataWithoutCallback((uint64_t)emitter->shaderType); sortCheckBox.SetCheck(emitter->IsSorted()); depthCollisionsCheckBox.SetCheck(emitter->IsDepthCollisionEnabled()); @@ -735,7 +709,6 @@ void EmitterWindow::SetEntity(Entity entity) SetEnabled(false); - addButton.SetEnabled(true); } } @@ -777,7 +750,6 @@ void EmitterWindow::UpdateData() } } - NameComponent* name = scene.names.GetComponent(entity); NameComponent* meshName = scene.names.GetComponent(emitter->meshID); std::string ss; @@ -793,5 +765,4 @@ void EmitterWindow::UpdateData() infoLabel.SetText(ss); - emitterNameField.SetText(name->name); } diff --git a/Editor/EmitterWindow.h b/Editor/EmitterWindow.h index bbe9425fd..fb5282f8a 100644 --- a/Editor/EmitterWindow.h +++ b/Editor/EmitterWindow.h @@ -18,8 +18,6 @@ public: wi::EmittedParticleSystem* GetEmitter(); - wi::gui::TextInputField emitterNameField; - wi::gui::Button addButton; wi::gui::Button restartButton; wi::gui::ComboBox meshComboBox; wi::gui::ComboBox shaderTypeComboBox; diff --git a/Editor/EnvProbeWindow.cpp b/Editor/EnvProbeWindow.cpp index 58aaf7dd2..a40054ed1 100644 --- a/Editor/EnvProbeWindow.cpp +++ b/Editor/EnvProbeWindow.cpp @@ -8,14 +8,29 @@ using namespace wi::scene; void EnvProbeWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Environment Probe Window"); + wi::gui::Window::Create(ICON_ENVIRONMENTPROBE " Environment Probe", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(420, 220)); + closeButton.SetTooltip("Delete EnvironmentProbeComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().probes.Remove(entity); + editor->GetCurrentScene().aabb_probes.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + float x = 5, y = 0, step = 35; infoLabel.Create(""); infoLabel.SetText("Environment probes can be used to capture the scene from a specific location in a 360 degrees panorama. The probes will be used for reflections fallback, where a better reflection type is not available. The probes can affect the ambient colors slightly.\nTip: You can scale, rotate and move the probes to set up parallax correct rendering to affect a specific area only. The parallax correction will take effect inside the probe's bounds (indicated with a cyan colored box)."); - infoLabel.SetSize(XMFLOAT2(400 - 10, 100)); + infoLabel.SetSize(XMFLOAT2(300, 100)); infoLabel.SetPos(XMFLOAT2(x, y)); infoLabel.SetColor(wi::Color::Transparent()); AddWidget(&infoLabel); @@ -49,32 +64,9 @@ void EnvProbeWindow::Create(EditorComponent* _editor) }); AddWidget(&msaaCheckBox); - generateButton.Create("Put"); - generateButton.SetTooltip("Put down a new probe in front of the camera and capture the scene."); - generateButton.SetPos(XMFLOAT2(x, y += step)); - generateButton.OnClick([=](wi::gui::EventArgs args) { - XMFLOAT3 pos; - XMStoreFloat3(&pos, XMVectorAdd(editor->GetCurrentEditorScene().camera.GetEye(), editor->GetCurrentEditorScene().camera.GetAt() * 4)); - Entity entity = editor->GetCurrentScene().Entity_CreateEnvironmentProbe("editorProbe", pos); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - AddWidget(&generateButton); - refreshButton.Create("Refresh"); refreshButton.SetTooltip("Re-renders the selected probe."); - refreshButton.SetPos(XMFLOAT2(x + 120, y)); + refreshButton.SetPos(XMFLOAT2(x, y+= step)); refreshButton.SetEnabled(false); refreshButton.OnClick([&](wi::gui::EventArgs args) { EnvironmentProbeComponent* probe = editor->GetCurrentScene().probes.GetComponent(entity); @@ -87,7 +79,7 @@ void EnvProbeWindow::Create(EditorComponent* _editor) refreshAllButton.Create("Refresh All"); refreshAllButton.SetTooltip("Re-renders all probes in the scene."); - refreshAllButton.SetPos(XMFLOAT2(x + 240, y)); + refreshAllButton.SetPos(XMFLOAT2(x + 120, y)); refreshAllButton.SetEnabled(true); refreshAllButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -102,7 +94,7 @@ void EnvProbeWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(100, 100, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/EnvProbeWindow.h b/Editor/EnvProbeWindow.h index 7434e4368..8d288c5e5 100644 --- a/Editor/EnvProbeWindow.h +++ b/Editor/EnvProbeWindow.h @@ -15,7 +15,6 @@ public: wi::gui::Label infoLabel; wi::gui::CheckBox realTimeCheckBox; wi::gui::CheckBox msaaCheckBox; - wi::gui::Button generateButton; wi::gui::Button refreshButton; wi::gui::Button refreshAllButton; }; diff --git a/Editor/FontAwesomeV6.h b/Editor/FontAwesomeV6.h new file mode 100644 index 000000000..b7d20cbca --- /dev/null +++ b/Editor/FontAwesomeV6.h @@ -0,0 +1,12188 @@ +const uint8_t font_awesome_v6[] = { +0,1,0,0,0,10,0,128,0,3,0,32,79,83,47,50,97,75,98,74,0,0,1,40,0,0,0,96,99,109,97,112, +85,100,88,117,0,0,23,64,0,0,72,110,103,108,121,102,15,69,38,190,0,0,117,108,0,5,45,12,104,101,97,100, +34,167,243,194,0,0,0,172,0,0,0,54,104,104,101,97,4,66,7,173,0,0,0,228,0,0,0,36,104,109,116,120, +233,75,15,86,0,0,1,136,0,0,21,184,108,111,99,97,13,243,146,188,0,0,95,176,0,0,21,188,109,97,120,112, +5,133,1,124,0,0,1,8,0,0,0,32,110,97,109,101,46,201,149,195,0,5,162,120,0,0,3,237,112,111,115,116, +174,201,195,53,0,5,166,104,0,0,76,210,0,1,0,0,3,1,5,0,23,26,205,60,95,15,60,245,0,11,2,0, +0,0,0,0,223,4,87,34,0,0,0,0,223,4,87,34,0,0,255,192,2,128,1,192,0,0,0,8,0,2,0,1, +0,0,0,0,0,1,0,0,1,192,255,192,0,0,2,128,255,255,255,254,2,128,0,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,5,110,0,1,0,0,5,110,1,122,0,21,0,0,0,0,0,1,0,0,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,4,2,2,3,132,0,5,0,0,1,76,1,102,0,0,0,71,1,76,1,102,0,0, +0,245,0,25,0,132,0,0,2,0,9,3,0,0,0,0,0,0,0,0,0,1,16,0,0,0,0,0,0,0,0,0, +0,0,65,87,83,77,0,128,0,33,255,255,1,192,255,192,0,0,1,192,0,64,0,0,0,1,0,0,0,0,1,57, +1,165,0,0,0,32,0,0,1,128,0,0,0,128,0,24,1,192,0,0,1,64,0,16,1,128,0,0,1,192,0,25, +1,192,0,16,1,64,0,0,1,0,0,0,1,64,0,0,1,64,0,0,1,128,0,0,1,64,0,0,1,64,0,0, +1,64,0,0,1,64,0,0,1,64,0,0,1,128,0,0,1,192,0,16,1,128,0,0,1,64,0,0,2,0,0,16, +1,128,0,0,1,64,0,0,1,128,255,255,1,128,0,0,1,64,0,0,1,64,0,0,1,192,0,1,1,128,0,0, +1,64,0,0,1,64,0,0,1,64,0,0,1,64,0,32,1,192,0,0,1,128,0,0,1,192,0,0,1,64,0,0, +1,192,0,0,1,64,0,0,1,128,0,31,1,128,0,0,1,128,0,0,1,128,0,0,2,64,0,0,1,128,0,0, +1,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,64,0,0,2,0,0,0,2,0,0,0, +2,128,0,0,2,128,0,0,2,64,0,32,2,0,0,0,2,64,0,0,2,128,0,0,2,64,0,32,2,128,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,128,0,0,2,128,0,0, +2,64,0,0,2,128,0,0,1,128,0,0,1,128,0,0,2,0,0,16,2,0,0,0,2,0,0,0,1,192,0,16, +2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0,2,128,0,0,1,192,0,0, +1,192,0,0,2,64,0,0,2,64,0,0,1,192,0,0,1,192,0,0,1,64,0,0,1,64,0,0,1,128,0,0, +1,192,0,0,2,0,0,0,1,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,1,64,0,0,1,128,0,0,2,64,0,0,1,128,0,0,2,0,0,0,2,64,0,0, +1,128,0,0,2,0,0,0,1,64,0,0,1,128,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,64,0,0, +1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,2,128,0,0,1,128,0,0,2,128,0,0,1,192,0,0, +1,128,0,0,2,128,0,0,1,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,128,0,0, +2,0,0,0,1,128,0,0,2,64,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,0,0,0,1,64,0,0, +2,64,0,0,2,64,0,0,2,64,0,0,1,64,0,0,1,128,0,0,2,64,0,5,1,0,0,0,2,0,0,0, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,0,0, +2,128,0,0,2,0,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,64,0,0, +2,128,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,16,2,128,0,0, +2,0,0,33,2,0,0,0,2,128,0,0,2,0,0,0,2,128,0,8,1,192,0,0,2,0,0,0,2,64,0,0, +2,0,0,0,1,64,0,32,1,64,0,32,2,0,0,0,2,128,0,0,2,64,0,0,2,128,0,32,2,128,0,32, +2,128,0,32,2,128,0,32,2,64,0,0,1,192,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,64,0,0,1,128,0,0,2,64,0,0,1,128,0,0,2,128,0,0,2,128,0,0, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0,1,128,0,0,2,64,0,0, +2,128,0,0,1,192,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,128,0,0,2,64,0,0,2,128,0,0,1,128,0,0,1,128,0,0,2,0,0,9,2,0,0,0, +2,128,0,0,2,128,0,32,2,128,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,64,0,0,2,64,0,34,2,0,0,0,2,128,0,32,2,64,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,64,0,0,1,64,0,0,1,64,0,0,2,64,0,32,1,128,0,0,2,64,0,0, +2,64,0,0,2,0,0,0,2,128,0,0,1,128,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0, +2,128,0,3,2,128,0,0,2,128,0,0,1,64,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0, +2,128,0,0,2,64,0,31,2,128,0,0,2,128,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,64,0,0, +2,64,0,8,2,128,0,0,2,128,0,0,2,128,0,0,1,192,0,0,2,128,0,3,1,128,0,0,2,128,0,32, +2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,3,2,64,0,0, +1,192,0,32,2,128,0,0,1,64,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +2,64,0,15,2,0,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,3,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,0,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,32,2,128,0,32,2,128,0,32,2,128,0,32, +2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,64,0,0,2,128,0,0, +1,128,0,0,2,0,0,16,2,0,0,16,2,0,0,16,1,192,0,0,1,192,0,0,1,192,0,0,1,128,0,0, +2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,7, +2,128,0,0,1,64,0,0,2,64,0,0,2,64,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,0,0,0,2,64,0,32,2,128,0,0,2,0,0,32,2,128,0,0,1,64,0,0, +1,128,0,16,2,64,0,0,2,64,0,0,2,128,0,0,2,0,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,24,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,1,192,0,0,1,64,0,0,2,0,0,0,2,0,0,0,2,0,0,16,2,64,0,0,2,0,0,14, +2,64,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,32,2,0,0,16,2,64,0,0, +1,192,0,0,2,0,0,0,2,0,0,0,1,64,0,0,1,192,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,1,192,0,0,1,128,0,0,2,0,0,0,2,0,0,0,1,192,0,0,1,128,0,0, +1,128,0,0,2,64,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,2,0,0,16, +2,0,0,26,1,192,0,0,2,64,0,0,2,0,0,0,1,128,0,0,2,0,0,0,1,128,0,16,2,0,0,0, +2,0,0,0,1,64,0,0,2,0,0,0,2,0,0,0,1,128,0,0,1,64,0,0,1,128,0,0,2,0,0,0, +2,0,0,0,1,64,0,0,1,192,0,0,1,64,0,0,1,64,0,64,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,1,192,0,0,1,128,0,0, +1,128,0,0,2,0,0,0,1,192,0,0,1,192,0,0,1,192,0,16,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,64,0,0,2,128,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,1,192,0,0,1,192,0,0,2,128,0,24,2,64,0,0,2,0,0,0,2,64,0,0,1,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,3,2,128,0,0,2,64,0,24,2,0,0,0, +1,128,0,0,1,192,0,0,2,0,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,0,0,0,1,192,0,0, +1,192,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,32,1,192,0,32,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,1, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,128,0,18,2,128,0,0,1,192,0,0, +2,0,0,0,2,0,0,0,1,192,0,4,1,192,0,0,1,192,0,0,1,192,0,0,2,0,0,16,2,64,0,39, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,0,0,1,64,0,0,1,64,0,0, +1,0,0,0,1,0,0,64,2,0,0,0,1,64,0,0,1,64,0,0,1,64,0,0,2,0,0,0,2,0,0,16, +2,0,0,0,1,128,0,0,2,64,0,0,2,64,0,0,2,0,0,0,1,128,0,16,2,0,0,0,2,128,0,0, +2,128,0,0,1,192,0,0,2,64,0,32,2,0,0,0,1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,0,0,0,2,128,0,0,2,0,0,32,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,32,1,128,0,0, +1,128,0,0,1,0,0,0,1,0,0,32,1,128,0,0,1,128,0,0,2,128,0,0,1,192,0,0,1,128,0,16, +1,192,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0, +2,64,0,0,2,64,0,32,2,64,0,0,2,128,0,0,2,64,0,0,1,192,0,16,2,0,0,0,1,192,0,0, +2,128,0,0,0,192,0,0,2,0,0,0,2,0,0,0,2,0,0,7,2,0,0,0,1,128,0,16,2,128,0,0, +2,0,0,15,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,64,0,0,1,192,0,0,2,0,0,0,1,192,0,8,0,128,0,8,1,192,0,0,2,0,0,0,2,64,0,0, +1,192,0,0,1,128,0,0,1,128,0,0,1,192,0,0,1,192,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +1,192,0,0,1,192,0,0,1,192,0,0,1,128,0,32,1,64,0,0,1,192,0,0,1,64,0,0,1,128,0,0, +2,0,0,0,1,128,0,0,1,128,0,0,2,0,0,7,2,0,0,8,2,64,0,7,2,64,0,8,2,0,0,7, +2,0,0,8,2,0,0,0,2,0,0,0,1,64,0,0,1,64,0,0,2,0,0,0,2,0,0,0,1,64,0,0, +1,64,0,0,2,0,0,0,2,0,0,32,2,0,0,0,2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +1,64,0,0,2,128,0,0,1,192,0,0,2,0,0,0,2,128,0,0,2,128,0,0,2,0,0,0,1,128,0,0, +1,64,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,64,0,32,1,192,0,0, +1,192,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0, +1,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,1,192,0,32, +2,0,0,0,1,192,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,128,0,0, +2,0,0,0,2,128,0,0,1,128,0,0,2,128,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,64,0,32, +1,192,0,0,2,0,0,0,2,64,0,32,2,0,0,0,2,64,0,0,2,64,0,0,2,128,0,0,2,64,0,32, +2,64,0,0,1,192,0,0,2,64,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,128,0,0, +2,0,0,0,2,64,0,32,1,128,0,16,1,192,255,255,1,128,0,16,2,0,0,96,2,0,0,0,2,128,0,16, +2,128,0,0,2,128,0,0,2,0,0,32,1,128,0,15,2,128,0,32,1,128,0,16,1,128,0,16,2,0,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,1,192,0,0,1,192,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,64,0,0,1,64,0,0,1,0,0,0,2,64,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,192,0,32,2,0,0,0,2,0,0,0, +2,0,0,0,2,64,0,32,1,192,0,0,2,0,0,32,2,128,0,0,2,0,0,0,2,128,0,0,1,192,0,0, +1,192,0,0,1,192,0,0,1,192,0,0,2,64,0,32,1,64,0,32,2,0,0,6,2,64,0,0,2,0,255,255, +2,0,0,0,2,0,0,0,1,192,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +2,128,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0,1,192,0,0,2,128,0,0, +2,0,0,0,2,0,0,32,2,64,0,0,2,0,0,0,1,128,0,0,2,64,0,0,1,64,0,16,1,64,0,16, +1,64,0,16,1,64,0,16,1,64,0,16,2,0,0,0,2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,31,2,0,0,0,1,192,0,0,2,0,0,16,1,192,0,0, +2,0,0,16,1,192,0,16,2,0,0,0,2,0,0,0,2,0,0,32,2,0,0,0,2,64,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,1,64,0,31,2,0,0,0,2,0,0,0,1,64,0,31,2,64,0,0,1,192,0,0, +1,128,0,0,2,0,255,255,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,2,0,0,0,2,128,0,0,1,192,0,0,2,64,0,0,2,0,0,0,1,128,0,0, +1,128,0,0,2,64,0,0,1,128,0,0,1,128,0,16,1,128,0,16,1,128,0,16,1,128,0,16,2,64,0,0, +2,128,0,0,1,128,0,0,2,0,0,0,2,0,0,15,1,192,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,64,0,0,1,192,0,0,1,192,0,0,1,128,0,0,1,64,0,0,2,0,0,0,1,128,0,0,2,128,0,0, +2,0,0,16,1,128,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,128,0,0,1,192,0,0,2,64,0,0,2,0,0,0,1,128,0,0,2,64,0,0,1,128,0,0,1,128,0,0, +2,64,0,0,1,192,0,0,2,64,0,0,2,128,0,0,1,128,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +2,64,0,0,2,0,0,0,2,128,0,0,2,64,0,0,1,128,0,0,1,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,0,0,0,2,128,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0, +2,0,0,0,2,128,0,14,2,0,0,1,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0, +2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,3,2,128,0,0, +2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,128,0,7, +2,128,0,0,2,128,0,0,1,64,0,16,2,128,0,0,1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,0,0,32,2,128,0,0,2,128,0,0,2,0,0,32,2,128,0,0,2,128,0,0, +2,128,0,0,1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,64,0,0,2,64,0,0, +2,128,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,255,255, +2,128,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,16, +2,64,0,0,2,64,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,128,0,4, +2,128,0,0,2,64,0,0,1,192,0,0,2,64,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,1,192,0,16,2,0,0,0,1,192,0,0,2,64,0,0,1,128,0,0,2,128,0,0,2,0,0,4, +2,0,0,0,2,128,0,0,1,0,0,0,2,128,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0, +2,64,0,15,2,128,0,0,2,0,0,0,2,0,0,16,2,0,0,0,2,128,0,0,1,64,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,1,192,0,0,1,128,0,0,2,64,0,0,2,128,0,0,2,0,0,32,1,128,0,0, +1,192,0,0,2,64,0,31,1,192,0,0,2,64,0,0,2,0,0,0,2,0,0,16,2,0,0,16,2,0,0,0, +2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,0,255,255,1,128,0,0,1,128,0,0, +2,64,0,0,2,0,0,0,1,128,0,0,1,128,0,0,1,128,0,0,2,64,0,0,1,128,0,0,2,0,0,3, +2,64,0,3,2,0,255,255,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0, +1,64,0,0,2,0,0,0,2,0,0,0,2,64,0,16,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,0,0, +2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,128,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,0,0,2,2,0,0,2,2,0,0,0,2,128,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,1,2,64,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,64,0,24,1,192,0,32,2,0,0,0,2,0,0,0,2,64,0,0,2,64,0,0,2,128,0,0, +2,0,0,0,1,192,0,32,2,128,0,0,1,192,0,0,2,0,0,0,1,64,0,16,2,0,0,0,1,192,0,0, +2,0,0,32,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,3,2,128,0,0, +2,64,0,0,2,0,0,0,1,192,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0, +2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,19,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,64,0,0,2,64,0,0,2,128,0,0,1,64,0,0,2,128,0,0,2,128,0,0,2,64,0,0,1,64,0,0, +1,192,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,16,1,192,0,0, +2,64,0,0,2,64,0,31,2,0,0,0,2,128,0,32,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0, +2,0,0,0,2,128,0,0,1,192,0,0,1,192,0,0,1,128,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,2,64,0,32,2,64,0,0,2,0,0,0,2,0,0,16,2,128,0,0,2,128,0,0,2,0,0,0, +2,128,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,64,0,0,2,64,0,32,1,192,0,0, +2,64,255,255,2,128,0,0,2,128,0,0,2,0,0,16,1,192,0,0,2,64,0,0,2,128,255,255,2,0,0,0, +2,0,0,0,1,128,0,0,1,192,0,32,1,128,0,0,2,64,0,0,2,128,0,0,2,0,0,0,1,128,0,0, +2,128,0,0,2,64,0,0,2,64,0,0,1,128,0,0,2,64,0,0,2,0,0,0,2,128,0,0,2,128,0,0, +2,0,0,0,1,192,0,16,2,64,0,0,1,192,0,0,2,128,0,0,2,64,0,12,2,64,0,0,2,128,0,0, +1,192,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,32,2,64,0,0,2,0,0,0, +2,0,0,0,2,128,0,32,2,128,0,0,2,64,0,32,1,192,0,32,2,0,0,0,2,0,0,0,2,64,0,0, +1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0, +2,0,0,0,2,64,0,0,2,64,0,0,1,192,0,32,2,0,0,0,2,64,0,0,2,0,0,0,1,192,0,0, +1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,255,255,2,64,0,0,2,128,0,0,2,0,0,0, +2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,1,192,0,0,0,192,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,9,2,0,0,16, +2,128,0,0,2,0,0,0,2,0,0,0,1,128,0,0,1,128,0,0,1,192,0,0,2,0,0,0,2,64,0,0, +2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,1,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,1,128,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,64,0,0,1,128,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,1,128,0,0,2,64,0,0,2,0,0,16,1,192,0,32,2,64,0,0, +2,64,0,0,2,0,0,0,1,192,0,32,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,2,128,0,0,2,128,0,0,1,192,0,0, +1,192,0,0,1,192,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,2,128,0,0, +2,128,0,0,2,0,0,7,2,0,0,8,2,64,0,7,2,64,0,8,2,0,0,7,2,0,0,8,2,64,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,1,128,0,0,2,128,0,0, +0,0,0,4,0,0,0,3,0,0,0,36,0,0,0,4,0,0,24,118,0,3,0,1,0,0,0,36,0,3,0,10, +0,0,24,118,0,4,24,82,0,0,5,158,4,0,0,9,1,158,0,33,0,37,0,43,0,57,0,90,0,97,0,98, +0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114, +0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,163,0,165,0,169,0,171,0,174,0,182,0,187,0,215, +0,247,32,19,32,28,32,29,32,57,32,58,32,164,32,168,32,169,32,170,32,172,32,180,32,184,32,189,33,34,33,144, +33,145,33,146,33,147,33,148,33,149,33,151,33,186,33,187,33,196,34,18,34,30,35,3,35,4,35,27,35,40,35,41, +35,42,35,43,35,153,35,207,35,233,35,234,35,237,35,238,35,241,35,243,35,248,35,249,35,251,35,254,36,189,37,160, +37,182,37,207,37,208,37,251,37,252,38,0,38,1,38,3,38,4,38,17,38,21,38,29,38,32,38,34,38,35,38,37, +38,42,38,44,38,46,38,47,38,56,38,57,38,63,38,64,38,66,38,90,38,91,38,92,38,93,38,94,38,95,38,101, +38,102,38,114,38,122,38,123,38,126,38,128,38,129,38,130,38,131,38,132,38,133,38,147,38,150,38,153,38,155,38,160, +38,161,38,162,38,163,38,164,38,165,38,166,38,167,38,168,38,169,38,170,38,171,38,178,38,189,38,190,38,196,38,197, +38,198,38,223,38,233,38,234,38,247,38,250,38,253,39,0,39,2,39,4,39,5,39,9,39,10,39,11,39,12,39,15, +39,17,39,18,39,19,39,20,39,21,39,22,39,29,39,33,39,49,39,68,39,70,39,76,39,78,39,83,39,84,39,85, +39,87,39,100,39,149,39,150,39,151,41,52,41,53,43,13,43,27,43,28,43,36,43,80,224,6,224,13,224,18,224,65, +224,118,224,134,224,152,224,154,224,169,224,172,224,180,224,183,224,187,224,207,224,216,224,223,224,228,225,49,225,60,225,64, +225,82,225,99,225,105,225,109,225,123,225,133,225,143,225,155,225,168,225,176,225,188,225,196,225,200,225,211,225,213,225,215, +225,237,225,243,225,246,225,254,226,9,226,34,226,45,226,61,226,137,226,156,226,183,226,187,226,197,226,202,226,206,226,235, +227,30,227,175,227,178,227,245,228,60,228,69,228,72,228,108,228,115,228,119,228,123,228,144,228,148,228,165,228,173,228,176, +228,179,228,204,228,222,228,230,228,235,228,237,228,238,229,3,229,37,229,47,229,79,229,88,229,111,229,116,229,135,229,143, +229,154,229,157,229,161,229,170,229,175,229,180,240,2,240,3,240,5,240,6,240,14,240,19,240,20,240,21,240,22,240,25, +240,26,240,27,240,28,240,29,240,30,240,62,240,64,240,68,240,69,240,70,240,78,240,91,240,92,240,93,240,94,240,102, +240,103,240,104,240,105,240,110,240,126,240,128,240,134,240,135,240,136,240,137,240,138,240,139,240,142,240,145,240,149,240,150, +240,151,240,152,240,158,240,161,240,162,240,174,240,178,240,206,240,209,240,222,240,224,240,227,240,228,240,229,240,230,240,238, +240,244,240,245,240,246,240,247,240,254,241,7,241,8,241,11,241,12,241,14,241,17,241,18,241,20,241,21,241,28,241,29, +241,30,241,34,241,35,241,39,241,40,241,41,241,42,241,46,241,53,241,58,241,62,241,70,241,71,241,78,241,84,241,85, +241,89,241,94,241,101,241,120,241,131,241,136,241,142,241,144,241,147,241,149,241,150,241,151,241,153,241,157,241,174,241,176, +241,177,241,179,241,187,241,201,241,206,241,216,241,217,241,218,241,219,241,222,241,230,241,236,241,246,241,247,241,249,241,250, +241,254,242,1,242,7,242,11,242,30,242,45,242,54,242,57,242,73,242,74,242,78,242,80,242,93,242,108,242,119,242,120, +242,122,242,123,242,131,242,139,242,140,242,141,242,142,242,145,242,146,242,149,242,154,242,156,242,158,242,164,242,168,242,182, +242,183,242,185,242,186,242,187,242,188,242,189,242,190,242,192,242,194,242,195,242,206,242,211,242,212,242,220,242,229,242,231, +242,234,242,237,242,242,242,246,242,249,242,254,243,5,243,12,243,28,243,30,243,40,243,50,243,56,243,91,243,93,243,96, +243,99,243,129,243,130,243,135,243,144,243,165,243,191,243,193,243,197,243,201,243,207,243,209,243,221,243,224,243,229,243,237, +243,251,243,253,243,255,244,6,244,16,244,34,244,36,244,37,244,52,244,54,244,58,244,60,244,63,244,65,244,67,244,69, +244,71,244,75,244,78,244,80,244,83,244,88,244,93,244,95,244,98,244,102,244,109,244,114,244,116,244,121,244,125,244,127, +244,130,244,135,244,139,244,142,244,148,244,151,244,158,244,161,244,173,244,179,244,186,244,190,244,194,244,196,244,198,244,206, +244,211,244,219,244,223,244,227,244,230,245,9,245,43,245,44,245,48,245,49,245,53,245,54,245,64,245,65,245,145,245,157, +245,162,245,167,245,177,245,180,245,184,245,189,245,197,245,203,245,206,245,210,245,215,245,218,245,220,245,223,245,225,245,228, +245,231,245,235,245,238,245,253,246,1,246,4,246,16,246,19,246,25,246,31,246,33,246,37,246,42,246,48,246,55,246,60, +246,65,246,68,246,71,246,74,246,79,246,81,246,85,246,88,246,94,246,98,246,102,246,107,246,109,246,111,246,116,246,118, +246,121,246,124,246,127,246,132,246,137,246,150,246,155,246,161,246,167,246,169,246,173,246,183,246,187,246,190,246,192,246,196, +246,200,246,207,246,209,246,211,246,213,246,215,246,217,246,222,246,227,246,230,246,232,246,237,246,242,246,250,246,252,247,0, +247,12,247,14,247,21,247,23,247,30,247,34,247,41,247,43,247,47,247,61,247,64,247,67,247,71,247,77,247,83,247,86, +247,91,247,95,247,105,247,108,247,112,247,115,247,125,247,129,247,132,247,136,247,140,247,148,247,150,247,156,247,160,247,162, +247,166,247,171,247,174,247,182,247,186,247,189,247,192,247,194,247,197,247,202,247,206,247,208,247,210,247,218,247,230,247,236, +247,239,247,243,247,245,247,247,247,251,248,2,248,7,248,10,248,11,248,12,248,13,248,16,248,18,248,22,248,24,248,29, +248,42,248,47,248,62,248,74,248,76,248,80,248,83,248,94,248,99,248,109,248,121,248,125,248,130,248,135,248,145,248,151, +248,193,248,204,248,215,248,217,248,229,248,239,248,255,255,255,0,0,0,33,0,35,0,42,0,48,0,60,0,97,0,98, +0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114, +0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,163,0,165,0,169,0,171,0,174,0,182,0,187,0,215, +0,247,32,19,32,28,32,29,32,57,32,58,32,164,32,168,32,169,32,170,32,172,32,180,32,184,32,189,33,34,33,144, +33,145,33,146,33,147,33,148,33,149,33,151,33,186,33,187,33,196,34,18,34,30,35,3,35,4,35,27,35,40,35,41, +35,42,35,43,35,153,35,207,35,233,35,234,35,237,35,238,35,241,35,243,35,248,35,249,35,251,35,254,36,189,37,160, +37,182,37,207,37,208,37,251,37,252,38,0,38,1,38,3,38,4,38,17,38,21,38,29,38,32,38,34,38,35,38,37, +38,42,38,44,38,46,38,47,38,56,38,57,38,63,38,64,38,66,38,90,38,91,38,92,38,93,38,94,38,95,38,101, +38,102,38,114,38,122,38,123,38,126,38,128,38,129,38,130,38,131,38,132,38,133,38,147,38,150,38,153,38,155,38,160, +38,161,38,162,38,163,38,164,38,165,38,166,38,167,38,168,38,169,38,170,38,171,38,178,38,189,38,190,38,196,38,197, +38,198,38,223,38,233,38,234,38,247,38,250,38,253,39,0,39,2,39,4,39,5,39,9,39,10,39,11,39,12,39,15, +39,17,39,18,39,19,39,20,39,21,39,22,39,29,39,33,39,49,39,68,39,70,39,76,39,78,39,83,39,84,39,85, +39,87,39,100,39,149,39,150,39,151,41,52,41,53,43,13,43,27,43,28,43,36,43,80,224,5,224,13,224,18,224,63, +224,89,224,133,224,151,224,154,224,169,224,172,224,180,224,183,224,187,224,207,224,216,224,223,224,227,225,49,225,57,225,64, +225,82,225,99,225,105,225,109,225,123,225,132,225,143,225,154,225,168,225,176,225,188,225,196,225,200,225,211,225,213,225,215, +225,237,225,243,225,246,225,254,226,9,226,33,226,45,226,61,226,137,226,156,226,183,226,187,226,197,226,202,226,205,226,235, +227,30,227,175,227,177,227,245,228,60,228,69,228,71,228,108,228,115,228,118,228,122,228,144,228,148,228,165,228,168,228,175, +228,179,228,181,228,206,228,224,228,232,228,237,228,238,228,239,229,7,229,39,229,50,229,81,229,90,229,113,229,118,229,137, +229,145,229,156,229,160,229,169,229,175,229,180,240,0,240,3,240,4,240,6,240,7,240,16,240,20,240,21,240,22,240,23, +240,26,240,27,240,28,240,29,240,30,240,33,240,64,240,65,240,69,240,70,240,71,240,80,240,92,240,93,240,94,240,96, +240,103,240,104,240,105,240,106,240,112,240,128,240,131,240,135,240,136,240,137,240,138,240,139,240,141,240,144,240,147,240,150, +240,151,240,152,240,156,240,160,240,162,240,163,240,176,240,192,240,208,240,214,240,224,240,226,240,228,240,229,240,230,240,231, +240,240,240,245,240,246,240,247,240,248,241,0,241,8,241,9,241,12,241,13,241,16,241,18,241,20,241,21,241,24,241,29, +241,30,241,32,241,35,241,36,241,40,241,41,241,42,241,43,241,48,241,55,241,61,241,64,241,71,241,72,241,80,241,85, +241,86,241,91,241,96,241,117,241,130,241,133,241,142,241,144,241,145,241,149,241,150,241,151,241,153,241,156,241,171,241,176, +241,177,241,178,241,184,241,192,241,205,241,216,241,217,241,218,241,219,241,220,241,224,241,234,241,246,241,247,241,248,241,250, +241,251,242,0,242,4,242,10,242,23,242,33,242,51,242,56,242,64,242,74,242,77,242,80,242,81,242,108,242,113,242,120, +242,121,242,123,242,131,242,139,242,140,242,141,242,142,242,144,242,146,242,149,242,154,242,156,242,157,242,160,242,167,242,180, +242,183,242,185,242,186,242,187,242,188,242,189,242,190,242,192,242,193,242,195,242,199,242,208,242,212,242,219,242,229,242,231, +242,234,242,237,242,241,242,245,242,249,242,254,243,2,243,9,243,28,243,30,243,40,243,50,243,55,243,88,243,93,243,96, +243,98,243,129,243,130,243,134,243,144,243,165,243,190,243,193,243,197,243,201,243,205,243,209,243,221,243,224,243,229,243,237, +243,250,243,253,243,255,244,6,244,16,244,34,244,36,244,37,244,50,244,54,244,57,244,60,244,63,244,65,244,67,244,69, +244,71,244,75,244,78,244,80,244,83,244,88,244,92,244,95,244,97,244,102,244,104,244,112,244,116,244,119,244,125,244,126, +244,129,244,132,244,139,244,141,244,144,244,150,244,158,244,161,244,173,244,179,244,184,244,189,244,192,244,196,244,198,244,205, +244,211,244,214,244,222,244,226,244,230,244,250,245,21,245,44,245,45,245,49,245,50,245,54,245,55,245,65,245,66,245,147, +245,159,245,164,245,170,245,179,245,182,245,186,245,191,245,199,245,205,245,208,245,215,245,218,245,220,245,222,245,225,245,228, +245,231,245,235,245,238,245,252,246,1,246,4,246,16,246,19,246,25,246,31,246,33,246,36,246,41,246,46,246,55,246,59, +246,65,246,68,246,71,246,74,246,79,246,81,246,83,246,88,246,93,246,98,246,100,246,105,246,109,246,111,246,116,246,118, +246,120,246,123,246,127,246,129,246,135,246,150,246,152,246,160,246,167,246,169,246,173,246,182,246,187,246,190,246,192,246,195, +246,200,246,207,246,209,246,211,246,213,246,215,246,217,246,221,246,226,246,230,246,232,246,236,246,240,246,250,246,252,246,255, +247,11,247,14,247,20,247,23,247,30,247,34,247,40,247,43,247,46,247,59,247,64,247,67,247,71,247,77,247,81,247,86, +247,90,247,94,247,105,247,107,247,111,247,114,247,124,247,128,247,131,247,134,247,140,247,147,247,150,247,156,247,159,247,162, +247,164,247,169,247,173,247,181,247,185,247,189,247,191,247,194,247,196,247,201,247,204,247,208,247,210,247,215,247,228,247,236, +247,239,247,242,247,245,247,247,247,250,248,2,248,5,248,10,248,11,248,12,248,13,248,15,248,18,248,21,248,24,248,29, +248,39,248,47,248,62,248,74,248,76,248,80,248,83,248,94,248,99,248,109,248,121,248,123,248,129,248,132,248,145,248,151, +248,192,248,204,248,215,248,217,248,229,248,239,248,255,255,255,255,224,255,223,255,219,255,215,255,213,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,43,32,37,32,33,31,245,31,222, +31,208,31,192,31,191,31,177,31,175,31,168,31,166,31,163,0,0,31,135,31,129,31,126,31,50,31,43,31,40,31,23, +31,7,31,2,30,255,30,242,30,234,30,225,30,215,30,203,30,196,30,185,30,178,30,175,30,165,30,164,30,163,30,142, +30,137,30,135,30,128,30,118,30,95,30,85,30,70,29,251,29,233,29,207,29,204,29,195,29,191,29,189,29,161,29,111, +28,223,28,222,28,156,28,86,28,78,28,77,28,42,28,36,28,34,28,32,28,12,28,9,27,249,27,247,27,246,27,244, +27,243,27,242,27,241,27,240,27,239,0,0,27,238,27,235,27,234,27,232,27,231,27,230,27,229,27,228,27,227,27,226, +27,225,27,223,27,216,27,212,27,208,17,133,0,0,17,132,0,0,17,131,17,130,0,0,17,129,0,0,17,128,0,0, +0,0,17,126,0,0,17,125,17,123,0,0,17,121,0,0,0,0,17,119,17,118,0,0,0,0,17,116,17,115,0,0, +17,114,0,0,17,113,17,112,17,111,17,109,0,0,0,0,17,107,0,0,17,106,17,105,17,104,17,103,0,0,0,0, +17,101,17,98,17,97,0,0,17,96,17,95,17,82,17,81,17,77,17,76,17,75,0,0,0,0,0,0,17,72,17,71, +0,0,0,0,0,0,17,68,17,67,0,0,17,66,0,0,17,65,17,64,0,0,0,0,0,0,17,58,0,0,17,57, +17,56,0,0,17,55,0,0,17,54,0,0,17,53,17,52,17,51,17,49,17,48,0,0,17,47,17,46,0,0,17,45, +17,44,17,43,17,28,17,19,17,18,0,0,0,0,17,10,17,9,0,0,17,8,17,7,17,5,16,248,16,247,0,0, +16,246,16,242,16,238,16,235,16,226,0,0,16,225,0,0,16,224,16,223,16,220,16,211,0,0,16,210,0,0,16,209, +16,208,16,206,16,204,16,193,16,191,16,186,16,185,16,179,0,0,16,176,0,0,16,174,16,160,16,156,0,0,16,155, +0,0,0,0,16,139,0,0,16,138,0,0,16,136,0,0,0,0,16,128,0,0,16,126,16,125,16,123,16,112,0,0, +16,110,0,0,16,109,0,0,16,108,0,0,0,0,16,105,0,0,16,101,16,100,0,0,16,93,16,85,16,84,16,82, +16,80,16,77,16,75,16,73,16,69,16,66,16,63,16,48,16,47,16,38,0,0,16,24,15,249,15,248,15,246,15,245, +0,0,0,0,15,211,15,203,15,183,15,159,15,158,15,155,15,152,15,149,15,148,15,137,15,135,15,131,15,124,15,112, +0,0,15,109,15,103,15,94,15,77,15,76,0,0,15,63,15,62,15,60,15,59,15,57,15,56,15,55,15,54,15,53, +15,50,15,48,15,47,15,45,15,41,15,38,15,37,15,36,15,33,15,32,15,30,15,29,15,27,0,0,15,23,15,22, +15,21,15,18,15,17,15,16,15,15,15,9,0,0,14,251,14,246,14,242,14,240,14,239,14,238,14,237,14,231,14,227, +14,225,14,223,14,221,0,0,14,199,14,188,0,0,14,187,0,0,14,186,0,0,14,185,0,0,14,184,14,183,14,182, +14,181,14,179,14,178,14,177,14,176,14,175,14,174,14,173,14,172,14,168,14,166,14,165,14,164,14,163,14,161,14,159, +14,156,14,154,14,141,14,138,14,136,14,125,14,123,14,118,14,113,14,112,14,110,14,107,14,104,14,98,14,95,14,91, +14,89,14,87,14,85,14,81,14,80,14,79,14,77,14,73,14,70,14,69,14,67,14,66,14,65,14,61,14,60,14,59, +14,58,14,56,14,55,14,53,14,41,14,40,14,36,14,31,14,30,14,27,14,19,14,16,14,14,14,13,14,11,14,8, +14,2,14,1,14,0,13,255,13,254,13,253,13,250,13,247,13,245,13,244,13,241,13,239,13,232,13,231,13,229,13,219, +13,218,13,213,13,212,13,206,13,203,13,198,13,197,13,195,13,184,13,182,13,180,13,177,13,172,13,169,13,167,13,164, +13,162,13,153,13,152,13,150,13,149,13,141,13,139,13,138,13,137,13,134,13,128,13,127,13,122,13,120,13,119,13,118, +13,116,13,115,13,109,13,107,13,105,13,104,13,103,13,102,13,99,13,98,13,97,13,96,13,92,13,83,13,78,13,76, +13,74,13,73,13,72,13,70,13,64,13,62,0,0,0,0,0,0,13,57,13,56,13,55,13,53,13,52,13,48,13,39, +13,35,13,21,13,10,13,9,13,6,13,4,12,250,12,246,12,237,12,226,12,225,12,222,12,221,12,212,12,207,12,167, +12,157,12,147,12,146,0,0,12,125,12,110,0,1,0,0,0,0,0,0,0,0,0,0,5,170,5,170,5,170,5,170, +5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170, +5,170,5,170,5,170,5,170,5,170,5,170,6,58,6,60,6,90,6,18,6,130,6,78,6,14,5,168,6,218,5,218, +6,16,6,16,6,4,6,4,6,52,6,30,6,34,6,62,6,20,6,238,6,254,6,22,6,92,5,182,5,184,5,180, +5,182,6,120,6,120,6,128,5,204,5,128,5,204,5,170,6,170,5,218,5,218,6,54,5,224,5,140,5,140,6,158, +5,112,5,130,5,124,5,114,5,122,5,108,6,74,6,32,5,108,5,108,5,80,5,228,6,108,5,148,5,94,5,182, +5,84,5,140,5,138,5,210,5,130,6,166,6,154,5,178,6,154,5,118,6,142,6,150,6,144,6,110,6,118,6,112, +6,112,6,118,6,104,5,144,5,204,5,198,5,198,6,40,6,44,6,44,6,32,6,34,6,34,5,0,5,178,5,162, +5,160,5,158,6,54,6,40,6,44,6,40,6,32,6,28,6,32,5,104,5,182,4,240,6,42,5,32,5,58,5,156, +5,156,5,156,5,146,5,154,5,144,5,152,5,152,5,70,5,68,5,148,5,114,5,220,6,56,6,34,6,40,5,18, +6,22,5,230,6,42,6,20,5,240,5,2,5,0,4,254,5,48,5,0,6,10,5,122,5,122,5,158,5,228,5,224, +4,160,4,158,4,158,4,156,5,226,5,234,4,72,5,128,5,126,4,144,5,120,4,72,4,70,4,50,4,48,4,124, +4,54,4,182,5,178,5,134,5,130,5,114,5,148,5,146,4,228,4,106,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,3,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,8,0,0,3,174,0,0,0,0,4,160,0,0,4,56,0,0,4,162,4,166, +0,0,4,26,0,0,0,0,4,144,0,0,4,22,4,18,0,0,0,0,3,182,3,182,0,0,0,0,3,58,0,0, +3,52,0,0,0,0,0,0,0,0,4,10,4,10,0,0,3,106,0,0,0,0,0,0,0,0,3,180,3,114,0,0, +0,0,0,0,3,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,3,134,3,138,0,0,0,0,4,52, +3,210,3,220,0,0,0,0,4,64,0,0,3,168,0,0,0,0,4,60,3,106,3,106,0,0,3,50,0,0,0,0, +3,100,0,0,2,218,0,0,2,196,0,0,0,0,0,0,0,0,0,0,3,138,0,0,0,0,2,182,0,0,0,0, +0,0,0,0,0,0,0,0,3,250,3,246,0,0,0,0,3,82,0,0,0,0,0,0,0,0,0,0,3,212,0,0, +0,0,0,0,0,0,0,0,3,122,0,0,3,72,0,0,0,0,0,0,0,0,3,114,0,0,2,134,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,122,0,0,3,124,0,0,0,0,0,0,3,128,0,0,3,200, +2,230,0,0,3,120,0,0,3,118,0,0,2,66,2,68,0,0,2,188,0,0,0,0,0,0,0,0,3,102,0,0, +3,100,0,0,3,98,0,0,3,96,2,116,0,0,3,92,0,0,0,0,3,124,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,96,0,0,0,0,0,0,0,0,0,0,2,156, +2,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,102, +0,0,0,0,0,0,0,0,0,0,2,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,72,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2,156,0,0,0,0,1,112,0,0,1,110,0,0,1,102,0,0,1,92,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,158,0,138,0,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,52,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,17,0,18,0,19,0,20, +0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36, +0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,142,0,157,1,136,1,137,1,138, +1,143,1,144,1,147,1,149,1,150,1,155,1,159,1,169,1,170,1,171,1,187,1,192,1,193,1,194,1,195,1,196, +1,197,1,198,1,200,1,201,1,202,1,205,1,206,1,207,1,211,1,212,1,213,1,214,1,218,1,225,1,229,1,235, +1,236,1,243,1,244,1,255,2,6,2,20,2,22,2,26,2,34,2,44,2,45,2,47,2,52,2,53,2,54,2,58, +2,60,2,66,2,67,2,68,2,71,2,72,2,73,2,74,2,78,2,79,2,81,2,83,2,86,2,110,2,116,2,118, +2,121,2,124,2,129,2,130,2,131,2,132,2,133,2,134,2,135,2,136,2,143,2,144,2,151,2,152,2,158,2,165, +2,170,2,186,2,189,2,194,2,201,2,203,2,215,2,218,2,224,2,225,2,226,2,227,2,228,2,229,2,230,2,231, +2,232,2,233,2,234,2,235,2,252,2,254,3,1,3,2,3,4,3,9,3,10,3,11,3,12,3,20,3,22,3,23, +3,36,3,38,3,39,3,40,3,41,3,43,3,55,3,57,3,58,3,59,3,61,3,63,3,69,3,79,3,80,3,81, +3,82,3,83,3,84,3,86,3,91,3,93,3,94,3,104,3,110,3,114,3,118,3,120,3,121,3,122,3,123,3,124, +3,130,3,136,3,149,3,168,3,217,3,223,3,224,3,225,3,226,3,227,3,228,3,229,3,234,3,238,4,18,4,95, +4,96,4,126,4,147,4,149,4,157,4,163,4,164,4,175,4,182,4,193,4,194,4,197,4,200,4,203,4,207,4,216, +4,225,4,233,4,245,4,252,5,11,5,35,5,37,5,44,5,49,5,51,5,54,0,12,0,0,0,0,47,248,0,0, +0,0,0,0,3,254,0,0,0,33,0,0,0,33,0,0,0,1,0,0,0,35,0,0,0,37,0,0,0,2,0,0, +0,42,0,0,0,43,0,0,0,5,0,0,0,48,0,0,0,57,0,0,0,7,0,0,0,60,0,0,0,90,0,0, +0,17,0,0,0,97,0,0,0,97,0,0,0,22,0,0,0,98,0,0,0,98,0,0,0,23,0,0,0,99,0,0, +0,99,0,0,0,24,0,0,0,100,0,0,0,100,0,0,0,25,0,0,0,101,0,0,0,101,0,0,0,26,0,0, +0,102,0,0,0,102,0,0,0,27,0,0,0,103,0,0,0,103,0,0,0,28,0,0,0,104,0,0,0,104,0,0, +0,29,0,0,0,105,0,0,0,105,0,0,0,30,0,0,0,106,0,0,0,106,0,0,0,31,0,0,0,107,0,0, +0,107,0,0,0,32,0,0,0,108,0,0,0,108,0,0,0,33,0,0,0,109,0,0,0,109,0,0,0,34,0,0, +0,110,0,0,0,110,0,0,0,35,0,0,0,111,0,0,0,111,0,0,0,36,0,0,0,112,0,0,0,112,0,0, +0,37,0,0,0,113,0,0,0,113,0,0,0,38,0,0,0,114,0,0,0,114,0,0,0,39,0,0,0,115,0,0, +0,115,0,0,0,40,0,0,0,116,0,0,0,116,0,0,0,41,0,0,0,117,0,0,0,117,0,0,0,42,0,0, +0,118,0,0,0,118,0,0,0,43,0,0,0,119,0,0,0,119,0,0,0,44,0,0,0,120,0,0,0,120,0,0, +0,45,0,0,0,121,0,0,0,121,0,0,0,46,0,0,0,122,0,0,0,122,0,0,0,47,0,0,0,163,0,0, +0,163,0,0,2,130,0,0,0,165,0,0,0,165,0,0,2,132,0,0,0,169,0,0,0,169,0,0,2,203,0,0, +0,171,0,0,0,171,0,0,2,67,0,0,0,174,0,0,0,174,0,0,3,11,0,0,0,182,0,0,0,182,0,0, +2,189,0,0,0,187,0,0,0,187,0,0,2,68,0,0,0,215,0,0,0,215,0,0,1,144,0,0,0,247,0,0, +0,247,0,0,3,229,0,0,32,19,0,0,32,19,0,0,1,218,0,0,32,28,0,0,32,28,0,0,2,78,0,0, +32,29,0,0,32,29,0,0,2,79,0,0,32,57,0,0,32,57,0,0,2,71,0,0,32,58,0,0,32,58,0,0, +2,72,0,0,32,164,0,0,32,164,0,0,2,158,0,0,32,168,0,0,32,168,0,0,2,131,0,0,32,169,0,0, +32,169,0,0,2,134,0,0,32,170,0,0,32,170,0,0,2,215,0,0,32,172,0,0,32,172,0,0,2,129,0,0, +32,180,0,0,32,180,0,0,4,225,0,0,32,184,0,0,32,184,0,0,5,51,0,0,32,189,0,0,32,189,0,0, +2,133,0,0,33,34,0,0,33,34,0,0,3,10,0,0,33,144,0,0,33,144,0,0,1,211,0,0,33,145,0,0, +33,145,0,0,1,213,0,0,33,146,0,0,33,146,0,0,1,212,0,0,33,147,0,0,33,147,0,0,1,214,0,0, +33,148,0,0,33,148,0,0,3,79,0,0,33,149,0,0,33,149,0,0,3,80,0,0,33,151,0,0,33,151,0,0, +3,86,0,0,33,186,0,0,33,186,0,0,2,45,0,0,33,187,0,0,33,187,0,0,1,155,0,0,33,196,0,0, +33,196,0,0,2,52,0,0,34,18,0,0,34,18,0,0,1,218,0,0,34,30,0,0,34,30,0,0,3,238,0,0, +35,3,0,0,35,3,0,0,2,73,0,0,35,4,0,0,35,4,0,0,2,74,0,0,35,27,0,0,35,27,0,0, +3,1,0,0,35,40,0,0,35,40,0,0,2,86,0,0,35,41,0,0,35,41,0,0,1,201,0,0,35,42,0,0, +35,42,0,0,1,202,0,0,35,43,0,0,35,43,0,0,4,18,0,0,35,153,0,0,35,153,0,0,1,170,0,0, +35,207,0,0,35,207,0,0,1,200,0,0,35,233,0,0,35,233,0,0,1,197,0,0,35,234,0,0,35,234,0,0, +1,193,0,0,35,237,0,0,35,237,0,0,1,198,0,0,35,238,0,0,35,238,0,0,1,192,0,0,35,241,0,0, +35,241,0,0,3,63,0,0,35,243,0,0,35,243,0,0,3,2,0,0,35,248,0,0,35,248,0,0,1,195,0,0, +35,249,0,0,35,249,0,0,1,196,0,0,35,251,0,0,35,251,0,0,1,147,0,0,35,254,0,0,35,254,0,0, +2,152,0,0,36,189,0,0,36,189,0,0,3,149,0,0,37,160,0,0,37,160,0,0,2,26,0,0,37,182,0,0, +37,182,0,0,1,194,0,0,37,207,0,0,37,207,0,0,2,81,0,0,37,208,0,0,37,208,0,0,1,187,0,0, +37,251,0,0,37,251,0,0,2,26,0,0,37,252,0,0,37,252,0,0,2,26,0,0,38,0,0,0,38,0,0,0, +2,151,0,0,38,1,0,0,38,1,0,0,2,20,0,0,38,3,0,0,38,3,0,0,5,49,0,0,38,4,0,0, +38,4,0,0,4,252,0,0,38,17,0,0,38,17,0,0,2,121,0,0,38,21,0,0,38,21,0,0,5,35,0,0, +38,29,0,0,38,29,0,0,2,6,0,0,38,32,0,0,38,32,0,0,4,233,0,0,38,34,0,0,38,34,0,0, +5,37,0,0,38,35,0,0,38,35,0,0,5,11,0,0,38,37,0,0,38,37,0,0,4,157,0,0,38,42,0,0, +38,42,0,0,4,193,0,0,38,44,0,0,38,44,0,0,4,175,0,0,38,46,0,0,38,46,0,0,4,182,0,0, +38,47,0,0,38,47,0,0,4,200,0,0,38,56,0,0,38,56,0,0,4,164,0,0,38,57,0,0,38,57,0,0, +2,83,0,0,38,63,0,0,38,63,0,0,2,226,0,0,38,64,0,0,38,64,0,0,2,224,0,0,38,66,0,0, +38,66,0,0,2,225,0,0,38,90,0,0,38,90,0,0,3,120,0,0,38,91,0,0,38,91,0,0,3,123,0,0, +38,92,0,0,38,92,0,0,3,124,0,0,38,93,0,0,38,93,0,0,3,118,0,0,38,94,0,0,38,94,0,0, +3,121,0,0,38,95,0,0,38,95,0,0,3,122,0,0,38,101,0,0,38,101,0,0,1,136,0,0,38,102,0,0, +38,102,0,0,2,218,0,0,38,114,0,0,38,114,0,0,2,170,0,0,38,122,0,0,38,122,0,0,2,170,0,0, +38,123,0,0,38,123,0,0,2,170,0,0,38,126,0,0,38,126,0,0,3,238,0,0,38,128,0,0,38,128,0,0, +3,225,0,0,38,129,0,0,38,129,0,0,3,228,0,0,38,130,0,0,38,130,0,0,3,227,0,0,38,131,0,0, +38,131,0,0,3,224,0,0,38,132,0,0,38,132,0,0,3,223,0,0,38,133,0,0,38,133,0,0,3,226,0,0, +38,147,0,0,38,147,0,0,2,110,0,0,38,150,0,0,38,150,0,0,2,254,0,0,38,153,0,0,38,153,0,0, +1,149,0,0,38,155,0,0,38,155,0,0,4,126,0,0,38,160,0,0,38,160,0,0,1,225,0,0,38,161,0,0, +38,161,0,0,2,47,0,0,38,162,0,0,38,162,0,0,2,229,0,0,38,163,0,0,38,163,0,0,2,230,0,0, +38,164,0,0,38,164,0,0,2,231,0,0,38,165,0,0,38,165,0,0,2,227,0,0,38,166,0,0,38,166,0,0, +2,232,0,0,38,167,0,0,38,167,0,0,2,228,0,0,38,168,0,0,38,168,0,0,2,233,0,0,38,169,0,0, +38,169,0,0,2,234,0,0,38,170,0,0,38,170,0,0,2,81,0,0,38,171,0,0,38,171,0,0,2,81,0,0, +38,178,0,0,38,178,0,0,2,235,0,0,38,189,0,0,38,189,0,0,2,194,0,0,38,190,0,0,38,190,0,0, +3,114,0,0,38,196,0,0,38,196,0,0,5,49,0,0,38,197,0,0,38,197,0,0,4,207,0,0,38,198,0,0, +38,198,0,0,4,245,0,0,38,223,0,0,38,223,0,0,2,34,0,0,38,233,0,0,38,233,0,0,4,197,0,0, +38,234,0,0,38,234,0,0,3,217,0,0,38,247,0,0,38,247,0,0,5,44,0,0,38,250,0,0,38,250,0,0, +4,203,0,0,38,253,0,0,38,253,0,0,3,234,0,0,39,0,0,0,39,0,0,0,2,22,0,0,39,2,0,0, +39,2,0,0,2,22,0,0,39,4,0,0,39,4,0,0,2,22,0,0,39,5,0,0,39,5,0,0,2,121,0,0, +39,9,0,0,39,9,0,0,2,44,0,0,39,10,0,0,39,10,0,0,4,216,0,0,39,11,0,0,39,11,0,0, +3,4,0,0,39,12,0,0,39,12,0,0,3,9,0,0,39,15,0,0,39,15,0,0,3,69,0,0,39,17,0,0, +39,17,0,0,4,96,0,0,39,18,0,0,39,18,0,0,4,95,0,0,39,19,0,0,39,19,0,0,1,143,0,0, +39,20,0,0,39,20,0,0,1,143,0,0,39,21,0,0,39,21,0,0,1,144,0,0,39,22,0,0,39,22,0,0, +1,144,0,0,39,29,0,0,39,29,0,0,4,163,0,0,39,33,0,0,39,33,0,0,4,194,0,0,39,49,0,0, +39,49,0,0,0,5,0,0,39,68,0,0,39,68,0,0,3,57,0,0,39,70,0,0,39,70,0,0,3,57,0,0, +39,76,0,0,39,76,0,0,1,144,0,0,39,78,0,0,39,78,0,0,3,55,0,0,39,83,0,0,39,83,0,0, +0,20,0,0,39,84,0,0,39,84,0,0,0,20,0,0,39,85,0,0,39,85,0,0,0,1,0,0,39,87,0,0, +39,87,0,0,0,1,0,0,39,100,0,0,39,100,0,0,1,136,0,0,39,149,0,0,39,149,0,0,0,6,0,0, +39,150,0,0,39,150,0,0,1,218,0,0,39,151,0,0,39,151,0,0,3,229,0,0,41,52,0,0,41,52,0,0, +3,94,0,0,41,53,0,0,41,53,0,0,3,93,0,0,43,13,0,0,43,13,0,0,3,80,0,0,43,27,0,0, +43,27,0,0,3,130,0,0,43,28,0,0,43,28,0,0,3,130,0,0,43,36,0,0,43,36,0,0,2,81,0,0, +43,80,0,0,43,80,0,0,1,137,0,0,224,5,0,0,224,6,0,0,0,48,0,0,224,13,0,0,224,13,0,0, +0,50,0,0,224,18,0,0,224,18,0,0,0,51,0,0,224,63,0,0,224,65,0,0,0,52,0,0,224,89,0,0, +224,118,0,0,0,55,0,0,224,133,0,0,224,134,0,0,0,85,0,0,224,151,0,0,224,152,0,0,0,87,0,0, +224,154,0,0,224,154,0,0,0,89,0,0,224,169,0,0,224,169,0,0,0,90,0,0,224,172,0,0,224,172,0,0, +0,91,0,0,224,180,0,0,224,180,0,0,0,92,0,0,224,183,0,0,224,183,0,0,0,93,0,0,224,187,0,0, +224,187,0,0,0,94,0,0,224,207,0,0,224,207,0,0,5,54,0,0,224,216,0,0,224,216,0,0,0,95,0,0, +224,223,0,0,224,223,0,0,0,96,0,0,224,227,0,0,224,228,0,0,0,97,0,0,225,49,0,0,225,49,0,0, +0,99,0,0,225,57,0,0,225,60,0,0,0,100,0,0,225,64,0,0,225,64,0,0,0,104,0,0,225,82,0,0, +225,82,0,0,0,105,0,0,225,99,0,0,225,99,0,0,0,106,0,0,225,105,0,0,225,105,0,0,0,107,0,0, +225,109,0,0,225,109,0,0,0,108,0,0,225,123,0,0,225,123,0,0,0,109,0,0,225,132,0,0,225,133,0,0, +0,110,0,0,225,143,0,0,225,143,0,0,0,112,0,0,225,154,0,0,225,155,0,0,0,113,0,0,225,168,0,0, +225,168,0,0,0,115,0,0,225,176,0,0,225,176,0,0,0,116,0,0,225,188,0,0,225,188,0,0,0,117,0,0, +225,196,0,0,225,196,0,0,0,118,0,0,225,200,0,0,225,200,0,0,0,119,0,0,225,211,0,0,225,211,0,0, +0,120,0,0,225,213,0,0,225,213,0,0,0,121,0,0,225,215,0,0,225,215,0,0,0,122,0,0,225,237,0,0, +225,237,0,0,0,123,0,0,225,243,0,0,225,243,0,0,0,124,0,0,225,246,0,0,225,246,0,0,0,125,0,0, +225,254,0,0,225,254,0,0,0,126,0,0,226,9,0,0,226,9,0,0,0,127,0,0,226,33,0,0,226,34,0,0, +0,128,0,0,226,45,0,0,226,45,0,0,0,130,0,0,226,61,0,0,226,61,0,0,0,131,0,0,226,137,0,0, +226,137,0,0,0,132,0,0,226,156,0,0,226,156,0,0,0,133,0,0,226,183,0,0,226,183,0,0,0,134,0,0, +226,187,0,0,226,187,0,0,0,135,0,0,226,197,0,0,226,197,0,0,0,136,0,0,226,202,0,0,226,202,0,0, +0,137,0,0,226,205,0,0,226,206,0,0,0,138,0,0,226,235,0,0,226,235,0,0,0,140,0,0,227,30,0,0, +227,30,0,0,0,141,0,0,227,175,0,0,227,175,0,0,0,142,0,0,227,177,0,0,227,178,0,0,0,143,0,0, +227,245,0,0,227,245,0,0,0,145,0,0,228,60,0,0,228,60,0,0,0,146,0,0,228,69,0,0,228,69,0,0, +0,147,0,0,228,71,0,0,228,72,0,0,0,148,0,0,228,108,0,0,228,108,0,0,0,150,0,0,228,115,0,0, +228,115,0,0,0,151,0,0,228,118,0,0,228,119,0,0,0,152,0,0,228,122,0,0,228,123,0,0,0,154,0,0, +228,144,0,0,228,144,0,0,0,156,0,0,228,148,0,0,228,148,0,0,0,157,0,0,228,165,0,0,228,165,0,0, +0,158,0,0,228,168,0,0,228,173,0,0,0,159,0,0,228,175,0,0,228,176,0,0,0,165,0,0,228,179,0,0, +228,179,0,0,0,167,0,0,228,181,0,0,228,204,0,0,0,168,0,0,228,206,0,0,228,222,0,0,0,192,0,0, +228,224,0,0,228,230,0,0,0,209,0,0,228,232,0,0,228,235,0,0,0,216,0,0,228,237,0,0,228,237,0,0, +0,220,0,0,228,238,0,0,228,238,0,0,0,157,0,0,228,239,0,0,229,3,0,0,0,221,0,0,229,7,0,0, +229,37,0,0,0,242,0,0,229,39,0,0,229,47,0,0,1,17,0,0,229,50,0,0,229,79,0,0,1,26,0,0, +229,81,0,0,229,88,0,0,1,56,0,0,229,90,0,0,229,111,0,0,1,64,0,0,229,113,0,0,229,116,0,0, +1,86,0,0,229,118,0,0,229,135,0,0,1,90,0,0,229,137,0,0,229,143,0,0,1,108,0,0,229,145,0,0, +229,154,0,0,1,115,0,0,229,156,0,0,229,157,0,0,1,125,0,0,229,160,0,0,229,161,0,0,1,127,0,0, +229,169,0,0,229,170,0,0,1,129,0,0,229,175,0,0,229,175,0,0,1,131,0,0,229,180,0,0,229,180,0,0, +1,132,0,0,240,0,0,0,240,2,0,0,1,133,0,0,240,3,0,0,240,3,0,0,2,44,0,0,240,4,0,0, +240,5,0,0,1,136,0,0,240,6,0,0,240,6,0,0,1,137,0,0,240,7,0,0,240,14,0,0,1,138,0,0, +240,16,0,0,240,19,0,0,1,146,0,0,240,20,0,0,240,20,0,0,3,61,0,0,240,21,0,0,240,21,0,0, +1,150,0,0,240,22,0,0,240,22,0,0,2,135,0,0,240,23,0,0,240,25,0,0,1,151,0,0,240,26,0,0, +240,26,0,0,3,81,0,0,240,27,0,0,240,27,0,0,3,84,0,0,240,28,0,0,240,28,0,0,1,154,0,0, +240,29,0,0,240,29,0,0,2,116,0,0,240,30,0,0,240,30,0,0,1,155,0,0,240,33,0,0,240,62,0,0, +1,156,0,0,240,64,0,0,240,64,0,0,3,69,0,0,240,65,0,0,240,68,0,0,1,186,0,0,240,69,0,0, +240,69,0,0,2,124,0,0,240,70,0,0,240,70,0,0,2,121,0,0,240,71,0,0,240,78,0,0,1,190,0,0, +240,80,0,0,240,91,0,0,1,198,0,0,240,92,0,0,240,92,0,0,1,205,0,0,240,93,0,0,240,93,0,0, +1,206,0,0,240,94,0,0,240,94,0,0,1,210,0,0,240,96,0,0,240,102,0,0,1,211,0,0,240,103,0,0, +240,103,0,0,0,6,0,0,240,104,0,0,240,104,0,0,1,218,0,0,240,105,0,0,240,105,0,0,0,5,0,0, +240,106,0,0,240,110,0,0,1,219,0,0,240,112,0,0,240,126,0,0,1,224,0,0,240,128,0,0,240,128,0,0, +1,239,0,0,240,131,0,0,240,134,0,0,1,240,0,0,240,135,0,0,240,135,0,0,2,143,0,0,240,136,0,0, +240,136,0,0,2,144,0,0,240,137,0,0,240,137,0,0,1,244,0,0,240,138,0,0,240,138,0,0,1,136,0,0, +240,139,0,0,240,139,0,0,1,245,0,0,240,141,0,0,240,142,0,0,1,246,0,0,240,144,0,0,240,145,0,0, +1,248,0,0,240,147,0,0,240,149,0,0,1,250,0,0,240,150,0,0,240,150,0,0,2,26,0,0,240,151,0,0, +240,151,0,0,1,169,0,0,240,152,0,0,240,152,0,0,1,253,0,0,240,156,0,0,240,158,0,0,1,254,0,0, +240,160,0,0,240,161,0,0,2,1,0,0,240,162,0,0,240,162,0,0,2,58,0,0,240,163,0,0,240,174,0,0, +2,3,0,0,240,176,0,0,240,178,0,0,2,15,0,0,240,192,0,0,240,206,0,0,2,18,0,0,240,208,0,0, +240,209,0,0,2,33,0,0,240,214,0,0,240,222,0,0,2,35,0,0,240,224,0,0,240,224,0,0,2,44,0,0, +240,226,0,0,240,227,0,0,2,45,0,0,240,228,0,0,240,228,0,0,4,149,0,0,240,229,0,0,240,229,0,0, +1,229,0,0,240,230,0,0,240,230,0,0,1,243,0,0,240,231,0,0,240,238,0,0,2,47,0,0,240,240,0,0, +240,244,0,0,2,55,0,0,240,245,0,0,240,245,0,0,3,59,0,0,240,246,0,0,240,246,0,0,2,136,0,0, +240,247,0,0,240,247,0,0,2,165,0,0,240,248,0,0,240,254,0,0,2,60,0,0,241,0,0,0,241,7,0,0, +2,67,0,0,241,8,0,0,241,8,0,0,3,91,0,0,241,9,0,0,241,11,0,0,2,75,0,0,241,12,0,0, +241,12,0,0,2,81,0,0,241,13,0,0,241,14,0,0,2,78,0,0,241,16,0,0,241,17,0,0,2,80,0,0, +241,18,0,0,241,18,0,0,3,104,0,0,241,20,0,0,241,20,0,0,1,235,0,0,241,21,0,0,241,21,0,0, +1,236,0,0,241,24,0,0,241,28,0,0,2,82,0,0,241,29,0,0,241,29,0,0,1,159,0,0,241,30,0,0, +241,30,0,0,2,87,0,0,241,32,0,0,241,34,0,0,2,88,0,0,241,35,0,0,241,35,0,0,1,244,0,0, +241,36,0,0,241,39,0,0,2,91,0,0,241,40,0,0,241,40,0,0,0,20,0,0,241,41,0,0,241,41,0,0, +2,95,0,0,241,42,0,0,241,42,0,0,0,1,0,0,241,43,0,0,241,46,0,0,2,96,0,0,241,48,0,0, +241,53,0,0,2,100,0,0,241,55,0,0,241,58,0,0,2,106,0,0,241,61,0,0,241,62,0,0,2,110,0,0, +241,64,0,0,241,70,0,0,2,112,0,0,241,71,0,0,241,71,0,0,2,118,0,0,241,72,0,0,241,78,0,0, +2,119,0,0,241,80,0,0,241,84,0,0,2,126,0,0,241,85,0,0,241,85,0,0,0,3,0,0,241,86,0,0, +241,89,0,0,2,131,0,0,241,91,0,0,241,94,0,0,2,135,0,0,241,96,0,0,241,101,0,0,2,139,0,0, +241,117,0,0,241,120,0,0,2,145,0,0,241,130,0,0,241,131,0,0,2,149,0,0,241,133,0,0,241,136,0,0, +2,151,0,0,241,142,0,0,241,142,0,0,3,83,0,0,241,144,0,0,241,144,0,0,3,82,0,0,241,145,0,0, +241,147,0,0,2,155,0,0,241,149,0,0,241,149,0,0,2,158,0,0,241,150,0,0,241,150,0,0,2,66,0,0, +241,151,0,0,241,151,0,0,2,159,0,0,241,153,0,0,241,153,0,0,2,160,0,0,241,156,0,0,241,157,0,0, +2,161,0,0,241,171,0,0,241,174,0,0,2,163,0,0,241,176,0,0,241,176,0,0,2,167,0,0,241,177,0,0, +241,177,0,0,3,58,0,0,241,178,0,0,241,179,0,0,2,168,0,0,241,184,0,0,241,187,0,0,2,170,0,0, +241,192,0,0,241,201,0,0,2,174,0,0,241,205,0,0,241,206,0,0,2,184,0,0,241,216,0,0,241,216,0,0, +2,186,0,0,241,217,0,0,241,217,0,0,2,186,0,0,241,218,0,0,241,218,0,0,2,187,0,0,241,219,0,0, +241,219,0,0,2,81,0,0,241,220,0,0,241,222,0,0,2,188,0,0,241,224,0,0,241,230,0,0,2,191,0,0, +241,234,0,0,241,236,0,0,2,198,0,0,241,246,0,0,241,246,0,0,2,201,0,0,241,247,0,0,241,247,0,0, +2,201,0,0,241,248,0,0,241,249,0,0,2,202,0,0,241,250,0,0,241,250,0,0,0,21,0,0,241,251,0,0, +241,254,0,0,2,204,0,0,242,0,0,0,242,1,0,0,2,208,0,0,242,4,0,0,242,7,0,0,2,210,0,0, +242,10,0,0,242,11,0,0,2,214,0,0,242,23,0,0,242,30,0,0,2,216,0,0,242,33,0,0,242,45,0,0, +2,224,0,0,242,51,0,0,242,54,0,0,2,237,0,0,242,56,0,0,242,57,0,0,2,241,0,0,242,64,0,0, +242,73,0,0,2,243,0,0,242,74,0,0,242,74,0,0,2,252,0,0,242,77,0,0,242,78,0,0,2,253,0,0, +242,80,0,0,242,80,0,0,3,2,0,0,242,81,0,0,242,93,0,0,2,255,0,0,242,108,0,0,242,108,0,0, +3,12,0,0,242,113,0,0,242,119,0,0,3,13,0,0,242,120,0,0,242,120,0,0,3,20,0,0,242,121,0,0, +242,122,0,0,3,20,0,0,242,123,0,0,242,123,0,0,3,168,0,0,242,131,0,0,242,131,0,0,1,255,0,0, +242,139,0,0,242,139,0,0,3,22,0,0,242,140,0,0,242,140,0,0,3,22,0,0,242,141,0,0,242,141,0,0, +3,23,0,0,242,142,0,0,242,142,0,0,3,23,0,0,242,144,0,0,242,145,0,0,3,24,0,0,242,146,0,0, +242,146,0,0,0,2,0,0,242,149,0,0,242,149,0,0,0,4,0,0,242,154,0,0,242,154,0,0,3,26,0,0, +242,156,0,0,242,156,0,0,1,207,0,0,242,157,0,0,242,158,0,0,3,27,0,0,242,160,0,0,242,164,0,0, +3,29,0,0,242,167,0,0,242,168,0,0,3,34,0,0,242,180,0,0,242,182,0,0,3,36,0,0,242,183,0,0, +242,183,0,0,3,38,0,0,242,185,0,0,242,185,0,0,3,39,0,0,242,186,0,0,242,186,0,0,3,39,0,0, +242,187,0,0,242,187,0,0,3,40,0,0,242,188,0,0,242,188,0,0,3,40,0,0,242,189,0,0,242,189,0,0, +3,41,0,0,242,190,0,0,242,190,0,0,3,41,0,0,242,192,0,0,242,192,0,0,1,138,0,0,242,193,0,0, +242,194,0,0,3,42,0,0,242,195,0,0,242,195,0,0,3,43,0,0,242,199,0,0,242,206,0,0,3,44,0,0, +242,208,0,0,242,211,0,0,3,52,0,0,242,212,0,0,242,212,0,0,3,110,0,0,242,219,0,0,242,220,0,0, +3,56,0,0,242,229,0,0,242,229,0,0,3,58,0,0,242,231,0,0,242,231,0,0,3,59,0,0,242,234,0,0, +242,234,0,0,3,60,0,0,242,237,0,0,242,237,0,0,3,61,0,0,242,241,0,0,242,242,0,0,3,62,0,0, +242,245,0,0,242,246,0,0,3,64,0,0,242,249,0,0,242,249,0,0,3,66,0,0,242,254,0,0,242,254,0,0, +3,67,0,0,243,2,0,0,243,5,0,0,3,68,0,0,243,9,0,0,243,12,0,0,3,72,0,0,243,28,0,0, +243,28,0,0,3,76,0,0,243,30,0,0,243,30,0,0,3,77,0,0,243,40,0,0,243,40,0,0,3,78,0,0, +243,50,0,0,243,50,0,0,1,171,0,0,243,55,0,0,243,56,0,0,3,79,0,0,243,88,0,0,243,91,0,0, +3,81,0,0,243,93,0,0,243,93,0,0,3,85,0,0,243,96,0,0,243,96,0,0,3,86,0,0,243,98,0,0, +243,99,0,0,3,87,0,0,243,129,0,0,243,129,0,0,2,53,0,0,243,130,0,0,243,130,0,0,2,54,0,0, +243,134,0,0,243,135,0,0,3,89,0,0,243,144,0,0,243,144,0,0,3,91,0,0,243,165,0,0,243,165,0,0, +3,92,0,0,243,190,0,0,243,191,0,0,3,93,0,0,243,193,0,0,243,193,0,0,3,95,0,0,243,197,0,0, +243,197,0,0,3,96,0,0,243,201,0,0,243,201,0,0,3,97,0,0,243,205,0,0,243,207,0,0,3,98,0,0, +243,209,0,0,243,209,0,0,3,101,0,0,243,221,0,0,243,221,0,0,3,102,0,0,243,224,0,0,243,224,0,0, +3,103,0,0,243,229,0,0,243,229,0,0,3,104,0,0,243,237,0,0,243,237,0,0,3,105,0,0,243,250,0,0, +243,251,0,0,3,106,0,0,243,253,0,0,243,253,0,0,4,147,0,0,243,255,0,0,243,255,0,0,3,108,0,0, +244,6,0,0,244,6,0,0,3,109,0,0,244,16,0,0,244,16,0,0,3,110,0,0,244,34,0,0,244,34,0,0, +3,111,0,0,244,36,0,0,244,36,0,0,3,112,0,0,244,37,0,0,244,37,0,0,3,36,0,0,244,50,0,0, +244,52,0,0,3,113,0,0,244,54,0,0,244,54,0,0,3,116,0,0,244,57,0,0,244,58,0,0,3,117,0,0, +244,60,0,0,244,60,0,0,3,119,0,0,244,63,0,0,244,63,0,0,3,120,0,0,244,65,0,0,244,65,0,0, +3,121,0,0,244,67,0,0,244,67,0,0,3,122,0,0,244,69,0,0,244,69,0,0,3,123,0,0,244,71,0,0, +244,71,0,0,3,124,0,0,244,75,0,0,244,75,0,0,3,125,0,0,244,78,0,0,244,78,0,0,3,126,0,0, +244,80,0,0,244,80,0,0,3,127,0,0,244,83,0,0,244,83,0,0,3,128,0,0,244,88,0,0,244,88,0,0, +3,129,0,0,244,92,0,0,244,93,0,0,3,130,0,0,244,95,0,0,244,95,0,0,3,132,0,0,244,97,0,0, +244,98,0,0,3,133,0,0,244,102,0,0,244,102,0,0,3,135,0,0,244,104,0,0,244,109,0,0,3,136,0,0, +244,112,0,0,244,114,0,0,3,142,0,0,244,116,0,0,244,116,0,0,3,145,0,0,244,119,0,0,244,121,0,0, +3,146,0,0,244,125,0,0,244,125,0,0,2,60,0,0,244,126,0,0,244,127,0,0,3,149,0,0,244,129,0,0, +244,130,0,0,3,151,0,0,244,132,0,0,244,135,0,0,3,153,0,0,244,139,0,0,244,139,0,0,3,157,0,0, +244,141,0,0,244,142,0,0,3,158,0,0,244,144,0,0,244,148,0,0,3,160,0,0,244,150,0,0,244,151,0,0, +3,165,0,0,244,158,0,0,244,158,0,0,3,167,0,0,244,161,0,0,244,161,0,0,3,136,0,0,244,173,0,0, +244,173,0,0,3,168,0,0,244,179,0,0,244,179,0,0,3,169,0,0,244,184,0,0,244,186,0,0,3,170,0,0, +244,189,0,0,244,190,0,0,3,173,0,0,244,192,0,0,244,194,0,0,3,175,0,0,244,196,0,0,244,196,0,0, +3,178,0,0,244,198,0,0,244,198,0,0,3,179,0,0,244,205,0,0,244,206,0,0,3,180,0,0,244,211,0,0, +244,211,0,0,3,182,0,0,244,214,0,0,244,219,0,0,3,183,0,0,244,222,0,0,244,223,0,0,3,189,0,0, +244,226,0,0,244,227,0,0,3,191,0,0,244,230,0,0,244,230,0,0,3,36,0,0,244,250,0,0,245,9,0,0, +3,193,0,0,245,21,0,0,245,43,0,0,3,209,0,0,245,44,0,0,245,44,0,0,0,18,0,0,245,45,0,0, +245,48,0,0,3,232,0,0,245,49,0,0,245,49,0,0,0,19,0,0,245,50,0,0,245,53,0,0,3,236,0,0, +245,54,0,0,245,54,0,0,0,17,0,0,245,55,0,0,245,64,0,0,3,240,0,0,245,65,0,0,245,65,0,0, +0,4,0,0,245,66,0,0,245,145,0,0,3,250,0,0,245,147,0,0,245,157,0,0,4,74,0,0,245,159,0,0, +245,162,0,0,4,85,0,0,245,164,0,0,245,167,0,0,4,89,0,0,245,170,0,0,245,177,0,0,4,93,0,0, +245,179,0,0,245,180,0,0,4,101,0,0,245,182,0,0,245,184,0,0,4,103,0,0,245,186,0,0,245,189,0,0, +4,106,0,0,245,191,0,0,245,197,0,0,4,110,0,0,245,199,0,0,245,203,0,0,4,117,0,0,245,205,0,0, +245,206,0,0,4,122,0,0,245,208,0,0,245,210,0,0,4,124,0,0,245,215,0,0,245,215,0,0,4,127,0,0, +245,218,0,0,245,218,0,0,4,128,0,0,245,220,0,0,245,220,0,0,4,129,0,0,245,222,0,0,245,223,0,0, +4,130,0,0,245,225,0,0,245,225,0,0,4,132,0,0,245,228,0,0,245,228,0,0,4,133,0,0,245,231,0,0, +245,231,0,0,4,134,0,0,245,235,0,0,245,235,0,0,4,135,0,0,245,238,0,0,245,238,0,0,4,136,0,0, +245,252,0,0,245,253,0,0,4,137,0,0,246,1,0,0,246,1,0,0,4,139,0,0,246,4,0,0,246,4,0,0, +4,140,0,0,246,16,0,0,246,16,0,0,4,141,0,0,246,19,0,0,246,19,0,0,4,142,0,0,246,25,0,0, +246,25,0,0,4,143,0,0,246,31,0,0,246,31,0,0,4,144,0,0,246,33,0,0,246,33,0,0,4,145,0,0, +246,36,0,0,246,37,0,0,4,146,0,0,246,41,0,0,246,42,0,0,4,148,0,0,246,46,0,0,246,48,0,0, +4,150,0,0,246,55,0,0,246,55,0,0,4,153,0,0,246,59,0,0,246,60,0,0,4,154,0,0,246,65,0,0, +246,65,0,0,4,156,0,0,246,68,0,0,246,68,0,0,4,157,0,0,246,71,0,0,246,71,0,0,4,158,0,0, +246,74,0,0,246,74,0,0,4,159,0,0,246,79,0,0,246,79,0,0,4,160,0,0,246,81,0,0,246,81,0,0, +4,161,0,0,246,83,0,0,246,85,0,0,4,162,0,0,246,88,0,0,246,88,0,0,4,165,0,0,246,93,0,0, +246,94,0,0,4,166,0,0,246,98,0,0,246,98,0,0,4,168,0,0,246,100,0,0,246,102,0,0,4,169,0,0, +246,105,0,0,246,107,0,0,4,172,0,0,246,109,0,0,246,109,0,0,4,175,0,0,246,111,0,0,246,111,0,0, +4,176,0,0,246,116,0,0,246,116,0,0,4,177,0,0,246,118,0,0,246,118,0,0,4,178,0,0,246,120,0,0, +246,121,0,0,4,179,0,0,246,123,0,0,246,124,0,0,4,181,0,0,246,127,0,0,246,127,0,0,4,183,0,0, +246,129,0,0,246,132,0,0,4,184,0,0,246,135,0,0,246,137,0,0,4,188,0,0,246,150,0,0,246,150,0,0, +4,191,0,0,246,152,0,0,246,155,0,0,4,192,0,0,246,160,0,0,246,161,0,0,4,196,0,0,246,167,0,0, +246,167,0,0,4,198,0,0,246,169,0,0,246,169,0,0,4,199,0,0,246,173,0,0,246,173,0,0,4,200,0,0, +246,182,0,0,246,183,0,0,4,201,0,0,246,187,0,0,246,187,0,0,4,203,0,0,246,190,0,0,246,190,0,0, +4,204,0,0,246,192,0,0,246,192,0,0,4,205,0,0,246,195,0,0,246,196,0,0,4,206,0,0,246,200,0,0, +246,200,0,0,4,208,0,0,246,207,0,0,246,207,0,0,4,209,0,0,246,209,0,0,246,209,0,0,4,210,0,0, +246,211,0,0,246,211,0,0,4,211,0,0,246,213,0,0,246,213,0,0,4,212,0,0,246,215,0,0,246,215,0,0, +4,213,0,0,246,217,0,0,246,217,0,0,4,214,0,0,246,221,0,0,246,222,0,0,4,215,0,0,246,226,0,0, +246,227,0,0,4,217,0,0,246,230,0,0,246,230,0,0,4,219,0,0,246,232,0,0,246,232,0,0,4,220,0,0, +246,236,0,0,246,237,0,0,4,221,0,0,246,240,0,0,246,242,0,0,4,223,0,0,246,250,0,0,246,250,0,0, +4,226,0,0,246,252,0,0,246,252,0,0,4,227,0,0,246,255,0,0,247,0,0,0,4,228,0,0,247,11,0,0, +247,12,0,0,4,230,0,0,247,14,0,0,247,14,0,0,4,232,0,0,247,20,0,0,247,21,0,0,4,233,0,0, +247,23,0,0,247,23,0,0,4,235,0,0,247,30,0,0,247,30,0,0,4,236,0,0,247,34,0,0,247,34,0,0, +4,237,0,0,247,40,0,0,247,41,0,0,4,238,0,0,247,43,0,0,247,43,0,0,4,240,0,0,247,46,0,0, +247,47,0,0,4,241,0,0,247,59,0,0,247,61,0,0,4,243,0,0,247,64,0,0,247,64,0,0,4,246,0,0, +247,67,0,0,247,67,0,0,4,247,0,0,247,71,0,0,247,71,0,0,4,248,0,0,247,77,0,0,247,77,0,0, +4,249,0,0,247,81,0,0,247,83,0,0,4,250,0,0,247,86,0,0,247,86,0,0,4,253,0,0,247,90,0,0, +247,91,0,0,4,254,0,0,247,94,0,0,247,95,0,0,5,0,0,0,247,105,0,0,247,105,0,0,5,2,0,0, +247,107,0,0,247,108,0,0,5,3,0,0,247,111,0,0,247,112,0,0,5,5,0,0,247,114,0,0,247,115,0,0, +5,7,0,0,247,124,0,0,247,125,0,0,5,9,0,0,247,128,0,0,247,129,0,0,5,11,0,0,247,131,0,0, +247,132,0,0,5,13,0,0,247,134,0,0,247,136,0,0,5,15,0,0,247,140,0,0,247,140,0,0,5,18,0,0, +247,147,0,0,247,148,0,0,5,19,0,0,247,150,0,0,247,150,0,0,5,21,0,0,247,156,0,0,247,156,0,0, +5,22,0,0,247,159,0,0,247,160,0,0,5,23,0,0,247,162,0,0,247,162,0,0,5,25,0,0,247,164,0,0, +247,166,0,0,5,26,0,0,247,169,0,0,247,171,0,0,5,29,0,0,247,173,0,0,247,174,0,0,5,32,0,0, +247,181,0,0,247,182,0,0,5,34,0,0,247,185,0,0,247,186,0,0,5,36,0,0,247,189,0,0,247,189,0,0, +5,38,0,0,247,191,0,0,247,192,0,0,5,39,0,0,247,194,0,0,247,194,0,0,5,41,0,0,247,196,0,0, +247,197,0,0,5,42,0,0,247,201,0,0,247,202,0,0,5,44,0,0,247,204,0,0,247,206,0,0,5,46,0,0, +247,208,0,0,247,208,0,0,5,49,0,0,247,210,0,0,247,210,0,0,5,50,0,0,247,215,0,0,247,218,0,0, +5,51,0,0,247,228,0,0,247,230,0,0,5,55,0,0,247,236,0,0,247,236,0,0,5,58,0,0,247,239,0,0, +247,239,0,0,5,59,0,0,247,242,0,0,247,243,0,0,5,60,0,0,247,245,0,0,247,245,0,0,5,62,0,0, +247,247,0,0,247,247,0,0,5,63,0,0,247,250,0,0,247,251,0,0,5,64,0,0,248,2,0,0,248,2,0,0, +5,66,0,0,248,5,0,0,248,7,0,0,5,67,0,0,248,10,0,0,248,10,0,0,1,150,0,0,248,11,0,0, +248,11,0,0,0,142,0,0,248,12,0,0,248,12,0,0,1,150,0,0,248,13,0,0,248,13,0,0,5,70,0,0, +248,15,0,0,248,16,0,0,5,71,0,0,248,18,0,0,248,18,0,0,5,73,0,0,248,21,0,0,248,22,0,0, +5,74,0,0,248,24,0,0,248,24,0,0,5,76,0,0,248,29,0,0,248,29,0,0,5,77,0,0,248,39,0,0, +248,42,0,0,5,78,0,0,248,47,0,0,248,47,0,0,5,82,0,0,248,62,0,0,248,62,0,0,5,83,0,0, +248,74,0,0,248,74,0,0,5,84,0,0,248,76,0,0,248,76,0,0,5,85,0,0,248,80,0,0,248,80,0,0, +5,86,0,0,248,83,0,0,248,83,0,0,5,87,0,0,248,94,0,0,248,94,0,0,5,88,0,0,248,99,0,0, +248,99,0,0,5,89,0,0,248,109,0,0,248,109,0,0,5,90,0,0,248,121,0,0,248,121,0,0,5,91,0,0, +248,123,0,0,248,125,0,0,5,92,0,0,248,129,0,0,248,130,0,0,5,95,0,0,248,132,0,0,248,135,0,0, +5,97,0,0,248,145,0,0,248,145,0,0,5,101,0,0,248,151,0,0,248,151,0,0,5,102,0,0,248,192,0,0, +248,193,0,0,5,103,0,0,248,204,0,0,248,204,0,0,5,105,0,0,248,215,0,0,248,215,0,0,5,106,0,0, +248,217,0,0,248,217,0,0,5,107,0,0,248,229,0,0,248,229,0,0,3,12,0,0,248,239,0,0,248,239,0,0, +5,108,0,0,248,255,0,0,248,255,0,0,5,109,0,1,241,127,0,1,241,127,0,0,3,249,0,1,243,8,0,1, +243,8,0,0,4,255,0,1,243,11,0,1,243,11,0,0,5,6,0,1,243,13,0,1,243,13,0,0,4,52,0,1, +243,14,0,1,243,14,0,0,4,53,0,1,243,15,0,1,243,15,0,0,4,54,0,1,243,16,0,1,243,16,0,0, +2,12,0,1,243,25,0,1,243,25,0,0,2,152,0,1,243,33,0,1,243,33,0,0,3,46,0,1,243,38,0,1, +243,38,0,0,4,247,0,1,243,39,0,1,243,39,0,0,4,245,0,1,243,41,0,1,243,41,0,0,5,4,0,1, +243,42,0,1,243,42,0,0,5,5,0,1,243,45,0,1,243,45,0,0,5,71,0,1,243,49,0,1,243,49,0,0, +3,185,0,1,243,50,0,1,243,50,0,0,2,173,0,1,243,54,0,1,243,54,0,0,5,75,0,1,243,75,0,1, +243,75,0,0,1,251,0,1,243,78,0,1,243,78,0,0,4,125,0,1,243,79,0,1,243,79,0,0,4,125,0,1, +243,104,0,1,243,104,0,0,5,72,0,1,243,106,0,1,243,106,0,0,4,27,0,1,243,116,0,1,243,116,0,0, +3,59,0,1,243,119,0,1,243,119,0,0,3,192,0,1,243,120,0,1,243,120,0,0,4,51,0,1,243,129,0,1, +243,129,0,0,1,220,0,1,243,130,0,1,243,130,0,0,2,206,0,1,243,147,0,1,243,147,0,0,2,162,0,1, +243,151,0,1,243,151,0,0,3,183,0,1,243,153,0,1,243,153,0,0,3,97,0,1,243,158,0,1,243,158,0,0, +1,139,0,1,243,159,0,1,243,159,0,0,2,117,0,1,243,167,0,1,243,167,0,0,1,160,0,1,243,168,0,1, +243,168,0,0,3,248,0,1,243,173,0,1,243,173,0,0,4,152,0,1,243,178,0,1,243,178,0,0,3,222,0,1, +243,181,0,1,243,181,0,0,1,134,0,1,243,192,0,1,243,192,0,0,3,115,0,1,243,193,0,1,243,193,0,0, +2,87,0,1,243,194,0,1,243,194,0,0,5,48,0,1,243,195,0,1,243,195,0,0,4,231,0,1,243,197,0,1, +243,197,0,0,4,88,0,1,243,198,0,1,243,198,0,0,1,249,0,1,243,200,0,1,243,200,0,0,3,126,0,1, +243,202,0,1,243,202,0,0,4,115,0,1,243,205,0,1,243,205,0,0,2,221,0,1,243,208,0,1,243,208,0,0, +3,132,0,1,243,211,0,1,243,211,0,0,3,131,0,1,243,212,0,1,243,212,0,0,4,227,0,1,243,214,0,1, +243,214,0,0,4,120,0,1,243,217,0,1,243,217,0,0,4,160,0,1,243,219,0,1,243,219,0,0,4,176,0,1, +243,224,0,1,243,224,0,0,1,150,0,1,243,226,0,1,243,226,0,0,2,165,0,1,243,229,0,1,243,229,0,0, +2,60,0,1,243,232,0,1,243,232,0,0,4,75,0,1,243,235,0,1,243,235,0,0,4,1,0,1,243,244,0,1, +243,244,0,0,1,159,0,1,243,247,0,1,243,247,0,0,1,166,0,1,244,4,0,1,244,4,0,0,4,208,0,1, +244,8,0,1,244,8,0,0,4,204,0,1,244,9,0,1,244,9,0,0,4,212,0,1,244,14,0,1,244,14,0,0, +4,223,0,1,244,21,0,1,244,21,0,0,4,211,0,1,244,31,0,1,244,31,0,0,4,48,0,1,244,65,0,1, +244,65,0,0,1,223,0,1,244,77,0,1,244,77,0,0,2,143,0,1,244,78,0,1,244,78,0,0,2,144,0,1, +244,81,0,1,244,81,0,0,3,221,0,1,244,85,0,1,244,85,0,0,4,11,0,1,244,100,0,1,244,100,0,0, +1,138,0,1,244,101,0,1,244,101,0,0,3,199,0,1,244,123,0,1,244,123,0,0,4,217,0,1,244,128,0,1, +244,128,0,0,4,4,0,1,244,137,0,1,244,137,0,0,3,159,0,1,244,142,0,1,244,142,0,0,3,92,0,1, +244,148,0,1,244,148,0,0,5,29,0,1,244,153,0,1,244,153,0,0,1,136,0,1,244,154,0,1,244,154,0,0, +1,136,0,1,244,155,0,1,244,155,0,0,1,136,0,1,244,156,0,1,244,156,0,0,1,136,0,1,244,161,0,1, +244,161,0,0,2,51,0,1,244,163,0,1,244,163,0,0,2,193,0,1,244,167,0,1,244,167,0,0,1,188,0,1, +244,169,0,1,244,169,0,0,3,67,0,1,244,172,0,1,244,172,0,0,3,168,0,1,244,176,0,1,244,176,0,0, +5,77,0,1,244,178,0,1,244,178,0,0,0,3,0,1,244,179,0,1,244,179,0,0,1,255,0,1,244,187,0,1, +244,187,0,0,2,75,0,1,244,188,0,1,244,188,0,0,2,16,0,1,244,190,0,1,244,190,0,0,2,25,0,1, +244,191,0,1,244,191,0,0,3,219,0,1,244,192,0,1,244,192,0,0,3,219,0,1,244,193,0,1,244,193,0,0, +1,235,0,1,244,194,0,1,244,194,0,0,1,236,0,1,244,196,0,1,244,196,0,0,2,135,0,1,244,197,0,1, +244,197,0,0,2,103,0,1,244,198,0,1,244,198,0,0,2,103,0,1,244,203,0,1,244,203,0,0,3,78,0,1, +244,204,0,1,244,204,0,0,1,246,0,1,244,205,0,1,244,205,0,0,3,18,0,1,244,206,0,1,244,206,0,0, +2,24,0,1,244,207,0,1,244,207,0,0,3,253,0,1,244,212,0,1,244,212,0,0,1,168,0,1,244,214,0,1, +244,214,0,0,3,212,0,1,244,220,0,1,244,220,0,0,4,232,0,1,244,221,0,1,244,221,0,0,3,76,0,1, +244,222,0,1,244,222,0,0,1,252,0,1,244,223,0,1,244,223,0,0,5,74,0,1,244,224,0,1,244,224,0,0, +2,164,0,1,244,225,0,1,244,225,0,0,5,40,0,1,244,226,0,1,244,226,0,0,2,2,0,1,244,230,0,1, +244,230,0,0,3,135,0,1,244,240,0,1,244,240,0,0,2,198,0,1,244,241,0,1,244,241,0,0,3,99,0,1, +244,246,0,1,244,246,0,0,1,148,0,1,244,247,0,1,244,247,0,0,1,240,0,1,244,251,0,1,244,251,0,0, +5,106,0,1,245,0,0,1,245,0,0,0,1,228,0,1,245,1,0,1,245,1,0,0,3,88,0,1,245,4,0,1, +245,4,0,0,3,62,0,1,245,8,0,1,245,8,0,0,1,162,0,1,245,10,0,1,245,10,0,0,1,163,0,1, +245,11,0,1,245,11,0,0,2,243,0,1,245,12,0,1,245,12,0,0,2,197,0,1,245,13,0,1,245,13,0,0, +1,135,0,1,245,17,0,1,245,17,0,0,1,241,0,1,245,18,0,1,245,18,0,0,1,158,0,1,245,19,0,1, +245,19,0,0,1,254,0,1,245,20,0,1,245,20,0,0,2,58,0,1,245,21,0,1,245,21,0,0,2,201,0,1, +245,22,0,1,245,22,0,0,1,169,0,1,245,23,0,1,245,23,0,0,2,19,0,1,245,24,0,1,245,24,0,0, +2,156,0,1,245,37,0,1,245,37,0,0,1,222,0,1,245,39,0,1,245,39,0,0,2,13,0,1,245,40,0,1, +245,40,0,0,4,218,0,1,245,44,0,1,245,44,0,0,4,141,0,1,245,52,0,1,245,52,0,0,2,81,0,1, +245,53,0,1,245,53,0,0,2,81,0,1,245,71,0,1,245,71,0,0,4,163,0,1,245,73,0,1,245,73,0,0, +4,180,0,1,245,74,0,1,245,74,0,0,3,172,0,1,245,75,0,1,245,75,0,0,4,174,0,1,245,76,0,1, +245,76,0,0,4,179,0,1,245,77,0,1,245,77,0,0,4,195,0,1,245,78,0,1,245,78,0,0,4,219,0,1, +245,83,0,1,245,83,0,0,1,151,0,1,245,107,0,1,245,107,0,0,2,2,0,1,245,110,0,1,245,110,0,0, +3,212,0,1,245,113,0,1,245,113,0,0,4,233,0,1,245,117,0,1,245,117,0,0,2,220,0,1,245,119,0,1, +245,119,0,0,4,235,0,1,245,123,0,1,245,123,0,0,1,252,0,1,245,125,0,1,245,125,0,0,5,91,0,1, +245,130,0,1,245,130,0,0,2,44,0,1,245,136,0,1,245,136,0,0,1,246,0,1,245,138,0,1,245,138,0,0, +3,70,0,1,245,139,0,1,245,139,0,0,4,95,0,1,245,140,0,1,245,140,0,0,2,205,0,1,245,149,0,1, +245,149,0,0,5,68,0,1,245,150,0,1,245,150,0,0,3,7,0,1,245,164,0,1,245,164,0,0,1,136,0,1, +245,165,0,1,245,165,0,0,3,91,0,1,245,168,0,1,245,168,0,0,1,170,0,1,245,169,0,1,245,169,0,0, +2,200,0,1,245,170,0,1,245,170,0,0,2,25,0,1,245,177,0,1,245,177,0,0,5,105,0,1,245,180,0,1, +245,180,0,0,2,1,0,1,245,182,0,1,245,182,0,0,1,170,0,1,245,183,0,1,245,183,0,0,2,164,0,1, +245,184,0,1,245,184,0,0,3,219,0,1,245,185,0,1,245,185,0,0,2,136,0,1,245,187,0,1,245,187,0,0, +2,179,0,1,245,191,0,1,245,191,0,0,1,235,0,1,245,193,0,1,245,193,0,0,1,236,0,1,245,203,0,1, +245,203,0,0,2,135,0,1,245,206,0,1,245,206,0,0,2,136,0,1,245,213,0,1,245,213,0,0,3,53,0,1, +245,214,0,1,245,214,0,0,3,52,0,1,245,216,0,1,245,216,0,0,1,156,0,1,245,217,0,1,245,217,0,0, +1,144,0,1,245,233,0,1,245,233,0,0,1,229,0,1,245,234,0,1,245,234,0,0,1,243,0,1,245,250,0,1, +245,250,0,0,3,20,0,1,246,0,0,1,246,0,0,0,4,56,0,1,246,1,0,1,246,1,0,0,4,81,0,1, +246,2,0,1,246,2,0,0,4,64,0,1,246,3,0,1,246,3,0,0,4,57,0,1,246,4,0,1,246,4,0,0, +4,58,0,1,246,5,0,1,246,5,0,0,4,59,0,1,246,6,0,1,246,6,0,0,4,61,0,1,246,9,0,1, +246,9,0,0,3,187,0,1,246,10,0,1,246,10,0,0,4,105,0,1,246,13,0,1,246,13,0,0,4,60,0,1, +246,16,0,1,246,16,0,0,2,84,0,1,246,23,0,1,246,23,0,0,4,77,0,1,246,24,0,1,246,24,0,0, +4,79,0,1,246,25,0,1,246,25,0,0,4,78,0,1,246,27,0,1,246,27,0,0,4,65,0,1,246,28,0,1, +246,28,0,0,4,67,0,1,246,29,0,1,246,29,0,0,4,66,0,1,246,32,0,1,246,32,0,0,4,14,0,1, +246,34,0,1,246,34,0,0,4,102,0,1,246,38,0,1,246,38,0,0,4,50,0,1,246,43,0,1,246,43,0,0, +4,118,0,1,246,44,0,1,246,44,0,0,4,55,0,1,246,45,0,1,246,45,0,0,4,101,0,1,246,46,0,1, +246,46,0,0,4,113,0,1,246,51,0,1,246,51,0,0,4,49,0,1,246,54,0,1,246,54,0,0,4,89,0,1, +246,66,0,1,246,66,0,0,2,82,0,1,246,68,0,1,246,68,0,0,4,90,0,1,246,129,0,1,246,129,0,0, +3,237,0,1,246,134,0,1,246,134,0,0,2,241,0,1,246,138,0,1,246,138,0,0,1,132,0,1,246,141,0,1, +246,141,0,0,2,213,0,1,246,144,0,1,246,144,0,0,4,103,0,1,246,145,0,1,246,145,0,0,2,61,0,1, +246,150,0,1,246,150,0,0,2,172,0,1,246,151,0,1,246,151,0,0,4,133,0,1,246,152,0,1,246,152,0,0, +2,171,0,1,246,154,0,1,246,154,0,0,2,34,0,1,246,156,0,1,246,156,0,0,4,237,0,1,246,161,0,1, +246,161,0,0,5,54,0,1,246,162,0,1,246,162,0,0,2,219,0,1,246,166,0,1,246,166,0,0,4,153,0,1, +246,170,0,1,246,170,0,0,3,230,0,1,246,171,0,1,246,171,0,0,1,210,0,1,246,172,0,1,246,172,0,0, +3,158,0,1,246,173,0,1,246,173,0,0,4,5,0,1,246,176,0,1,246,176,0,0,0,49,0,1,246,178,0,1, +246,178,0,0,2,212,0,1,246,180,0,1,246,180,0,0,5,84,0,1,246,182,0,1,246,182,0,0,4,12,0,1, +246,189,0,1,246,189,0,0,5,52,0,1,246,191,0,1,246,191,0,0,3,49,0,1,246,193,0,1,246,193,0,0, +3,50,0,1,246,204,0,1,246,204,0,0,2,240,0,1,246,206,0,1,246,206,0,0,4,26,0,1,246,208,0,1, +246,208,0,0,4,186,0,1,246,210,0,1,246,210,0,0,1,234,0,1,246,225,0,1,246,225,0,0,2,102,0,1, +246,227,0,1,246,227,0,0,1,152,0,1,246,235,0,1,246,235,0,0,4,99,0,1,246,236,0,1,246,236,0,0, +4,98,0,1,246,240,0,1,246,240,0,0,5,39,0,1,246,251,0,1,246,251,0,0,4,155,0,1,247,224,0,1, +247,224,0,0,2,81,0,1,247,225,0,1,247,225,0,0,2,81,0,1,247,226,0,1,247,226,0,0,2,81,0,1, +247,227,0,1,247,227,0,0,2,81,0,1,247,228,0,1,247,228,0,0,2,81,0,1,247,229,0,1,247,229,0,0, +3,130,0,1,247,230,0,1,247,230,0,0,3,130,0,1,247,231,0,1,247,231,0,0,3,130,0,1,247,232,0,1, +247,232,0,0,3,130,0,1,247,233,0,1,247,233,0,0,3,130,0,1,247,234,0,1,247,234,0,0,3,130,0,1, +247,235,0,1,247,235,0,0,3,130,0,1,249,13,0,1,249,13,0,0,1,136,0,1,249,14,0,1,249,14,0,0, +1,136,0,1,249,22,0,1,249,22,0,0,3,252,0,1,249,26,0,1,249,26,0,0,3,4,0,1,249,29,0,1, +249,29,0,0,3,179,0,1,249,35,0,1,249,35,0,0,4,62,0,1,249,41,0,1,249,41,0,0,4,63,0,1, +249,65,0,1,249,65,0,0,4,33,0,1,249,66,0,1,249,66,0,0,5,23,0,1,249,67,0,1,249,67,0,0, +5,24,0,1,249,68,0,1,249,68,0,0,3,58,0,1,249,78,0,1,249,78,0,0,3,114,0,1,249,83,0,1, +249,83,0,0,5,56,0,1,249,85,0,1,249,85,0,0,5,16,0,1,249,90,0,1,249,90,0,0,5,65,0,1, +249,119,0,1,249,119,0,0,3,203,0,1,249,144,0,1,249,144,0,0,0,149,0,1,249,155,0,1,249,155,0,0, +4,222,0,1,249,166,0,1,249,166,0,0,4,229,0,1,249,180,0,1,249,180,0,0,4,127,0,1,249,183,0,1, +249,183,0,0,4,119,0,1,249,205,0,1,249,205,0,0,2,150,0,1,249,224,0,1,249,224,0,0,4,129,0,1, +249,225,0,1,249,225,0,0,1,136,0,1,249,230,0,1,249,230,0,0,4,191,0,1,249,233,0,1,249,233,0,0, +2,99,0,1,249,234,0,1,249,234,0,0,3,162,0,1,249,236,0,1,249,236,0,0,3,143,0,1,249,237,0,1, +249,237,0,0,2,125,0,1,249,239,0,1,249,239,0,0,2,104,0,1,249,240,0,1,249,240,0,0,4,10,0,1, +249,242,0,1,249,242,0,0,1,230,0,1,249,243,0,1,249,243,0,0,2,57,0,1,249,249,0,1,249,249,0,0, +3,214,0,1,249,251,0,1,249,251,0,0,4,236,0,1,249,252,0,1,249,252,0,0,0,76,0,1,249,254,0,1, +249,254,0,0,3,251,0,1,250,121,0,1,250,121,0,0,3,134,0,1,250,122,0,1,250,122,0,0,2,56,0,1, +250,145,0,1,250,145,0,0,4,205,0,1,250,155,0,1,250,155,0,0,4,2,0,1,250,182,0,1,250,182,0,0, +3,232,0,1,250,193,0,1,250,193,0,0,4,140,0,0,0,0,0,0,0,0,0,136,0,0,0,248,0,0,1,252, +0,0,3,76,0,0,4,0,0,0,4,184,0,0,5,44,0,0,5,176,0,0,6,36,0,0,6,176,0,0,7,92, +0,0,7,232,0,0,8,140,0,0,9,40,0,0,9,128,0,0,10,92,0,0,10,252,0,0,11,88,0,0,11,204, +0,0,12,40,0,0,12,228,0,0,13,244,0,0,14,96,0,0,15,0,0,0,15,172,0,0,16,36,0,0,16,156, +0,0,17,8,0,0,17,204,0,0,18,68,0,0,18,188,0,0,19,52,0,0,19,176,0,0,20,0,0,0,20,120, +0,0,20,232,0,0,21,124,0,0,21,240,0,0,22,176,0,0,23,64,0,0,24,8,0,0,24,104,0,0,24,220, +0,0,25,60,0,0,25,200,0,0,26,80,0,0,26,184,0,0,27,32,0,0,27,220,0,0,28,204,0,0,29,124, +0,0,30,148,0,0,31,228,0,0,33,48,0,0,34,164,0,0,37,228,0,0,39,172,0,0,40,84,0,0,41,28, +0,0,42,196,0,0,44,224,0,0,45,200,0,0,46,240,0,0,48,96,0,0,49,112,0,0,50,72,0,0,51,232, +0,0,52,212,0,0,53,152,0,0,56,28,0,0,57,168,0,0,58,84,0,0,59,48,0,0,59,252,0,0,61,160, +0,0,62,136,0,0,63,232,0,0,65,64,0,0,65,252,0,0,66,216,0,0,67,196,0,0,68,228,0,0,70,116, +0,0,71,220,0,0,74,80,0,0,75,48,0,0,76,124,0,0,77,4,0,0,77,144,0,0,78,96,0,0,79,68, +0,0,80,44,0,0,81,52,0,0,81,148,0,0,82,52,0,0,83,60,0,0,83,240,0,0,85,20,0,0,86,4, +0,0,86,144,0,0,88,20,0,0,89,104,0,0,90,156,0,0,91,236,0,0,93,0,0,0,93,224,0,0,94,104, +0,0,95,96,0,0,96,180,0,0,97,144,0,0,98,52,0,0,98,152,0,0,99,56,0,0,100,4,0,0,100,192, +0,0,102,88,0,0,103,44,0,0,103,244,0,0,104,164,0,0,105,176,0,0,106,60,0,0,106,224,0,0,108,8, +0,0,108,248,0,0,110,20,0,0,110,196,0,0,111,76,0,0,112,36,0,0,112,212,0,0,113,196,0,0,114,88, +0,0,115,88,0,0,115,236,0,0,117,36,0,0,118,24,0,0,119,8,0,0,120,20,0,0,121,56,0,0,122,128, +0,0,123,152,0,0,125,100,0,0,126,68,0,0,127,36,0,0,127,188,0,0,128,120,0,0,129,36,0,0,129,204, +0,0,130,104,0,0,131,180,0,0,132,188,0,0,134,56,0,0,135,4,0,0,135,240,0,0,136,192,0,0,137,144, +0,0,139,20,0,0,140,60,0,0,141,36,0,0,142,24,0,0,143,212,0,0,145,68,0,0,146,164,0,0,148,16, +0,0,149,140,0,0,150,252,0,0,152,12,0,0,153,124,0,0,155,4,0,0,156,120,0,0,158,8,0,0,160,140, +0,0,161,136,0,0,163,168,0,0,164,168,0,0,165,208,0,0,166,200,0,0,168,188,0,0,170,108,0,0,172,8, +0,0,173,8,0,0,174,112,0,0,175,108,0,0,176,28,0,0,176,204,0,0,177,212,0,0,178,168,0,0,179,184, +0,0,180,144,0,0,181,180,0,0,182,232,0,0,184,40,0,0,185,88,0,0,186,144,0,0,187,56,0,0,188,188, +0,0,190,136,0,0,192,72,0,0,194,20,0,0,195,240,0,0,197,116,0,0,199,56,0,0,200,244,0,0,202,144, +0,0,203,252,0,0,205,188,0,0,208,72,0,0,208,236,0,0,210,32,0,0,211,48,0,0,212,136,0,0,214,52, +0,0,214,220,0,0,215,252,0,0,217,160,0,0,218,232,0,0,220,64,0,0,221,48,0,0,222,44,0,0,223,148, +0,0,224,116,0,0,225,56,0,0,226,88,0,0,227,32,0,0,228,212,0,0,229,172,0,0,230,148,0,0,231,8, +0,0,231,184,0,0,234,104,0,0,235,72,0,0,237,88,0,0,238,116,0,0,240,0,0,0,241,56,0,0,242,32, +0,0,242,248,0,0,243,220,0,0,244,164,0,0,245,144,0,0,246,132,0,0,247,128,0,0,248,144,0,0,249,196, +0,0,250,208,0,0,251,184,0,0,252,176,0,0,253,180,0,0,254,212,0,0,255,124,0,1,1,44,0,1,3,80, +0,1,4,100,0,1,5,116,0,1,6,144,0,1,7,188,0,1,8,132,0,1,10,148,0,1,11,36,0,1,12,68, +0,1,12,244,0,1,13,168,0,1,15,84,0,1,16,36,0,1,16,216,0,1,17,160,0,1,18,96,0,1,19,108, +0,1,20,148,0,1,21,48,0,1,21,240,0,1,23,100,0,1,24,128,0,1,25,20,0,1,26,84,0,1,27,208, +0,1,29,52,0,1,31,104,0,1,32,160,0,1,34,228,0,1,35,48,0,1,36,156,0,1,37,48,0,1,38,8, +0,1,39,236,0,1,41,180,0,1,43,108,0,1,44,240,0,1,46,216,0,1,48,20,0,1,49,80,0,1,50,120, +0,1,51,196,0,1,52,216,0,1,53,224,0,1,55,16,0,1,56,76,0,1,57,108,0,1,58,176,0,1,60,44, +0,1,61,120,0,1,62,228,0,1,64,76,0,1,65,56,0,1,66,172,0,1,67,148,0,1,69,64,0,1,70,24, +0,1,71,76,0,1,72,244,0,1,74,88,0,1,75,100,0,1,76,96,0,1,78,24,0,1,79,156,0,1,81,164, +0,1,83,24,0,1,84,4,0,1,84,252,0,1,86,4,0,1,86,252,0,1,88,208,0,1,89,240,0,1,90,252, +0,1,92,20,0,1,93,16,0,1,94,48,0,1,95,88,0,1,96,100,0,1,97,24,0,1,98,52,0,1,99,76, +0,1,100,112,0,1,101,164,0,1,102,216,0,1,103,120,0,1,104,88,0,1,105,52,0,1,106,184,0,1,108,72, +0,1,109,232,0,1,111,72,0,1,112,228,0,1,113,136,0,1,114,72,0,1,115,48,0,1,115,216,0,1,116,200, +0,1,117,176,0,1,119,20,0,1,120,68,0,1,122,36,0,1,122,176,0,1,123,148,0,1,123,232,0,1,124,152, +0,1,125,80,0,1,126,4,0,1,126,212,0,1,127,96,0,1,127,224,0,1,128,208,0,1,130,96,0,1,131,96, +0,1,132,244,0,1,133,112,0,1,134,128,0,1,135,220,0,1,137,52,0,1,138,112,0,1,140,60,0,1,141,96, +0,1,142,244,0,1,144,120,0,1,146,88,0,1,148,24,0,1,150,20,0,1,150,232,0,1,152,184,0,1,154,104, +0,1,155,64,0,1,156,164,0,1,157,136,0,1,158,108,0,1,159,64,0,1,160,48,0,1,161,80,0,1,162,24, +0,1,162,172,0,1,163,244,0,1,164,104,0,1,164,252,0,1,165,152,0,1,166,4,0,1,166,112,0,1,166,232, +0,1,168,92,0,1,168,224,0,1,169,168,0,1,170,80,0,1,170,168,0,1,171,36,0,1,171,208,0,1,172,84, +0,1,173,48,0,1,174,68,0,1,175,120,0,1,176,60,0,1,176,204,0,1,177,140,0,1,178,92,0,1,178,200, +0,1,179,140,0,1,180,168,0,1,181,224,0,1,182,108,0,1,182,248,0,1,183,164,0,1,183,252,0,1,184,140, +0,1,185,172,0,1,186,212,0,1,187,196,0,1,188,60,0,1,188,244,0,1,189,180,0,1,190,4,0,1,190,200, +0,1,191,100,0,1,191,252,0,1,192,180,0,1,193,44,0,1,194,68,0,1,195,92,0,1,196,56,0,1,197,20, +0,1,197,240,0,1,198,208,0,1,199,232,0,1,200,240,0,1,201,248,0,1,202,112,0,1,203,52,0,1,203,144, +0,1,204,16,0,1,204,160,0,1,205,140,0,1,206,168,0,1,207,28,0,1,207,160,0,1,208,8,0,1,208,76, +0,1,208,216,0,1,209,40,0,1,209,140,0,1,210,20,0,1,210,136,0,1,211,0,0,1,211,80,0,1,211,160, +0,1,212,68,0,1,212,192,0,1,213,108,0,1,214,12,0,1,214,244,0,1,215,188,0,1,217,36,0,1,217,200, +0,1,218,52,0,1,218,160,0,1,219,12,0,1,219,120,0,1,219,236,0,1,220,252,0,1,222,8,0,1,222,72, +0,1,222,244,0,1,223,244,0,1,224,160,0,1,225,72,0,1,226,72,0,1,227,72,0,1,227,220,0,1,228,104, +0,1,229,216,0,1,230,168,0,1,231,36,0,1,231,196,0,1,232,20,0,1,232,100,0,1,233,48,0,1,234,4, +0,1,234,88,0,1,234,196,0,1,235,88,0,1,235,236,0,1,236,224,0,1,237,164,0,1,238,64,0,1,240,216, +0,1,241,156,0,1,241,236,0,1,242,188,0,1,243,80,0,1,244,56,0,1,245,8,0,1,246,24,0,1,246,240, +0,1,247,184,0,1,248,32,0,1,248,196,0,1,249,92,0,1,250,0,0,1,250,220,0,1,251,184,0,1,252,120, +0,1,253,100,0,1,254,160,0,1,255,220,0,2,1,24,0,2,2,80,0,2,3,12,0,2,3,200,0,2,4,132, +0,2,5,64,0,2,6,104,0,2,7,8,0,2,8,80,0,2,8,156,0,2,9,56,0,2,10,20,0,2,11,92, +0,2,12,172,0,2,13,36,0,2,13,156,0,2,14,184,0,2,15,88,0,2,16,32,0,2,16,212,0,2,17,36, +0,2,17,204,0,2,19,24,0,2,20,112,0,2,21,76,0,2,22,40,0,2,22,172,0,2,23,12,0,2,24,40, +0,2,25,8,0,2,25,68,0,2,25,128,0,2,25,188,0,2,25,248,0,2,26,104,0,2,26,216,0,2,27,24, +0,2,27,84,0,2,27,212,0,2,28,152,0,2,29,96,0,2,29,180,0,2,30,236,0,2,31,224,0,2,32,172, +0,2,33,104,0,2,34,48,0,2,34,232,0,2,35,160,0,2,36,212,0,2,37,212,0,2,38,116,0,2,39,8, +0,2,39,172,0,2,40,228,0,2,42,76,0,2,43,52,0,2,44,20,0,2,44,252,0,2,45,148,0,2,46,44, +0,2,46,192,0,2,47,84,0,2,47,232,0,2,48,124,0,2,48,204,0,2,49,28,0,2,49,108,0,2,49,188, +0,2,50,52,0,2,50,180,0,2,51,52,0,2,51,252,0,2,52,200,0,2,54,64,0,2,54,156,0,2,55,168, +0,2,56,180,0,2,57,144,0,2,58,124,0,2,60,168,0,2,61,252,0,2,62,132,0,2,63,92,0,2,64,0, +0,2,64,68,0,2,64,248,0,2,66,40,0,2,67,88,0,2,67,244,0,2,68,232,0,2,69,220,0,2,70,76, +0,2,71,176,0,2,72,120,0,2,73,80,0,2,73,180,0,2,74,72,0,2,75,48,0,2,75,248,0,2,76,156, +0,2,77,64,0,2,77,228,0,2,78,132,0,2,79,184,0,2,80,136,0,2,81,184,0,2,82,100,0,2,83,16, +0,2,84,16,0,2,84,156,0,2,85,104,0,2,85,220,0,2,86,96,0,2,86,224,0,2,87,116,0,2,88,24, +0,2,88,196,0,2,89,160,0,2,90,100,0,2,90,228,0,2,91,100,0,2,91,232,0,2,92,208,0,2,93,144, +0,2,95,40,0,2,95,248,0,2,96,188,0,2,97,156,0,2,97,252,0,2,98,188,0,2,99,220,0,2,100,252, +0,2,102,52,0,2,103,104,0,2,104,156,0,2,105,208,0,2,106,168,0,2,107,128,0,2,107,236,0,2,108,88, +0,2,108,196,0,2,109,44,0,2,110,28,0,2,110,236,0,2,111,248,0,2,112,124,0,2,113,8,0,2,114,80, +0,2,114,212,0,2,115,104,0,2,116,128,0,2,117,116,0,2,118,68,0,2,118,240,0,2,119,192,0,2,120,120, +0,2,121,196,0,2,122,252,0,2,124,76,0,2,125,28,0,2,126,104,0,2,126,228,0,2,127,208,0,2,129,28, +0,2,130,20,0,2,131,40,0,2,131,196,0,2,132,128,0,2,133,176,0,2,134,108,0,2,135,52,0,2,135,236, +0,2,136,180,0,2,137,124,0,2,138,140,0,2,139,72,0,2,140,12,0,2,141,120,0,2,142,40,0,2,142,144, +0,2,143,108,0,2,144,76,0,2,144,200,0,2,146,136,0,2,147,64,0,2,148,36,0,2,149,8,0,2,149,188, +0,2,151,216,0,2,152,184,0,2,153,88,0,2,154,108,0,2,155,96,0,2,156,248,0,2,157,176,0,2,158,48, +0,2,158,252,0,2,159,164,0,2,160,52,0,2,162,60,0,2,162,236,0,2,163,120,0,2,164,36,0,2,164,216, +0,2,165,88,0,2,166,184,0,2,168,36,0,2,169,44,0,2,169,248,0,2,171,16,0,2,172,20,0,2,172,92, +0,2,173,168,0,2,174,212,0,2,176,128,0,2,177,196,0,2,178,96,0,2,179,20,0,2,179,176,0,2,180,160, +0,2,181,132,0,2,182,200,0,2,184,20,0,2,185,56,0,2,186,112,0,2,187,60,0,2,188,8,0,2,188,216, +0,2,189,100,0,2,189,224,0,2,190,208,0,2,191,144,0,2,192,88,0,2,193,8,0,2,193,248,0,2,195,68, +0,2,195,224,0,2,196,124,0,2,197,24,0,2,197,176,0,2,198,64,0,2,198,160,0,2,199,132,0,2,200,160, +0,2,201,188,0,2,202,40,0,2,202,180,0,2,204,8,0,2,204,192,0,2,205,144,0,2,206,68,0,2,207,20, +0,2,207,172,0,2,208,116,0,2,209,40,0,2,209,168,0,2,210,160,0,2,211,148,0,2,212,216,0,2,213,152, +0,2,214,92,0,2,214,240,0,2,215,204,0,2,216,128,0,2,217,96,0,2,218,32,0,2,218,140,0,2,219,48, +0,2,219,244,0,2,220,92,0,2,220,188,0,2,221,124,0,2,222,0,0,2,222,200,0,2,223,176,0,2,224,188, +0,2,225,204,0,2,226,180,0,2,227,216,0,2,231,84,0,2,233,20,0,2,234,192,0,2,236,40,0,2,237,156, +0,2,238,156,0,2,239,112,0,2,240,180,0,2,241,148,0,2,242,148,0,2,243,172,0,2,244,108,0,2,245,68, +0,2,246,108,0,2,247,56,0,2,248,4,0,2,248,212,0,2,249,164,0,2,250,112,0,2,252,60,0,2,253,8, +0,2,254,120,0,2,255,0,0,2,255,64,0,3,0,20,0,3,0,180,0,3,2,8,0,3,3,200,0,3,4,48, +0,3,5,64,0,3,5,232,0,3,6,200,0,3,7,172,0,3,8,96,0,3,9,32,0,3,9,224,0,3,10,148, +0,3,11,220,0,3,12,220,0,3,13,100,0,3,13,196,0,3,14,76,0,3,14,164,0,3,15,0,0,3,15,84, +0,3,15,176,0,3,16,104,0,3,17,60,0,3,17,244,0,3,18,96,0,3,18,208,0,3,19,116,0,3,20,20, +0,3,20,184,0,3,21,92,0,3,22,24,0,3,22,180,0,3,23,88,0,3,24,52,0,3,24,224,0,3,26,0, +0,3,26,136,0,3,26,216,0,3,27,72,0,3,27,184,0,3,28,84,0,3,28,228,0,3,29,220,0,3,30,104, +0,3,30,220,0,3,31,92,0,3,32,120,0,3,33,24,0,3,33,204,0,3,34,64,0,3,34,196,0,3,35,84, +0,3,35,200,0,3,36,76,0,3,36,200,0,3,37,104,0,3,38,12,0,3,38,180,0,3,39,108,0,3,40,252, +0,3,41,252,0,3,42,228,0,3,44,84,0,3,45,16,0,3,45,220,0,3,46,152,0,3,47,100,0,3,48,8, +0,3,49,28,0,3,49,216,0,3,50,176,0,3,51,200,0,3,52,216,0,3,53,84,0,3,54,68,0,3,54,100, +0,3,55,64,0,3,56,152,0,3,58,16,0,3,58,244,0,3,59,84,0,3,60,88,0,3,61,36,0,3,61,172, +0,3,62,116,0,3,63,72,0,3,64,92,0,3,65,212,0,3,66,216,0,3,67,192,0,3,68,184,0,3,69,100, +0,3,70,24,0,3,70,212,0,3,71,120,0,3,72,128,0,3,73,80,0,3,73,200,0,3,74,140,0,3,75,32, +0,3,75,204,0,3,76,236,0,3,78,80,0,3,79,124,0,3,80,68,0,3,81,4,0,3,81,152,0,3,82,16, +0,3,82,188,0,3,83,108,0,3,84,68,0,3,85,156,0,3,86,72,0,3,87,64,0,3,87,220,0,3,88,148, +0,3,90,72,0,3,91,20,0,3,91,136,0,3,92,76,0,3,93,132,0,3,94,76,0,3,95,72,0,3,96,48, +0,3,97,56,0,3,98,12,0,3,99,172,0,3,100,208,0,3,101,160,0,3,103,24,0,3,103,144,0,3,104,64, +0,3,105,76,0,3,106,40,0,3,107,28,0,3,108,92,0,3,108,236,0,3,109,100,0,3,109,236,0,3,111,80, +0,3,112,0,0,3,112,220,0,3,114,104,0,3,115,44,0,3,116,12,0,3,116,208,0,3,117,240,0,3,118,140, +0,3,119,64,0,3,120,24,0,3,120,160,0,3,121,112,0,3,121,252,0,3,124,52,0,3,125,144,0,3,126,224, +0,3,127,208,0,3,128,140,0,3,129,232,0,3,130,160,0,3,131,28,0,3,131,248,0,3,132,188,0,3,134,92, +0,3,135,84,0,3,136,20,0,3,136,216,0,3,138,8,0,3,139,64,0,3,140,72,0,3,140,200,0,3,142,44, +0,3,143,8,0,3,143,180,0,3,144,96,0,3,144,228,0,3,145,124,0,3,146,8,0,3,146,252,0,3,147,236, +0,3,149,44,0,3,149,188,0,3,150,168,0,3,151,116,0,3,152,48,0,3,152,192,0,3,153,216,0,3,154,220, +0,3,155,220,0,3,157,24,0,3,157,212,0,3,159,92,0,3,160,16,0,3,161,100,0,3,162,24,0,3,162,212, +0,3,163,188,0,3,164,232,0,3,165,132,0,3,166,76,0,3,166,244,0,3,167,136,0,3,169,4,0,3,169,112, +0,3,170,88,0,3,171,96,0,3,172,128,0,3,173,60,0,3,173,212,0,3,174,128,0,3,176,252,0,3,177,208, +0,3,178,100,0,3,179,140,0,3,180,48,0,3,181,104,0,3,182,4,0,3,183,64,0,3,185,16,0,3,185,176, +0,3,187,12,0,3,187,196,0,3,188,108,0,3,189,124,0,3,190,172,0,3,191,68,0,3,192,0,0,3,192,120, +0,3,193,112,0,3,194,108,0,3,195,16,0,3,196,128,0,3,197,172,0,3,198,208,0,3,199,208,0,3,200,216, +0,3,201,88,0,3,202,120,0,3,203,24,0,3,203,192,0,3,204,104,0,3,205,104,0,3,206,200,0,3,207,180, +0,3,208,192,0,3,209,96,0,3,210,4,0,3,210,236,0,3,212,200,0,3,213,136,0,3,214,172,0,3,215,172, +0,3,216,32,0,3,217,92,0,3,218,148,0,3,220,64,0,3,221,136,0,3,222,136,0,3,223,140,0,3,225,40, +0,3,227,40,0,3,228,88,0,3,229,116,0,3,231,68,0,3,232,156,0,3,235,28,0,3,236,88,0,3,237,172, +0,3,239,12,0,3,240,12,0,3,241,92,0,3,242,172,0,3,243,148,0,3,244,180,0,3,245,72,0,3,246,212, +0,3,248,100,0,3,249,100,0,3,251,40,0,3,253,136,0,3,255,180,0,4,0,172,0,4,2,64,0,4,3,84, +0,4,4,76,0,4,5,124,0,4,6,92,0,4,7,104,0,4,7,240,0,4,8,216,0,4,9,152,0,4,10,164, +0,4,11,48,0,4,11,188,0,4,12,128,0,4,13,176,0,4,14,52,0,4,14,204,0,4,15,184,0,4,16,184, +0,4,17,96,0,4,18,20,0,4,19,44,0,4,20,80,0,4,21,108,0,4,22,156,0,4,24,68,0,4,25,16, +0,4,25,224,0,4,26,144,0,4,28,72,0,4,28,248,0,4,29,124,0,4,30,96,0,4,31,84,0,4,32,32, +0,4,33,204,0,4,35,128,0,4,36,60,0,4,37,116,0,4,38,36,0,4,38,232,0,4,39,252,0,4,40,148, +0,4,41,40,0,4,43,0,0,4,43,164,0,4,45,120,0,4,46,60,0,4,46,232,0,4,47,252,0,4,49,16, +0,4,49,244,0,4,51,60,0,4,52,96,0,4,53,152,0,4,54,56,0,4,55,20,0,4,55,240,0,4,56,172, +0,4,57,188,0,4,58,180,0,4,59,160,0,4,60,64,0,4,61,0,0,4,61,172,0,4,62,56,0,4,63,144, +0,4,64,244,0,4,65,148,0,4,66,60,0,4,68,8,0,4,70,16,0,4,71,200,0,4,72,184,0,4,75,40, +0,4,76,96,0,4,77,84,0,4,77,244,0,4,78,192,0,4,79,196,0,4,81,240,0,4,83,40,0,4,84,172, +0,4,85,40,0,4,86,244,0,4,88,0,0,4,88,116,0,4,89,12,0,4,90,124,0,4,91,192,0,4,92,232, +0,4,93,216,0,4,95,80,0,4,97,40,0,4,98,80,0,4,99,232,0,4,100,132,0,4,101,108,0,4,103,232, +0,4,105,36,0,4,106,244,0,4,109,136,0,4,110,64,0,4,110,232,0,4,111,208,0,4,112,184,0,4,113,120, +0,4,114,136,0,4,115,176,0,4,116,204,0,4,117,172,0,4,118,108,0,4,119,72,0,4,120,36,0,4,121,0, +0,4,121,244,0,4,123,88,0,4,124,28,0,4,125,204,0,4,126,112,0,4,127,120,0,4,128,136,0,4,129,212, +0,4,130,100,0,4,131,100,0,4,132,16,0,4,133,4,0,4,134,56,0,4,135,116,0,4,136,180,0,4,137,76, +0,4,138,40,0,4,139,36,0,4,139,216,0,4,142,4,0,4,143,124,0,4,144,184,0,4,145,140,0,4,146,52, +0,4,149,16,0,4,149,212,0,4,151,4,0,4,152,196,0,4,153,200,0,4,154,124,0,4,155,160,0,4,156,136, +0,4,156,220,0,4,158,8,0,4,160,28,0,4,160,180,0,4,161,204,0,4,162,108,0,4,163,172,0,4,163,228, +0,4,165,92,0,4,166,156,0,4,168,104,0,4,169,96,0,4,170,60,0,4,171,116,0,4,172,172,0,4,173,48, +0,4,174,176,0,4,176,20,0,4,177,92,0,4,178,124,0,4,180,88,0,4,182,0,0,4,183,140,0,4,184,80, +0,4,185,20,0,4,186,76,0,4,187,180,0,4,188,192,0,4,190,4,0,4,191,108,0,4,192,96,0,4,193,152, +0,4,194,208,0,4,195,180,0,4,196,92,0,4,197,92,0,4,198,36,0,4,200,208,0,4,201,220,0,4,202,212, +0,4,204,120,0,4,205,128,0,4,206,56,0,4,206,240,0,4,207,252,0,4,208,168,0,4,210,80,0,4,211,148, +0,4,212,84,0,4,213,172,0,4,214,40,0,4,215,160,0,4,216,156,0,4,216,252,0,4,218,216,0,4,219,76, +0,4,219,192,0,4,220,148,0,4,221,32,0,4,222,224,0,4,223,164,0,4,224,24,0,4,224,208,0,4,225,88, +0,4,226,88,0,4,227,48,0,4,228,92,0,4,229,248,0,4,230,236,0,4,231,244,0,4,232,96,0,4,233,36, +0,4,234,124,0,4,235,164,0,4,236,212,0,4,237,196,0,4,239,172,0,4,240,240,0,4,242,124,0,4,243,248, +0,4,244,136,0,4,245,96,0,4,246,100,0,4,247,164,0,4,248,68,0,4,248,228,0,4,249,176,0,4,250,16, +0,4,250,96,0,4,251,52,0,4,252,44,0,4,252,244,0,4,253,148,0,4,254,156,0,4,255,36,0,4,255,216, +0,5,1,116,0,5,2,24,0,5,2,168,0,5,3,216,0,5,5,160,0,5,6,76,0,5,7,16,0,5,7,204, +0,5,8,108,0,5,9,96,0,5,10,224,0,5,12,40,0,5,12,212,0,5,13,156,0,5,14,104,0,5,15,76, +0,5,15,224,0,5,17,104,0,5,17,236,0,5,21,200,0,5,23,100,0,5,24,132,0,5,25,44,0,5,26,180, +0,5,27,28,0,5,27,192,0,5,29,88,0,5,30,28,0,5,31,56,0,5,32,84,0,5,33,136,0,5,34,188, +0,5,35,240,0,5,37,36,0,5,38,64,0,5,39,40,0,5,39,248,0,5,40,152,0,5,41,0,0,5,41,252, +0,5,42,244,0,5,43,248,0,5,45,12,0,5,0,0,255,192,1,128,1,192,0,20,0,24,0,28,0,32,0,36, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,39,51,7,23,7,17,19, +55,23,35,55,39,55,17,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14,20,54,90,89, +179,218,90,90,39,89,90,179,217,89,89,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13, +1,64,134,134,58,134,134,1,12,254,186,134,134,58,134,134,254,244,0,0,0,2,0,24,255,225,0,104,1,160,0,19, +0,37,0,0,55,50,55,49,54,53,17,52,39,38,35,34,7,6,29,1,20,23,22,51,21,34,7,49,6,21,20,23, +22,51,50,55,54,53,52,39,38,39,64,14,9,9,9,9,14,14,9,9,9,9,14,17,11,12,12,11,17,17,11,12, +12,11,17,96,9,9,13,1,1,14,9,9,9,9,14,255,14,10,9,48,12,11,17,17,11,11,11,12,16,16,12,11, +1,0,0,0,0,2,0,0,255,224,1,192,1,160,0,84,0,89,0,0,1,35,55,54,39,38,39,38,7,6,15,1, +35,55,54,39,38,39,38,7,6,15,1,35,34,7,6,21,20,23,22,59,1,7,35,34,7,6,21,20,23,22,59,1, +7,6,23,22,23,22,51,54,63,1,51,7,6,23,22,23,50,51,54,63,1,51,50,55,54,53,52,39,38,43,1,55, +51,50,55,54,53,52,39,38,35,7,35,55,51,7,1,160,58,10,1,7,7,14,13,11,10,3,11,95,10,1,7,7, +14,13,11,10,3,11,69,14,9,9,9,9,14,58,21,69,14,9,9,9,9,14,58,10,1,7,7,14,2,3,25,7, +11,95,10,1,7,7,14,2,3,25,7,11,69,14,9,9,9,9,14,58,21,69,14,9,9,9,9,14,155,95,21,95, +21,1,65,59,13,11,10,2,2,7,7,14,69,59,13,11,10,2,2,7,7,14,69,9,10,13,14,9,9,128,9,10, +13,14,8,9,59,13,11,10,3,2,2,25,69,59,13,11,10,3,2,25,69,9,9,13,14,9,9,128,9,9,13,15, +10,10,192,128,128,0,0,0,0,1,0,16,255,192,1,48,1,192,0,115,0,0,19,50,23,49,22,29,1,50,51,50, +51,22,23,22,23,22,23,22,7,6,7,6,39,38,39,38,39,34,35,38,7,6,7,6,23,22,23,22,31,1,22,23, +22,23,22,23,22,7,6,7,6,7,6,7,21,20,7,6,35,34,39,38,61,1,48,49,38,21,49,38,39,38,39,38, +39,38,55,54,55,54,23,22,23,22,23,22,55,54,55,54,39,38,39,38,47,1,38,39,38,39,38,39,38,55,54,55, +54,55,54,55,53,52,55,54,51,49,160,14,9,9,2,1,1,1,9,17,18,11,12,7,7,3,4,11,11,13,7,14, +14,10,2,2,49,29,26,2,2,3,3,10,25,48,3,22,24,23,20,22,14,12,6,6,17,18,25,20,24,9,9,14, +14,9,9,1,20,25,26,21,12,5,4,5,6,11,12,12,17,22,21,16,49,27,25,2,2,3,3,10,25,48,3,22, +24,23,20,22,14,12,6,6,18,19,25,20,22,9,9,14,1,192,9,9,14,36,2,3,3,2,4,11,11,13,13,7, +6,3,2,2,2,2,7,12,10,18,15,5,6,8,14,12,1,5,9,8,12,14,26,27,31,29,19,20,10,8,3,33, +14,9,9,9,9,14,35,1,1,3,7,7,9,6,12,12,13,12,5,4,5,7,6,6,3,6,12,10,18,16,5,6, +7,15,12,1,5,9,8,12,14,26,27,32,29,19,19,9,8,2,35,14,9,9,0,0,0,3,0,0,0,0,1,128, +1,128,0,19,0,37,0,55,0,0,1,38,35,49,34,7,1,6,21,20,23,22,51,50,55,1,54,53,52,39,5,54, +55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,1,119,10,13,13,10,254,192,9,9,10,13,13,10,1,64,9,9,254,201,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,1,0,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,119,9,9,254,192,10,13, +13,10,9,9,1,64,10,13,13,10,119,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,128,1,18,18,27, +27,18,18,1,1,18,18,27,27,18,18,1,0,1,0,25,255,224,1,165,1,160,0,60,0,0,37,6,35,34,47,1, +21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,55,54,63,1,39,38,39,38,55,54,23,22,31,1,53,52, +55,54,51,50,23,22,29,1,55,54,55,54,23,22,7,6,15,1,23,22,23,22,7,1,161,10,18,8,8,117,9,9, +13,13,10,10,118,8,8,18,10,6,3,3,12,117,117,12,3,4,6,13,20,6,6,118,9,9,14,14,9,9,118,6, +6,21,10,7,4,3,12,117,118,12,3,3,7,80,16,4,69,137,14,9,9,9,9,14,137,69,4,16,12,12,13,7, +68,68,7,13,12,12,18,2,1,3,69,137,14,9,9,9,9,14,137,69,3,1,2,18,12,12,13,7,68,68,7,13, +12,12,0,0,0,1,0,16,255,240,1,176,1,144,0,41,0,0,37,20,7,49,6,43,1,21,20,7,6,35,34,39, +38,61,1,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51,50,23,22,29,1,51,50,23,22,21,1,176,9,9, +14,144,9,9,14,14,9,9,144,14,9,9,9,9,14,144,9,9,14,14,9,9,144,14,9,9,192,14,9,9,144,14, +9,9,9,9,14,144,9,9,14,14,9,9,144,14,9,9,9,9,14,144,9,9,14,0,0,2,0,0,255,225,1,64, +1,160,0,19,0,39,0,0,19,6,7,49,6,7,21,22,23,22,23,54,55,54,55,53,38,39,38,39,19,6,7,49, +6,7,38,39,38,39,53,54,55,54,55,22,23,22,23,21,160,68,45,45,2,2,45,45,68,68,45,45,2,2,45,45, +68,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,1,160,2,45,45,68,127,68,45,45,2,2,45,45, +68,127,68,45,45,2,254,224,41,27,27,1,1,27,27,41,128,41,27,27,1,1,27,27,41,128,0,0,0,1,0,0, +255,224,1,0,1,160,0,36,0,0,37,20,7,49,6,43,1,34,39,38,53,52,55,54,59,1,17,7,6,39,38,39, +38,55,54,63,1,54,23,22,23,17,51,50,23,22,21,1,0,9,9,14,192,14,9,9,9,9,14,64,46,12,12,13, +8,7,3,2,11,96,16,17,16,1,64,14,9,9,0,14,9,9,9,9,14,14,9,9,1,36,31,7,3,2,11,12, +12,13,8,64,10,9,9,19,254,160,9,9,14,0,0,0,0,1,0,0,255,224,1,64,1,159,0,43,0,0,37,20, +7,49,6,35,33,38,39,38,63,1,54,55,54,39,38,39,38,15,1,6,39,38,39,38,55,54,63,1,54,23,22,23, +22,7,6,15,1,51,50,23,22,21,1,64,9,9,14,255,0,21,9,7,15,193,24,2,1,21,23,36,35,26,35,11, +13,12,10,9,1,1,9,35,45,64,63,41,37,2,3,42,136,176,14,9,9,0,14,9,9,1,19,20,15,185,24,32, +31,27,27,2,1,24,32,9,1,1,9,11,13,12,10,31,42,2,5,47,46,57,56,42,130,9,9,14,0,1,0,0, +255,224,1,64,1,160,0,55,0,0,37,6,7,49,6,7,35,34,39,38,39,38,55,54,55,54,23,22,23,22,23,51, +54,55,54,55,38,39,38,39,35,38,39,38,63,1,35,34,39,38,53,52,55,54,59,1,22,23,22,15,1,51,22,23, +22,23,1,64,1,39,38,58,80,36,27,27,11,4,5,6,13,13,11,12,4,11,30,80,31,20,20,1,1,20,20,31, +104,21,9,7,15,132,158,14,9,9,9,9,14,240,21,9,7,15,132,22,57,39,38,2,104,58,38,39,1,20,20,33, +13,12,11,5,4,6,6,12,28,2,1,20,20,31,31,20,20,1,1,19,21,15,120,9,9,14,14,9,9,1,19,21, +15,120,1,39,38,58,0,0,0,1,0,0,255,224,1,128,1,159,0,47,0,0,37,20,7,49,6,43,1,21,20,7, +6,35,34,39,38,61,1,35,34,39,38,55,19,54,55,54,23,22,23,22,15,1,51,53,52,55,54,51,50,23,22,29, +1,51,22,23,22,21,1,128,9,9,14,32,9,9,14,14,9,9,224,17,10,9,7,128,6,12,12,13,12,4,4,5, +106,173,9,9,14,14,9,9,32,14,9,9,114,14,9,9,82,14,9,9,9,9,14,82,15,15,15,1,15,12,4,4, +5,6,12,12,13,224,142,14,9,9,9,9,14,142,1,9,9,13,0,0,0,1,0,0,255,224,1,64,1,160,0,53, +0,0,37,6,7,49,6,7,35,34,39,38,39,38,55,54,55,54,23,22,23,22,23,51,54,55,54,55,38,39,38,39, +35,34,39,38,63,1,54,55,51,50,23,22,21,20,7,6,43,1,7,51,22,23,22,23,1,64,1,39,38,57,80,36, +28,28,11,4,5,6,13,13,11,12,4,12,31,80,30,20,20,1,1,20,20,30,153,15,10,9,3,32,6,25,192,14, +9,9,9,9,14,165,21,115,57,38,39,1,103,57,38,39,1,20,20,34,13,12,11,5,4,6,6,13,28,2,1,20, +20,30,31,20,20,1,11,12,14,178,24,2,9,9,14,14,9,9,113,2,38,38,58,0,0,2,0,0,255,224,1,64, +1,160,0,29,0,47,0,0,19,55,54,39,38,39,38,35,34,7,6,7,6,7,6,7,6,21,22,23,22,23,54,55, +54,55,38,39,38,39,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,168,64,9,1,1,10,10,11, +14,10,33,26,48,28,27,11,11,2,45,45,68,68,45,45,2,2,42,43,65,8,41,27,27,1,1,27,27,41,41,27, +27,1,1,27,27,41,1,31,76,11,13,12,9,8,11,39,30,55,35,35,26,26,31,68,45,45,2,2,45,45,68,66, +44,45,4,255,1,27,27,41,41,26,27,1,1,27,27,40,40,28,27,1,0,1,0,0,255,224,1,64,1,160,0,24, +0,0,1,3,6,35,34,39,38,39,38,55,19,35,34,39,38,53,52,55,54,51,33,22,23,22,7,1,60,224,10,18, +8,8,12,3,3,6,196,200,14,9,9,9,9,14,1,0,18,10,8,8,1,112,254,128,16,4,7,13,12,12,1,80, +9,9,14,14,9,9,1,15,16,16,0,0,0,3,0,0,255,224,1,64,1,160,0,30,0,49,0,68,0,0,37,54, +55,38,39,38,39,35,6,7,6,7,22,23,6,7,6,21,22,23,22,23,51,54,55,54,55,52,39,38,47,1,51,22, +23,22,23,6,7,6,7,35,38,39,38,39,54,55,54,55,19,35,38,39,38,39,54,55,54,55,51,22,23,22,23,6, +7,6,7,1,12,35,1,1,37,36,54,32,54,36,37,1,1,35,24,14,14,1,37,36,54,64,54,36,37,1,14,14, +24,124,32,27,18,18,1,1,18,18,27,32,27,18,18,1,1,18,18,27,48,64,27,18,18,1,1,18,18,27,64,27, +18,18,1,1,18,18,27,199,36,53,54,36,37,1,1,37,36,54,53,36,18,27,26,32,54,36,37,1,1,37,36,54, +32,26,27,18,153,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,254,192,1,18,18,27,27,18,18,1,1, +18,18,27,27,18,18,1,0,0,2,0,0,255,224,1,64,1,160,0,30,0,48,0,0,19,6,7,49,6,7,22,23, +22,23,7,6,23,22,23,22,51,50,55,54,55,54,55,54,55,54,53,38,39,38,39,17,38,39,49,38,39,54,55,54, +55,22,23,22,23,6,7,6,7,160,68,45,45,2,2,42,43,65,64,9,1,1,10,10,11,14,10,33,26,49,27,27, +11,11,2,45,45,68,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,160,2,45,45,68,66,44,45,4, +76,11,13,12,9,8,11,39,30,55,35,35,26,26,31,68,45,45,2,255,0,1,27,27,40,40,28,27,1,1,27,27, +41,41,26,27,1,0,0,0,0,1,0,0,0,0,1,127,1,127,0,24,0,0,37,34,39,37,38,39,54,55,37,54, +23,22,23,22,7,6,7,13,1,22,23,22,7,6,35,1,95,7,7,254,192,16,1,1,17,1,64,12,12,12,7,5, +4,4,12,254,250,1,6,12,4,4,5,10,20,0,3,160,10,19,19,10,160,5,4,4,12,12,12,12,7,131,131,7, +12,12,12,18,0,2,0,16,0,65,1,176,1,63,0,18,0,37,0,0,19,33,50,55,54,53,52,39,38,35,33,34, +7,6,21,20,23,22,51,5,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,48,1,96,14,9,9, +9,9,14,254,160,14,9,9,9,9,14,1,96,254,160,14,9,9,9,9,14,1,96,14,9,9,9,9,14,1,0,9, +9,14,14,8,9,9,9,13,13,9,10,128,9,9,13,13,9,10,9,9,14,13,9,9,0,1,0,0,0,0,1,128, +1,127,0,24,0,0,55,34,39,38,55,54,55,45,1,38,39,38,55,54,55,54,23,5,22,23,6,7,5,6,35,32, +19,10,5,4,4,12,1,6,254,250,12,4,4,5,7,12,12,12,1,64,17,1,1,17,254,192,7,7,0,18,12,12, +12,7,131,131,7,12,12,12,12,4,4,5,160,10,19,19,10,160,3,0,0,2,0,0,255,225,1,64,1,160,0,46, +0,64,0,0,19,35,6,7,6,7,20,23,22,51,50,55,54,53,52,55,54,59,1,22,23,22,23,6,15,1,6,29, +1,20,23,22,51,50,55,54,61,1,55,54,55,54,53,38,39,38,39,3,34,7,49,6,21,20,23,22,51,50,55,54, +53,52,39,38,39,204,108,41,27,27,1,9,9,14,14,9,9,9,9,14,108,22,15,14,1,1,29,98,16,9,9,14, +14,9,9,80,30,17,17,1,33,33,49,60,17,11,12,12,11,17,17,11,12,12,11,17,1,160,1,27,27,41,14,8, +9,9,9,13,14,9,9,1,14,15,22,31,16,57,10,18,40,14,9,9,9,9,14,22,47,15,27,28,33,49,33,33, +1,254,144,12,11,17,17,11,11,11,12,16,16,12,11,1,0,2,0,16,255,211,1,239,1,175,0,72,0,90,0,0, +19,6,7,49,6,7,6,23,22,23,22,23,22,55,54,53,49,38,39,38,39,38,39,54,55,54,23,22,23,22,23,21, +20,7,6,35,34,39,38,61,1,38,39,35,6,7,38,7,6,7,6,7,6,23,22,23,54,55,22,23,22,55,54,55, +54,61,1,38,39,38,39,38,7,19,34,39,49,38,39,54,55,54,55,22,23,22,21,20,7,6,35,208,71,51,50,15, +13,23,23,50,50,66,15,10,11,2,25,64,42,42,1,2,55,56,80,70,44,44,1,12,11,17,17,11,12,1,15,32, +12,3,38,48,30,19,20,5,5,32,32,52,40,30,18,29,28,34,35,21,20,1,39,40,65,64,78,31,20,14,13,1, +1,13,14,20,20,14,14,14,13,21,1,171,15,50,51,71,71,61,61,41,41,10,2,10,9,15,26,5,12,47,48,68, +79,51,50,5,9,51,52,71,16,17,12,11,11,12,17,120,14,2,1,11,20,15,11,23,24,31,54,36,37,1,1,23, +23,11,11,8,9,29,29,36,21,75,59,58,29,28,14,254,229,14,13,21,20,14,13,1,1,13,14,20,21,13,14,0, +0,2,0,0,255,224,1,128,1,160,0,25,0,29,0,0,37,3,38,39,6,7,3,6,23,22,23,22,55,54,63,1, +51,23,22,23,50,55,54,55,54,39,37,55,23,35,1,126,160,9,21,21,8,160,5,4,5,13,12,12,12,6,31,198, +31,10,20,6,6,13,5,4,4,254,249,73,72,145,12,1,128,19,1,1,19,254,128,12,12,12,6,4,4,5,13,76, +76,19,1,2,6,12,12,12,116,173,173,0,0,3,0,0,255,224,1,64,1,160,0,25,0,37,0,49,0,0,37,54, +55,38,39,38,39,35,34,7,6,21,17,20,23,22,59,1,54,55,54,55,52,39,38,47,1,51,22,23,22,23,6,7, +6,7,35,53,19,35,53,51,22,23,22,23,6,7,6,7,1,1,30,1,1,37,36,54,128,14,9,9,9,9,14,160, +54,36,37,1,17,17,29,193,96,27,18,18,1,1,18,18,27,96,128,128,128,27,18,18,1,1,18,18,27,206,34,48, +54,36,37,1,9,9,14,254,128,14,9,9,1,37,36,54,35,29,28,18,146,1,18,18,27,27,18,18,1,128,254,192, +128,1,18,18,27,27,18,18,1,0,0,0,0,1,255,255,255,224,1,127,1,159,0,53,0,0,37,22,23,49,22,21, +20,7,6,7,6,7,38,39,38,39,38,53,52,55,54,55,54,55,22,23,22,23,22,21,20,7,6,7,38,39,38,39, +38,39,6,7,6,7,22,23,22,23,54,55,54,55,54,55,1,96,17,7,7,21,21,36,37,49,69,49,49,26,27,26, +26,49,49,70,50,36,37,21,20,7,8,17,16,17,14,23,22,40,74,41,40,1,1,40,40,75,40,23,23,14,17,16, +88,1,10,11,10,12,21,21,16,17,1,1,33,34,51,51,54,53,51,51,33,34,1,1,17,17,20,21,12,10,11,10, +1,1,17,13,12,12,1,3,49,48,59,59,49,49,3,1,12,12,13,17,1,0,0,0,0,2,0,0,255,224,1,128, +1,160,0,23,0,35,0,0,19,35,34,7,6,21,17,20,23,22,59,1,54,55,54,55,54,55,38,39,38,39,38,39, +17,35,17,51,22,23,22,23,6,7,6,7,160,128,14,9,9,9,9,14,128,62,51,50,30,30,1,1,30,30,50,51, +62,96,96,68,45,45,2,2,45,45,68,1,160,9,9,14,254,128,14,9,9,1,30,30,50,51,62,62,51,50,30,30, +1,254,128,1,64,2,45,45,67,67,46,46,2,0,0,0,0,1,0,0,255,224,1,64,1,160,0,42,0,0,37,20, +7,49,6,35,33,34,39,38,53,17,52,55,54,51,33,50,23,22,21,20,7,6,43,1,21,51,50,23,22,21,20,7, +6,43,1,21,51,50,23,22,21,1,64,9,9,14,255,0,14,9,9,9,9,14,1,0,14,9,9,9,9,14,224,160, +14,9,9,9,9,14,160,224,14,9,9,0,14,9,9,9,9,14,1,128,14,9,9,9,9,14,14,9,9,128,9,9, +14,14,9,9,128,9,9,14,0,1,0,0,255,225,1,64,1,160,0,36,0,0,1,20,7,49,6,43,1,21,51,50, +23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,53,17,52,55,54,51,33,50,23,22,21,1,64,9,9,14, +224,160,14,9,9,9,9,14,160,9,9,14,14,9,9,9,9,14,1,0,14,9,9,1,128,14,9,9,128,9,9,13, +13,9,10,160,14,9,9,9,9,14,1,128,13,9,9,9,9,14,0,0,0,1,0,1,255,226,1,192,1,160,0,64, +0,0,37,6,7,49,6,7,49,6,35,38,39,38,39,38,53,54,55,54,55,54,55,22,23,22,23,22,23,6,7,6, +35,38,39,38,39,38,39,6,7,6,7,6,23,22,23,22,23,54,55,54,55,35,34,39,38,53,52,55,54,59,1,50, +23,22,21,1,192,1,34,33,51,52,54,67,49,50,28,28,1,30,30,50,50,62,43,38,38,24,24,1,1,9,9,13, +16,17,14,24,24,41,67,45,45,2,1,13,12,35,35,65,61,43,43,11,134,14,9,9,9,9,14,168,14,9,9,192, +72,49,50,26,25,1,31,30,51,50,59,63,50,51,30,29,1,1,15,14,21,20,17,14,9,9,1,16,14,12,12,1, +2,45,44,69,19,37,38,31,32,2,2,35,35,55,9,9,14,14,8,9,8,9,14,0,0,1,0,0,255,224,1,128, +1,160,0,40,0,0,1,17,20,7,6,35,34,39,38,61,1,33,21,20,7,6,35,34,39,38,53,17,52,55,54,51, +50,23,22,29,1,33,53,52,55,54,51,50,23,22,21,1,128,9,9,14,14,9,9,255,0,9,9,14,14,9,9,9, +9,14,14,9,9,1,0,9,9,14,14,9,9,1,128,254,128,14,9,9,9,9,14,192,192,14,9,9,9,9,14,1, +128,14,9,9,9,9,14,128,128,14,9,9,9,9,14,0,0,1,0,0,255,224,1,64,1,160,0,41,0,0,37,20, +7,49,6,35,33,34,39,38,53,52,55,54,59,1,17,35,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6, +43,1,17,51,50,23,22,21,1,64,9,9,14,255,0,14,9,9,9,9,14,96,96,14,9,9,9,9,14,1,0,14, +9,9,9,9,14,96,96,14,9,9,0,14,9,9,9,9,14,14,9,9,1,64,9,9,14,14,9,9,9,9,14,14, +9,9,254,192,9,9,14,0,0,1,0,0,255,224,1,64,1,160,0,36,0,0,1,17,6,7,6,7,38,39,38,39, +53,52,55,54,51,50,23,22,29,1,22,23,22,23,54,55,54,55,17,52,55,54,51,50,23,22,21,1,64,2,45,45, +68,68,45,45,2,9,9,14,14,9,9,1,27,27,41,41,27,27,1,9,9,14,14,9,9,1,128,254,253,67,44,44, +2,2,44,44,67,35,14,9,9,9,9,14,35,40,26,26,1,1,26,26,40,1,3,14,9,9,9,9,14,0,0,0, +0,1,0,0,255,224,1,64,1,160,0,41,0,0,37,22,7,49,6,7,6,35,34,47,1,7,21,20,7,6,35,34, +39,38,53,17,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20,15,1,23,1,58,8,3,2,11,8,10, +16,10,134,64,9,9,14,14,9,9,9,9,14,14,9,9,201,10,13,12,10,10,9,137,140,18,11,13,12,8,6,14, +193,66,109,14,9,9,9,9,14,1,128,14,9,9,9,9,14,183,205,10,9,10,13,12,10,141,203,0,0,1,0,32, +255,224,1,64,1,160,0,25,0,0,37,20,7,49,6,43,1,34,39,38,53,17,52,55,54,51,50,23,22,21,17,51, +50,23,22,21,1,64,9,9,14,224,14,9,9,9,9,14,14,9,9,192,14,9,9,0,14,9,9,9,9,14,1,128, +14,9,9,9,9,14,254,160,9,9,14,0,0,1,0,0,255,224,1,192,1,160,0,36,0,0,1,17,20,7,6,35, +34,39,38,53,17,7,6,35,34,47,1,17,20,7,6,35,34,39,38,53,17,54,55,54,31,1,55,54,23,22,23,1, +192,9,9,14,14,9,9,133,10,17,17,10,133,9,9,14,14,9,9,1,22,22,14,165,165,14,22,22,1,1,128,254, +128,14,9,9,9,9,14,1,22,200,13,13,200,254,234,14,9,9,9,9,14,1,128,23,8,5,18,248,248,18,5,8, +23,0,0,0,0,1,0,0,255,224,1,128,1,160,0,32,0,0,1,17,6,7,6,35,34,39,1,17,20,7,6,35, +34,39,38,53,17,54,55,54,23,1,17,52,55,54,51,50,23,22,21,1,128,1,20,5,6,15,10,254,249,9,9,14, +14,9,9,1,20,21,15,1,7,9,9,14,14,9,9,1,128,254,128,22,8,2,12,1,60,254,216,14,9,9,9,9, +14,1,128,22,8,6,16,254,196,1,40,14,9,9,9,9,14,0,0,0,0,2,0,0,255,224,1,192,1,160,0,26, +0,44,0,0,19,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,17, +38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,224,62,51,50,30,30,1,1,30,30,50,51,62,62,51, +50,30,30,1,1,30,30,50,51,62,68,45,45,2,2,45,45,68,68,45,45,2,2,45,45,68,1,160,1,30,30,50, +51,62,62,51,50,30,30,1,1,30,30,50,51,62,62,51,50,30,30,1,254,128,2,45,45,68,68,45,44,2,2,45, +45,67,67,46,45,2,0,0,0,2,0,0,255,224,1,64,1,160,0,24,0,36,0,0,19,35,34,7,6,21,17,20, +23,22,51,50,55,54,61,1,51,54,55,54,55,38,39,38,39,17,35,53,51,22,23,22,23,6,7,6,7,160,128,14, +9,9,9,9,14,14,9,9,96,68,45,45,2,2,45,45,68,96,96,41,27,27,1,1,27,27,41,1,160,9,9,14, +254,128,14,9,9,9,9,14,96,2,45,45,67,67,46,46,2,255,0,192,1,27,27,41,41,27,27,1,0,2,0,0, +255,192,1,192,1,160,0,32,0,60,0,0,37,54,55,38,39,38,39,38,39,6,7,6,7,6,7,22,23,22,23,22, +23,54,55,23,22,51,54,55,54,53,52,47,1,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,39,38,35, +6,7,6,21,20,31,1,6,7,1,137,53,2,1,30,29,51,50,62,62,51,51,30,30,1,1,30,29,51,50,62,68, +53,47,10,14,16,8,8,7,47,169,68,45,45,2,2,45,45,68,68,45,45,2,1,32,70,11,14,16,8,8,7,72, +35,44,45,61,86,62,51,50,30,30,1,1,30,30,50,51,62,62,51,50,30,30,1,1,35,57,11,1,10,10,11,11, +9,57,13,2,45,45,68,68,45,44,2,2,45,45,67,55,41,84,12,1,10,10,11,11,9,86,21,1,0,2,0,0, +255,224,1,64,1,160,0,35,0,47,0,0,55,54,55,49,54,55,38,39,38,39,35,34,7,6,21,17,20,23,22,51, +50,55,54,61,1,51,23,22,51,50,55,54,55,54,47,2,51,22,23,22,23,6,7,6,7,35,53,229,40,25,25,1, +2,40,41,61,144,14,9,9,9,9,14,14,9,9,93,105,10,16,10,9,10,3,2,8,85,165,112,34,23,22,1,1, +22,23,34,112,138,17,35,36,46,61,41,40,2,9,9,14,254,128,14,9,9,9,9,14,128,147,13,6,8,13,12,12, +119,214,1,22,23,34,34,22,22,1,159,0,0,1,0,31,255,224,1,96,1,160,0,62,0,0,37,6,7,6,39,38, +39,38,39,38,39,38,55,54,55,54,23,22,23,22,55,54,55,54,39,38,39,38,39,38,39,38,55,54,55,54,23,22, +23,22,7,6,7,6,39,38,7,6,7,6,7,6,23,22,23,48,49,22,23,22,23,22,7,1,94,10,47,38,46,47, +43,42,25,12,5,5,4,6,12,11,13,59,50,50,27,21,4,6,23,24,63,36,38,37,23,23,8,9,42,69,138,13, +6,7,4,3,11,12,13,67,37,37,14,19,4,6,23,24,63,36,38,37,23,23,8,69,56,26,20,1,1,12,11,11, +6,11,12,13,12,5,5,5,23,6,5,15,11,26,30,17,17,17,10,16,15,31,30,52,49,28,44,36,4,11,11,14, +13,6,6,3,17,3,3,11,12,22,31,16,17,17,10,16,16,30,30,52,0,1,0,0,255,224,1,128,1,160,0,30, +0,0,1,20,7,49,6,43,1,17,20,7,6,35,34,39,38,53,17,35,34,39,38,53,52,55,54,51,33,50,23,22, +21,1,128,9,9,14,128,9,9,14,14,9,9,128,14,9,9,9,9,14,1,64,14,9,9,1,128,14,9,9,254,160, +14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,0,0,0,0,1,0,0,255,224,1,128,1,160,0,36, +0,0,1,21,6,7,6,7,38,39,38,39,53,52,55,54,51,50,23,22,29,1,22,23,22,23,54,55,54,55,53,52, +55,54,51,50,23,22,21,1,128,2,54,55,81,81,55,54,2,9,9,14,14,9,9,1,37,36,54,54,36,37,1,9, +9,14,14,9,9,1,128,226,80,54,54,2,2,54,54,80,226,14,9,9,9,9,14,226,53,36,36,1,1,36,36,53, +226,14,9,9,9,9,14,0,0,1,0,0,255,224,1,128,1,160,0,24,0,0,1,3,6,7,38,39,3,38,55,54, +55,54,23,22,23,27,1,54,55,54,23,22,23,22,7,1,126,160,9,21,21,9,160,4,4,5,13,12,12,12,6,130, +131,5,12,12,12,13,5,4,4,1,116,254,128,19,1,1,19,1,128,12,12,12,6,4,4,5,13,254,199,1,57,13, +5,4,4,6,12,12,12,0,0,1,0,0,255,224,2,63,1,160,0,38,0,0,1,3,6,7,48,35,38,39,11,1, +6,7,34,39,3,38,55,54,55,54,23,22,23,27,1,54,55,22,23,27,1,54,55,54,23,22,23,22,7,2,61,144, +8,22,1,22,8,80,81,8,22,22,9,144,4,5,5,13,13,11,12,5,110,85,8,23,23,8,85,110,5,12,11,13, +13,5,5,5,1,117,254,128,20,1,2,21,1,23,254,233,21,2,21,1,128,13,11,12,5,4,5,5,13,254,219,1, +36,20,2,1,22,254,220,1,37,13,5,5,4,4,12,11,13,0,0,0,0,1,0,0,255,224,1,128,1,160,0,41, +0,0,37,22,7,49,6,7,6,35,34,47,1,7,6,35,34,39,38,39,38,63,1,39,38,55,54,55,54,23,22,31, +1,55,54,55,54,23,22,23,22,15,1,23,1,121,8,1,1,10,10,11,14,11,135,135,11,14,11,9,11,1,1,8, +143,143,8,1,1,11,10,13,13,9,135,135,9,13,13,10,11,1,1,8,143,143,20,10,13,13,9,7,12,163,163,11, +7,9,13,13,10,172,170,11,13,13,9,8,1,1,11,162,162,11,1,1,8,9,13,13,10,172,172,0,0,1,0,0, +255,225,1,127,1,160,0,30,0,0,1,7,21,20,7,6,35,34,39,38,61,1,39,38,55,54,55,54,23,22,31,1, +55,54,55,54,23,22,23,22,7,1,122,154,9,9,14,14,9,9,154,8,2,3,10,12,12,13,8,134,133,8,13,12, +12,11,2,3,8,1,109,215,150,14,8,9,9,8,14,150,215,12,12,13,8,8,2,3,10,187,187,11,2,2,7,9, +13,12,12,0,0,1,0,0,255,224,1,128,1,160,0,31,0,0,37,20,7,49,6,35,33,38,39,38,55,1,35,34, +39,38,53,52,55,54,51,33,22,23,22,7,1,51,50,23,22,21,1,128,9,9,14,254,192,20,9,8,12,1,21,252, +14,9,9,9,9,14,1,64,20,9,8,12,254,235,252,14,9,9,0,14,9,9,1,17,19,15,1,76,9,9,14,14, +9,9,1,17,19,15,254,180,9,9,14,0,0,2,0,0,0,0,2,0,1,128,0,42,0,64,0,0,37,35,38,39, +53,39,7,21,6,7,35,6,7,21,22,23,51,22,23,22,51,50,55,54,55,51,50,23,22,21,20,23,22,59,1,50, +55,54,53,38,39,38,39,37,55,23,50,55,53,38,35,7,53,38,39,35,6,7,21,39,34,7,21,22,51,1,96,39, +24,33,32,32,33,24,119,15,1,1,15,93,16,30,30,39,39,30,30,16,13,14,9,9,9,9,14,64,14,9,9,2, +45,45,68,254,242,142,142,16,2,2,16,110,1,15,32,15,1,110,16,2,2,16,192,20,8,47,4,4,47,8,20,1, +15,96,15,1,29,17,18,18,17,29,9,9,14,13,10,9,9,9,14,68,45,45,2,96,15,15,17,30,17,12,28,15, +1,1,15,28,12,17,30,17,0,3,0,0,255,192,2,0,1,192,0,17,0,60,0,82,0,0,5,20,23,49,22,51, +50,55,54,53,38,39,38,39,6,7,6,7,3,35,38,39,53,39,7,21,6,7,35,6,7,21,22,23,51,22,23,22, +51,50,55,54,55,51,50,23,22,21,20,23,22,59,1,50,55,54,53,38,39,38,39,37,55,23,50,55,53,38,35,7, +53,38,39,35,6,7,21,39,34,7,21,22,51,1,160,9,9,14,14,9,9,2,14,14,2,2,14,14,2,64,39,24, +33,32,32,33,24,119,15,1,1,15,93,16,30,30,39,39,30,30,16,13,14,9,9,9,9,14,64,14,9,9,2,45, +45,68,254,242,142,142,16,2,2,16,110,1,15,32,15,1,110,16,2,2,16,32,14,9,9,9,9,14,16,23,23,2, +2,23,23,16,1,32,20,8,47,4,4,47,8,20,1,15,96,15,1,29,17,18,18,17,29,9,9,14,13,10,9,9, +9,14,68,45,45,2,96,15,15,17,30,17,12,28,15,1,1,15,28,12,17,30,17,0,0,2,0,0,255,192,2,64, +1,192,0,45,0,58,0,0,37,6,7,49,6,7,35,23,6,7,6,7,33,38,39,38,39,53,35,38,39,38,53,52, +55,37,54,23,50,31,1,53,52,55,54,59,1,50,23,22,29,1,23,22,7,49,37,6,7,21,22,23,51,54,55,53, +38,39,35,2,64,1,9,9,13,32,1,1,18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10, +106,9,9,14,32,14,9,9,53,12,1,254,184,22,2,2,22,80,22,2,2,22,80,192,13,9,9,1,160,27,18,18, +1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9,9,9,9,14,121,47,10,14,64,2,22,80, +22,2,2,22,80,22,2,0,0,5,0,0,255,192,2,64,1,192,0,24,0,37,0,56,0,74,0,91,0,0,1,54, +51,49,50,31,1,22,7,6,7,35,21,6,7,6,7,35,38,39,38,39,54,63,1,7,6,7,21,22,23,51,54,55, +53,38,39,35,3,6,7,38,39,38,39,38,39,38,39,54,55,22,23,22,23,22,23,37,52,55,49,54,51,50,23,22, +21,20,7,6,35,34,39,38,61,1,54,55,22,23,22,23,6,7,38,39,38,39,38,39,38,39,1,58,10,12,12,10, +208,15,7,9,21,32,1,13,14,20,168,18,53,53,75,2,7,208,10,15,2,2,15,64,15,1,1,15,64,48,2,22, +22,2,2,52,52,78,22,2,2,22,65,52,52,31,31,1,255,0,9,9,14,14,9,9,9,9,14,14,9,9,2,22, +58,38,39,1,2,22,22,2,1,25,25,37,22,2,1,184,8,8,193,15,20,19,1,112,20,14,13,1,75,53,54,18, +9,6,193,184,1,15,64,15,1,1,15,64,15,1,254,216,22,2,2,22,78,52,52,2,2,22,22,2,1,31,31,52, +52,65,8,14,9,9,9,9,14,14,9,9,9,9,14,104,22,2,1,39,38,58,22,2,2,22,37,25,25,1,2,22, +0,4,0,0,255,192,2,0,1,192,0,22,0,46,0,74,0,110,0,0,55,53,38,39,6,15,1,6,7,6,23,22, +23,22,51,50,55,54,55,54,39,38,39,55,38,39,49,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55, +38,39,53,3,6,7,49,6,35,34,39,38,39,38,55,54,55,53,54,55,54,55,22,23,22,29,1,22,23,22,7,37, +38,7,49,6,15,1,17,52,39,38,35,34,7,6,21,17,39,38,39,38,7,6,7,6,31,1,22,51,50,63,1,54, +39,38,39,159,1,14,14,1,1,17,8,9,3,3,13,13,18,18,13,13,3,3,9,9,17,96,1,31,31,48,48,31, +32,1,31,1,2,40,41,61,61,40,41,1,1,31,35,9,21,20,26,26,21,20,9,8,8,7,21,1,13,14,20,20, +13,14,22,7,8,8,1,23,11,12,13,9,6,9,9,14,14,9,9,8,9,12,13,11,10,2,1,8,64,11,15,15, +10,64,8,1,2,11,125,19,15,2,1,15,20,6,15,15,17,18,11,11,11,11,18,17,15,15,6,211,48,31,32,1, +1,32,31,48,167,37,52,61,41,40,2,2,40,41,61,52,37,167,254,231,25,15,14,15,15,24,25,24,24,16,192,20, +14,13,1,1,13,14,20,192,16,24,24,25,50,8,1,2,10,9,1,37,14,9,9,9,9,14,254,219,9,10,2,1, +8,9,12,13,11,80,12,12,80,11,13,12,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,22,0,46,0,74, +0,109,0,0,55,53,38,39,6,7,21,6,7,6,23,22,23,22,51,50,55,54,55,54,39,38,39,55,38,39,49,38, +39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,53,3,6,7,49,6,35,34,39,38,39,38,55,54, +55,53,54,55,54,55,22,23,22,29,1,22,23,22,7,1,39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,17, +20,23,22,51,50,55,54,53,17,23,22,51,50,55,54,55,54,39,159,1,14,15,1,17,8,9,3,3,13,13,18,18, +13,13,3,3,9,9,17,96,1,31,31,48,48,31,32,1,31,1,2,40,41,61,61,40,41,1,1,31,35,9,21,20, +26,26,21,20,9,8,8,7,21,1,13,14,20,20,13,14,22,7,8,8,1,28,64,10,15,15,10,64,8,1,2,10, +11,13,12,9,8,9,9,14,14,9,9,7,10,15,11,9,10,2,1,9,125,211,15,1,1,15,211,6,15,15,17,18, +11,11,11,11,18,17,15,15,6,211,48,31,32,1,1,32,31,48,167,37,52,61,41,40,2,2,40,41,61,52,37,167, +254,231,25,15,14,15,15,24,25,24,24,16,192,20,14,13,1,1,13,14,20,192,16,24,24,25,1,13,80,11,11,80, +11,13,12,9,8,1,2,10,9,254,219,14,9,9,9,9,14,1,37,9,12,7,9,12,13,11,0,0,0,8,0,0, +255,224,2,128,1,160,0,35,0,45,0,56,0,65,0,76,0,87,0,105,0,123,0,0,1,22,23,49,22,23,21,51, +50,23,22,21,20,7,6,35,33,38,39,38,39,6,7,6,7,35,38,39,38,39,17,54,55,54,55,33,5,21,54,55, +53,38,39,6,7,49,23,50,23,53,38,39,6,7,21,54,51,23,22,23,53,38,39,6,7,21,55,21,22,23,54,55, +53,38,39,6,7,51,38,39,6,7,21,22,23,54,55,53,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,240,20,14,13,1,64,14,9,9,9,9, +14,254,191,7,30,31,43,43,31,30,7,17,20,14,13,1,1,13,14,20,1,192,254,80,15,17,1,15,15,1,112,8, +8,1,15,15,1,8,8,80,17,15,1,15,15,1,96,1,15,15,1,1,15,15,1,128,1,15,15,1,1,15,15,1, +254,128,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,80,14,9,9,9,9,14,14,9,9,9,9,14,1, +160,1,13,14,20,240,9,9,14,14,9,9,42,26,27,1,1,27,26,42,1,13,14,20,1,0,20,14,13,1,80,152, +12,9,131,15,1,1,15,112,1,113,15,1,1,15,113,1,19,9,12,152,15,1,1,15,131,131,192,15,1,1,15,192, +15,1,1,15,15,1,1,15,192,15,1,1,15,192,254,224,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34, +32,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,5,0,0,255,193,2,127,1,191,0,119,0,137,0,253, +1,15,1,24,0,0,37,54,39,38,15,1,38,39,55,54,39,38,39,6,15,1,34,7,6,7,39,38,39,38,7,6, +31,1,6,7,6,7,38,39,38,35,34,7,6,31,1,6,7,6,7,48,49,39,38,7,6,31,1,6,7,6,7,39, +38,7,6,31,1,6,23,7,6,23,22,63,1,22,23,7,6,23,22,63,1,50,55,54,55,48,49,23,22,55,54,47, +1,54,55,23,22,55,54,47,1,54,55,23,22,55,54,47,1,54,55,23,22,55,54,47,1,54,55,54,39,55,7,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,39,54,47,1,54,55,54,55,23,22,55,54,47,1,54,39, +55,54,39,38,15,1,38,39,55,54,39,38,15,1,34,7,6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1, +6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1,6,7,6,23,7,6,23,22,63,1,22,23,7,6,23,22, +23,54,63,1,50,55,54,55,23,22,23,22,55,54,47,1,54,55,54,55,22,23,22,51,50,55,54,47,1,54,55,54, +51,23,22,55,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,38,39,54,55,22,23,6,7,2, +115,15,3,7,15,11,13,24,3,2,4,4,11,13,4,3,6,13,13,17,8,4,7,7,8,10,10,9,10,2,1,3, +2,2,7,5,11,5,6,14,9,12,10,11,2,4,8,15,15,6,4,6,6,15,20,10,12,13,9,11,9,13,2,12, +15,3,6,16,11,13,24,3,3,16,16,5,3,8,9,17,16,3,7,16,15,4,4,24,20,7,11,14,12,9,6,19, +16,9,14,10,9,12,9,13,10,10,16,7,4,15,11,1,1,8,1,11,211,14,9,9,9,9,14,14,9,9,9,9, +14,144,15,6,4,6,6,15,20,10,12,13,10,12,9,13,2,12,15,3,6,16,11,13,24,3,3,15,17,5,3,8, +9,17,16,3,7,17,14,4,4,23,21,7,11,13,13,9,6,19,16,8,15,10,9,13,8,13,10,10,16,7,4,15, +11,1,1,8,1,11,15,3,7,15,11,13,24,3,2,4,4,11,13,4,3,6,13,13,17,8,3,8,7,8,10,10, +9,10,2,1,3,2,2,7,5,11,5,6,14,9,12,11,11,1,4,8,15,144,14,9,9,9,9,14,14,9,9,9, +9,14,80,15,1,1,15,15,1,1,15,221,6,16,15,3,4,24,12,11,6,8,7,1,1,12,11,2,2,10,9,3, +2,2,7,12,13,9,18,13,7,9,1,1,4,10,15,9,4,16,8,9,1,9,14,5,8,15,9,2,1,2,12,9, +10,11,13,12,9,22,26,4,6,16,15,3,4,24,12,11,16,5,3,15,11,1,3,5,9,15,4,7,16,10,10,13, +8,12,8,11,14,9,16,19,7,8,12,14,11,7,20,23,3,4,15,16,6,4,2,2,24,21,4,189,9,9,14,14, +9,9,9,9,14,14,9,9,190,8,15,9,2,1,2,12,9,10,11,13,12,9,22,26,4,6,16,15,3,4,24,12, +11,16,5,3,15,11,1,3,5,9,15,4,7,16,10,10,13,8,12,8,11,14,9,16,19,6,9,12,14,11,7,20, +24,4,4,15,16,6,4,2,3,23,21,4,6,16,15,3,4,23,13,11,6,8,7,1,1,12,11,2,2,10,9,3, +2,2,7,12,13,9,18,13,7,9,1,1,4,10,15,9,4,16,9,8,8,14,5,30,9,10,14,13,10,9,9,10, +13,14,10,9,96,1,15,15,1,1,15,15,1,0,0,0,0,3,0,32,255,192,2,31,1,191,0,121,0,139,0,148, +0,0,1,38,15,1,38,39,55,54,39,38,15,1,38,7,6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1, +6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1,6,7,6,21,48,49,7,6,23,22,63,1,22,23,7,6, +23,22,23,54,63,1,22,55,54,55,23,22,23,22,55,54,47,1,54,55,54,55,22,23,22,23,54,55,54,47,1,54, +55,54,55,50,49,23,22,55,54,47,1,54,49,54,55,54,55,23,22,55,54,47,1,54,39,55,54,39,1,38,39,49, +38,39,54,55,54,55,22,23,22,21,20,7,6,7,55,38,39,54,55,22,23,6,7,2,31,8,22,15,17,31,4,3, +20,22,7,4,7,15,15,30,4,9,21,20,5,5,31,28,8,15,18,17,12,8,26,21,11,19,14,11,16,11,18,13, +13,21,9,5,20,13,9,1,1,15,20,4,9,21,15,16,32,4,2,5,5,15,18,5,4,8,17,18,22,11,5,9, +10,10,14,13,13,12,4,2,4,2,3,9,8,14,7,8,19,12,16,14,14,2,1,5,10,21,18,6,5,1,8,7, +26,19,14,17,16,13,14,13,17,2,16,20,4,254,161,20,14,13,1,1,13,14,20,20,14,14,14,14,20,80,22,2, +2,22,21,2,1,22,1,89,20,4,4,31,16,14,22,7,4,21,14,1,2,2,9,12,20,6,9,21,12,13,19,11, +16,11,15,18,11,22,25,8,11,17,18,15,8,27,31,4,5,20,21,9,4,31,14,14,7,5,8,21,21,5,5,31, +17,14,8,10,11,1,1,17,14,1,3,3,14,12,5,2,2,8,17,17,12,19,23,10,10,1,1,5,1,1,13,20, +11,6,22,11,11,1,12,19,7,11,20,12,1,2,2,4,14,12,13,15,17,16,12,29,35,5,8,21,254,247,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,136,2,22,21,2,2,21,22,2,0,0,3,0,0,255,192,2,0, +1,192,0,13,0,27,0,54,0,0,37,55,35,34,39,38,39,38,39,38,43,1,19,33,5,20,23,49,22,51,33,50, +55,54,61,1,33,21,1,35,7,51,22,23,6,7,33,38,39,54,55,51,39,35,34,7,6,29,1,33,53,52,39,38, +35,1,128,64,109,23,18,18,8,8,18,18,23,141,64,1,0,254,128,9,9,14,1,192,14,9,9,254,0,1,224,41, +21,14,15,1,1,15,254,160,15,1,1,15,15,14,49,14,9,9,2,0,9,9,14,160,192,13,13,22,22,13,13,254, +224,192,14,9,9,9,9,14,64,64,1,0,64,1,15,15,1,1,15,15,1,64,9,9,14,128,128,14,9,9,0,0, +0,2,0,0,255,192,2,63,1,192,0,38,0,67,0,0,37,38,39,49,38,15,1,35,38,39,54,55,51,50,55,54, +55,54,39,38,43,1,34,15,1,39,6,7,21,22,23,33,50,63,1,54,55,54,39,37,51,21,22,23,51,54,55,53, +51,54,55,53,38,39,35,53,38,39,35,6,7,21,35,6,7,21,22,23,2,56,10,16,16,14,119,121,14,1,2,13, +78,12,10,9,3,2,10,9,15,161,41,33,47,55,13,2,2,13,1,90,34,28,135,15,2,3,10,254,104,64,1,15, +64,15,1,64,15,1,1,15,64,1,15,64,15,1,64,15,1,1,15,112,13,3,2,10,88,1,15,15,1,7,8,12, +15,11,11,26,38,1,2,15,96,15,1,20,100,10,16,16,14,160,64,15,1,1,15,64,1,15,64,15,1,64,15,1, +1,15,64,1,15,64,15,1,0,4,0,0,255,192,2,127,1,192,0,76,0,103,0,130,0,155,0,0,37,54,63,2, +54,55,53,52,39,38,35,34,7,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,29,1,6,7,38,39,53,52, +39,38,35,34,7,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,20,31,1, +22,23,51,54,55,39,38,47,1,15,1,6,35,34,47,2,38,53,52,63,2,54,51,50,31,2,22,21,20,7,48,21, +37,50,63,2,54,53,48,53,38,47,2,38,35,34,15,2,6,21,20,31,2,22,51,5,52,47,2,38,35,34,15,2, +6,21,20,31,2,22,51,50,63,2,54,53,1,192,1,20,40,15,8,12,9,9,14,14,9,9,1,15,15,1,9,9, +14,14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,60,12,16,16,12,11,1,12, +113,59,82,38,65,47,9,22,1,98,30,12,2,2,2,2,12,30,2,2,30,12,2,2,2,2,12,30,2,2,254,242, +4,2,21,49,4,1,3,49,21,2,4,4,2,21,49,4,4,49,21,2,4,2,47,4,49,21,1,4,4,2,21,49, +4,4,49,21,2,4,4,2,21,49,3,16,23,12,16,38,13,6,196,14,9,9,9,9,14,112,15,1,1,15,176,14, +9,9,9,9,14,176,15,1,1,15,208,14,9,9,9,9,14,208,15,1,1,15,176,14,9,9,9,9,14,254,233,59, +12,11,12,17,16,12,113,58,1,1,40,4,12,23,60,11,30,3,2,31,12,1,3,2,1,12,30,2,2,30,12,2, +1,3,1,1,148,4,49,21,2,4,1,3,2,21,49,4,4,49,21,2,3,4,2,21,49,5,208,4,2,21,49,4, +4,49,21,2,4,4,2,21,49,4,4,49,21,2,4,0,0,6,0,32,255,192,2,32,1,192,0,17,0,81,0,95, +0,113,0,167,0,185,0,0,1,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,19,35,38,39,54,55, +51,50,55,54,39,38,39,35,55,54,39,38,15,1,6,7,6,7,21,22,23,22,23,20,7,22,59,1,50,55,54,39, +38,39,35,38,39,54,55,51,50,55,54,39,38,39,35,38,39,54,55,51,50,55,54,39,38,47,1,54,51,50,23,55, +54,39,38,39,38,15,1,55,23,54,55,49,54,55,38,39,38,35,34,7,6,7,22,23,22,23,5,48,51,49,48,51, +53,54,55,54,63,2,54,39,38,39,38,15,1,6,39,38,63,1,54,39,38,39,34,15,1,6,39,38,63,1,54,39, +38,39,34,15,1,39,38,39,6,7,21,22,23,22,31,1,6,7,49,6,7,22,23,22,51,50,55,54,55,38,39,38, +39,1,160,14,9,9,9,9,14,14,9,9,9,9,14,103,159,7,1,1,7,128,11,7,7,1,6,19,199,47,20,4, +8,22,108,39,23,22,1,28,18,17,1,6,27,35,208,11,7,7,1,6,19,95,7,1,1,7,128,11,7,7,1,6, +19,127,7,1,1,7,160,11,7,7,1,6,19,207,8,8,9,10,15,3,5,6,12,19,7,21,17,184,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,254,110,1,1,1,29,28,49,74,34,3,6,6,11,19,7,34,2,8,6, +1,44,3,6,6,12,19,6,48,3,7,8,2,39,3,6,6,11,19,7,60,2,2,22,22,3,1,16,17,28,18,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,128,9,9,13,14,9,9,9,9,14,13,9,9,254,240,1, +7,7,1,9,8,12,18,1,17,8,22,20,4,33,14,31,32,40,26,6,21,22,29,16,14,19,9,8,12,18,1,1, +7,7,1,9,8,12,18,1,1,7,7,1,9,8,12,18,1,158,2,3,48,11,9,10,1,1,18,66,5,46,1,13, +13,20,20,14,14,14,13,20,20,14,13,1,162,26,51,40,40,17,23,108,11,9,9,2,1,18,107,7,2,3,7,138, +11,9,9,2,18,151,7,1,3,7,122,12,9,9,2,18,190,50,22,2,1,22,113,34,27,28,16,30,1,13,13,20, +20,14,14,14,13,20,20,14,13,1,0,0,0,2,0,0,255,192,2,128,1,192,0,51,0,76,0,0,37,23,22,23, +51,54,55,54,61,1,52,39,38,43,1,38,39,38,43,1,34,15,1,39,55,35,6,7,39,38,35,34,7,6,23,1, +22,55,54,47,1,52,47,1,7,39,55,54,23,22,15,1,37,34,7,49,6,29,1,20,23,22,59,1,23,22,55,54, +55,23,22,55,54,63,1,1,35,1,103,145,18,4,82,13,9,9,9,9,13,95,31,40,40,44,8,12,10,93,27,81, +6,67,54,123,7,8,11,8,12,16,2,80,19,15,12,16,136,11,149,12,25,65,12,11,8,8,27,254,185,13,9,9, +9,9,13,114,91,21,26,25,17,18,12,15,15,10,13,254,143,8,252,118,15,23,1,9,9,13,161,13,10,9,31,16, +17,9,85,19,74,1,36,96,5,9,19,15,254,48,12,16,19,15,106,14,10,121,10,21,60,8,8,12,11,26,69,9, +10,13,160,13,10,9,82,16,2,3,21,16,9,1,2,12,16,1,34,0,0,6,0,0,255,193,2,127,1,192,0,8, +0,17,0,27,0,36,0,51,0,93,0,0,1,21,20,23,22,59,1,17,35,23,38,39,54,55,22,23,22,7,37,17, +51,50,55,54,53,55,39,35,23,6,7,38,39,54,55,22,31,1,51,23,22,55,54,55,23,22,55,54,63,1,37,21, +5,52,47,1,7,39,55,54,23,22,15,1,23,22,23,53,38,39,38,43,1,34,15,1,39,55,35,6,7,39,38,35, +34,7,6,23,1,22,55,54,47,1,2,31,9,9,13,64,95,48,14,2,2,14,14,1,1,16,253,177,63,14,9,9, +1,56,40,64,2,13,14,1,1,14,13,2,64,18,91,21,26,25,17,18,12,15,15,10,13,254,231,1,111,11,149,12, +25,65,12,10,9,10,26,146,4,4,31,40,40,44,8,13,9,93,26,81,6,67,54,123,7,8,11,8,12,16,2,79, +19,15,12,16,135,1,64,224,14,9,9,1,0,224,1,15,14,1,1,14,15,1,224,255,0,9,9,14,180,44,208,15, +1,1,15,14,1,1,14,16,82,16,2,3,21,16,9,2,1,12,16,222,156,11,15,9,122,11,20,60,9,10,12,11, +24,118,3,4,194,31,16,17,8,87,20,74,1,36,96,5,9,19,15,254,49,12,16,19,15,105,0,0,0,8,0,0, +255,192,2,120,1,192,0,8,0,54,0,72,0,83,0,92,0,103,0,114,0,123,0,0,37,6,7,22,23,54,55,38, +47,1,38,39,49,38,39,49,38,39,38,39,38,43,1,6,7,6,7,20,23,22,23,21,51,53,51,54,55,54,55,39, +34,39,38,53,52,55,54,59,1,53,51,54,55,54,47,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,23,6,7,22,23,50,55,54,53,38,39,55,54,55,38,39,6,7,22,23,35,6,7,22,23,50,55,54,53,38,39, +21,6,7,22,23,50,55,54,53,38,39,23,6,7,22,23,54,55,38,39,2,96,22,2,2,22,22,2,2,22,131,12, +14,12,12,11,12,29,45,44,52,42,82,54,54,2,17,17,30,223,64,27,18,18,1,95,14,9,9,9,9,14,96,32, +18,9,9,7,141,14,9,9,9,9,14,14,9,9,9,9,14,144,21,2,2,21,10,7,7,2,22,128,22,2,2,22, +22,2,2,22,64,21,2,2,21,10,7,7,2,22,21,2,2,21,10,7,7,2,22,64,22,2,2,22,22,2,2,22, +89,2,22,22,2,2,22,22,2,84,29,44,34,31,32,17,41,23,24,2,54,54,82,43,36,37,27,177,32,1,18,18, +26,1,9,9,14,14,9,9,32,1,14,13,17,51,9,9,14,14,9,9,9,9,14,14,9,9,135,2,22,22,2,7, +7,10,22,2,48,2,22,22,2,2,22,22,2,2,22,22,2,7,7,10,22,2,96,2,22,22,2,7,7,10,22,2, +48,2,22,22,2,2,22,22,2,0,0,0,0,5,0,0,255,193,2,127,1,192,0,8,0,17,0,49,0,77,0,86, +0,0,37,54,55,38,39,6,7,22,23,21,54,55,38,39,6,7,22,31,1,39,51,54,55,54,39,38,39,38,39,38, +39,38,39,38,43,1,6,7,39,38,35,34,7,6,23,1,22,55,54,39,37,34,39,49,38,53,52,55,54,55,51,37, +6,21,20,23,22,23,21,51,53,51,54,55,54,55,39,35,55,54,55,38,39,6,7,22,23,2,95,22,2,2,22,21, +2,2,21,22,2,2,22,22,2,3,21,24,190,7,18,9,9,7,11,13,12,13,12,12,29,45,44,52,42,64,48,41, +7,8,11,8,12,16,2,79,19,15,13,16,254,201,14,8,9,9,8,14,6,254,204,18,17,17,30,223,64,26,17,18, +2,7,87,223,22,2,2,22,22,2,3,21,137,2,21,21,2,2,21,21,2,96,2,22,21,2,2,22,21,2,62,149, +1,13,14,16,27,41,35,33,33,18,42,23,24,1,36,32,5,9,19,15,254,49,12,16,17,16,54,9,9,13,13,10, +9,1,240,37,43,43,37,36,27,177,31,1,16,16,25,6,57,2,22,21,2,2,22,21,2,0,0,0,0,4,0,0, +255,192,2,0,1,192,0,11,0,34,0,56,0,74,0,0,19,6,23,49,22,23,21,51,53,39,6,7,5,51,55,35, +21,51,50,55,54,55,53,35,38,39,54,55,51,55,35,38,39,52,63,1,38,39,49,38,39,49,38,39,38,39,38,43, +1,6,7,6,7,23,33,52,47,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,0,1,17,17,31, +160,220,3,1,1,80,160,16,255,146,21,16,17,7,127,15,1,1,15,139,10,149,15,1,15,173,11,13,12,13,12,12, +29,45,44,52,66,63,51,50,23,226,1,17,3,157,14,9,9,9,9,14,14,8,9,9,9,13,1,8,46,38,39,28, +177,195,161,14,14,184,48,192,12,12,20,4,1,15,15,1,32,1,15,15,1,93,27,41,35,33,33,18,41,23,24,1, +33,34,56,164,6,7,51,9,9,14,14,9,9,9,9,14,14,9,9,0,0,4,0,0,255,192,2,0,1,192,0,8, +0,17,0,53,0,138,0,0,19,6,7,22,23,54,55,52,39,23,6,7,22,23,54,55,38,39,23,38,39,49,38,39, +49,38,39,38,39,38,43,1,6,7,6,7,20,23,22,23,21,33,53,51,54,55,54,55,53,51,54,55,54,47,1,35, +6,7,6,31,1,22,7,6,35,34,47,1,38,7,6,7,21,6,7,38,39,53,38,39,38,15,1,6,35,34,39,38, +63,1,54,39,38,39,35,38,39,54,55,51,54,55,54,47,1,38,55,54,31,1,22,55,54,55,53,54,55,22,23,21, +22,23,22,63,1,54,23,22,15,1,6,23,22,23,51,22,23,6,7,208,15,1,2,13,14,2,15,64,14,1,1,15, +15,1,3,14,237,12,14,12,12,11,12,29,45,44,52,74,82,54,54,2,17,17,30,1,0,64,27,18,17,1,32,19, +9,9,7,141,12,22,8,7,14,9,9,9,5,6,7,5,8,17,18,18,2,1,15,15,1,2,18,18,17,8,5,7, +6,5,9,9,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,9,9,12,11,8,17,18,19,1,1,15,15, +1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,14,1,1,14,1,17,1,15,14,1,1,15,13,2,64,1, +15,15,1,1,15,14,2,36,29,44,34,31,32,17,41,23,24,2,54,54,82,43,37,36,27,177,64,1,18,18,26,65, +1,14,13,17,35,2,18,18,17,8,12,11,5,5,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,5,5, +11,12,8,17,18,18,2,1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,15,1,1,15,12,22, +8,7,14,9,9,9,11,12,8,17,18,18,2,1,15,15,1,0,0,0,0,3,0,0,255,192,2,64,1,192,0,43, +0,61,0,76,0,0,37,23,6,7,6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,53, +52,55,54,59,1,50,23,22,29,1,23,22,7,6,7,6,7,43,1,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,7,51,54,55,38,39,38,39,35,6,7,6,7,22,23,2,0,1,1,18,18,27,254,191,27,18,18,1, +32,14,9,9,10,1,0,11,11,12,10,106,9,9,14,32,14,9,9,53,12,1,1,9,9,13,32,224,27,18,18,1, +1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22,1,1,15,160,160,27,18,18, +1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9,9,9,9,14,121,47,10,14,13,9,9,1, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,128,1,15,34,23,22,1,1,22,23,34,15,1,0,0,0, +0,3,0,0,255,192,2,128,1,192,0,34,0,61,0,66,0,0,19,54,51,49,50,31,1,22,21,35,6,7,53,38, +39,35,6,7,21,22,23,51,21,35,38,39,38,39,53,35,38,39,38,63,1,23,51,50,23,22,29,1,51,22,23,6, +7,6,7,33,38,39,38,39,54,55,51,53,52,55,54,51,23,21,51,53,35,218,10,12,12,10,208,10,144,30,18,1, +15,64,15,1,1,15,63,159,20,14,13,1,32,21,9,7,15,208,118,224,14,9,9,32,15,1,1,13,14,20,254,223, +20,13,14,1,2,14,32,10,9,14,16,192,192,1,184,8,8,193,9,14,1,21,38,15,1,1,15,64,15,1,128,1, +13,14,20,112,1,19,20,15,193,248,9,9,14,160,1,15,20,14,13,1,1,13,14,20,15,1,160,14,9,9,48,144, +144,0,0,0,0,6,0,0,255,193,2,128,1,192,0,51,0,63,0,148,0,157,0,166,0,217,0,0,55,38,53,49, +52,63,1,35,34,39,38,39,54,55,54,55,51,39,38,53,52,55,54,51,50,23,53,38,39,38,39,6,7,6,7,6, +7,6,7,6,21,22,23,22,63,1,54,55,34,7,38,39,19,55,38,39,35,6,15,1,54,51,50,23,19,54,47,1, +38,55,54,55,51,54,55,38,39,35,38,39,38,63,1,54,39,38,15,1,6,39,38,39,53,38,39,6,7,21,6,7, +6,47,1,38,7,6,31,1,22,7,6,7,35,6,7,22,23,51,22,23,22,15,1,6,23,22,51,50,63,1,54,23, +22,23,21,22,23,54,55,53,54,55,54,31,1,22,51,54,55,39,38,39,54,55,22,23,6,7,23,38,39,54,55,22, +23,6,7,5,38,39,38,39,38,39,38,39,6,7,6,7,21,54,55,22,23,22,21,20,15,1,51,22,23,22,23,6, +7,6,7,35,23,22,21,20,7,6,7,38,35,22,31,1,22,55,54,55,52,39,196,15,15,8,12,20,14,13,1,1, +13,14,20,12,8,15,15,14,20,14,12,1,19,20,30,29,16,16,14,2,3,69,33,4,2,37,37,49,60,33,19,4, +3,20,14,147,1,1,15,16,15,1,1,11,12,14,11,79,9,9,9,14,7,8,22,12,15,1,1,15,12,22,8,7, +14,9,9,9,11,12,8,17,18,18,2,1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,15,1, +1,15,12,22,8,7,14,9,9,9,5,6,7,5,8,17,18,18,2,1,15,15,1,2,18,18,17,8,5,7,6,5, +134,15,1,1,15,15,1,1,15,64,15,1,1,15,15,1,1,15,1,28,33,69,3,2,14,16,16,29,30,19,20,1, +12,15,19,14,15,15,8,12,20,14,13,1,1,13,14,20,12,8,14,14,14,19,4,4,19,33,60,49,37,37,2,4, +3,15,19,20,14,9,14,14,20,20,14,13,1,9,14,20,19,14,14,7,27,28,19,18,1,1,15,15,24,4,4,109, +122,15,15,47,26,27,12,15,10,25,1,1,13,1,38,135,15,1,1,15,135,7,7,254,241,12,11,8,17,18,19,1, +1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,14,1,1,14,12,22,8,7,14,9,9,9,12, +11,8,17,18,19,1,1,15,15,1,2,18,18,17,8,12,11,5,5,9,14,7,8,22,12,15,1,1,15,12,22,8, +7,14,9,5,1,4,119,1,14,14,3,2,14,14,2,64,1,15,14,1,1,15,14,1,23,122,109,4,4,24,15,15, +1,1,18,19,28,27,7,1,1,14,14,19,20,14,9,1,13,14,20,20,14,13,1,9,14,20,19,14,14,1,1,25, +9,16,12,27,26,47,15,15,0,5,0,0,255,192,2,64,1,192,0,33,0,51,0,69,0,100,0,136,0,0,55,52, +63,1,54,55,54,55,38,39,35,6,7,6,7,21,20,23,22,51,23,20,23,22,59,1,50,55,54,61,1,39,38,53, +37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,33,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,5,39,38,7,6,29,1,35,53,52,39,38,15,1,6,31,1,22,55,54,61,1,51,21,20,23,22,63, +1,54,39,55,35,34,7,6,7,22,23,22,31,1,22,21,20,15,1,21,20,23,22,59,1,50,55,54,61,1,50,55, +54,61,1,38,39,38,39,96,14,72,1,2,1,1,17,42,64,27,18,18,1,9,9,13,1,9,9,14,64,14,9,9, +50,14,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,1,92,72,6,7,7,128,7,7,6,72,8,8,72,6,7,7,128,7,7,6,72,8,8,68,64, +20,16,16,7,1,1,2,1,72,14,14,50,9,9,14,64,14,9,9,14,9,9,1,18,18,27,144,19,13,68,1,1, +1,1,38,2,1,18,18,27,96,14,9,9,128,14,9,9,9,9,14,96,48,13,19,176,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,167,68,5,3,3,8,36,36, +8,3,3,5,68,9,9,68,5,3,3,8,36,36,8,3,3,5,68,9,9,135,11,11,18,1,1,1,1,68,13,19, +19,13,48,96,14,9,9,9,9,14,128,9,9,14,96,27,18,18,1,0,0,2,0,0,255,192,2,128,1,192,0,28, +0,53,0,0,19,39,38,55,51,22,31,1,51,22,23,22,23,6,7,6,7,35,23,22,7,6,39,1,38,55,54,31, +1,39,5,7,6,7,35,38,63,1,35,7,6,43,1,38,39,52,63,1,39,38,53,52,55,49,238,40,3,18,56,19, +9,101,116,29,31,31,3,3,31,31,29,73,190,16,12,15,19,253,176,16,12,15,19,199,196,1,65,66,9,19,56,18, +3,49,103,43,5,8,42,13,1,1,31,31,1,10,1,31,141,17,3,1,15,176,1,18,18,27,28,18,17,1,149,15, +19,16,12,1,208,15,19,16,12,156,32,253,114,15,1,3,17,173,59,6,1,14,1,2,111,109,2,2,10,3,0,0, +0,3,0,0,255,192,1,128,1,192,0,23,0,44,0,73,0,0,1,39,38,43,1,52,39,38,43,1,34,7,6,21, +23,51,53,51,23,22,63,1,54,39,7,35,6,7,6,15,1,6,23,22,23,51,54,55,54,47,1,38,39,38,39,23, +6,7,35,21,6,7,35,38,39,53,35,38,39,53,54,55,51,53,54,59,1,22,23,21,51,22,23,21,1,123,43,20, +25,67,9,9,14,65,13,10,9,1,128,67,43,11,12,22,10,10,143,152,25,18,18,2,21,2,19,18,29,191,29,18, +19,2,21,2,17,18,25,3,1,12,40,1,13,26,12,2,39,12,1,1,12,40,1,13,26,13,1,40,12,1,1,98, +43,19,14,9,9,9,9,14,96,32,43,10,10,22,12,11,66,1,16,16,25,224,29,20,20,1,1,20,20,29,224,25, +16,16,1,173,12,2,40,12,1,1,12,40,2,12,26,12,2,40,13,1,12,40,1,13,26,0,0,0,0,3,0,0, +255,192,1,128,1,192,0,20,0,40,0,64,0,0,19,35,6,7,6,15,1,6,23,22,23,51,54,55,54,47,1,38, +39,38,39,3,38,39,49,38,39,54,55,54,55,54,23,22,23,22,23,6,7,6,7,19,39,38,43,1,52,39,38,43, +1,34,7,6,21,23,51,53,51,23,22,63,1,54,39,236,152,25,18,18,2,21,2,19,18,29,191,29,18,19,2,21, +2,17,18,25,77,26,18,18,1,2,19,20,15,8,9,14,20,19,2,1,18,18,28,220,43,20,25,67,9,9,14,65, +13,10,9,1,128,67,43,11,12,22,10,10,1,32,1,16,16,25,224,29,20,20,1,1,20,20,29,224,25,16,16,1, +255,0,1,16,17,25,20,30,29,18,8,8,18,29,30,20,25,17,16,1,1,66,43,19,14,9,9,9,9,14,96,32, +43,10,10,22,12,11,0,0,0,4,0,16,255,192,1,240,1,192,0,8,0,17,0,40,0,145,0,0,37,6,7,22, +23,54,55,38,47,1,6,7,22,23,54,55,52,39,55,39,38,35,34,15,1,6,7,22,23,22,23,22,51,50,55,54, +55,54,55,38,39,7,35,6,7,6,21,20,31,1,22,21,6,7,34,47,1,38,35,34,7,6,29,1,6,7,38,39, +53,52,39,38,35,34,15,1,6,35,38,39,52,63,1,54,53,52,39,38,39,35,38,39,54,55,51,50,55,54,53,52, +47,1,38,55,54,55,50,31,1,22,51,50,55,54,61,1,54,55,22,23,21,22,23,22,51,50,63,1,54,51,22,23, +20,15,1,6,21,20,23,22,59,1,22,23,6,7,1,32,15,1,1,15,15,1,1,15,64,15,1,2,13,14,2,15, +243,192,9,10,10,8,192,29,1,3,48,48,56,57,28,29,56,57,47,48,3,1,28,83,12,15,8,9,9,9,5,2, +14,7,5,8,11,12,13,9,10,1,15,15,1,10,9,13,12,11,8,5,7,14,2,5,9,9,9,8,15,12,15,1, +1,15,12,15,8,9,9,9,5,1,1,15,6,5,8,11,12,13,9,10,1,15,15,1,1,9,9,13,12,11,8,5, +7,14,2,5,9,9,9,8,15,12,15,1,1,15,193,1,15,14,1,1,14,14,2,64,1,15,15,1,1,15,14,2, +107,80,4,4,80,13,30,129,86,85,43,42,43,42,86,85,128,31,13,171,1,9,10,12,13,10,8,5,7,14,1,5, +9,9,9,8,15,12,15,1,1,15,12,15,8,9,9,9,5,2,13,7,5,8,10,13,12,10,9,1,1,15,15,1, +10,9,13,12,11,7,5,6,14,2,5,8,9,9,8,15,13,15,1,1,15,12,15,8,9,9,9,4,1,14,6,5, +9,10,12,13,9,10,2,14,15,2,0,0,0,2,0,0,255,192,2,0,1,192,0,66,0,80,0,0,37,35,53,51, +54,55,53,38,47,1,34,7,6,29,1,35,53,52,55,54,51,50,23,22,29,1,22,23,51,54,55,53,38,39,38,7, +6,7,6,7,21,35,53,52,39,38,43,1,6,7,21,22,23,51,21,35,6,7,21,22,23,33,54,55,53,38,39,5, +22,23,49,22,23,33,54,55,54,55,53,33,21,1,240,96,64,15,1,1,15,80,14,9,9,64,9,9,14,14,9,9, +1,15,32,15,1,1,34,33,47,35,21,20,1,64,9,9,14,80,15,1,1,15,64,96,15,1,1,15,1,224,15,1, +1,15,254,48,1,27,27,41,1,0,41,27,27,1,254,64,160,32,2,13,15,15,1,2,9,9,14,47,192,13,10,9, +9,10,13,16,15,1,1,15,16,46,28,27,7,8,28,27,36,188,48,14,9,9,1,15,15,16,1,32,1,15,32,15, +1,1,15,32,15,1,128,41,27,27,1,1,27,27,41,32,32,0,0,0,0,5,0,0,255,192,2,0,1,192,0,17, +0,37,0,55,0,73,0,116,0,0,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,6,7,49, +6,7,22,23,22,23,51,54,55,54,55,38,39,38,39,35,55,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23, +22,51,7,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,6,7,22,23,22,21,6,7,6,7,35, +38,39,38,39,54,55,54,55,51,38,39,35,6,7,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,38,39,1, +64,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,27,18,18,1,1,18,18,27,192,27,18,18,1,1, +18,18,27,192,224,14,9,9,9,9,14,14,9,9,9,9,14,176,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,208,1,30,28,17,18,1,27,27,41,192,41,27,27,1,1,27,27,41,89,24,1,128,41,27,27,1,1,27,27, +41,1,64,41,27,27,1,1,27,27,41,192,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,32,1,18,18, +27,27,18,18,1,1,18,18,27,27,18,18,1,224,9,9,14,14,9,9,9,9,14,14,9,9,32,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,96,43,27,11,24,24,31,41,27,27,1,1,27,27,41,41,27,27,1,27,37, +1,27,27,41,128,41,27,27,1,1,27,27,41,128,41,27,27,1,0,0,0,4,0,16,255,192,1,176,1,192,0,10, +0,59,0,79,0,118,0,0,37,54,55,22,23,21,6,7,38,39,53,3,50,23,49,22,21,20,7,6,43,1,21,22, +23,55,54,51,50,23,22,21,20,15,1,22,23,6,7,6,7,38,39,38,39,54,55,54,55,53,35,34,39,38,53,52, +55,54,59,1,23,6,7,49,6,7,21,22,23,22,23,54,55,54,55,53,38,39,38,39,7,21,20,15,1,6,29,1, +22,23,51,54,55,38,39,35,54,63,1,54,61,1,52,39,38,39,6,15,1,6,23,22,63,1,54,51,22,23,51,1, +20,1,11,11,1,1,11,11,1,4,14,9,9,9,9,14,16,57,43,21,10,13,13,10,9,9,24,32,1,2,59,59, +88,88,59,59,2,2,49,49,76,16,14,9,9,9,9,14,96,16,22,15,14,1,1,14,15,22,22,15,14,1,1,14, +15,22,116,4,39,21,1,19,64,18,2,2,18,44,2,9,39,13,15,14,22,37,13,1,4,17,18,6,2,3,9,10, +1,1,192,11,1,1,11,96,11,1,1,11,96,1,0,9,9,14,14,9,9,34,10,35,22,9,9,10,13,13,10,24, +49,64,88,59,59,2,2,59,59,88,80,56,56,14,34,9,9,14,14,9,9,204,1,14,15,22,96,22,15,14,1,1, +14,15,22,96,22,15,14,1,53,2,5,5,44,24,31,16,18,2,2,18,19,1,14,11,44,16,20,2,23,15,14,1, +2,34,2,18,6,5,17,1,9,1,12,0,0,3,0,0,255,192,2,128,1,192,0,33,0,44,0,61,0,0,19,55, +54,55,33,22,31,1,22,21,20,7,6,35,33,23,53,51,21,23,53,51,21,23,22,7,6,39,1,38,55,54,31,1, +7,52,63,1,23,35,34,39,38,53,49,5,53,23,21,6,7,6,7,35,38,39,38,39,53,51,21,51,74,8,14,26, +1,140,26,14,76,6,11,10,16,254,186,43,64,128,64,55,16,12,15,19,253,176,16,12,15,19,35,74,6,15,101,85, +16,10,11,1,64,64,1,13,14,20,224,20,14,13,1,64,192,1,159,12,20,1,1,20,114,9,11,16,10,11,34,2, +52,99,151,202,43,15,19,16,12,1,208,15,19,16,12,28,122,11,9,22,79,11,10,16,229,36,51,65,20,14,13,1, +1,13,14,20,240,160,0,0,0,3,0,0,255,192,2,128,1,192,0,42,0,54,0,73,0,0,19,55,54,51,33,50, +31,1,22,7,6,7,6,35,38,39,6,7,38,39,6,7,23,53,22,51,50,55,49,54,55,21,23,22,7,6,39,1, +38,55,54,31,2,38,39,49,38,55,23,6,35,34,39,49,23,51,23,6,35,33,38,39,38,39,53,22,23,51,22,51, +50,55,21,95,23,8,16,1,100,16,8,58,21,15,16,42,6,7,40,25,25,40,40,25,8,11,179,17,18,9,8,5, +7,87,16,12,15,19,253,176,16,12,15,19,56,17,33,17,17,4,106,14,17,6,6,48,206,149,15,20,254,192,27,18, +18,1,6,5,1,8,8,19,17,1,143,36,13,13,91,37,37,37,8,1,1,28,28,1,1,28,9,7,140,100,5,1, +1,1,148,68,15,19,16,12,1,208,15,19,16,12,44,174,5,26,26,31,83,6,1,161,118,10,1,18,18,27,195,1, +1,1,5,133,0,3,0,0,255,193,2,127,1,192,0,19,0,56,0,74,0,0,19,21,20,7,6,7,6,7,6,23, +33,54,55,54,53,54,55,37,6,21,1,39,54,55,54,55,38,39,38,39,6,7,6,7,22,23,39,53,52,55,54,55, +33,6,7,39,38,35,34,7,6,23,1,22,55,54,39,3,52,55,49,54,55,22,23,22,21,20,7,6,7,34,39,38, +39,64,5,6,11,4,5,3,18,1,25,22,8,1,16,6,254,197,3,2,55,110,37,25,24,1,2,27,27,41,41,27, +27,1,1,24,57,17,16,28,254,227,37,26,57,7,8,11,8,12,16,2,79,19,15,13,16,152,9,10,13,14,9,9, +9,9,14,13,9,9,1,1,1,172,25,22,22,32,12,14,18,2,1,21,1,1,41,50,246,21,21,254,234,86,8,53, +53,77,82,54,54,2,2,54,54,81,76,52,44,84,63,50,49,29,2,48,45,5,9,19,15,254,49,12,16,17,16,1, +22,27,18,18,1,1,18,18,27,27,18,18,1,18,18,28,0,5,0,0,255,192,2,128,1,192,0,17,0,34,0,65, +0,80,0,92,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,34,7,22,21,22,21,6, +7,51,54,55,38,39,38,39,35,7,54,55,38,39,38,39,6,7,39,54,53,38,39,38,39,6,7,39,38,35,34,7, +6,23,1,22,55,54,47,1,7,6,7,49,6,7,20,23,22,51,33,54,55,39,35,47,1,35,6,7,6,7,22,23, +51,38,39,2,0,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,22,19,17,1,1,1,32,199,16,2,1, +25,25,37,62,93,26,1,1,30,29,43,56,30,42,15,1,22,23,34,37,23,29,7,8,11,8,12,16,2,79,19,15, +12,16,233,127,60,40,40,2,8,8,12,1,72,18,8,184,56,84,64,34,37,25,25,1,2,16,199,22,9,1,32,1, +22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,32,8,3,2,5,6,51,37,2,17,39,27,26,1,94,29,41, +44,30,29,1,2,44,32,20,26,34,23,22,1,1,27,23,5,9,19,15,254,49,12,16,19,15,182,66,1,38,38,56, +12,7,8,1,15,144,109,51,1,26,27,39,17,2,26,35,0,3,0,0,255,192,2,0,1,192,0,113,0,131,0,140, +0,0,1,22,23,49,22,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,51,50,23,22,21,20,7,6,43,1, +6,7,6,31,1,22,21,20,7,6,35,34,47,1,38,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,15, +1,6,35,34,39,38,53,52,63,1,54,39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54,47,1,38,53,52, +55,54,51,50,31,1,22,55,54,55,53,52,55,54,51,50,23,22,29,1,7,6,7,49,6,7,22,23,22,23,54,55, +54,55,38,39,38,39,23,54,55,38,39,6,7,22,23,1,32,3,32,31,30,8,10,12,13,10,9,9,8,25,13,13, +39,11,14,9,9,9,9,14,11,39,13,13,25,8,9,9,10,13,12,10,8,30,31,32,3,9,9,14,14,9,9,3, +32,31,30,8,10,12,13,10,9,9,8,25,13,13,38,12,14,9,9,9,9,14,12,38,13,13,25,8,9,9,10,13, +12,10,8,30,31,32,3,9,9,14,14,9,9,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,22, +2,2,22,22,2,2,22,1,148,38,13,13,25,8,9,9,10,13,12,10,8,30,31,32,3,9,9,14,14,9,9,3, +32,31,30,8,10,12,13,10,9,9,8,25,13,13,39,11,14,9,9,9,9,14,11,39,13,13,25,8,9,9,10,13, +12,10,8,30,31,32,3,9,9,14,14,9,9,3,32,31,30,8,10,12,13,10,9,9,8,25,13,13,38,12,14,9, +9,9,9,14,12,132,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,152,2,22,22,2,2,22,22,2,0, +0,3,0,0,255,192,2,128,1,192,0,67,0,78,0,124,0,0,19,52,55,49,54,55,54,51,50,31,1,22,55,54, +55,53,54,55,54,51,50,23,22,29,1,22,23,22,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,51,50,23, +22,21,20,7,6,43,1,6,7,6,31,1,22,7,6,39,1,38,55,54,31,3,54,53,38,39,38,39,34,7,49,7, +54,55,5,6,7,6,7,21,20,7,6,35,34,39,38,39,53,38,39,38,15,1,6,35,34,39,38,53,52,63,1,54, +39,38,39,35,34,39,38,39,54,55,54,59,1,135,1,1,1,11,12,13,10,8,29,32,31,3,1,9,9,13,14,10, +9,3,32,31,30,8,10,12,13,10,9,9,8,25,13,13,38,12,14,9,9,9,9,14,11,27,16,15,2,154,16,12, +15,19,253,176,16,12,15,19,96,130,69,2,1,13,14,20,13,10,157,22,15,1,0,20,14,14,1,9,10,14,13,9, +9,1,3,31,32,29,8,10,13,12,11,9,9,9,25,13,13,38,13,13,9,9,1,1,9,9,13,13,1,112,1,1, +1,2,9,9,8,25,13,13,38,12,14,9,9,9,9,14,12,38,13,13,25,8,9,9,10,13,12,10,8,30,31,32, +3,9,9,14,14,9,9,1,18,18,23,121,15,19,16,12,1,208,15,19,16,12,75,102,55,6,7,20,14,13,1,6, +42,1,13,203,2,15,15,24,11,14,9,9,9,9,14,11,39,13,13,25,8,9,9,10,13,12,10,8,30,31,32,3, +9,9,14,14,9,9,0,0,0,5,0,0,255,192,2,128,1,192,0,84,0,102,0,111,0,196,0,214,0,0,37,51, +54,55,38,39,35,38,39,38,63,1,54,39,38,15,1,6,39,38,39,53,38,39,6,7,21,6,7,6,47,1,38,7, +6,31,1,22,7,6,7,35,6,7,22,23,51,22,23,22,15,1,6,23,22,51,50,63,1,54,23,22,23,21,22,23, +54,55,53,54,55,54,31,1,22,51,50,55,54,47,1,38,55,54,55,39,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,23,38,39,54,55,22,23,6,7,5,35,38,39,38,63,1,54,39,38,15,1,6,39,38,39,53,38, +39,6,7,21,6,7,6,47,1,38,7,6,31,1,22,7,6,7,35,6,7,22,23,51,22,23,22,15,1,6,23,22, +51,50,63,1,54,23,22,23,21,22,23,54,55,53,54,55,54,31,1,22,51,50,55,54,47,1,38,55,54,55,51,54, +55,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,91,16,19,2,2,19,16,30,10,10, +19,12,12,12,15,15,12,22,24,25,2,1,20,20,1,2,25,24,22,12,15,15,12,12,12,19,10,10,30,16,19,2, +2,19,16,30,10,10,19,12,12,12,7,8,9,6,12,22,24,25,2,2,19,20,1,2,25,24,22,12,6,9,8,7, +12,12,12,19,10,10,30,187,14,9,9,9,9,14,14,9,9,9,9,14,80,15,1,1,15,15,1,1,15,1,128,12, +22,8,7,14,9,9,9,11,12,8,17,18,18,2,1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22, +12,15,1,1,15,12,22,8,7,14,9,9,9,5,6,7,5,8,17,18,18,2,1,15,15,1,2,18,18,17,8,5, +7,6,5,9,9,9,14,7,8,22,12,15,1,1,15,144,14,9,9,9,9,14,14,9,9,9,9,14,235,1,20,20, +1,2,25,24,22,12,15,15,12,12,12,19,10,10,30,16,19,2,2,19,16,30,10,10,19,12,12,12,15,15,12,22, +24,25,2,2,19,20,1,2,25,24,22,12,15,15,6,6,12,19,10,10,29,17,19,2,2,19,16,30,10,10,19,12, +6,6,15,15,12,22,24,25,2,21,9,9,14,14,9,9,9,9,14,14,9,9,32,1,15,15,1,1,15,15,1,128, +2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,9,9,11,12,8,17,18, +18,2,1,15,15,1,2,18,18,17,8,12,11,5,5,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,5, +5,11,12,8,17,18,18,2,1,15,15,1,32,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,3,0,0, +255,192,1,192,1,192,0,51,0,64,0,77,0,0,37,39,53,52,39,38,43,1,34,15,1,6,35,34,47,1,38,43, +1,34,7,6,29,1,7,6,29,1,20,23,22,59,1,53,52,63,1,39,22,51,50,55,7,21,51,50,55,54,61,1, +52,39,5,7,6,35,34,39,38,63,1,54,23,22,7,5,6,35,34,47,1,38,55,54,31,1,22,7,1,181,53,9, +9,14,32,7,6,25,27,31,31,27,25,6,7,32,14,9,9,53,11,9,9,14,160,2,13,57,35,39,39,35,74,192, +14,9,9,11,254,206,48,5,6,6,5,10,10,48,11,11,10,10,1,0,5,6,6,5,48,10,10,11,11,48,10,10, +208,80,128,14,9,9,4,17,17,17,17,4,9,9,14,128,80,16,19,205,14,9,9,224,5,5,41,170,19,19,221,224, +9,9,14,205,19,16,131,48,5,5,11,11,48,10,10,11,11,48,5,5,48,11,11,10,10,48,11,11,0,4,0,0, +255,192,1,192,1,192,0,51,0,80,0,98,0,117,0,0,37,39,53,52,39,38,43,1,34,15,1,6,35,34,47,1, +38,43,1,34,7,6,29,1,7,6,29,1,20,23,22,59,1,53,52,63,1,39,22,51,50,55,7,21,51,50,55,54, +61,1,52,39,5,38,55,54,31,1,55,54,23,22,15,1,23,22,7,6,35,34,47,1,7,6,35,34,39,38,63,1, +39,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,37,35,38,55,53,54,55,54,23,22,23,21,51, +22,23,22,7,6,7,1,181,53,9,9,14,32,7,6,25,27,31,31,27,25,6,7,32,14,9,9,53,11,9,9,14, +160,2,13,57,35,39,39,35,74,192,14,9,9,11,254,139,7,7,8,9,15,16,8,9,6,6,16,16,6,6,4,5, +5,3,16,15,4,5,5,3,7,7,15,15,32,17,11,12,12,11,17,17,11,12,12,11,17,1,7,48,8,1,1,7, +8,11,21,1,5,22,4,1,8,7,11,208,80,128,14,9,9,4,17,17,17,17,4,9,9,14,128,80,16,19,205,14, +9,9,224,5,5,41,170,19,19,221,224,9,9,14,205,19,16,33,9,8,8,8,15,15,8,8,8,9,15,16,8,9, +3,3,16,16,3,3,9,8,16,15,183,12,11,17,17,11,12,12,11,17,17,11,12,120,1,6,48,11,7,8,1,4, +22,5,1,21,11,8,7,1,0,1,0,0,0,32,2,64,1,96,0,46,0,0,37,39,7,6,35,34,47,1,38,53, +52,55,54,51,50,31,1,55,54,51,50,31,1,53,52,55,54,55,22,23,22,29,1,20,7,6,43,1,34,39,38,53, +52,55,54,59,1,1,211,147,105,10,13,13,10,160,9,9,10,13,13,10,136,106,10,13,13,10,169,9,9,14,14,9, +9,9,9,14,160,14,9,9,9,9,14,83,96,147,106,9,9,160,10,13,13,10,9,9,138,106,9,9,170,84,13,9, +9,1,1,9,9,13,161,14,9,9,9,9,14,14,9,9,0,1,0,0,0,32,2,64,1,96,0,47,0,0,1,34, +39,49,38,53,52,55,54,59,1,50,23,22,29,1,20,7,6,35,34,39,38,61,1,7,6,35,34,47,1,7,6,35, +34,39,38,53,52,63,1,54,51,50,31,1,55,7,1,128,14,9,9,9,9,14,160,14,9,9,9,9,14,14,9,9, +169,10,13,13,10,106,136,10,13,13,10,9,9,160,10,13,13,10,105,147,83,1,32,9,9,14,14,9,9,9,9,14, +160,14,9,9,9,9,14,83,170,9,9,106,138,9,9,10,13,13,10,160,9,9,106,148,1,0,0,0,0,2,0,0, +255,192,1,192,1,192,0,38,0,73,0,0,37,21,20,7,6,35,33,34,39,38,61,1,52,39,38,35,34,7,6,29, +1,22,23,22,23,33,54,55,54,55,53,52,39,38,35,34,7,6,21,3,7,6,21,20,23,22,51,50,63,1,21,20, +23,22,51,50,55,54,61,1,23,22,51,50,55,54,53,52,47,1,38,35,34,7,1,128,9,9,14,255,0,14,9,9, +9,9,14,14,9,9,1,27,27,41,1,0,41,27,27,1,9,9,14,14,9,9,183,128,9,9,10,13,13,10,73,9, +9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,96,64,14,9,9,9,9,14,64,14,9,9,9,9,14, +64,41,27,27,1,1,27,27,41,64,14,9,9,9,9,14,1,87,128,10,13,13,10,9,9,74,211,14,9,9,9,9, +14,211,74,9,9,10,13,13,10,128,9,9,0,3,0,0,255,224,1,192,1,160,0,69,0,73,0,78,0,0,37,51, +50,23,22,21,20,7,6,43,1,23,51,50,23,22,21,20,7,6,43,1,23,22,7,6,7,6,39,38,47,1,35,7, +6,7,6,39,38,39,38,63,1,35,34,39,38,53,52,55,54,59,1,55,35,34,39,38,53,52,55,54,59,1,55,54, +55,22,31,1,35,39,7,51,15,1,51,39,35,1,69,91,14,9,9,9,9,14,64,13,51,14,9,9,9,9,14,24, +22,4,4,5,13,13,11,12,5,32,198,31,6,12,12,12,13,5,4,4,22,24,14,9,9,9,9,14,51,13,64,14, +9,9,9,9,14,91,72,8,21,21,9,71,69,33,32,65,91,14,145,13,118,224,9,9,14,14,9,9,32,9,9,14, +14,9,9,52,12,12,12,6,4,4,5,13,76,76,13,5,4,4,6,12,12,12,52,9,9,14,14,9,9,32,9,9, +14,14,9,9,172,19,1,1,19,172,77,77,64,32,32,0,0,5,0,0,255,192,1,64,1,192,0,47,0,52,0,63, +0,68,0,81,0,0,19,21,22,23,22,23,6,7,22,23,22,21,6,7,6,7,35,21,20,7,6,35,34,39,38,61, +1,35,34,39,38,53,17,52,55,54,59,1,53,52,55,54,51,50,23,22,21,49,7,35,21,51,53,23,38,39,49,38, +39,21,54,55,54,55,7,35,21,51,53,23,54,55,49,54,55,38,39,38,39,35,21,51,176,48,31,32,1,1,20,24, +15,14,1,32,31,48,32,9,9,14,14,9,9,70,18,12,12,11,11,16,74,9,9,14,14,9,9,64,48,48,112,1, +13,14,20,20,14,13,1,112,48,48,96,20,14,13,1,1,13,14,20,32,32,1,160,32,1,32,31,48,37,28,15,25, +25,30,48,31,32,1,32,14,9,9,9,9,14,32,12,12,18,1,48,16,11,11,32,14,9,9,9,9,14,96,96,96, +48,20,14,13,1,96,1,13,14,20,112,96,96,96,1,13,14,20,20,14,13,1,96,0,0,3,0,0,255,192,1,64, +1,192,0,70,0,83,0,95,0,0,19,52,55,49,54,51,50,23,22,29,1,51,53,52,55,54,51,50,23,22,29,1, +20,21,22,23,22,23,6,7,22,23,22,21,6,7,6,7,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35, +34,39,38,61,1,35,34,39,38,53,17,52,55,54,59,1,53,23,54,55,49,54,55,38,39,38,39,35,21,51,7,21, +51,54,55,54,55,38,39,38,39,35,48,9,9,14,14,9,9,32,9,9,14,14,9,9,35,22,22,1,1,20,24,15, +14,1,32,31,48,9,9,14,14,9,9,32,9,9,14,14,9,9,6,18,12,12,11,11,16,10,128,20,14,13,1,1, +13,14,20,112,112,112,144,20,14,13,1,1,13,14,20,144,1,160,14,9,9,9,9,14,32,32,14,9,9,9,9,14, +32,2,3,10,29,29,39,37,28,15,25,25,30,48,31,32,1,32,14,9,9,9,9,14,32,32,14,9,9,9,9,14, +32,12,12,18,1,48,16,11,11,32,192,1,13,14,20,20,14,13,1,96,64,96,1,13,14,20,20,14,13,1,0,0, +0,1,0,0,255,192,1,127,1,192,0,27,0,0,1,38,43,1,55,54,39,38,43,1,6,15,1,6,23,22,59,1, +7,6,23,22,51,50,55,19,54,39,1,125,7,14,157,51,5,7,8,12,176,20,4,32,1,7,7,11,146,41,3,17, +4,5,12,8,208,7,6,1,19,13,127,12,10,11,1,20,240,11,8,8,194,19,8,3,10,1,48,12,13,0,0,0, +0,2,0,0,255,192,1,192,1,192,0,38,0,50,0,0,37,17,38,39,38,39,35,21,6,7,6,47,1,7,6,39, +38,39,53,35,6,7,6,7,17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,7,33,34,39,38,53,52,55,54, +51,33,21,1,192,1,13,14,20,48,1,8,8,8,55,55,8,8,8,1,96,41,27,27,1,1,27,27,41,1,64,14, +9,9,1,15,15,1,64,254,224,14,9,9,9,9,14,1,32,112,1,32,20,14,13,1,191,10,5,4,6,44,45,5, +4,4,11,191,1,27,27,41,254,192,41,27,27,1,9,9,14,18,9,81,14,22,112,9,9,14,14,9,9,64,0,0, +0,3,0,0,255,224,2,0,1,160,0,28,0,55,0,82,0,0,1,35,39,38,39,35,6,15,1,35,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,38,39,7,6,39,38,39,53,54,55,51,22,23,22, +15,1,22,51,54,55,54,23,22,7,55,6,7,35,38,39,38,63,1,38,35,6,7,6,39,38,55,54,55,22,23,55, +54,23,22,23,21,1,208,88,12,13,32,126,32,13,12,88,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13, +14,20,107,39,62,49,36,19,7,8,8,1,1,9,77,9,4,3,7,19,22,29,39,24,15,19,16,12,27,1,9,77, +9,4,3,7,19,22,29,39,24,15,19,16,12,39,62,49,36,19,7,8,8,1,1,96,33,29,2,2,29,33,1,13, +14,20,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,254,241,48,1,1,32,20,6,3,4,9,77,9,1, +1,8,8,7,20,18,1,30,16,12,15,19,107,9,1,1,8,8,7,20,18,1,30,16,12,15,19,48,1,1,32,20, +6,3,4,9,77,0,0,0,0,2,0,0,255,192,1,64,1,192,0,47,0,58,0,0,19,22,23,22,23,22,7,6, +39,38,39,21,54,55,54,23,22,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,39,54,55,54,55,53,52, +55,54,51,50,23,22,29,1,7,6,7,49,6,7,22,23,22,23,53,224,47,36,11,2,1,7,21,24,20,25,25,20, +24,21,15,22,36,47,9,9,14,14,9,9,70,44,45,1,1,45,44,70,9,9,14,14,9,9,64,42,27,26,1,1, +26,27,42,1,125,8,27,9,12,13,11,22,15,15,7,247,5,16,15,22,24,21,27,8,35,14,9,9,9,9,14,35, +13,51,52,73,73,52,51,13,35,14,9,9,9,9,14,35,65,12,33,33,45,46,34,33,11,247,0,0,0,5,0,0, +255,224,2,0,1,160,0,27,0,47,0,67,0,87,0,107,0,0,19,50,23,49,22,21,17,22,23,33,50,23,22,21, +20,7,6,35,33,38,39,38,39,17,52,55,54,51,23,50,23,49,22,29,1,20,7,6,35,34,39,38,61,1,52,55, +54,51,23,20,7,49,6,35,34,39,38,61,1,52,55,54,51,50,23,22,29,1,55,50,23,49,22,29,1,20,7,6, +35,34,39,38,61,1,52,55,54,51,23,20,7,49,6,35,34,39,38,61,1,52,55,54,51,50,23,22,29,1,32,14, +9,9,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1,9,9,14,128,14,9,9,9,9,14,14,9,9,9, +9,14,128,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,14,9,9,9,9,14,128,9,9,14, +14,9,9,9,9,14,14,9,9,1,160,9,9,14,254,176,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14,9, +9,192,9,9,14,64,14,9,9,9,9,14,64,14,9,9,96,14,9,9,9,9,14,160,14,9,9,9,9,14,160,128, +9,9,14,96,14,9,9,9,9,14,96,14,9,9,128,14,9,9,9,9,14,224,14,9,9,9,9,14,224,0,0,0, +0,4,0,0,255,224,2,0,1,160,0,27,0,47,0,67,0,87,0,0,19,50,23,49,22,21,17,22,23,33,50,23, +22,21,20,7,6,35,33,38,39,38,39,17,52,55,54,51,23,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1, +34,39,38,53,23,50,23,49,22,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,23,50,23,49,22,21,20,7, +6,43,1,34,39,38,53,52,55,54,59,1,32,14,9,9,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1, +9,9,14,96,9,9,14,96,14,9,9,9,9,14,96,14,9,9,224,14,9,9,9,9,14,128,14,9,9,9,9,14, +128,96,14,9,9,9,9,14,64,14,9,9,9,9,14,64,1,160,9,9,14,254,176,15,1,9,9,14,14,9,9,1, +22,23,34,1,80,14,9,9,96,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14, +9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,5,0,0,255,224,2,0,1,160,0,8,0,13,0,19, +0,28,0,42,0,0,1,55,38,35,34,43,1,7,51,35,55,35,7,51,37,7,51,53,38,39,37,35,6,7,6,7, +21,51,55,3,22,23,49,22,23,33,54,55,54,55,53,33,21,1,70,128,1,1,2,2,86,128,92,160,128,92,128,92, +1,76,104,118,1,13,254,148,70,27,18,18,1,6,128,134,1,18,18,27,1,128,27,18,18,1,254,0,1,32,127,1, +128,128,128,104,104,64,23,17,24,1,18,18,27,64,128,254,128,27,18,18,1,1,18,18,27,224,224,0,0,1,0,0, +255,224,1,192,1,160,0,136,0,0,19,23,22,63,1,54,51,22,23,22,23,21,20,15,1,6,23,20,23,22,51,50, +21,22,63,1,54,59,1,22,23,22,23,20,15,1,6,31,1,22,21,6,7,6,7,35,34,47,1,38,7,34,7,6, +21,6,31,1,22,29,1,6,7,6,7,34,47,1,38,15,1,6,35,38,39,38,39,53,52,63,1,54,39,34,53,52, +39,38,35,38,15,1,6,43,1,38,39,38,39,52,63,1,54,47,1,38,53,54,55,54,55,51,50,31,1,22,55,52, +51,50,55,54,53,52,51,54,47,1,38,61,1,54,55,54,55,50,23,217,1,6,6,1,19,25,26,17,17,1,9,19, +2,1,2,1,1,1,2,3,31,16,18,5,26,17,17,1,18,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2, +1,2,2,1,2,19,9,1,17,17,26,25,19,1,6,6,1,19,25,26,17,17,1,9,19,2,1,1,1,2,1,2, +3,31,16,18,5,26,17,17,1,18,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2,1,1,1,1,1,1,2, +19,9,1,17,17,26,25,19,1,142,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2,1,2,1,1,1,2,19, +9,1,17,17,26,25,19,1,6,6,1,19,25,26,17,17,1,9,19,2,1,2,2,1,2,3,31,16,18,5,26,17, +17,1,18,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2,1,1,1,2,1,2,19,9,1,17,17,26,25,19, +1,6,6,1,19,25,26,17,17,1,9,19,2,1,1,1,1,1,1,2,3,31,16,18,5,26,17,17,1,18,0,0, +0,4,0,0,255,192,2,0,1,192,0,44,0,58,0,103,0,112,0,0,5,6,7,6,47,1,38,53,52,63,1,54, +23,22,23,21,51,54,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,6,7,6,7,35, +21,19,52,39,49,38,35,34,7,6,21,22,23,54,55,37,54,55,54,31,1,22,21,20,15,1,6,39,38,39,53,35, +6,7,6,7,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,54,55,54,55,51,53,3,22,23,54, +55,38,39,6,7,1,64,1,13,15,11,80,8,8,80,11,15,13,1,16,27,18,18,1,22,13,13,1,22,23,34,34, +23,22,1,13,13,22,1,36,37,54,16,136,7,7,10,10,7,7,2,22,22,2,254,248,1,13,14,12,80,8,8,80, +12,14,13,1,16,27,18,18,1,22,13,13,1,22,23,34,34,23,22,1,13,13,22,1,36,37,54,16,136,2,22,22, +2,2,22,22,2,40,15,7,6,10,72,7,11,11,7,72,10,6,7,15,40,1,18,18,27,167,10,19,19,25,34,23, +22,1,1,22,23,34,25,19,19,10,167,54,37,36,1,40,1,153,10,7,7,7,7,10,23,1,1,23,55,15,7,6, +10,72,7,11,11,7,72,10,6,7,15,40,1,18,18,27,167,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20, +9,167,54,37,36,1,40,254,104,22,2,2,22,22,2,2,22,0,0,0,0,4,0,0,255,192,1,192,1,192,0,75, +0,84,0,93,0,102,0,0,19,20,7,49,6,7,21,20,23,22,59,1,50,55,54,61,1,38,39,38,53,54,55,54, +55,22,23,22,23,20,7,6,7,21,6,7,6,7,35,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55, +53,35,38,39,38,39,53,38,39,38,53,54,55,54,55,22,23,22,23,49,7,54,55,38,39,6,7,22,23,33,54,55, +38,39,6,7,22,23,3,6,7,22,23,54,55,38,39,160,13,13,22,9,9,14,160,14,9,9,22,13,13,1,22,23, +34,34,23,22,1,13,13,22,1,27,27,41,48,22,13,13,1,22,23,34,34,23,22,1,13,13,22,48,41,27,27,1, +22,13,13,1,22,23,34,34,23,22,1,80,22,2,2,22,22,2,2,22,1,32,22,2,2,22,22,2,2,22,144,22, +2,2,22,22,2,2,22,1,112,25,19,19,10,39,14,9,9,9,9,14,39,10,19,19,25,34,23,22,1,1,22,23, +34,25,19,19,10,39,41,27,27,1,71,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,71,1,27,27,41, +39,10,19,19,25,34,23,22,1,1,22,23,34,24,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,254,208, +2,22,22,2,2,22,22,2,0,5,0,0,255,192,2,0,1,192,0,45,0,54,0,90,0,99,0,108,0,0,1,22, +23,21,51,22,23,22,23,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,38,39,38,39,35,21,6, +7,6,47,1,38,53,52,63,1,54,23,49,19,54,55,38,39,6,7,22,23,37,22,23,49,22,21,6,7,6,7,38, +39,38,39,52,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,3,6,7,22,23,54,55, +38,39,17,6,7,22,23,54,55,38,39,1,50,13,1,16,54,37,36,1,22,13,13,1,22,23,34,34,23,22,1,13, +13,22,1,18,18,27,16,1,13,15,11,80,8,8,80,11,15,126,22,2,2,22,22,2,2,22,254,192,22,13,13,1, +22,23,34,34,23,22,1,13,13,22,22,13,13,1,22,23,34,34,23,22,1,13,13,22,32,22,2,2,22,22,2,2, +22,22,2,2,22,22,2,2,22,1,190,7,15,40,1,36,37,54,167,9,20,19,25,34,23,22,1,1,22,23,34,25, +19,20,9,167,27,18,18,1,40,15,7,6,10,72,7,11,11,7,72,10,6,254,58,2,22,22,2,2,22,22,2,97, +9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,206,10,19,19,25,34,23,22,1,1,22,23,34,25,19,19, +10,206,1,47,2,22,22,2,2,22,22,2,254,160,2,22,22,2,2,22,22,2,0,0,0,3,0,0,255,193,1,64, +1,191,0,69,0,78,0,86,0,0,19,22,23,55,54,55,54,23,22,23,22,15,1,22,23,22,23,22,7,6,39,7, +54,55,54,23,22,7,6,15,1,6,7,6,39,38,39,38,63,1,38,39,7,6,7,6,39,38,39,38,63,1,38,39, +38,53,54,55,54,63,1,54,55,54,23,22,23,22,15,2,6,7,49,6,21,22,23,55,23,55,38,39,7,22,23,49, +217,14,14,11,4,11,12,13,13,6,7,3,16,3,1,11,2,1,7,10,16,53,18,16,24,21,15,22,39,51,10,4, +11,10,14,13,7,6,2,8,14,14,13,4,11,10,14,13,6,7,3,18,31,18,18,1,42,41,66,10,4,11,12,13, +13,6,7,3,6,86,30,18,19,1,20,46,37,62,14,15,61,13,15,1,126,1,4,47,13,6,7,3,4,11,10,14, +60,1,1,9,12,13,11,13,1,218,7,12,15,22,24,21,29,7,42,13,6,7,3,4,11,10,14,28,3,5,52,13, +6,7,3,4,11,10,14,71,26,38,37,44,70,51,51,15,45,13,6,7,3,4,11,10,14,26,77,16,30,30,37,40, +31,184,239,248,5,1,245,6,3,0,0,0,0,1,0,0,255,224,1,128,1,160,0,71,0,0,55,53,54,55,54,51, +50,23,54,51,50,31,1,22,23,22,7,6,7,6,47,1,38,35,6,7,21,54,55,54,23,22,23,22,7,6,7,6, +7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,7,6,7,6,39,38,39,6,7,6,7,22,23,22, +23,49,159,1,9,9,13,13,8,16,19,27,22,10,11,2,3,7,8,13,13,11,10,6,7,21,2,62,45,10,13,13, +9,9,1,1,10,61,88,63,50,51,29,30,1,1,30,29,51,50,63,88,61,10,1,1,9,9,13,13,10,45,62,68, +46,45,2,1,26,27,42,45,147,14,9,9,7,7,15,6,8,13,12,12,11,2,3,7,7,4,2,21,105,1,40,9, +1,1,10,10,13,12,9,56,2,1,30,29,51,50,63,63,50,51,29,30,1,2,55,9,13,13,10,10,1,1,9,40, +1,2,45,45,68,50,38,39,20,0,0,0,0,2,0,0,255,192,2,64,1,192,0,34,0,39,0,0,1,33,6,7, +6,7,17,22,23,22,23,51,7,35,6,7,22,23,33,54,55,38,39,35,39,51,54,55,54,55,17,38,39,38,39,3, +33,17,33,17,2,16,254,32,20,14,13,1,1,13,14,20,192,16,72,22,2,2,22,1,16,22,2,2,22,72,16,192, +20,14,13,1,1,13,14,20,16,254,64,1,192,1,192,1,13,14,20,254,192,20,14,13,1,48,2,22,22,2,2,22, +22,2,48,1,13,14,20,1,64,20,14,13,1,254,160,1,32,254,224,0,0,3,0,0,255,192,1,128,1,160,0,48, +0,66,0,86,0,0,1,50,23,49,22,21,20,7,6,35,17,20,7,6,35,38,39,6,35,38,39,38,39,54,55,54, +55,50,23,53,35,34,39,38,53,52,55,54,59,1,52,55,54,51,50,23,22,21,49,7,38,39,49,38,39,6,7,6, +7,22,23,22,23,54,55,54,55,23,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,1,64,14, +9,9,9,9,14,9,9,14,21,8,30,37,54,37,36,1,1,36,37,54,35,29,32,14,9,9,9,9,14,32,9,9, +14,14,9,9,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,96,14,9,9,9,9,14,254,192,14,9, +9,9,9,14,1,64,1,128,9,9,14,14,9,9,255,0,14,9,9,1,18,19,1,36,37,54,54,37,36,1,17,49, +9,9,14,14,9,9,14,9,9,9,9,14,224,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,9,9, +14,14,9,9,9,9,14,14,9,9,0,0,0,7,0,0,255,192,2,0,1,192,0,13,0,27,0,48,0,66,0,84, +0,97,0,110,0,0,19,51,50,55,54,47,1,38,15,1,6,23,22,51,37,22,63,1,54,39,38,43,1,34,7,6, +31,2,33,6,7,6,7,21,22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7, +38,39,38,39,54,55,54,55,35,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,23,35,53,54,55,54, +55,51,22,23,22,23,21,51,35,53,54,55,54,55,51,22,23,22,23,21,79,130,10,4,3,6,65,11,11,65,6,3, +4,10,1,22,11,11,65,6,3,5,9,130,10,4,3,6,65,91,254,128,27,18,18,1,1,18,18,27,1,128,27,18, +18,1,1,18,18,27,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,192,20,14,13,1,1,13,14,20, +20,14,13,1,1,13,14,20,80,160,1,13,14,20,64,20,14,13,1,192,160,1,13,14,20,64,20,14,13,1,1,96, +9,8,7,68,8,8,68,7,8,9,4,8,8,68,7,8,9,9,8,7,68,36,1,18,18,26,255,29,18,18,1,1, +18,18,26,1,1,27,18,18,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,224,48,20,14,13,1,1,13,14,20,48,48,20,14,13,1,1,13,14,20,48,0, +0,3,0,0,255,192,2,64,1,192,0,24,0,42,0,67,0,0,19,54,55,33,22,23,22,15,1,6,7,6,7,22, +23,38,47,1,38,61,1,39,38,55,49,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39, +38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,4,11,25,1,176,25,11,10,16,106, +61,39,40,1,1,18,3,2,64,13,183,15,10,1,27,2,41,41,61,61,41,40,2,2,40,41,61,61,41,41,2,204, +10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,169,22,1,1,22,23,19, +131,13,47,47,65,41,36,2,1,48,10,16,79,224,19,23,254,167,61,41,40,2,2,40,41,61,61,41,40,2,2,40, +41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,1,0,0, +255,224,1,128,1,160,0,57,0,0,1,50,23,49,22,21,20,7,6,43,1,6,15,1,51,50,23,22,21,20,7,6, +43,1,7,6,7,6,43,1,34,39,38,53,52,55,54,59,1,54,63,1,35,34,39,38,53,52,55,54,59,1,55,54, +55,54,59,1,1,96,14,9,9,9,9,14,37,21,9,45,80,14,9,9,9,9,14,107,55,12,23,24,30,37,14,9, +9,9,9,14,37,21,9,45,80,14,9,9,9,9,14,107,55,11,24,24,30,37,1,160,9,9,14,14,9,9,1,19, +108,9,9,14,14,9,9,133,27,16,16,9,9,14,14,9,9,1,19,108,9,9,14,14,9,9,133,27,16,16,0,0, +0,2,0,0,255,224,2,0,1,160,0,14,0,28,0,0,1,35,39,35,6,7,6,7,21,33,53,38,39,38,39,1, +22,23,49,22,23,33,54,55,54,55,53,33,21,1,208,192,64,160,20,14,13,1,2,0,1,13,14,20,254,48,1,13, +14,20,1,160,20,14,13,1,254,0,1,96,64,1,13,14,20,80,16,20,14,13,1,254,176,20,14,13,1,1,13,14, +20,240,240,0,0,1,0,0,255,224,1,64,1,160,0,58,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,50, +23,22,21,20,7,6,43,1,21,51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,61,1,35,34,39, +38,53,52,55,54,59,1,17,52,55,54,59,1,1,32,14,9,9,9,9,14,176,144,14,9,9,9,9,14,144,80,14, +9,9,9,9,14,80,9,9,14,14,9,9,16,14,9,9,9,9,14,16,9,9,14,208,1,160,9,9,14,14,9,9, +96,9,9,14,14,9,9,64,9,9,14,14,9,9,64,14,9,9,9,9,14,64,9,9,14,14,9,9,1,0,14,9, +9,0,0,0,0,3,0,0,255,192,1,128,1,192,0,51,0,62,0,70,0,0,19,21,22,23,22,21,20,7,6,39, +34,39,38,39,21,51,50,23,22,21,6,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,39,54,55,54,55, +53,52,55,54,51,50,23,22,21,49,7,6,7,49,6,7,22,23,22,23,53,23,54,55,49,54,55,35,21,224,60,42, +10,9,10,13,12,10,24,34,128,14,9,9,1,45,44,70,9,9,14,14,9,9,70,44,45,1,1,45,44,70,9,9, +14,14,9,9,64,42,27,26,1,1,26,27,42,64,34,24,25,8,91,1,160,35,11,41,10,12,13,10,10,1,8,24, +9,92,9,9,14,73,52,51,13,35,14,9,9,9,9,14,35,13,51,52,73,73,52,51,13,35,14,9,9,9,9,14, +100,11,34,33,46,46,33,33,11,247,247,8,25,24,34,91,0,3,0,0,255,224,2,64,1,160,0,50,0,57,0,62, +0,0,1,35,53,38,39,6,7,21,33,34,7,6,29,1,20,23,22,51,22,23,22,15,1,6,23,22,23,51,54,63, +1,51,50,55,54,63,1,51,50,63,1,51,50,55,54,61,1,52,39,38,35,7,6,43,1,55,51,7,55,33,53,33, +21,2,32,16,2,22,22,2,254,75,18,12,13,13,12,18,17,9,9,4,41,4,9,10,16,104,23,8,27,95,18,15, +14,6,25,36,13,9,23,64,14,9,9,9,9,14,215,3,5,82,17,92,19,151,254,96,1,160,1,128,8,22,2,2, +22,8,13,12,18,90,18,12,13,1,12,12,16,158,16,12,12,1,1,22,105,11,10,17,74,9,23,9,9,14,80,14, +9,9,235,5,64,59,139,32,32,0,0,0,0,5,0,0,255,192,2,0,1,192,0,10,0,25,0,101,0,116,0,142, +0,0,1,54,55,53,38,39,6,7,21,22,23,51,50,63,1,54,53,38,39,34,15,1,6,21,22,23,19,53,54,39, +38,39,34,7,6,29,1,39,38,35,6,7,20,31,1,22,21,20,7,6,35,34,47,1,38,35,6,7,20,31,1,22, +21,20,7,6,35,34,47,1,38,35,6,7,20,31,1,22,21,20,7,6,35,34,47,1,38,35,6,7,20,23,22,23, +22,23,22,51,54,55,54,55,3,22,51,54,55,52,47,1,38,35,6,7,20,31,2,34,7,49,6,29,1,39,21,6, +7,6,7,6,7,22,51,54,55,54,55,53,52,39,38,35,1,64,15,1,1,15,15,1,1,15,63,9,5,32,3,2, +14,8,5,33,3,2,14,1,1,7,6,20,14,9,9,151,7,10,22,2,7,90,4,4,5,6,6,4,108,7,10,22, +2,7,108,4,4,5,6,6,4,90,7,10,22,2,7,90,4,4,5,6,6,4,53,7,10,22,2,7,23,19,55,39, +40,49,66,42,43,1,141,5,9,14,2,3,33,5,9,14,2,3,33,237,14,9,9,32,1,16,16,18,19,8,11,11, +66,42,43,1,9,9,14,1,96,1,15,64,15,1,1,15,64,15,1,7,48,4,5,15,1,7,48,4,5,15,1,254, +250,164,6,14,13,1,9,9,13,77,151,7,3,21,10,7,90,4,6,6,5,4,4,108,7,2,22,9,8,107,5,5, +6,5,4,4,89,7,3,21,10,7,89,5,6,6,4,5,5,52,7,2,22,9,8,23,20,58,29,29,2,44,44,64, +1,13,7,1,15,5,4,48,7,1,15,5,4,48,71,9,9,14,76,32,122,46,32,32,18,18,6,2,2,44,44,64, +166,14,9,9,0,3,0,0,255,192,2,64,1,192,0,33,0,51,0,67,0,0,37,6,7,49,6,7,35,23,6,7, +6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,22,7,49,37,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,39,7,6,7,49,6,7,22,23,51,54,55,38,39,38,39,35,2,64,1,9,9,13, +32,1,1,18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,255,12,1,254,224,27,18,18,1, +1,18,18,27,27,18,18,1,1,18,18,27,32,34,23,22,1,1,15,192,15,1,1,22,23,34,64,192,13,9,9,1, +160,27,18,18,1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,225,10,14,96,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,160,1,22,23,34,15,1,1,15,34,23,22,1,0,0,0,0,1,0,0,255,225,1,64, +1,160,0,70,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,22,23,51,50,23,22,21,20,7,6, +43,1,6,7,6,7,23,22,23,22,7,6,7,6,47,1,38,55,54,55,51,50,55,54,55,35,34,39,38,53,52,55, +54,59,1,38,39,38,43,1,34,39,38,53,49,0,9,9,14,1,0,14,9,9,9,9,14,56,14,6,36,14,9,9, +9,9,14,36,10,33,33,46,145,10,2,3,8,8,13,12,12,224,17,6,8,22,80,25,19,20,9,153,14,9,9,9, +9,14,153,9,20,19,25,80,14,9,9,1,128,14,9,9,9,9,14,14,9,9,22,26,9,9,14,14,9,9,44,30, +30,7,102,9,13,12,12,10,2,3,8,160,15,21,21,1,13,13,22,9,9,14,14,9,9,22,13,13,9,9,14,0, +0,1,0,0,255,224,1,128,1,160,0,60,0,0,55,51,50,23,22,21,20,7,6,43,1,23,22,23,22,7,6,7, +6,47,1,21,20,7,6,35,34,39,38,61,1,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51,50,23,22,29, +1,55,54,23,22,23,22,7,6,15,1,183,169,14,9,9,9,9,14,169,158,10,1,1,9,9,13,12,11,171,9,9, +14,14,9,9,32,14,9,9,9,9,14,32,9,9,14,14,9,9,171,11,12,13,9,9,1,1,10,158,224,9,9,14, +14,9,9,136,9,13,12,11,10,1,1,9,146,122,14,9,9,9,9,14,160,9,9,14,14,9,9,160,14,9,9,9, +9,14,122,146,9,1,1,10,11,12,13,9,136,0,0,0,0,1,0,0,255,224,1,128,1,160,0,99,0,0,19,50, +23,49,22,29,1,54,51,50,23,53,52,55,54,51,50,23,22,29,1,22,23,22,23,22,7,6,7,6,39,38,39,38, +39,21,20,7,6,35,34,39,38,61,1,34,35,34,35,34,35,34,35,21,20,7,6,35,34,39,38,61,1,6,7,22, +23,22,23,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,38,39,54,55,54,55,53,52,55,54, +51,49,144,14,9,9,8,8,8,8,9,9,14,14,9,9,42,28,28,10,3,7,8,13,13,11,11,3,10,35,9,9, +14,14,9,9,5,5,3,3,3,3,5,5,9,9,14,14,9,9,46,2,1,36,37,54,160,14,9,9,9,9,14,254, +192,14,9,9,9,9,14,17,47,2,1,30,31,50,9,9,14,1,160,9,9,14,33,1,1,33,14,9,9,9,9,14, +49,20,35,36,46,12,11,11,3,3,7,7,14,45,29,68,14,9,9,9,9,14,96,96,14,9,9,9,9,14,68,37, +63,54,37,36,1,9,9,14,14,9,9,9,9,14,14,9,9,53,75,59,46,46,24,49,14,9,9,0,0,1,0,0, +255,224,1,128,1,160,0,46,0,0,63,1,54,23,22,23,22,7,6,15,1,21,51,50,23,22,21,20,7,6,35,33, +34,39,38,61,1,7,6,39,38,39,38,55,54,63,1,53,52,55,54,51,50,23,22,29,1,128,119,13,12,11,4,3, +6,6,13,137,224,14,9,9,9,9,14,255,0,14,9,9,23,13,12,11,4,3,6,6,13,41,9,9,14,14,9,9, +253,34,3,6,6,13,13,12,11,4,39,154,9,9,14,14,9,9,9,9,14,168,7,3,6,6,13,13,12,11,4,11, +150,14,9,9,9,9,14,131,0,1,0,0,255,224,1,128,1,160,0,56,0,0,19,21,22,23,22,23,21,20,7,6, +35,34,39,38,61,1,38,39,38,39,17,20,7,6,35,34,39,38,53,17,6,7,6,7,21,20,7,6,35,34,39,38, +61,1,54,55,54,55,53,52,55,54,51,50,23,22,21,224,70,44,45,1,9,9,14,14,9,9,1,26,27,42,9,9, +14,14,9,9,42,27,26,1,9,9,14,14,9,9,1,45,44,70,9,9,14,14,9,9,1,128,35,13,51,52,73,160, +14,9,9,9,9,14,160,46,33,34,11,254,228,14,9,9,9,9,14,1,28,11,34,33,46,160,14,9,9,9,9,14, +160,73,52,51,13,35,14,9,9,9,9,14,0,6,0,0,0,0,2,128,1,128,0,36,0,49,0,63,0,74,0,85, +0,96,0,0,1,23,22,59,1,22,23,22,23,21,6,7,6,15,1,6,7,38,47,1,38,39,38,39,53,54,55,54, +55,51,50,63,1,54,51,50,23,1,38,39,53,35,6,7,21,20,23,22,31,1,37,53,38,39,35,21,6,7,55,54, +55,54,53,49,37,51,54,55,38,39,35,6,7,22,23,21,6,7,22,23,51,54,55,38,39,35,23,51,54,55,38,39, +35,6,7,22,23,1,140,38,24,29,97,24,16,15,1,1,24,25,41,108,53,68,68,53,108,41,25,24,1,1,15,16, +24,97,29,25,37,34,42,42,34,254,248,35,1,40,7,1,15,15,25,29,1,204,1,7,40,1,35,30,24,15,15,254, +128,224,15,1,1,15,224,15,1,1,15,15,1,1,15,224,15,1,1,15,224,32,160,15,1,1,15,160,15,1,1,15, +1,105,25,16,1,15,16,24,85,42,32,32,11,27,33,2,2,33,27,11,32,32,42,85,24,16,15,1,16,25,23,23, +254,253,53,69,48,1,7,85,25,19,19,7,7,77,85,7,1,48,69,53,7,7,19,19,25,45,1,15,15,1,1,15, +15,1,32,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,0,1,0,0,255,193,1,128,1,191,0,80, +0,0,1,22,23,49,22,23,21,20,7,6,35,34,39,38,61,1,38,39,38,39,34,15,1,21,20,7,6,35,38,39, +7,6,7,6,39,38,39,38,63,1,53,38,39,38,39,6,7,6,7,21,20,7,6,35,34,39,38,53,17,52,55,54, +51,22,23,54,51,22,23,54,63,1,54,55,54,23,22,23,22,15,1,1,27,43,29,28,1,9,9,14,14,9,9,1, +13,14,20,6,6,36,9,9,14,20,8,22,5,11,12,13,12,6,5,4,78,1,13,14,20,20,14,13,1,9,9,14, +14,9,9,9,9,14,17,9,24,30,48,32,8,7,35,5,11,12,13,12,6,5,4,19,1,95,5,30,31,45,208,14, +9,9,9,9,14,208,20,14,13,1,2,100,154,14,9,9,2,15,60,12,6,5,4,5,11,12,13,218,43,20,14,13, +1,1,13,14,20,208,14,9,9,9,9,14,1,32,14,9,9,1,13,14,1,33,8,6,95,12,6,5,4,5,11,12, +13,54,0,0,0,7,0,0,255,224,2,128,1,160,0,21,0,28,0,35,0,43,0,51,0,69,0,91,0,0,19,54, +55,49,54,55,33,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,23,51,38,39,38,39,21,53,21,54,55,54, +55,35,5,6,7,49,6,7,51,53,39,22,23,49,22,23,53,35,7,6,7,49,6,7,22,23,22,23,54,55,54,55, +38,39,38,39,5,22,23,49,22,23,33,22,23,6,7,33,38,39,38,39,53,54,55,22,23,21,96,1,18,18,27,1, +160,27,18,18,1,1,18,18,27,254,96,27,18,18,1,64,64,1,18,18,27,27,18,18,1,64,1,160,27,18,18,1, +64,64,1,18,18,27,64,144,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,192,1,20,20,31,1,144, +22,2,2,22,254,112,51,34,34,1,2,22,22,2,1,96,27,18,18,1,1,18,18,27,224,27,18,18,1,1,18,18, +27,224,224,27,18,18,1,64,224,64,1,18,18,27,160,1,18,18,27,64,160,27,18,18,1,64,32,1,22,23,34,34, +23,22,1,1,22,23,34,34,23,22,1,232,31,20,20,1,2,22,22,2,1,34,34,51,240,22,2,2,22,240,0,0, +0,3,0,0,255,224,1,192,1,160,0,54,0,58,0,62,0,0,37,51,53,52,55,54,51,50,23,22,29,1,51,50, +23,22,21,20,7,6,43,1,21,6,7,6,47,1,35,21,20,7,6,35,34,39,38,61,1,35,34,39,38,53,52,55, +54,59,1,53,54,55,54,31,3,53,35,47,1,21,51,1,7,57,9,9,14,14,9,9,32,14,9,9,9,9,14,32, +1,22,22,14,97,100,9,9,14,14,9,9,32,14,9,9,9,9,14,32,1,22,22,14,140,42,15,15,119,58,58,192, +192,14,9,9,9,9,14,192,9,9,14,14,9,9,128,23,8,5,18,146,128,14,9,9,9,9,14,128,9,9,14,14, +9,9,192,23,8,5,18,210,64,22,22,64,86,86,0,0,0,5,0,0,255,192,1,128,1,192,0,20,0,24,0,28, +0,32,0,36,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,39,51,7, +23,7,17,19,55,23,35,55,39,55,17,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14, +20,54,90,89,179,218,90,90,39,89,90,179,217,89,89,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1, +160,20,14,13,1,64,134,134,58,134,134,1,12,254,186,134,134,58,134,134,254,244,0,0,0,3,0,0,255,225,2,128, +1,127,0,27,0,45,0,70,0,0,1,6,35,49,34,39,38,7,6,7,17,22,23,22,55,54,51,50,23,22,55,54, +55,17,38,39,38,7,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,5,38,35,34,7,6,39,38, +63,1,54,51,50,31,1,55,54,51,50,31,1,22,7,6,39,2,66,127,131,131,127,24,19,18,1,1,18,18,25,127, +131,131,127,24,18,19,1,1,18,19,24,254,62,14,9,9,9,9,14,14,9,9,9,9,14,1,90,76,78,76,74,11, +6,5,6,49,5,8,8,5,32,94,5,8,8,5,109,6,6,5,11,1,126,38,38,6,14,13,25,254,192,25,13,14, +6,38,38,6,14,13,26,1,63,25,13,14,6,158,9,9,14,14,9,9,9,9,14,14,9,9,165,13,12,1,8,9, +9,68,7,7,44,139,8,7,165,10,8,8,1,0,0,0,0,3,0,0,255,224,1,128,1,160,0,44,0,53,0,61, +0,0,19,22,23,49,22,23,51,50,23,22,21,20,7,6,43,1,6,7,6,7,35,21,20,7,6,35,34,39,38,61, +1,34,39,38,53,52,55,54,51,53,52,55,54,59,1,23,38,39,49,38,39,35,21,51,7,21,51,54,55,54,55,35, +192,59,43,42,13,3,14,9,9,9,9,14,3,13,42,43,59,96,9,9,14,14,9,9,14,9,9,9,9,14,9,9, +14,128,91,11,24,24,32,96,187,187,96,32,24,24,11,187,1,160,1,36,35,56,9,9,14,14,9,9,56,35,36,1, +96,14,9,9,9,9,14,224,9,9,14,14,9,9,96,14,9,9,128,28,18,17,1,64,64,64,1,17,18,28,0,0, +0,4,0,0,255,224,1,128,1,160,0,67,0,73,0,81,0,87,0,0,19,22,23,49,22,23,51,50,23,22,21,20, +7,6,43,1,22,21,20,7,51,50,23,22,21,20,7,6,43,1,6,7,6,7,35,21,20,7,6,35,34,39,38,61, +1,34,39,38,53,52,55,54,51,53,34,39,38,53,52,55,54,51,53,52,55,54,59,1,23,38,39,35,21,51,7,21, +51,54,53,52,39,35,23,35,21,51,54,55,176,52,41,41,23,19,14,9,9,9,9,14,1,1,1,1,14,9,9,9, +9,14,19,23,41,41,52,80,9,9,14,14,9,9,14,9,9,9,9,14,14,9,9,9,9,14,9,9,14,112,78,31, +47,80,158,158,191,1,1,191,158,158,80,47,31,1,160,1,26,26,43,9,9,14,14,9,9,8,8,8,8,9,9,14, +14,9,9,43,26,26,1,64,14,9,9,9,9,14,160,9,9,14,14,9,9,32,9,9,14,14,9,9,64,14,9,9, +96,31,1,32,64,32,8,8,8,8,96,32,1,31,0,0,0,1,0,0,255,192,2,0,1,192,0,49,0,0,19,54, +55,49,54,55,22,23,22,23,21,23,22,29,1,20,7,6,47,1,21,23,22,29,1,6,7,34,35,39,7,34,35,38, +39,53,52,63,1,53,7,6,39,38,61,1,52,63,1,53,192,1,18,18,27,28,18,17,1,178,14,7,6,8,171,58, +6,1,14,1,2,110,110,2,2,13,1,6,58,171,8,6,7,14,178,1,98,29,31,31,3,3,31,31,29,66,119,9, +17,57,8,5,4,3,57,81,43,4,9,41,14,1,32,32,1,14,41,9,4,43,81,57,3,4,5,8,57,17,9,119, +66,0,0,0,0,4,0,0,255,192,2,0,1,160,0,35,0,47,0,73,0,86,0,0,19,52,55,49,54,59,1,22, +23,22,23,6,7,6,7,23,22,7,6,7,6,39,38,47,1,35,21,20,7,6,35,34,39,38,53,17,23,51,54,55, +54,55,38,39,38,39,35,21,37,22,23,49,22,23,6,7,6,7,35,21,20,7,6,35,34,39,38,53,17,52,55,54, +59,1,23,38,39,49,38,39,35,21,51,54,55,54,55,0,9,9,14,80,61,41,40,2,1,23,23,39,52,4,5,5, +12,13,12,11,6,56,42,9,9,14,14,9,9,64,48,34,23,22,1,1,22,23,34,48,1,80,48,31,32,1,1,32, +31,48,48,9,9,14,14,9,9,9,9,14,80,48,1,13,14,20,48,48,20,14,13,1,1,128,14,9,9,2,40,41, +61,45,35,34,18,128,13,12,11,6,4,5,5,12,140,128,14,9,9,9,9,14,1,128,192,1,22,23,34,34,23,22, +1,160,96,1,32,31,48,48,31,32,1,96,14,9,9,9,9,14,1,32,14,9,9,112,20,14,13,1,96,1,13,14, +20,0,0,0,0,1,0,0,255,224,2,64,1,160,0,55,0,0,1,20,7,49,6,43,1,21,20,7,6,43,1,21, +20,7,6,43,1,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,53,52,55,54,59,1,53,52,55,54,59,1, +53,52,55,54,59,1,50,23,22,21,2,64,9,9,14,96,9,9,14,96,9,9,14,96,9,9,14,128,14,9,9,9, +9,14,96,9,9,14,96,9,9,14,96,9,9,14,128,14,9,9,1,128,14,9,9,96,14,9,9,96,14,9,9,96, +14,9,9,9,9,14,14,9,9,96,14,9,9,96,14,9,9,96,14,9,9,9,9,14,0,4,0,0,255,208,2,128, +1,176,0,75,0,84,0,93,0,102,0,0,55,33,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21, +51,50,23,22,21,20,7,6,35,33,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,33,34,39,38, +53,52,55,54,59,1,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,39,54,55,38,39,6,7,22, +23,37,6,7,22,23,54,55,38,39,3,54,55,38,39,6,7,22,23,160,1,64,22,13,13,1,22,23,34,34,23,22, +1,13,13,22,64,14,9,9,9,9,14,255,0,22,13,13,1,22,23,34,34,23,22,1,13,13,22,255,0,14,9,9, +9,9,14,64,22,13,13,1,22,23,34,34,23,22,1,13,13,22,32,22,2,2,22,22,2,2,22,1,128,22,2,2, +22,22,2,2,22,192,22,2,2,22,22,2,2,22,224,55,10,19,19,25,34,23,22,1,1,22,23,34,25,19,19,10, +55,9,9,14,14,9,9,55,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,55,9,9,14,14,9,9,55, +10,19,19,25,34,23,22,1,1,22,23,34,25,19,19,10,55,104,2,22,22,2,2,22,22,2,48,2,22,22,2,2, +22,22,2,254,144,2,22,22,2,2,22,22,2,0,0,0,0,4,0,0,255,192,2,0,1,192,0,39,0,49,0,67, +0,85,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,21,20,7,6,43,1,34,39,38,61,1,33,21,20, +7,6,43,1,34,39,38,61,1,38,39,17,23,7,33,39,38,39,35,6,7,49,7,34,7,49,6,21,20,23,22,51, +50,55,54,53,52,39,38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,0,1,22,23,34,1, +96,34,23,22,1,1,31,9,9,14,32,14,9,9,255,0,9,9,14,32,14,9,9,31,1,130,18,1,32,18,7,24, +191,23,7,34,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9,14,14,9,9,9,9,14,1,112, +34,23,22,1,1,22,23,34,254,224,41,23,48,14,9,9,9,9,14,32,32,14,9,9,9,9,14,48,23,41,1,32, +72,72,72,23,1,1,23,136,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,1,0,0,255,224,1,128,1,160,0,80,0,0,19,50,23,49,22,29,1,55,54,23,22,23,22,7, +6,15,1,21,55,54,23,22,23,22,7,6,15,1,21,51,54,55,54,55,53,54,55,54,51,22,23,22,7,23,6,7, +6,7,35,34,39,38,61,1,7,6,39,38,39,38,55,54,63,1,53,7,6,39,38,39,38,55,54,63,1,53,52,55, +54,51,49,96,14,9,9,119,13,12,11,4,3,6,6,13,137,119,13,12,11,4,3,6,6,13,137,64,52,36,36,4, +1,10,9,14,13,9,8,1,1,6,54,54,78,96,14,9,9,23,13,12,11,4,3,6,6,13,41,23,13,12,11,4, +3,6,6,13,41,9,9,14,1,160,9,9,14,35,34,3,6,6,13,13,12,11,4,39,29,34,3,6,6,13,13,12, +11,4,39,154,1,34,34,53,8,13,9,8,1,10,9,14,8,78,51,51,2,9,9,14,168,7,3,6,6,13,13,12, +11,4,11,30,7,3,6,6,13,13,12,11,4,11,54,14,9,9,0,0,0,4,0,0,255,192,2,64,1,192,0,17, +0,47,0,65,0,84,0,0,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,37,22,23,49,22,23, +17,6,7,6,7,35,7,35,39,35,7,35,39,35,38,39,38,39,17,54,55,54,55,33,1,54,55,49,54,55,38,39, +38,39,6,7,6,7,22,23,22,23,37,54,55,38,39,38,39,6,7,6,7,22,23,21,22,23,54,55,53,144,1,22, +23,34,34,23,22,1,1,22,23,34,34,23,22,1,1,112,27,18,18,1,1,18,18,27,16,16,64,16,224,16,64,16, +16,27,18,18,1,1,18,18,27,1,192,254,224,68,45,45,2,2,45,45,68,68,45,45,2,2,45,45,68,1,0,30, +2,1,13,14,20,20,14,13,1,2,30,1,15,15,1,208,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34, +240,1,18,18,27,254,160,27,18,18,1,32,32,32,32,1,18,18,27,1,96,27,18,18,1,254,112,2,45,45,68,68, +45,45,2,2,45,45,68,68,45,45,2,179,12,33,20,14,13,1,1,13,14,20,33,12,115,15,1,1,15,115,0,0, +0,5,0,0,255,192,2,32,1,192,0,24,0,46,0,51,0,76,0,101,0,0,19,54,51,50,31,2,22,21,20,15, +2,6,35,34,47,2,38,53,52,63,2,23,54,51,49,50,31,1,22,21,20,7,1,6,35,34,47,1,38,53,52,55, +1,23,7,23,55,39,5,63,1,54,51,50,31,2,22,21,20,15,2,6,35,34,47,2,38,53,52,55,1,63,1,54, +51,50,31,2,22,21,20,15,2,6,35,34,47,2,38,53,52,55,249,2,5,5,2,14,38,5,5,38,14,2,5,5, +2,14,39,4,4,39,14,178,15,19,20,14,35,14,14,254,131,15,19,20,14,35,14,14,1,125,34,105,24,105,24,254, +58,57,21,3,8,8,3,21,57,7,7,57,21,3,8,8,3,21,57,7,7,1,97,56,21,3,8,8,3,21,57,7, +7,57,21,3,8,8,3,21,56,8,8,1,187,5,5,38,14,2,5,5,2,14,38,5,5,38,14,2,5,5,2,14, +38,9,14,14,35,14,20,19,15,254,131,14,14,35,14,20,19,15,1,125,45,105,24,105,24,58,21,57,7,7,57,21, +3,8,8,3,21,57,7,7,57,21,3,8,8,3,255,0,21,56,8,8,56,21,3,8,8,3,21,57,7,7,57,21, +3,8,8,3,0,2,0,0,255,192,1,255,1,192,0,10,0,107,0,0,1,6,39,38,63,1,54,23,22,15,1,39, +22,23,55,54,23,22,15,1,22,7,54,23,55,54,23,22,15,1,22,31,1,22,15,1,6,35,34,47,1,7,22,31, +1,22,15,1,6,35,34,47,1,7,22,31,1,22,15,1,6,35,34,47,1,7,6,35,34,39,38,53,52,63,1,39, +38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54,31,1, +1,160,16,17,14,14,88,17,16,15,15,88,99,7,5,46,17,16,15,15,57,7,9,31,32,59,17,16,15,15,45,8, +8,12,9,9,12,29,39,38,30,12,32,44,34,12,9,9,12,29,38,39,29,13,31,43,35,11,9,9,11,30,38,39, +29,12,69,10,13,13,10,9,9,69,10,28,28,11,12,11,11,32,5,30,10,28,28,11,11,12,10,32,6,30,10,29, +29,11,11,12,11,1,64,15,15,16,17,88,14,14,17,17,87,89,6,8,46,14,14,17,17,58,33,33,10,7,59,14, +14,17,16,47,6,8,11,12,10,12,28,28,12,31,5,33,11,11,12,11,28,28,12,32,4,33,10,13,11,11,28,28, +12,69,9,9,10,13,13,10,68,11,30,38,38,30,12,8,8,12,33,42,30,11,29,39,38,29,12,9,9,12,32,42, +30,11,29,38,39,29,12,9,9,12,0,0,0,3,0,0,255,192,1,191,1,192,0,17,0,70,0,88,0,0,1,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54,31,1,22,23,22,15,1,51,50,23,22,15,1,6, +7,6,39,38,39,38,63,1,35,22,21,6,7,6,7,38,39,38,39,54,55,54,55,50,23,55,39,7,6,39,38,39, +38,55,54,63,1,3,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,160,1,13,14,20,20,14,13, +1,1,13,14,20,20,14,13,1,243,15,18,116,22,5,4,16,38,117,15,10,9,3,32,3,10,11,13,14,7,7,3, +23,69,13,2,45,45,68,68,45,45,2,2,45,45,68,16,16,55,51,49,11,13,12,9,7,1,2,11,64,13,41,27, +27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +6,10,7,55,11,23,22,19,43,12,12,14,160,14,7,7,3,3,10,11,13,122,30,34,68,45,45,2,2,45,45,68, +68,45,45,2,3,54,24,37,7,1,2,11,11,13,12,9,48,254,118,1,27,27,41,41,27,27,1,1,27,27,41,41, +27,27,1,0,0,12,0,0,255,224,2,0,1,160,0,10,0,21,0,32,0,63,0,74,0,85,0,96,0,107,0,118, +0,129,0,140,0,151,0,0,19,54,55,51,22,23,6,7,35,38,39,23,22,23,6,7,35,38,39,54,55,51,7,22, +23,6,7,35,38,39,54,55,51,7,52,55,49,54,51,33,50,23,22,21,6,7,6,15,1,6,7,6,43,1,34,39, +38,47,1,38,39,38,39,49,55,54,55,51,22,23,6,7,35,38,39,35,54,55,51,22,23,6,7,35,38,47,1,22, +23,6,7,35,38,39,54,55,51,23,54,55,51,22,23,6,7,35,38,47,1,22,23,6,7,35,38,39,54,55,51,23, +54,55,51,22,23,6,7,35,38,47,1,22,23,6,7,35,38,39,54,55,51,39,22,23,6,7,35,38,39,54,55,51, +176,2,22,16,22,2,2,22,16,22,2,40,22,2,2,22,16,22,2,2,22,16,144,22,2,2,22,16,22,2,2,22, +16,72,8,8,11,1,202,11,8,8,1,29,29,48,1,2,9,9,12,232,12,9,9,1,2,48,29,29,1,224,2,22, +16,22,2,2,22,16,22,2,96,2,22,16,22,2,2,22,16,22,2,8,22,2,2,22,16,22,2,2,22,16,200,2, +22,16,22,2,2,22,16,22,2,8,22,2,2,22,16,22,2,2,22,16,104,2,22,16,22,2,2,22,16,22,2,8, +22,2,2,22,16,22,2,2,22,16,96,22,2,2,22,16,22,2,2,22,16,1,136,22,2,2,22,22,2,2,22,48, +2,22,22,2,2,22,22,2,72,2,22,22,2,2,22,22,2,107,11,8,8,8,8,11,54,41,41,19,13,12,9,8, +8,9,12,13,19,41,41,54,83,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,96,2,22,22,2,2,22, +22,2,96,22,2,2,22,22,2,2,22,96,2,22,22,2,2,22,22,2,96,22,2,2,22,22,2,2,22,96,2,22, +22,2,2,22,22,2,72,2,22,22,2,2,22,22,2,0,0,2,0,0,255,192,1,64,1,192,0,17,0,76,0,0, +19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,3,38,39,53,7,6,7,6,39,38,39,38,63,1, +54,55,50,51,50,59,1,50,51,22,23,22,31,1,22,23,22,23,21,20,7,6,43,1,21,20,7,6,35,34,39,38, +61,1,35,21,20,7,6,35,34,39,38,61,1,112,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,24,22, +2,5,7,12,13,11,12,3,3,7,58,24,45,3,4,3,2,16,2,2,27,20,20,5,6,34,22,21,1,9,9,14, +56,9,9,14,14,9,9,16,9,9,14,14,9,9,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +254,178,6,24,55,8,11,3,3,7,7,12,13,11,97,39,8,3,18,17,27,33,7,26,25,36,32,14,9,9,96,14, +9,9,9,9,14,96,96,14,9,9,9,9,14,98,0,0,0,1,0,0,255,192,2,64,1,192,0,85,0,0,37,23, +6,29,1,20,7,6,43,1,34,49,38,7,38,7,34,49,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29,1, +20,7,6,43,1,34,35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31, +1,53,52,55,54,59,1,50,23,22,29,1,23,22,7,6,7,6,7,35,2,0,1,1,12,11,17,16,1,1,1,2, +1,1,57,17,11,12,9,9,14,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1,0, +11,11,12,10,106,9,9,14,32,14,9,9,53,12,1,1,9,9,13,32,160,160,4,4,16,17,11,12,1,1,1,1, +12,11,17,88,14,9,9,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14,10,224,9,1,7,94, +37,14,9,9,9,9,14,121,47,10,14,13,9,9,1,0,0,1,0,0,255,192,2,64,1,192,0,46,0,0,37,23, +6,7,6,7,35,39,55,54,47,1,38,7,6,31,1,7,6,31,1,35,38,39,38,39,53,35,38,39,38,53,52,55, +37,54,23,50,31,1,22,7,6,7,6,7,35,2,0,1,1,18,18,27,123,38,81,12,12,118,13,9,8,7,60,85, +10,6,31,102,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,255,12,1,1,9,9,13,32,160,160,27,18,18, +1,64,67,13,12,93,7,8,9,12,83,71,9,12,52,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,225,10, +14,13,9,9,1,0,0,0,0,2,0,0,255,192,2,64,1,192,0,33,0,62,0,0,37,6,7,49,6,7,35,23, +6,7,6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,22,7,49,39,53,38,39,35,6, +7,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,2,64,1,9,9,13,32,1,1, +18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,255,12,1,248,1,15,48,15,1,56,15,1, +1,15,56,1,15,48,15,1,56,15,1,1,15,56,192,13,9,9,1,160,27,18,18,1,1,18,18,27,160,1,9,9, +13,14,10,224,9,1,7,225,10,14,24,56,15,1,1,15,56,1,15,48,15,1,56,15,1,1,15,56,1,15,48,15, +1,0,0,0,0,1,0,0,255,192,1,64,1,192,0,56,0,0,19,50,23,49,22,29,1,22,23,22,23,22,7,6, +39,38,39,6,7,6,7,22,23,22,23,54,55,54,23,22,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38, +39,54,55,54,55,53,52,55,54,51,49,192,14,9,9,47,36,11,2,1,7,21,24,33,44,54,37,36,1,1,36,37, +54,44,33,24,21,15,22,36,47,9,9,14,14,9,9,70,44,45,1,1,45,44,70,9,9,14,1,192,9,9,14,35, +8,27,9,12,13,11,22,15,25,1,1,36,37,54,54,37,36,1,1,25,15,22,24,21,27,8,35,14,9,9,9,9, +14,35,13,51,52,73,73,52,51,13,35,14,9,9,0,0,0,2,0,0,255,193,1,128,1,192,0,18,0,59,0,0, +37,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,37,51,21,20,23,22,51,50,55,54,61,1,51, +50,55,54,53,52,39,38,43,1,53,52,39,38,35,34,7,6,29,1,35,34,7,6,21,20,23,22,51,1,96,254,192, +14,9,9,9,9,14,1,64,14,9,9,9,9,14,254,208,112,9,9,14,14,9,9,112,14,9,9,9,9,14,112,9, +9,14,14,9,9,112,14,9,9,9,9,14,0,9,9,14,14,8,9,9,9,13,13,9,10,240,111,14,8,9,9,9, +13,111,9,9,14,14,9,9,112,14,9,9,9,9,14,112,9,9,14,14,9,9,0,0,0,3,0,5,255,192,2,58, +1,191,0,13,0,28,0,45,0,0,1,54,55,54,23,19,22,7,6,43,1,38,39,17,7,22,23,21,6,7,35,38, +39,38,63,1,54,23,49,3,38,55,33,22,15,1,6,7,6,7,33,38,39,38,47,1,1,0,1,10,11,7,224,5, +4,5,9,224,15,1,44,11,1,1,15,128,9,5,4,4,128,7,11,206,3,18,2,22,18,3,4,12,34,33,44,254, +201,43,33,34,12,4,1,176,11,4,3,9,254,192,8,8,9,1,15,1,64,81,3,12,224,15,1,1,7,8,8,224, +10,3,254,205,17,3,3,17,15,42,25,25,1,1,25,25,42,15,0,0,0,2,0,0,255,192,0,255,1,191,0,84, +0,110,0,0,55,54,55,54,39,38,39,38,47,1,38,39,38,55,54,55,54,23,22,23,22,55,54,55,54,39,38,39, +38,39,38,7,6,7,6,23,22,23,6,7,6,23,22,23,22,23,48,49,23,22,23,22,7,22,7,6,39,38,39,48, +49,39,38,7,6,7,6,23,22,31,1,50,49,22,23,22,51,50,55,54,55,54,39,38,47,1,54,55,49,54,55,50, +23,22,23,22,23,22,7,6,7,6,7,38,39,38,35,38,39,38,55,225,23,6,6,18,18,30,29,28,12,43,11,10, +4,2,11,24,45,16,26,13,11,12,5,4,5,5,13,32,21,72,45,33,6,5,9,9,16,23,6,6,18,18,27,26, +21,13,47,15,15,5,1,22,24,38,26,29,10,13,11,12,5,4,5,5,13,9,1,32,35,19,17,35,27,49,9,5, +9,8,17,160,3,11,11,13,2,6,7,1,47,15,15,5,3,11,11,13,5,11,11,1,43,11,10,4,111,21,34,44, +25,26,13,13,8,3,14,11,12,16,14,8,16,7,3,9,5,6,5,13,13,11,12,5,11,4,11,31,24,39,32,21, +22,14,21,35,43,25,25,13,12,6,4,13,12,11,20,13,13,11,6,6,12,3,5,6,5,12,13,12,11,6,3,14, +7,3,12,23,51,32,21,22,14,96,15,7,7,2,2,2,1,13,12,11,20,15,7,7,2,1,4,3,14,11,12,16, +0,6,0,0,255,224,1,255,1,160,0,30,0,39,0,52,0,68,0,75,0,87,0,0,37,53,35,34,39,38,53,52, +55,54,51,33,54,55,38,39,33,6,7,6,7,22,23,22,23,51,22,23,22,23,51,39,38,39,54,55,22,23,6,7, +23,6,31,1,6,7,22,23,51,53,39,38,7,37,52,39,49,38,53,7,22,21,20,21,20,35,23,54,39,7,21,54, +55,39,6,7,55,38,39,49,38,39,35,21,51,50,23,55,1,32,224,14,9,9,9,9,14,1,112,15,1,1,15,254, +144,27,18,18,1,1,18,18,27,3,13,51,52,73,32,96,22,2,2,22,22,2,2,22,34,6,19,6,19,2,2,22, +72,63,22,9,1,29,2,1,125,1,1,91,42,5,159,57,41,80,8,10,146,22,45,46,57,8,16,19,13,130,128,192, +9,9,14,14,9,9,1,15,15,1,1,18,18,27,27,18,18,1,70,44,45,1,104,2,22,22,2,2,22,22,2,183, +22,9,3,3,20,22,2,70,24,7,20,112,6,6,2,3,91,3,4,2,2,1,40,53,73,126,66,6,35,36,8,3, +175,50,30,29,1,192,12,94,0,3,0,0,255,192,2,0,1,192,0,83,0,119,0,131,0,0,1,50,23,49,22,29, +1,22,31,1,22,23,22,7,6,7,6,47,1,38,43,1,6,7,6,7,22,31,1,22,23,22,29,1,6,7,6,7, +21,20,7,6,35,34,39,38,61,1,38,47,1,38,39,38,55,54,55,54,31,1,22,51,54,55,54,55,53,38,47,1, +38,39,38,53,54,55,54,55,53,52,55,54,51,49,5,52,55,49,54,59,1,22,23,22,23,6,7,6,7,23,22,7, +6,7,6,39,38,47,1,35,21,20,7,6,35,34,39,38,53,17,23,51,54,55,54,55,38,39,38,39,35,21,1,144, +14,9,9,19,17,10,12,4,4,5,7,12,12,12,10,16,16,2,23,15,15,1,2,32,52,34,20,20,1,22,22,35, +9,9,14,14,9,9,23,19,24,11,2,3,7,8,13,12,12,23,17,20,21,14,14,1,2,32,52,34,20,20,1,22, +21,36,9,9,14,254,112,9,9,14,80,61,41,40,2,1,23,23,39,52,4,5,5,12,13,12,11,6,56,42,9,9, +14,14,9,9,64,48,34,23,22,1,1,22,23,34,48,1,192,9,9,14,18,4,8,5,7,12,12,12,12,4,4,5, +5,8,1,15,15,23,35,15,21,14,29,29,37,4,39,29,29,12,21,14,9,9,9,9,14,19,6,13,15,8,13,13, +11,11,2,3,7,16,11,1,14,14,21,4,35,15,21,14,29,29,37,40,29,30,13,22,14,9,9,64,14,9,9,2, +40,41,61,45,35,34,18,128,13,12,11,6,4,5,5,12,140,128,14,9,9,9,9,14,1,128,192,1,22,23,34,34, +23,22,1,160,0,3,0,0,255,224,1,192,1,160,0,21,0,43,0,65,0,0,19,54,55,49,54,55,51,22,23,22, +23,17,6,7,6,7,35,38,39,38,39,17,7,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38, +39,53,37,22,23,49,22,23,17,6,7,6,7,35,38,39,38,39,17,54,55,54,55,51,160,1,13,14,20,32,20,14, +13,1,1,13,14,20,32,20,14,13,1,160,1,13,14,20,32,20,14,13,1,1,13,14,20,32,20,14,13,1,1,144, +20,14,13,1,1,13,14,20,32,20,14,13,1,1,13,14,20,32,1,112,20,14,13,1,1,13,14,20,254,160,20,14, +13,1,1,13,14,20,1,96,192,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,160,176,1,13,14,20, +254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,0,2,0,0,255,224,2,0,1,160,0,38,0,78,0,0, +1,6,7,49,6,7,35,21,51,22,23,22,15,1,6,47,1,38,55,54,55,51,53,35,38,39,38,39,53,54,55,54, +55,33,22,23,22,23,21,3,51,53,35,55,54,39,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55, +54,55,51,6,31,1,35,21,51,23,22,51,50,63,1,2,0,1,18,18,27,168,46,17,5,6,11,71,16,17,71,10, +6,5,17,46,168,27,18,18,1,1,18,18,27,1,128,27,18,18,1,199,135,71,7,24,9,49,27,18,18,1,1,18, +18,27,254,128,27,18,18,1,1,18,18,27,48,9,24,8,71,135,17,18,22,22,18,17,1,32,27,18,18,1,64,1, +14,13,12,71,14,14,71,12,13,14,1,64,1,18,18,27,64,27,18,18,1,1,18,18,27,64,255,0,64,8,26,30, +1,18,18,27,64,27,18,18,1,1,18,18,27,64,27,18,18,1,30,26,8,64,16,17,17,16,0,0,0,3,0,0, +255,224,2,0,1,160,0,21,0,26,0,67,0,0,23,38,39,49,38,39,53,54,55,54,55,33,22,23,22,23,21,6, +7,6,7,33,37,53,33,21,33,3,6,7,49,6,7,35,38,39,38,39,53,54,55,54,55,33,22,23,22,23,21,51, +22,23,22,15,1,6,47,1,38,55,54,55,51,53,38,39,35,21,64,27,18,18,1,1,18,18,27,1,128,27,18,18, +1,1,18,18,27,254,128,1,128,254,128,1,128,160,1,18,18,27,160,27,18,18,1,1,18,18,27,1,48,34,23,22, +1,38,17,5,6,11,71,16,17,71,10,6,5,17,38,1,15,80,32,1,18,18,27,64,27,18,18,1,1,18,18,27, +64,27,18,18,1,64,64,64,1,0,27,18,18,1,1,18,18,27,64,27,18,18,1,1,22,23,34,16,1,14,13,12, +71,14,14,71,12,13,14,1,16,15,1,64,0,3,0,0,255,224,2,0,1,160,0,21,0,62,0,67,0,0,37,6, +7,49,6,7,33,38,39,38,39,53,54,55,54,55,33,22,23,22,23,21,37,35,38,39,38,39,53,54,55,54,55,33, +22,23,22,23,21,51,22,23,22,15,1,6,47,1,38,55,54,55,51,53,38,39,35,21,6,7,6,7,49,39,51,53, +35,21,2,0,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,254,224,160,27,18,18,1,1, +18,18,27,1,48,34,23,22,1,38,17,5,6,11,71,16,17,71,10,6,5,17,38,1,15,80,1,18,18,27,160,160, +160,32,27,18,18,1,1,18,18,27,64,27,18,18,1,1,18,18,27,64,192,1,18,18,27,64,27,18,18,1,1,22, +23,34,16,1,14,13,12,71,14,14,71,12,13,14,1,16,15,1,64,27,18,18,1,64,64,64,0,0,0,6,0,0, +255,192,2,0,1,192,0,26,0,77,0,94,0,105,0,116,0,127,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,31,1,22,51,50,63,1,54,53,52,47,1,38,47,1,38,35, +34,15,1,6,39,38,39,48,53,39,38,35,34,15,1,6,15,1,6,7,6,31,1,22,23,22,63,1,54,31,1,22, +23,49,55,38,15,1,6,7,6,31,1,22,59,1,54,55,54,47,1,3,51,54,55,38,39,35,6,7,22,23,55,38, +7,6,31,1,22,55,54,47,1,7,54,39,38,15,1,6,23,22,63,1,0,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,216,25,10,14,21,12,13,9,9,18,7,4,10,3,7,6,3,11,8, +12,5,3,5,11,19,19,12,5,3,3,35,16,5,5,7,4,7,13,13,14,16,10,10,39,3,4,58,16,20,39,11, +2,1,11,43,7,9,30,11,3,4,7,22,10,16,15,1,1,15,16,15,1,1,15,167,6,14,13,3,8,6,14,13, +3,8,20,10,10,11,11,32,10,10,11,11,32,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,105,16,7,17,15,12,14,15,11,23,10,10,26,7,4,15,9,1,2,3,1,6,15,15,7,3, +2,17,8,15,16,16,6,13,5,6,5,4,4,4,13,2,2,218,16,5,7,4,10,11,6,19,3,1,9,9,8,22, +254,207,1,15,15,1,1,15,15,1,149,13,3,6,14,24,13,3,6,14,24,80,11,11,10,10,32,11,11,10,10,32, +0,4,0,0,255,192,2,128,1,192,0,46,0,67,0,98,0,104,0,0,19,54,23,51,50,23,52,63,1,54,51,50, +23,22,21,20,15,1,34,21,48,21,22,23,51,50,23,22,21,20,7,6,43,1,20,7,23,22,7,6,39,1,38,55, +54,31,1,55,21,20,7,6,43,1,34,39,38,61,1,54,55,54,55,22,23,22,23,49,5,54,55,23,21,38,39,7, +6,35,34,39,38,53,52,63,1,54,55,38,53,35,34,39,38,53,52,55,54,59,1,23,53,23,6,7,49,239,13,12, +112,26,22,1,64,10,13,13,10,9,9,64,2,9,2,64,14,9,9,9,9,14,64,3,154,16,12,15,19,253,176,16, +12,15,19,200,177,8,8,12,136,12,8,8,1,27,27,41,41,27,27,1,255,0,2,5,137,53,37,63,10,13,13,10, +9,9,64,3,3,15,64,14,9,9,9,9,14,64,176,95,39,56,1,29,4,1,11,1,1,64,9,9,10,13,13,10, +64,1,1,18,21,9,9,14,14,9,9,15,14,120,15,19,16,12,1,208,15,19,16,12,158,67,4,12,8,8,8,8, +12,4,41,27,27,1,1,27,27,41,160,16,13,109,143,6,33,63,9,9,10,13,13,10,64,2,2,32,37,9,9,14, +14,9,9,223,118,74,38,6,0,4,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,76,0,0,19,54,55,49, +54,55,51,21,20,23,22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,38,39,6,7,21,35,6,7,22,23,51,21,22,23,54, +55,53,51,54,55,38,39,35,53,0,1,18,18,27,160,9,9,14,128,56,36,35,1,20,20,34,5,5,255,0,27,18, +18,1,1,0,128,128,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,15,15,1,48,15,1,1, +15,48,1,15,15,1,48,15,1,1,15,48,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24,1, +1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,65,14,2,2,14,48, +2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,4,0,0,255,192,2,128,1,192,0,25,0,42,0,73, +0,86,0,0,19,52,63,1,54,55,33,22,31,1,22,21,20,7,6,7,38,39,6,7,33,34,39,38,53,49,5,21, +6,7,6,7,35,38,39,38,39,53,51,21,51,53,51,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1, +34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,0,6,76,14,26, +1,140,26,14,76,6,10,9,15,31,47,47,31,254,99,16,10,11,1,128,1,13,14,20,224,20,14,13,1,64,192,64, +144,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,37,11, +9,114,20,1,1,20,114,9,11,15,10,10,2,31,1,1,31,11,10,16,69,240,20,14,13,1,1,13,14,20,240,160, +160,32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48,48, +14,9,9,0,0,3,0,0,255,192,2,0,1,192,0,121,0,139,0,148,0,0,19,54,55,51,22,23,6,7,35,21, +22,23,55,39,38,55,54,31,1,22,7,6,47,1,7,22,23,51,53,54,55,22,23,21,6,7,38,39,53,35,6,7, +23,55,54,23,22,15,1,6,39,38,63,1,39,6,7,21,51,22,23,6,7,35,38,39,54,55,51,53,38,39,7,23, +22,7,6,47,1,38,55,54,31,1,55,38,39,35,21,6,7,38,39,53,54,55,22,23,21,51,54,55,39,7,6,39, +38,63,1,54,23,22,15,1,23,54,55,53,35,38,39,49,21,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,23,54,55,38,39,6,7,22,23,192,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17, +17,11,24,28,6,34,2,22,22,2,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17,14,14,11,24,35,47, +16,22,2,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17,17,11,24,28,6,34,2,22,22, +2,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17,14,14,11,24,35,47,16,22,2,20,14,13,1,1,13, +14,20,20,14,13,1,1,13,14,20,112,22,2,2,22,22,2,2,22,1,168,22,2,2,22,22,2,34,6,28,24,11, +17,17,14,14,56,17,17,14,14,11,24,35,47,16,22,2,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17, +56,14,14,17,17,11,24,28,6,34,2,22,22,2,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17,14,14, +11,24,35,47,16,22,2,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17,17,11,24,28,6, +34,2,22,152,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,152,2,22,22,2,2,22,22,2,0,0,0, +0,2,0,0,255,192,2,128,1,192,0,69,0,127,0,0,19,55,54,23,22,15,1,23,54,55,53,35,34,39,38,53, +52,55,54,59,1,22,23,6,7,35,21,22,23,55,39,38,55,54,31,1,22,7,6,47,1,7,22,23,51,53,54,55, +22,23,21,6,7,38,39,53,35,6,7,23,22,7,6,39,1,38,55,54,31,3,6,7,21,51,22,23,6,7,35,34, +39,38,53,52,55,54,59,1,53,38,39,7,23,22,7,6,47,1,38,55,54,31,1,55,38,39,35,21,6,7,34,39, +38,61,1,52,55,54,51,22,23,21,51,54,55,49,134,33,17,17,14,14,11,24,36,45,16,10,7,7,7,7,10,81, +22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17,17,11,24,28,6,34,2,22,22,2,2,22,22,2,34, +5,17,159,16,12,15,19,253,176,16,12,15,19,95,15,252,26,31,16,22,2,2,22,81,10,7,7,7,7,10,16,45, +36,24,11,14,14,17,17,56,14,14,17,17,10,25,28,6,35,1,23,10,7,7,7,7,10,23,1,35,1,2,1,112, +33,14,14,17,17,11,24,28,6,34,7,7,10,10,7,7,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17, +14,14,11,24,35,47,16,22,2,2,22,80,22,2,2,22,16,35,30,124,15,19,16,12,1,208,15,19,16,12,75,134, +198,14,4,34,2,22,22,2,7,7,10,10,7,7,34,6,28,24,11,17,17,14,14,56,17,17,14,14,11,24,35,47, +16,22,2,7,7,10,80,10,7,7,2,22,16,9,9,0,0,4,0,0,255,192,2,128,1,192,0,68,0,86,0,104, +0,120,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,22,23,6,43,1,38,39,38,39,53,7,6,39,38,63, +1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38,53,52,55,54,59,1,38,39,54,55,54,55, +22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,5,6,7,49,6, +7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,1,96,14, +9,9,9,9,14,33,20,19,34,12,12,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27, +27,41,48,32,14,9,9,9,9,14,11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,65,14,9,9,9,9,14, +13,9,9,1,1,9,9,13,1,97,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10, +10,40,11,11,72,10,10,11,11,1,16,9,9,14,14,9,9,208,37,25,2,2,45,45,68,6,6,15,15,16,17,56, +14,14,56,17,16,15,15,6,6,41,27,27,1,208,9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21, +21,13,48,9,9,14,14,9,9,9,9,14,14,9,9,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61, +43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,5,0,0,255,192,2,128,1,192,0,68,0,86,0,104, +0,113,0,124,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,22,23,6,43,1,38,39,38,39,53,7,6,39, +38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38,53,52,55,54,59,1,38,39,54,55, +54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,23,54,55, +49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38, +39,6,7,1,96,14,9,9,9,9,14,33,20,19,34,12,12,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15, +15,16,17,7,1,27,27,41,48,32,14,9,9,9,9,14,11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,65, +14,9,9,9,9,14,13,9,9,1,1,9,9,13,65,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144, +22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,16,9,9,14,14,9,9,208,37,25,2,2,45,45, +68,6,6,15,15,16,17,56,14,14,56,17,16,15,15,6,6,41,27,27,1,208,9,9,14,14,9,9,28,52,41,27, +27,1,1,27,27,41,25,21,21,13,48,9,9,14,14,9,9,9,9,14,14,9,9,240,61,41,40,2,2,40,41,61, +61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,4,0,0, +255,192,2,128,1,192,0,68,0,86,0,104,0,129,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,22,23,6, +43,1,38,39,38,39,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38, +53,52,55,54,59,1,38,39,54,55,54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34, +7,6,7,22,23,22,51,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39, +38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,96,14,9,9,9,9,14,33,20,19,34,12,12, +160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27,27,41,48,32,14,9,9,9,9,14,11, +41,2,1,27,27,41,41,27,27,1,12,12,19,11,65,14,9,9,9,9,14,13,9,9,1,1,9,9,13,65,2,40, +41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37, +37,11,11,10,10,36,36,1,16,9,9,14,14,9,9,208,37,25,2,2,45,45,68,6,6,15,15,16,17,56,14,14, +56,17,16,15,15,6,6,41,27,27,1,208,9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21,21,13, +48,9,9,14,14,9,9,9,9,14,14,9,9,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11, +11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,4,0,0,255,192,2,128, +1,192,0,71,0,89,0,120,0,133,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,50,55,21,20,23,6,43, +1,38,39,38,39,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38,53, +52,55,54,59,1,38,39,54,55,54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34,7, +6,7,22,23,22,51,23,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,51, +53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,96,14,9,9,9,9,14,33,49,8,8,8,12, +12,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27,27,41,48,32,14,9,9,9,9,14, +11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,65,14,9,9,9,9,14,13,9,9,1,1,9,9,13,241,34, +23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,16,9,9,14, +14,9,9,208,1,33,16,14,2,2,45,45,68,6,6,15,15,16,17,56,14,14,56,17,16,15,15,6,6,41,27,27, +1,208,9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21,21,13,48,9,9,14,14,9,9,9,9,14, +14,9,9,64,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14, +48,48,14,9,9,0,0,0,0,3,0,0,255,192,2,64,1,192,0,73,0,86,0,98,0,0,55,38,53,49,52,55, +54,51,50,31,1,53,35,34,39,38,53,52,55,54,55,33,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1, +22,21,20,7,6,35,34,47,1,21,51,22,23,22,21,20,7,6,35,33,21,55,54,51,50,23,22,21,20,15,1,6, +35,34,47,1,19,52,55,49,54,55,22,23,22,29,1,35,53,1,21,20,7,6,35,34,39,38,61,1,51,41,9,9, +10,13,13,10,41,96,14,9,9,9,9,14,1,96,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13, +10,41,96,14,9,9,9,9,14,254,160,41,10,13,13,10,9,9,96,10,13,13,10,96,87,9,9,14,14,9,9,64, +1,64,9,9,14,14,9,9,64,41,10,13,13,10,9,9,42,116,9,9,14,13,9,9,1,114,42,9,9,10,13,13, +10,96,9,9,96,10,13,13,10,9,9,42,114,1,9,9,13,14,9,9,116,42,9,9,10,13,13,10,96,9,9,96, +1,88,13,9,9,1,1,9,9,13,128,128,255,0,129,14,9,9,9,9,14,129,0,0,0,5,0,0,255,192,2,128, +1,192,0,68,0,80,0,92,0,123,0,136,0,0,23,39,38,53,52,55,54,51,50,31,1,53,35,34,39,38,53,52, +55,54,55,33,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,51,6, +29,1,33,21,55,54,51,50,23,22,21,20,15,1,6,35,34,39,49,3,53,52,55,54,55,22,23,22,29,1,35,5, +21,20,7,6,35,34,39,38,61,1,51,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61, +1,52,55,54,51,53,54,55,54,55,21,6,7,49,6,29,1,51,53,52,39,38,39,105,96,9,9,10,13,13,10,41, +64,14,9,9,9,9,14,1,0,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,75,11,255, +0,41,10,13,13,10,9,9,96,10,13,13,10,9,9,9,14,14,9,9,64,1,0,9,9,14,14,9,9,64,176,34, +23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,55,96,10,13,13, +10,9,9,42,116,9,9,14,13,9,9,1,114,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,114, +23,25,16,116,42,9,9,10,13,13,10,96,9,9,1,56,128,13,9,9,1,1,9,9,13,128,128,129,14,9,9,9, +9,14,129,128,1,23,23,33,48,10,9,14,128,14,9,9,9,9,14,128,14,9,10,48,33,23,23,1,48,1,9,9, +13,48,48,13,9,9,1,0,0,7,0,0,255,192,2,128,1,192,0,34,0,47,0,60,0,73,0,86,0,99,0,135, +0,0,1,54,55,49,54,55,51,22,23,22,23,21,51,53,54,55,22,23,21,51,22,23,22,23,21,6,7,6,7,33, +38,39,38,39,17,23,22,23,51,54,55,53,38,39,35,6,7,21,23,6,7,21,22,23,51,54,55,53,38,39,35,7, +22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,7,22,23,51,54,55,53, +38,39,35,6,7,21,37,22,21,49,20,15,1,6,35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1, +39,38,53,52,55,54,51,50,31,1,1,32,1,13,14,20,96,20,14,13,1,40,2,22,22,2,24,20,14,13,1,1, +13,14,20,255,0,20,14,13,1,64,1,15,32,15,1,1,15,32,15,1,16,15,1,1,15,32,15,1,1,15,32,16, +1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,16,1,15,32,15,1,1,15,32,15,1, +254,247,9,9,80,10,13,13,10,9,9,26,115,14,9,9,9,9,14,115,26,9,9,10,13,13,10,80,1,144,20,14, +13,1,1,13,14,20,144,72,22,2,2,22,72,1,13,14,20,224,20,14,13,1,1,13,14,20,1,160,64,15,1,1, +15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,48,1,15, +32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,167,10,13,13,10,80,9,9,10,13,13,10,25, +9,9,14,14,9,9,25,10,13,13,10,9,9,80,0,0,0,4,0,0,255,192,2,64,1,192,0,34,0,88,0,106, +0,125,0,0,37,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,20, +7,6,35,34,39,38,53,23,54,23,22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38, +39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,49,39,38,39, +38,7,34,7,6,7,6,7,53,54,55,54,55,51,21,37,21,38,39,38,39,38,35,38,7,6,7,53,51,22,23,22, +23,49,1,0,25,10,13,13,10,9,9,80,10,13,13,10,80,9,9,10,13,13,10,25,9,9,14,14,9,9,14,18, +19,34,43,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43, +21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,78,31,28,19,21,21,17,17,21,9,8,1,13,14, +20,144,1,128,8,9,21,17,17,21,21,19,29,30,144,20,14,13,1,129,210,26,9,9,10,13,13,10,80,9,9,80, +10,13,13,10,9,9,26,210,14,10,9,9,10,14,103,12,12,25,1,2,24,13,15,18,7,3,11,11,13,13,7,7, +3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1, +25,5,1,20,12,1,15,13,5,2,5,186,20,13,14,1,226,178,185,3,3,5,13,15,1,12,20,1,226,1,14,13, +20,0,0,0,0,2,0,0,255,192,2,64,1,192,0,83,0,137,0,0,19,22,23,49,22,29,1,51,53,7,6,35, +34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,51,22,23,22,23,21,20,7,38,39, +38,39,38,35,38,7,6,7,38,39,38,35,34,7,6,7,38,39,38,7,34,7,6,7,6,7,38,61,1,54,55,54, +55,51,53,54,55,54,55,51,19,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39, +6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,49,239,21, +13,14,129,25,10,13,13,10,9,9,80,10,13,13,10,80,9,9,10,13,13,10,25,48,20,14,13,1,5,6,6,21, +17,17,21,21,19,29,30,30,29,17,20,20,17,26,33,31,28,19,21,21,17,17,21,6,6,5,1,13,14,20,16,1, +13,14,20,127,145,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49, +51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,192,1,13,14,20,208,147, +26,9,9,10,13,13,10,80,9,9,80,10,13,13,10,9,9,26,147,1,13,14,20,96,12,10,2,2,5,13,15,1, +12,20,1,1,20,12,12,19,2,1,20,12,1,15,13,5,2,2,10,12,96,20,14,13,1,208,20,14,13,1,254,64, +2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7, +7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,0,0,11,0,0,255,192,2,64,1,192,0,35, +0,53,0,71,0,89,0,107,0,125,0,143,0,161,0,179,0,197,0,215,0,0,1,50,23,49,22,29,1,20,7,6, +35,34,39,38,39,53,7,6,35,34,39,38,53,52,63,1,35,34,39,38,39,54,55,54,59,1,5,6,7,49,6,7, +38,39,38,39,54,55,54,55,22,23,22,23,7,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23, +22,23,51,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,37,54,55,49,54,55,22,23,22,21,20,7, +6,7,38,39,38,39,23,20,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,35,54,55,49,54,55,22,23, +22,21,20,7,6,7,38,39,38,39,37,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,1,31,14,10,9,9,10,14,13,9,9,1,200,10,13,13,10,9, +9,202,52,13,9,9,1,1,9,9,13,128,1,33,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,1, +13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,254,159,1,14,13,20,21,14,14,14,14,21,20,13,14,1,97,14,14,21,20,13,14,1,1,14,13,20,21,14, +14,225,1,14,13,20,21,13,14,14,13,21,20,13,14,1,1,225,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,9,9,14,128,14,9,9,9,9,14,51, +202,9,9,10,13,13,10,201,9,9,14,14,9,9,80,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14, +20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13, +1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0,3,0,0,255,224,2,64, +1,160,0,19,0,55,0,91,0,0,37,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,39,6, +35,49,34,47,1,38,53,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20, +15,1,39,7,6,35,34,47,1,38,53,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50, +23,22,21,20,7,49,2,32,14,9,9,9,9,14,254,0,14,9,9,9,9,14,2,0,73,10,13,13,10,96,9,9, +10,13,13,10,41,9,9,14,14,9,9,41,10,13,13,10,9,9,96,224,96,10,13,13,10,96,9,9,10,13,13,10, +41,9,9,14,14,9,9,41,10,13,13,10,9,9,32,9,9,14,14,9,9,9,9,14,14,9,9,41,9,9,96,10, +13,13,10,9,9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,96,96,96,9,9,96,10,13,13,10,9, +9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,0,0,0,0,6,0,16,255,192,2,111,1,192,0,23, +0,41,0,59,0,77,0,169,0,192,0,0,19,21,55,54,23,22,15,1,6,47,1,38,55,54,31,1,53,52,55,54, +51,22,23,49,23,20,7,49,6,35,34,39,38,39,54,55,54,51,50,23,22,21,7,20,7,49,6,35,34,39,38,39, +54,55,54,51,50,23,22,21,33,54,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,39,5,20,7,49,6,43, +1,34,39,38,39,53,7,6,39,38,63,1,54,55,54,59,1,50,23,55,54,55,54,59,1,50,23,22,31,1,54,59, +1,50,23,22,31,1,22,7,6,47,1,21,20,7,6,43,1,34,39,38,39,53,7,6,39,38,63,1,38,47,1,21, +20,7,6,43,1,34,39,38,39,53,7,6,7,6,7,23,22,7,6,47,1,21,19,38,55,54,31,1,53,52,55,54, +51,22,23,21,55,54,23,22,15,1,6,47,1,167,24,17,16,15,15,64,16,17,64,14,14,17,17,22,7,7,10,23, +1,192,11,11,18,16,12,11,1,1,11,12,16,18,11,11,176,11,11,18,16,12,11,1,1,11,12,16,18,11,11,1, +16,1,11,12,16,18,11,11,11,11,18,16,12,11,1,255,0,9,9,14,48,13,9,9,1,26,12,20,19,9,38,12, +20,21,24,20,25,20,34,12,20,21,24,20,24,21,20,12,34,20,25,20,24,21,20,12,38,9,19,20,12,28,9,9, +14,48,13,9,9,1,26,12,20,19,9,36,2,2,28,9,9,14,48,13,9,9,1,26,1,1,1,1,36,9,19,20, +12,28,216,14,14,17,16,23,7,7,10,23,1,24,17,16,15,15,64,16,17,64,1,168,118,23,14,14,17,16,64,15, +15,64,16,17,14,14,23,118,10,7,7,2,22,176,17,11,12,12,11,17,17,11,12,12,11,17,96,17,11,12,12,11, +17,17,11,12,12,11,17,17,11,12,12,11,17,17,11,12,12,11,17,184,14,9,9,9,9,14,38,49,19,9,12,20, +71,21,13,12,13,63,21,13,13,13,13,21,63,13,12,13,21,71,20,12,9,19,49,38,14,9,9,9,9,14,38,49, +19,9,12,20,68,2,4,49,54,14,9,9,9,9,14,54,49,2,1,2,1,68,20,12,9,19,49,38,1,72,16,17, +14,14,23,118,10,7,7,2,22,118,23,14,14,17,16,64,15,15,64,0,0,3,0,0,0,0,2,128,1,128,0,19, +0,72,0,92,0,0,19,50,23,49,22,21,17,20,7,6,35,34,39,38,53,17,52,55,54,51,23,22,21,49,20,15, +1,51,39,38,53,52,55,54,51,50,31,1,22,21,20,15,1,6,35,34,39,38,53,52,63,1,35,23,22,21,20,7, +6,35,34,47,1,38,53,52,63,1,54,51,50,23,49,1,20,7,49,6,35,34,39,38,53,17,52,55,54,51,50,23, +22,21,17,32,14,9,9,9,9,14,14,9,9,9,9,14,215,9,9,42,230,42,9,9,10,13,13,10,96,9,9,96, +10,13,13,10,9,9,42,230,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10,1,137,9,9,14,14,9,9,9, +9,14,14,9,9,1,128,9,9,14,254,192,14,9,9,9,9,14,1,64,14,9,9,73,10,13,13,10,41,41,10,13, +13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9, +254,233,14,9,9,9,9,14,1,64,14,9,9,9,9,14,254,192,0,0,0,4,0,33,255,224,1,225,1,160,0,24, +0,49,0,74,0,99,0,0,1,34,7,53,54,51,22,23,55,54,23,22,23,21,6,7,35,34,39,38,63,1,38,39, +49,7,20,23,35,38,53,54,55,39,38,55,54,55,51,22,23,21,20,7,6,47,1,6,7,49,23,7,22,23,54,55, +21,6,7,38,39,7,6,39,38,39,53,54,55,51,22,23,22,7,49,55,23,54,55,52,39,51,22,21,6,7,23,22, +7,6,7,35,38,39,53,54,55,54,23,49,1,1,17,17,17,17,89,62,30,8,9,9,1,1,15,105,11,4,4,7, +31,44,62,160,3,65,2,2,55,29,8,4,4,10,106,15,1,9,10,8,30,38,1,85,29,43,61,16,15,15,16,88, +61,31,9,9,9,1,2,14,106,10,4,4,7,166,29,39,1,3,65,2,2,56,31,7,4,4,11,105,15,1,1,9, +9,8,1,96,3,65,2,2,56,29,8,4,4,11,105,15,1,9,10,8,31,38,1,160,16,16,16,16,88,62,29,9, +9,9,1,2,14,106,11,4,3,7,30,43,61,92,29,37,2,1,2,64,2,1,3,54,31,7,4,4,11,105,15,1, +1,9,9,8,16,29,43,62,17,15,15,17,89,62,31,8,9,9,1,1,15,105,11,4,4,7,0,0,0,3,0,0, +255,192,2,0,1,192,0,79,0,84,0,88,0,0,19,6,35,49,34,39,38,53,52,63,1,54,51,50,31,1,22,21, +20,7,6,35,34,47,1,17,22,23,22,23,51,50,23,22,21,20,7,6,43,1,38,39,38,39,38,39,38,39,35,23, +22,21,20,7,6,35,34,47,1,49,38,53,55,54,63,1,54,51,50,23,22,21,20,15,1,51,22,23,53,15,1,52, +55,6,21,49,53,21,49,247,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,1,18,18,27,64, +14,9,9,9,9,14,64,54,37,36,1,1,18,18,27,115,42,9,9,10,13,13,10,96,9,2,3,4,96,10,13,13, +10,9,9,42,115,35,29,41,247,2,2,1,41,9,9,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,254,237, +27,18,18,1,9,9,14,14,9,9,1,36,37,54,27,18,18,1,41,10,13,13,10,9,9,96,9,14,12,7,4,96, +9,9,10,13,13,10,40,1,17,164,42,137,7,5,6,6,1,1,0,0,0,5,0,0,255,192,2,128,1,192,0,45, +0,63,0,103,0,144,0,191,0,0,19,54,51,49,50,31,1,53,54,55,54,55,22,23,22,29,1,20,7,6,49,6, +7,49,6,7,48,7,6,43,1,34,39,38,39,54,55,54,55,51,39,38,53,52,55,49,5,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,5,34,39,49,38,53,52,55,54,59,1,49,50,23,49,22,23,22,29,1,20,7, +6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,35,1,50,23,49,22,29,1,55,54,51,50,23,22,21, +20,15,1,51,50,23,22,21,20,7,6,43,1,34,39,49,38,39,38,61,2,52,55,54,51,49,19,23,22,21,20,7, +6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,52,21,48,49,52,55,54,55,48,53,54,51,48,49,34,59,1, +50,23,22,21,20,7,6,43,1,9,10,13,13,10,104,1,9,9,13,14,9,9,1,1,2,4,5,5,1,5,8,96, +13,9,9,1,1,9,9,13,20,106,9,9,1,119,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,254,224, +14,9,9,9,9,14,96,14,9,4,3,2,9,9,14,14,9,9,105,10,13,13,10,9,9,106,19,1,96,14,9,9, +105,10,13,13,10,9,9,106,19,14,9,9,9,9,14,96,14,9,5,2,2,9,9,14,77,106,9,9,10,13,13,10, +105,9,9,14,14,9,9,2,2,5,9,14,1,1,96,14,9,9,9,9,14,19,1,183,9,9,106,20,13,9,9,1, +1,9,9,13,96,8,5,1,5,5,4,2,1,1,9,9,14,13,9,9,1,104,10,13,13,10,247,27,18,18,1,1, +18,18,27,27,18,18,1,1,18,18,27,96,9,9,14,14,9,9,9,5,6,6,5,97,14,9,9,9,9,14,19,106, +9,9,10,13,13,10,105,1,32,9,9,14,19,106,9,9,10,13,13,10,105,9,9,14,14,9,9,9,6,5,5,7, +1,95,14,9,9,254,224,105,10,13,13,10,9,9,106,19,14,9,9,9,9,14,96,1,1,7,5,6,4,1,9,9, +9,14,14,9,9,0,0,0,0,5,0,0,255,192,2,0,1,192,0,34,0,71,0,89,0,125,0,162,0,0,1,55, +54,51,50,23,22,21,20,15,1,6,35,34,47,1,38,53,52,55,54,51,50,31,1,53,54,55,54,51,50,23,22,29, +1,19,6,35,49,34,47,1,38,53,52,63,1,54,51,50,23,22,21,20,15,1,51,22,23,22,21,20,7,6,43,1, +23,22,21,20,7,49,39,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,39,22,21,49,20,15,1,6, +35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52,55,54,51,50,31,1,7,38,53,49, +52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39, +49,1,32,9,10,13,13,10,9,9,64,10,13,13,10,64,9,9,10,13,13,10,8,1,9,9,13,14,10,9,151,10, +13,13,10,64,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,10,9,9,151,9,9,14,14,9,9, +9,9,14,14,9,9,105,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,10,9,9,10,13,13,10, +64,14,9,9,64,10,13,13,10,64,9,9,10,13,13,10,9,9,9,14,14,9,9,9,10,13,13,10,1,109,10,9, +9,10,13,13,10,64,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,254,252,9,9,64,10,13,13, +10,64,9,9,10,13,13,10,8,1,9,9,13,14,9,9,10,10,13,13,10,87,14,9,9,9,9,14,14,9,9,9, +9,14,23,10,13,13,10,64,9,9,10,13,13,10,9,9,9,14,14,9,9,9,10,13,13,10,9,9,64,206,10,13, +13,10,64,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,10,9,9,0,6,0,8,255,201,2,119, +1,184,0,21,0,53,0,71,0,92,0,114,0,135,0,0,19,54,31,1,53,54,55,22,23,21,6,7,35,38,39,54, +55,51,39,38,55,49,23,54,55,49,54,55,49,54,55,22,23,22,23,22,23,22,7,6,7,6,7,6,7,38,39,38, +39,38,39,38,55,49,23,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,54,23,22,15,1,51,22, +23,6,7,35,38,39,53,54,55,22,23,21,55,1,55,35,38,39,54,55,51,22,23,21,6,7,38,39,53,7,6,39, +38,55,49,37,21,6,7,38,39,53,54,55,51,22,23,6,7,35,23,22,7,6,47,1,15,17,17,63,2,22,22,2, +2,22,96,22,3,3,22,38,63,14,14,119,12,25,26,37,37,49,49,37,37,26,25,13,5,5,13,25,26,37,37,49, +49,37,37,26,25,12,6,6,186,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,15,17,16,15,15,62, +38,22,2,2,22,96,22,2,2,22,22,2,63,253,192,63,38,22,3,3,22,96,22,2,2,22,22,2,63,17,17,14, +14,2,1,2,22,22,2,2,22,96,22,2,2,22,38,62,15,15,16,17,63,1,177,14,14,63,38,22,3,3,22,96, +22,2,2,22,22,2,63,17,17,229,26,31,30,22,22,1,1,22,22,30,31,26,12,12,26,31,30,22,22,1,1,22, +22,30,31,26,12,12,76,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,49,14,14,17,17,63,2,22, +22,2,2,22,96,22,3,3,22,38,63,254,64,63,2,22,22,2,2,22,96,22,2,2,22,38,62,15,15,16,17,29, +38,22,2,2,22,96,22,2,2,22,22,2,63,17,16,15,15,62,0,0,0,2,0,0,255,192,1,192,1,192,0,46, +0,93,0,0,1,54,51,49,50,31,1,22,21,20,15,1,6,35,34,39,38,53,52,63,1,35,6,7,6,7,21,20, +7,6,35,34,39,38,61,1,54,55,54,55,51,39,38,53,52,55,49,3,54,51,49,50,31,1,22,21,20,15,1,6, +35,34,39,38,53,52,63,1,35,34,7,6,29,1,20,7,6,35,34,39,38,61,1,54,55,54,55,51,39,38,53,52, +55,49,1,41,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,211,27,18,18,1,9,9,14,14,9,9,1,36, +37,54,211,42,9,9,96,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,147,14,9,9,9,9,14,14,9,9, +1,27,27,41,147,42,9,9,1,183,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,1,18,18,27,32,14,9, +9,9,9,14,32,54,37,36,1,41,10,13,13,10,255,0,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,9, +9,14,32,14,9,9,9,9,14,32,41,27,27,1,41,10,13,13,10,0,0,4,0,0,255,192,2,0,1,176,0,45, +0,91,0,109,0,127,0,0,19,54,51,49,50,23,22,21,20,15,1,51,22,23,22,23,21,20,7,6,35,34,39,38, +61,1,52,39,38,39,35,23,22,21,20,7,6,35,34,47,1,38,53,52,63,1,19,22,21,49,20,15,1,6,35,34, +39,38,53,52,63,1,35,34,7,6,29,1,20,7,6,35,34,39,38,61,1,54,55,54,55,51,39,38,53,52,55,54, +51,50,31,2,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,1,6,7,49,6,7,38,39,38,39,54, +55,54,55,22,23,22,23,249,10,13,13,10,9,9,26,147,41,27,27,1,9,9,14,14,9,9,9,9,14,147,26,9, +9,10,13,13,10,80,9,9,80,94,9,9,80,10,13,13,10,9,9,26,147,14,9,9,9,9,14,14,9,9,1,27, +27,41,147,26,9,9,10,13,13,10,80,169,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,254,128,1,18, +18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,167,9,9,10,13,13,10,24,1,27,27,41,32,14,9,9,9, +9,14,32,13,9,9,1,26,10,13,13,10,9,9,80,10,13,13,10,80,254,176,10,13,13,10,80,9,9,10,13,13, +10,25,9,9,14,32,14,9,9,9,9,14,32,41,27,27,1,25,10,13,13,10,9,9,80,23,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,1,0,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,0,3,0,0, +255,224,2,64,1,160,0,19,0,55,0,91,0,0,19,34,39,49,38,53,52,55,54,51,33,50,23,22,21,20,7,6, +35,33,23,54,51,49,50,31,1,22,21,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34, +39,38,53,52,63,1,23,55,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1, +7,6,35,34,39,38,53,52,55,49,32,14,9,9,9,9,14,2,0,14,9,9,9,9,14,254,0,73,10,13,13,10, +96,9,9,10,13,13,10,41,9,9,14,14,9,9,41,10,13,13,10,9,9,96,224,96,10,13,13,10,96,9,9,10, +13,13,10,41,9,9,14,14,9,9,41,10,13,13,10,9,9,1,96,9,9,14,14,9,9,9,9,14,14,9,9,41, +9,9,96,10,13,13,10,9,9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,96,96,96,9,9,96,10, +13,13,10,9,9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,0,0,0,0,2,0,0,255,192,2,0, +1,192,0,23,0,55,0,0,1,50,23,49,22,21,17,22,23,6,7,6,7,38,39,38,39,54,55,17,52,55,54,51, +7,21,22,23,22,23,54,55,54,55,53,51,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51, +1,0,14,9,9,30,2,1,18,18,27,27,18,18,1,2,30,9,9,14,96,1,27,27,41,41,27,27,1,112,20,14, +13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,112,1,192,9,9,14,254,247,18,37,27,18,18,1,1,18, +18,27,37,18,1,9,14,9,9,128,224,41,27,27,1,1,27,27,41,224,1,13,14,20,254,224,20,14,13,1,1,13, +14,20,1,32,20,14,13,1,0,2,0,32,255,192,1,32,1,192,0,34,0,56,0,0,19,22,23,6,7,35,21,22, +23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,53,35,38,39,52,55,54,59,1,3,50,55,49,54, +55,38,39,38,39,38,39,6,7,6,7,6,7,22,23,22,23,224,22,2,2,22,8,32,20,19,1,1,18,18,27,128, +27,18,18,1,1,19,20,32,8,22,2,7,6,10,129,64,20,14,13,1,1,11,12,12,11,1,1,11,12,12,11,1, +1,13,14,20,1,192,2,21,22,3,93,16,30,31,38,192,27,18,18,1,1,18,18,27,192,38,31,30,16,93,2,22, +10,7,7,254,128,12,12,24,17,18,18,13,13,1,1,13,13,18,18,17,20,14,13,1,0,4,0,32,255,192,1,32, +1,192,0,8,0,62,0,73,0,84,0,0,19,22,23,21,35,53,54,55,51,7,54,63,1,54,59,1,50,31,1,22, +23,6,7,22,23,6,7,22,23,6,7,22,23,6,7,22,23,6,7,6,7,35,38,39,38,39,54,55,38,39,54,55, +38,39,54,55,38,39,54,55,38,39,49,23,51,54,55,38,39,35,6,7,22,23,21,6,7,22,23,51,54,55,38,39, +35,200,22,2,128,2,22,80,168,1,22,25,16,19,90,19,16,25,21,2,1,18,18,1,1,20,20,1,1,20,20,1, +1,20,20,1,1,13,14,20,160,20,14,13,1,1,20,20,1,1,20,20,1,1,20,20,1,1,18,18,1,80,96,15, +1,1,15,96,15,1,1,15,15,1,1,15,96,15,1,1,15,96,1,192,2,22,40,40,22,2,152,25,12,11,8,8, +11,12,25,22,12,14,23,28,12,15,25,27,14,14,26,26,14,14,26,20,14,13,1,1,13,14,20,26,14,14,26,26, +14,14,27,25,15,12,28,23,14,12,22,104,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,0,0,0, +0,2,0,0,255,224,2,0,1,160,0,43,0,74,0,0,19,48,51,49,48,51,54,55,54,55,50,23,54,55,54,51, +50,23,22,23,54,51,22,23,22,23,50,49,50,49,22,23,22,23,20,7,33,38,53,54,55,54,55,49,7,52,55,49, +54,51,33,50,23,22,21,6,7,6,15,1,6,7,6,43,1,34,39,38,47,1,38,39,38,39,49,64,1,1,6,21, +21,30,21,20,10,19,19,23,23,19,19,10,18,23,30,21,21,6,1,1,27,18,18,1,9,254,18,9,1,18,18,27, +64,8,8,11,1,202,11,8,8,1,29,29,48,1,2,9,9,12,232,12,9,9,1,2,48,29,29,1,1,64,28,18, +17,1,11,19,12,12,12,12,19,11,1,17,18,28,1,18,18,27,18,14,14,18,27,18,18,1,155,11,8,8,8,8, +11,54,41,41,19,13,12,9,8,8,9,12,13,19,41,41,54,0,0,0,0,5,0,0,255,192,2,128,1,192,0,28, +0,50,0,63,0,77,0,88,0,0,1,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,35,54,61,1,54,55, +53,38,39,38,39,35,53,1,54,47,1,38,15,1,6,23,22,63,1,21,22,23,54,55,53,23,22,55,49,37,54,55, +33,22,23,21,6,7,33,38,39,53,1,20,7,49,6,35,33,34,39,38,61,1,33,21,39,6,7,22,23,51,54,55, +38,39,35,1,0,1,13,14,20,1,32,20,14,13,1,1,13,14,20,211,3,30,2,1,13,14,20,112,1,59,10,10, +64,11,11,64,10,10,11,11,37,1,15,15,1,37,11,11,253,197,1,15,1,96,15,1,1,15,254,160,15,1,1,96, +9,9,14,255,0,14,9,9,1,64,208,15,1,1,15,96,15,1,1,15,96,1,144,20,14,13,1,1,13,14,20,254, +96,20,14,13,1,8,8,243,12,33,32,20,14,13,1,80,254,213,11,11,64,10,10,64,11,11,10,10,36,121,15,1, +1,15,121,36,10,10,171,15,1,1,15,32,15,1,1,15,32,254,208,14,9,9,9,9,14,224,224,160,1,15,15,1, +1,15,15,1,0,4,0,0,255,224,2,64,1,160,0,64,0,69,0,74,0,79,0,0,1,50,23,49,22,21,20,7, +6,43,1,21,51,21,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,6,7,6,7,21,20,7, +6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39,38,53,52,55,54,51,33,7,35,21,51,53,35,21, +51,53,43,2,21,51,53,2,32,14,9,9,9,9,14,40,72,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41, +41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72,40,14,9,9,9,9,14,2,0,88,80,80,208,80,80,48, +80,80,1,160,9,9,14,14,9,9,64,128,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41, +64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9,14,14,9,9,64,64,64,64,64,64,64,0,0,6,0,32, +255,192,2,128,1,160,0,53,0,58,0,63,0,68,0,86,0,102,0,0,1,50,23,49,22,21,20,7,6,43,1,21, +51,21,38,39,6,7,6,7,38,35,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,51,53, +35,34,39,38,53,52,55,54,51,33,7,35,21,51,53,35,21,51,53,43,2,21,51,53,1,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,2,64,14,9,9,9, +9,14,40,72,47,65,53,41,41,23,9,9,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72,40,14,9,9, +9,9,14,2,0,88,80,80,208,80,80,48,80,80,1,152,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2, +99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,160,9,9,14,14,9,9,64,72,39,1,1,26,27,44,2, +1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9,14,14,9,9,64,64,64,64,64,64,64,254, +240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10, +0,7,0,32,255,192,2,128,1,160,0,53,0,58,0,63,0,68,0,86,0,95,0,106,0,0,1,50,23,49,22,21, +20,7,6,43,1,21,51,21,38,39,6,7,6,7,38,35,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38, +39,38,39,53,51,53,35,34,39,38,53,52,55,54,51,33,7,35,21,51,53,35,21,51,53,43,2,21,51,53,19,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53, +38,39,6,7,2,64,14,9,9,9,9,14,40,72,47,65,53,41,41,23,9,9,41,27,27,1,9,9,14,32,14,9, +9,1,27,27,41,72,40,14,9,9,9,9,14,2,0,88,80,80,208,80,80,48,80,80,120,2,40,41,61,61,41,40, +2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,160,9,9,14, +14,9,9,64,72,39,1,1,26,27,44,2,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9, +14,14,9,9,64,64,64,64,64,64,64,254,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22, +22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,0,0,6,0,32,255,192,2,128,1,160,0,53, +0,58,0,63,0,68,0,86,0,111,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,21,38,39,6,7,6,7, +38,35,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39,38,53,52,55,54, +51,33,7,35,21,51,53,35,21,51,53,43,2,21,51,53,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,2,64,14,9,9, +9,9,14,40,72,47,65,53,41,41,23,9,9,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72,40,14,9, +9,9,9,14,2,0,88,80,80,208,80,80,48,80,80,120,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2, +203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,160,9,9,14,14,9, +9,64,72,39,1,1,26,27,44,2,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9,14,14, +9,9,64,64,64,64,64,64,64,254,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10, +36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,6,0,32,255,192,2,128,1,160,0,54, +0,59,0,64,0,69,0,100,0,113,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,21,35,6,7, +6,7,21,6,7,38,39,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39, +38,53,21,5,51,53,35,21,35,53,35,21,51,35,51,53,35,21,5,22,23,49,22,23,21,50,23,22,29,1,20,7, +6,43,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,32,9, +9,14,2,0,14,9,9,9,9,14,40,8,48,31,32,1,15,9,28,44,41,27,27,1,9,9,14,32,14,9,9,1, +27,27,41,72,40,14,9,9,1,120,80,80,48,80,80,208,80,80,1,120,34,23,22,1,14,9,9,9,9,14,160,14, +9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,128,14,9,9,9,9,14,14,9,9,64,1,32,31,48, +25,8,16,32,2,1,27,28,41,64,14,9,9,9,9,14,64,41,28,27,1,128,64,9,9,14,1,96,64,64,64,64, +64,64,32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48, +48,14,9,9,0,2,0,0,255,224,2,64,1,128,0,50,0,104,0,0,19,52,55,49,54,51,33,50,23,22,29,1, +20,7,6,35,6,7,6,7,21,38,7,6,7,61,1,38,39,38,39,6,7,6,7,21,7,38,39,38,7,53,38,39, +38,39,34,39,38,61,1,1,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6, +7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,49,0,9,9, +14,2,0,14,9,9,8,8,12,29,19,19,1,20,17,29,30,1,27,27,41,41,27,27,1,1,30,28,17,20,1,19, +19,29,12,8,8,1,128,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9, +31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,96,14,9,9,9, +9,14,36,12,8,8,1,19,19,29,125,1,12,20,1,1,128,41,27,27,1,1,27,27,41,128,1,1,20,12,1,125, +29,19,19,1,8,8,12,36,254,192,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4, +4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,2,0,0, +255,192,1,192,1,192,0,24,0,57,0,0,19,35,53,54,55,54,55,51,22,23,22,23,21,35,53,38,39,38,39,35, +6,7,6,7,21,7,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,7,6,7,6,43,1,34,39,38,47,1, +35,34,39,38,53,49,96,48,2,43,42,65,48,65,42,43,2,48,1,29,30,44,48,44,30,29,1,96,9,9,14,1, +128,14,9,9,9,9,14,5,22,3,13,13,19,234,19,13,13,3,22,5,14,9,9,1,32,8,65,42,43,2,2,43, +42,65,8,8,44,30,29,1,1,29,30,44,8,64,14,9,9,9,9,14,14,9,9,213,19,12,12,12,12,19,213,9, +9,14,0,0,0,2,0,0,255,197,2,59,1,191,0,63,0,127,0,0,19,51,55,54,23,22,15,1,6,7,35,21, +23,22,31,1,22,7,6,47,2,6,7,38,39,15,1,6,39,38,63,1,54,63,1,53,35,38,47,1,38,55,54,31, +1,51,54,55,39,38,55,54,31,1,55,54,23,22,15,1,22,23,49,5,23,55,54,23,22,15,1,6,47,1,7,23, +22,15,1,6,39,38,63,1,39,6,39,38,53,39,7,6,39,38,63,1,54,31,1,55,39,38,63,1,54,23,22,15, +1,23,54,63,1,54,51,22,21,7,55,54,23,22,15,1,22,7,49,187,17,5,6,22,21,2,8,5,20,32,39,15, +3,8,1,22,22,5,5,19,18,39,37,18,19,5,5,22,22,1,8,3,15,37,32,17,6,8,2,21,22,7,4,17, +7,16,34,7,19,21,11,26,26,11,21,18,6,33,15,7,1,59,14,14,16,17,16,13,27,13,17,27,12,28,11,5, +22,10,21,19,6,15,14,32,33,32,18,25,15,19,16,12,35,10,16,37,12,28,16,5,13,9,22,19,4,8,16,15, +19,8,4,22,21,6,52,19,14,11,16,67,9,2,1,57,20,21,2,7,22,40,17,1,24,10,4,16,56,22,5,1, +22,40,4,31,1,1,31,4,40,22,1,5,22,56,16,4,10,24,1,17,40,22,7,2,21,20,16,12,73,21,11,7, +19,58,58,19,7,11,21,73,12,16,188,8,16,15,13,16,17,32,13,8,16,20,27,11,15,53,19,6,10,21,38,13, +18,17,21,36,5,31,16,12,15,18,45,11,2,12,20,16,11,18,39,20,5,9,22,20,8,11,3,79,22,4,22,63, +36,12,17,19,15,47,17,19,0,9,0,0,255,192,2,128,1,192,0,36,0,49,0,62,0,75,0,88,0,101,0,114, +0,132,0,154,0,0,19,54,55,49,54,55,33,22,23,22,23,21,6,7,6,21,22,23,6,7,35,53,38,39,38,39, +6,7,6,7,21,35,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38, +39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,39,22,23,51,54,55,53,38,39,35,6,7,21,55, +6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,5,6,7,49,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,39,23,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1,38,7,6,23, +49,0,1,13,14,20,1,32,20,14,13,1,30,17,17,2,51,14,23,96,1,13,14,20,20,14,13,1,96,20,14,13, +1,80,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1, +15,32,208,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15, +32,15,1,1,128,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,147,28,89,15,1,1,15,89,28,10,10, +11,11,56,10,10,56,11,11,10,10,1,144,20,14,13,1,1,13,14,20,184,25,35,35,41,76,50,17,1,80,20,14, +13,1,1,13,14,20,80,1,13,14,20,1,160,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1, +1,15,32,48,1,15,32,15,1,1,15,32,15,1,80,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1, +15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,224,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61, +45,29,1,15,15,1,29,11,11,10,10,56,11,11,56,10,10,11,11,0,0,9,0,0,255,192,2,128,1,192,0,36, +0,49,0,62,0,75,0,88,0,101,0,114,0,132,0,148,0,0,1,22,23,49,22,23,21,6,7,6,21,22,23,6, +7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,6, +7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54, +55,53,38,39,35,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22, +63,1,54,39,38,7,49,1,80,20,14,13,1,30,17,17,2,51,14,23,96,1,13,14,20,20,14,13,1,96,20,14, +13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80, +1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1, +112,15,1,1,15,32,15,1,1,15,32,1,112,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29, +11,11,10,10,40,11,11,72,10,10,11,11,1,192,1,13,14,20,184,25,35,35,41,76,50,17,1,80,20,14,13,1, +1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15, +1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1, +15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,254,240,61,41,40,2,2,40,41,61,61,41,40,2, +2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,10,0,0,255,192,2,128,1,192,0,36, +0,49,0,62,0,75,0,88,0,101,0,114,0,132,0,141,0,152,0,0,1,22,23,49,22,23,21,6,7,6,21,22, +23,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53, +38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21, +39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7, +22,23,39,21,22,23,54,55,53,38,39,6,7,1,80,20,14,13,1,30,17,17,2,51,14,23,96,1,13,14,20,20, +14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32, +15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15, +1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,2,40,41,61,61,41,40,2,2,40,41,61,61,41, +40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,192,1,13,14,20,184,25,35,35,41,76, +50,17,1,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1, +1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1, +15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,254,240,61,41,40,2, +2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15, +0,9,0,0,255,192,2,128,1,192,0,36,0,49,0,62,0,75,0,88,0,101,0,114,0,132,0,157,0,0,1,22, +23,49,22,23,21,6,7,6,21,22,23,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55, +54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,80,20,14, +13,1,30,17,17,2,51,14,23,96,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1, +15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176, +15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32, +80,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10, +11,11,37,37,11,11,10,10,36,36,1,192,1,13,14,20,184,25,35,35,41,76,50,17,1,80,20,14,13,1,1,13, +14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1, +15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32, +15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,254,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40, +41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,8,0,0, +255,192,2,128,1,192,0,32,0,45,0,58,0,71,0,84,0,97,0,110,0,130,0,0,1,22,23,49,22,23,17,6, +7,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53, +38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21, +39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,55,50,23,49,22,21,51,22,23,21,6,7,35,17,35,17,52,55,54,51,1,80,20,14,13, +1,1,13,14,20,96,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1, +1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15, +32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,176,14,9,9, +144,15,1,1,15,144,64,9,9,14,1,192,1,13,14,20,254,96,20,14,13,1,80,20,14,13,1,1,13,14,20,80, +1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15, +1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1, +15,32,48,1,15,32,15,1,1,15,32,15,1,96,9,9,14,1,15,128,15,1,254,192,1,224,14,9,9,0,0,0, +0,9,0,0,255,192,2,64,1,192,0,36,0,49,0,62,0,75,0,88,0,101,0,114,0,145,0,158,0,0,1,22, +23,49,22,23,21,6,7,21,6,7,21,20,23,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55, +54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,49,22,23,21,50,23,22,29,1,20,7,6, +43,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,80,20, +14,13,1,31,1,30,2,9,89,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15, +32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15, +1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,192, +34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,192,1,13, +14,20,146,31,47,25,18,37,128,18,14,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254, +240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15, +32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32, +15,1,96,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48, +48,14,9,9,0,8,0,0,255,192,1,128,1,192,0,10,0,43,0,56,0,69,0,82,0,105,0,125,0,148,0,0, +1,21,6,7,38,39,53,54,55,22,23,55,22,23,49,22,23,17,6,7,6,7,35,53,38,39,38,39,6,7,6,7, +21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51, +54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,6, +7,21,35,53,51,54,55,38,39,35,23,22,23,49,22,23,54,55,54,55,53,38,39,38,39,6,7,6,7,21,39,38, +7,6,7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6,7,21,39,1,64,1,15,15,1,1,15,15,1,16, +20,14,13,1,1,13,14,20,96,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15, +32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,88,15, +1,2,22,32,22,2,1,15,15,1,16,32,15,1,1,15,48,88,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,195,7,11,10,1,1,15,15,1,35,7,11,10,1,1,15,15,1,35,1,80,32,15,1,1,15,32,15,1,1, +15,112,1,13,14,20,254,96,20,14,13,1,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1, +254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1, +15,32,208,1,15,88,22,2,2,22,24,15,1,1,15,16,64,1,15,15,1,80,20,14,13,1,1,13,14,20,32,20, +14,13,1,1,13,14,20,32,73,9,3,4,11,96,15,1,1,15,43,52,9,3,4,11,96,15,1,1,15,43,52,0, +0,8,0,0,255,192,2,64,1,192,0,43,0,56,0,69,0,82,0,95,0,108,0,131,0,138,0,0,19,54,55,49, +54,55,33,22,23,22,23,21,7,35,6,7,21,20,21,48,21,22,23,22,23,6,43,1,53,38,39,38,39,6,7,6, +7,21,35,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6, +7,21,39,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51, +54,55,53,38,39,35,6,7,21,23,54,31,1,22,23,22,7,6,7,6,7,6,39,38,39,38,39,38,55,52,63,1, +23,21,54,55,54,55,39,0,1,13,14,20,1,32,20,14,13,1,42,70,15,1,1,21,22,55,9,10,96,1,13,14, +20,20,14,13,1,96,20,14,13,1,80,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1, +96,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15, +1,167,9,9,120,14,1,1,12,11,29,30,54,9,9,54,30,29,11,12,1,15,120,9,50,22,21,2,95,1,144,20, +14,13,1,1,13,14,20,159,17,1,15,64,1,1,1,45,56,56,44,4,80,20,14,13,1,1,13,14,20,80,1,13, +14,20,1,160,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32, +15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,82,4,4,48,6, +16,33,41,41,38,38,23,4,4,23,38,38,41,41,33,16,6,48,48,188,27,42,42,40,37,0,0,0,0,6,0,0, +255,192,1,128,1,192,0,32,0,45,0,58,0,71,0,94,0,119,0,0,1,22,23,49,22,23,17,6,7,6,7,35, +53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39,35,6, +7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,38,7,6, +7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6,7,21,39,7,38,39,6,7,21,22,23,22,23,54,55,54, +55,53,38,39,6,7,21,6,7,38,39,53,1,80,20,14,13,1,1,13,14,20,96,1,13,14,20,20,14,13,1,96, +20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15, +32,80,1,15,32,15,1,1,15,32,15,1,19,7,11,10,1,1,15,15,1,35,7,11,10,1,1,15,15,1,35,125, +1,15,15,1,1,13,14,20,20,14,13,1,1,15,15,1,1,15,15,1,1,192,1,13,14,20,254,96,20,14,13,1, +80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32, +48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,201,9,3,4,11,96,15,1,1,15, +43,52,9,3,4,11,96,15,1,1,15,43,52,9,15,1,1,15,64,20,14,13,1,1,13,14,20,64,15,1,1,15, +64,15,1,1,15,64,0,0,0,9,0,0,255,192,2,128,1,192,0,34,0,47,0,60,0,73,0,86,0,99,0,112, +0,130,0,151,0,0,1,22,23,49,22,23,17,6,7,6,21,20,23,35,53,38,39,38,39,6,7,6,7,21,35,38, +39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53, +38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,5,6,7,49,6,7,38,39,38, +39,54,55,54,55,22,23,22,23,7,54,55,49,54,55,51,22,23,22,23,20,7,6,43,1,34,39,38,53,49,1,80, +20,14,13,1,29,17,18,10,90,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15, +32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15, +1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,1, +48,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,224,1,26,27,39,102,39,27,26,1,10,10,15,218,15, +10,10,1,192,1,13,14,20,254,192,16,29,28,36,19,16,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160, +20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15, +32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32, +15,1,1,15,32,15,1,176,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,205,39,27,26,1,1,26,27, +39,15,10,10,10,10,15,0,0,16,0,0,255,192,2,128,1,192,0,32,0,45,0,58,0,71,0,84,0,97,0,110, +0,123,0,136,0,149,0,162,0,176,0,189,0,200,0,211,0,222,0,0,19,54,55,49,54,55,33,22,23,22,23,17, +6,7,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38, +39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,39,22,23,51, +54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35, +6,7,21,5,21,6,7,6,7,35,53,54,55,54,55,51,7,35,53,54,55,54,55,51,21,6,7,6,7,21,35,53, +54,55,54,55,51,21,6,7,6,7,39,21,35,38,39,38,39,53,51,22,23,22,23,39,38,39,49,38,39,53,51,22, +23,22,23,21,35,55,21,35,38,39,38,39,53,51,22,23,22,23,55,22,23,21,6,7,38,39,53,54,55,23,6,7, +38,39,53,54,55,22,23,21,39,22,23,21,6,7,38,39,53,54,55,0,1,13,14,20,1,32,20,14,13,1,1,13, +14,20,96,1,13,14,20,20,14,13,1,96,20,14,13,1,80,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15, +1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,208,1,15,32,15,1,1,15,32,15,1,112,15,1,1, +15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,1,128,1,22,23,34,16,1,22,23,34,16,80,16, +1,22,23,34,16,1,22,23,34,16,1,22,23,34,16,1,22,23,34,48,16,34,23,22,1,16,34,23,22,1,16,34, +23,22,1,16,34,23,22,1,16,16,16,34,23,22,1,16,34,23,22,1,16,22,2,2,22,22,2,2,22,96,2,22, +22,2,2,22,22,2,168,22,2,2,22,22,2,2,22,1,144,20,14,13,1,1,13,14,20,254,96,20,14,13,1,80, +20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32, +15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,80,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15, +1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,16,34,23,22,1,16,34,23,22,1,208,16,34,23, +22,1,16,34,23,22,1,112,16,34,23,22,1,16,34,23,22,1,16,16,1,22,23,34,16,1,22,23,34,96,1,22, +23,34,16,1,22,23,34,16,128,16,1,22,23,34,16,1,22,23,34,240,2,22,104,22,2,2,22,104,22,2,96,22, +2,2,22,32,22,2,2,22,32,56,2,22,32,22,2,2,22,32,22,2,0,1,0,0,255,192,2,0,1,192,0,48, +0,0,19,55,54,55,22,31,1,55,54,23,22,15,1,23,22,23,6,15,1,23,22,7,6,47,1,7,6,7,38,47, +1,7,6,39,38,63,1,39,38,39,54,63,1,39,38,55,54,31,1,201,32,6,17,17,6,34,71,14,10,11,4,26, +106,16,1,1,16,103,53,8,13,12,15,101,33,6,17,17,6,33,101,15,13,11,7,53,103,16,1,1,16,99,112,9, +12,14,17,163,1,76,99,16,1,1,16,106,26,4,10,11,14,71,34,6,17,17,6,33,101,15,12,13,8,53,103,16, +1,1,16,103,53,8,13,12,15,101,33,6,17,17,6,32,163,17,14,12,9,112,0,0,0,7,0,0,255,192,1,191, +1,192,0,10,0,50,0,59,0,68,0,77,0,89,0,100,0,0,19,6,7,38,39,53,54,55,22,23,21,7,51,50, +23,22,31,1,22,23,21,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39,38,61,1,54,63,1, +54,55,54,51,49,21,6,15,1,51,39,38,39,35,7,54,55,38,39,6,7,22,23,37,6,7,22,23,54,55,38,39, +1,54,31,1,22,7,6,47,1,38,55,49,33,54,23,22,15,1,6,39,38,63,1,248,2,22,22,2,2,22,22,2, +94,140,25,21,20,10,28,32,2,9,9,14,16,14,9,9,255,0,9,9,14,16,14,9,9,2,32,28,9,21,20,26, +11,4,19,208,19,5,10,140,58,22,2,2,22,22,2,2,22,1,0,22,2,2,22,22,2,2,22,254,167,17,17,48, +14,14,17,17,48,14,14,1,144,17,16,15,15,48,16,17,14,14,48,1,88,22,2,2,22,80,22,2,2,22,80,56, +15,14,24,79,15,37,136,14,9,9,9,9,14,32,32,14,9,9,9,9,14,136,37,15,79,24,14,15,64,1,10,53, +53,10,1,168,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,1,49,14,14,48,17,16,15,15,47,17, +17,14,14,17,17,47,15,15,16,17,48,0,0,5,0,0,255,192,2,0,1,192,0,8,0,17,0,26,0,52,0,91, +0,0,55,54,59,1,50,31,1,35,55,7,54,55,22,23,6,7,38,39,51,6,7,38,39,54,55,22,23,55,21,6, +7,6,7,35,33,35,38,39,38,39,53,54,55,54,55,54,55,22,23,22,23,22,23,3,50,55,49,54,61,1,38,47, +1,38,39,38,43,1,34,7,6,15,1,6,7,21,20,23,22,51,50,55,54,61,1,51,21,20,23,22,51,49,191,2, +5,116,5,2,13,157,14,47,2,22,22,2,2,22,22,2,224,2,22,22,2,2,22,22,2,144,1,18,18,27,64,255, +0,64,27,18,18,1,1,34,34,58,57,72,72,57,58,34,34,1,128,14,9,9,1,27,21,6,14,15,18,116,18,15, +14,6,21,27,1,9,9,14,14,9,9,192,9,9,14,170,6,6,42,42,106,22,2,2,22,22,2,2,22,22,2,2, +22,22,2,2,22,128,192,27,18,18,1,1,18,18,27,192,72,57,58,34,34,1,1,34,34,58,57,72,255,0,9,9, +14,104,33,16,64,18,10,11,11,10,18,64,16,33,104,14,9,9,9,9,14,32,32,14,9,9,0,0,0,3,0,0, +255,192,2,0,1,192,0,18,0,67,0,120,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39, +49,19,34,39,49,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,51,22,31,1,22,7,6,7,6,39,38,47, +1,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,49,1,21,22,23,21,55,53,54,55,51,22,23,21,6, +15,1,21,51,22,23,21,6,7,35,23,22,7,35,38,39,53,35,34,39,38,61,1,52,55,54,51,53,54,55,53,38, +39,54,55,51,22,23,49,79,1,18,19,26,28,18,17,1,1,17,18,28,26,19,18,1,25,14,9,9,13,7,13,12, +12,11,3,3,7,52,29,52,12,52,29,52,7,3,3,11,12,12,13,7,13,9,9,14,14,9,9,16,9,9,14,1, +72,15,1,16,1,15,16,15,1,1,10,53,48,15,1,1,15,44,23,2,17,60,15,1,16,14,9,9,9,9,14,1, +15,15,1,1,15,32,15,1,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,64,9,9,14,179, +20,11,3,3,7,7,13,13,12,81,44,1,1,44,81,12,13,13,7,7,3,3,11,20,179,14,9,9,9,9,14,128, +128,14,9,9,1,240,116,9,19,109,5,56,15,1,1,15,85,11,4,17,27,1,15,16,15,1,92,18,2,1,15,96, +9,9,14,144,14,9,9,32,19,9,100,1,15,15,1,1,15,0,0,0,0,4,0,0,255,192,2,111,1,192,0,17, +0,76,0,95,0,146,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,3,53,35,34,39,38, +63,1,7,6,7,6,39,38,39,38,63,1,54,55,22,31,1,22,7,6,7,6,39,38,47,1,23,22,7,6,43,1, +21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,53,49,1,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,49,19,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54, +59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,61,1,35,95,1,18,19,26, +28,18,17,1,1,17,18,28,26,19,18,1,7,18,8,5,4,2,31,28,9,13,12,11,11,2,1,8,58,37,58,58, +37,59,7,1,2,11,11,12,13,8,29,30,3,4,5,8,18,9,9,14,14,9,9,16,9,9,14,14,9,9,1,72, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,56,9,9,14,14,9,9,13,7,13,13,12,11,2,3,7, +52,13,21,22,25,12,25,22,21,13,52,7,3,3,11,12,12,13,7,13,9,9,14,14,9,9,16,1,128,27,18,18, +1,1,18,18,27,27,18,18,1,1,18,18,27,254,96,80,7,6,8,93,37,11,2,1,7,9,13,12,11,79,44,2, +2,44,79,11,12,13,9,7,1,2,11,37,93,8,6,7,80,14,9,9,9,9,14,80,80,14,9,9,9,9,14,1, +160,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,192,96,14,9,9,9,9,14,179,20,11,3,3,7, +7,13,13,12,81,21,12,13,13,12,21,81,12,13,13,7,7,3,3,11,20,179,14,9,9,9,9,14,96,0,0,0, +0,2,0,0,255,192,1,224,1,192,0,39,0,50,0,0,37,22,23,6,7,6,7,38,39,38,39,52,55,39,6,35, +38,39,38,39,54,55,54,55,22,23,55,54,55,54,55,22,23,22,23,6,7,6,15,1,39,23,54,63,1,38,39,7, +22,7,49,1,125,33,2,1,22,23,34,34,23,22,1,4,146,16,18,34,23,22,1,1,22,23,34,34,22,184,2,22, +23,33,34,23,22,1,1,17,17,27,37,225,146,7,9,37,6,5,185,1,4,82,23,43,34,23,22,1,1,22,23,34, +13,11,128,8,1,22,23,34,34,23,22,1,1,22,73,34,21,22,1,1,22,23,34,29,21,21,7,208,134,128,4,2, +208,4,5,74,11,10,0,0,0,4,0,0,255,192,1,128,1,192,0,29,0,47,0,79,0,97,0,0,1,51,22,23, +22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,54,55,54,55,22,23,22,23,7,50,55,49,54,53, +52,39,38,35,34,7,6,21,20,23,22,51,7,6,23,22,55,53,54,59,1,22,23,20,15,1,6,29,1,22,23,54, +63,1,54,55,38,39,38,39,35,6,15,1,23,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,27, +37,27,18,18,1,1,18,18,27,255,0,27,18,18,1,1,18,18,27,38,10,24,24,32,32,24,24,11,91,14,9,9, +9,9,14,14,9,9,9,9,14,87,5,19,23,9,2,6,58,14,1,8,44,12,2,22,22,1,33,31,1,1,17,18, +27,58,39,14,1,87,14,9,9,9,9,14,14,9,9,9,9,14,1,128,1,18,18,27,254,192,27,18,18,1,1,18, +18,27,1,64,27,18,18,1,28,18,17,1,1,17,18,28,64,9,9,14,14,9,9,9,9,14,14,9,9,103,21,9, +6,20,2,5,1,14,9,4,26,7,14,13,22,2,2,22,18,19,36,27,17,18,1,2,35,2,153,9,9,14,14,9, +9,9,9,14,14,9,9,0,0,6,0,0,255,192,2,63,1,192,0,33,0,44,0,56,0,67,0,79,0,133,0,0, +19,50,23,49,22,23,54,55,22,23,22,23,51,22,23,22,23,6,7,6,7,33,38,39,38,39,54,55,54,55,54,55, +54,55,3,6,39,38,63,1,54,23,22,15,1,37,22,15,1,6,39,38,63,1,54,23,49,5,6,39,38,63,1,54, +23,22,15,1,55,22,15,1,6,39,38,63,1,54,23,49,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39, +38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54, +55,54,23,22,23,49,223,30,23,23,12,23,34,30,21,21,6,2,27,18,18,1,1,18,18,27,254,191,27,18,18,1, +1,18,18,27,1,27,27,41,130,13,20,18,9,48,13,20,18,9,48,1,119,18,9,48,13,20,18,9,48,13,20,254, +249,13,20,18,9,48,13,20,18,9,48,151,18,9,48,13,20,18,9,48,13,20,28,42,35,1,20,19,22,28,13,7, +7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22, +19,21,35,42,43,35,18,19,34,43,1,192,16,15,25,23,1,1,17,18,28,1,18,18,27,27,18,18,1,1,18,18, +27,27,18,18,1,41,27,27,1,254,140,18,9,13,20,80,18,9,13,20,80,113,13,20,80,18,9,13,20,80,18,9, +113,18,9,13,20,80,18,9,13,20,80,113,13,20,80,18,9,13,20,80,18,9,189,2,24,13,15,18,7,3,11,11, +13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15, +13,24,2,1,25,12,12,25,1,0,0,0,0,6,0,0,255,224,2,128,1,160,0,43,0,48,0,70,0,81,0,92, +0,110,0,0,1,22,23,49,22,23,17,6,7,6,7,35,23,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52, +55,54,59,1,55,35,38,39,38,39,17,54,55,54,55,33,5,21,33,53,33,37,22,23,49,22,23,17,6,7,6,7, +35,38,39,38,39,17,54,55,54,55,51,7,6,7,22,23,51,54,55,38,39,35,21,51,54,55,38,39,35,6,7,22, +31,1,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,144,20,14,13,1,1,13,14,20,133,10,75, +14,9,9,9,9,14,255,0,14,9,9,9,9,14,75,10,133,20,14,13,1,1,13,14,20,1,96,254,176,1,64,254, +192,2,16,20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,64,48,15,1,1,15,32,15,1,1,15,32, +32,15,1,1,15,32,15,1,1,15,16,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,13,14,20,255,0,20, +14,13,1,32,9,9,14,14,9,9,9,9,14,14,9,9,32,1,13,14,20,1,0,20,14,13,1,64,224,224,64,1, +13,14,20,254,160,20,14,13,1,1,13,14,20,1,96,20,14,13,1,64,1,15,15,1,1,15,15,1,96,1,15,15, +1,1,15,15,1,208,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,6,0,0,255,224,1,192,1,160,0,21, +0,40,0,62,0,84,0,106,0,128,0,0,19,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38, +61,1,7,54,31,1,22,7,6,15,1,6,39,38,47,1,38,55,54,63,1,23,50,23,49,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,59,1,23,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59, +1,5,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,39,50,23,49,22,29,1,20,7, +6,43,1,34,39,38,61,1,52,55,54,59,1,192,9,9,14,64,14,9,9,9,9,14,64,14,9,9,54,26,18,32, +6,3,3,12,55,12,13,12,8,31,7,4,3,12,55,214,14,9,9,9,9,14,64,14,9,9,9,9,14,64,64,14, +9,9,9,9,14,64,14,9,9,9,9,14,64,255,0,9,9,14,64,14,9,9,9,9,14,64,14,9,9,64,14,9, +9,9,9,14,64,14,9,9,9,9,14,64,1,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64,110,11,24,55, +12,12,12,8,32,6,3,3,12,55,12,13,12,8,32,18,9,9,14,64,14,9,9,9,9,14,64,14,9,9,160,9, +9,14,64,14,9,9,9,9,14,64,14,9,9,32,14,9,9,9,9,14,64,14,9,9,9,9,14,64,32,9,9,14, +64,14,9,9,9,9,14,64,14,9,9,0,0,4,0,0,255,224,2,128,1,128,0,23,0,40,0,58,0,74,0,0, +1,22,23,49,22,23,6,15,1,6,7,6,15,1,6,47,1,38,39,54,55,54,55,33,3,55,6,21,22,23,33,38, +39,38,39,53,23,22,51,50,55,37,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7, +6,31,1,22,63,1,54,39,38,7,49,1,208,20,14,13,1,1,18,14,51,38,39,18,58,19,19,218,18,1,1,13, +14,20,1,160,170,27,1,1,39,254,216,27,18,18,1,218,17,21,21,17,1,90,2,40,41,61,61,41,40,2,2,40, +41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,128,1,13,14,20,24,14,11,5,30, +29,46,43,12,12,164,14,24,20,14,13,1,254,237,20,9,8,65,47,1,18,18,27,208,163,13,13,3,61,41,40,2, +2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,3,0,0, +255,193,2,64,1,192,0,48,0,68,0,80,0,0,1,54,23,22,7,3,22,23,55,54,23,22,15,1,35,38,39,38, +39,6,7,6,7,35,39,38,55,54,31,1,54,55,39,38,55,54,31,1,54,51,50,63,1,54,55,22,31,1,27,1, +22,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,55,33,1,22,23,21,6,7,38,39,53,54,55,49,1, +244,12,19,18,7,137,3,3,97,18,13,11,14,86,71,11,24,24,32,32,24,24,10,80,76,15,7,10,19,97,5,5, +63,8,14,15,16,102,1,1,1,2,13,4,20,20,4,13,175,44,14,9,9,9,9,14,254,0,14,9,9,9,9,14, +2,0,255,0,22,2,2,22,22,2,2,22,1,181,16,8,11,20,254,207,3,4,55,8,15,16,14,87,28,18,17,1, +1,17,18,28,51,13,17,17,4,31,6,6,104,17,13,12,12,88,1,1,142,21,2,2,21,142,1,25,254,76,1,9, +9,13,14,9,9,9,9,14,13,9,9,1,1,191,2,21,48,23,1,1,23,48,21,2,0,4,0,0,255,192,2,63, +1,192,0,23,0,62,0,67,0,121,0,0,1,50,23,49,22,21,51,22,23,22,15,1,33,39,38,55,54,55,51,54, +55,54,59,1,5,33,50,23,22,29,1,20,15,1,34,35,6,7,6,7,35,38,39,38,35,34,7,6,7,35,38,39, +38,47,1,38,61,1,52,55,54,51,35,23,33,53,33,21,5,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39, +38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54, +55,54,23,22,23,49,1,96,14,9,9,75,16,6,6,10,21,254,175,20,10,6,6,16,74,1,9,9,13,129,254,255, +1,129,14,9,9,12,51,1,1,3,1,24,27,16,27,24,17,20,20,17,23,27,17,27,24,3,3,51,12,9,9,14, +1,32,1,65,254,191,1,1,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7, +9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,192,9,9,14, +1,13,13,13,24,24,13,13,13,1,14,9,9,128,9,9,14,124,20,17,72,2,1,17,3,4,16,12,12,16,4,3, +17,2,1,72,17,20,124,14,9,9,160,96,96,160,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1, +3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1, +0,5,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,60,0,71,0,0,19,54,55,49,54,55,51,21,20,23, +22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,0,1, +18,18,27,160,9,9,14,128,56,36,35,1,20,20,34,5,5,255,0,27,18,18,1,1,0,128,128,32,2,40,41,61, +61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,128, +27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24,1,1,18,18,27,1,128,64,128,128,240,61,41,40,2, +2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15, +0,4,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,62,0,0,19,54,55,49,54,55,51,21,20,23,22,59, +1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,5,6,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,23,39,35,6,7,22,23,51,54,55,38,39,0,1,18,18,27,160,9,9,14,128,56,36,35, +1,20,20,34,5,5,255,0,27,18,18,1,1,0,128,128,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41, +40,2,80,128,15,1,1,15,128,15,1,1,15,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24, +1,1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,2,14,15,1, +1,15,14,2,0,5,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,60,0,95,0,0,19,54,55,49,54,55, +51,21,20,23,22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,22,23,54,55,53,54,55,51, +22,23,20,15,1,6,29,1,22,23,54,55,53,55,54,55,52,39,38,43,1,34,7,6,29,1,0,1,18,18,27,160, +9,9,14,128,56,36,35,1,20,20,34,5,5,255,0,27,18,18,1,1,0,128,128,32,2,40,41,61,61,41,40,2, +2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,64,1,15,15,1,1,9,40,13,1,7,32,9,1,15, +15,1,24,23,1,13,13,20,40,18,12,12,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24,1, +1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2, +22,22,2,136,15,1,1,15,6,9,1,1,13,8,4,17,5,9,15,15,1,1,15,5,12,15,26,20,13,13,12,12, +18,6,0,0,0,4,0,0,255,192,2,64,1,192,0,28,0,32,0,55,0,62,0,0,19,54,55,49,54,55,51,21, +20,23,22,59,1,21,7,6,7,6,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54,31,1,22,23,22, +7,6,7,6,7,6,39,38,39,38,39,38,55,52,63,1,23,21,54,55,54,55,39,0,1,18,18,27,160,9,9,14, +128,93,33,2,1,20,20,55,13,17,255,0,27,18,18,1,1,0,128,128,167,9,9,120,14,1,1,12,11,29,30,54, +9,9,54,30,29,11,12,1,15,120,9,50,22,21,2,95,1,128,27,18,18,1,128,14,9,9,47,37,15,37,45,58, +58,47,8,1,18,18,27,1,128,64,128,128,98,4,4,48,6,16,33,41,41,38,38,23,4,4,23,38,38,41,41,33, +16,6,48,48,188,27,42,42,40,37,0,0,0,6,0,0,255,192,2,128,1,192,0,25,0,49,0,101,0,119,0,137, +0,155,0,0,1,54,55,54,23,22,23,22,23,6,7,6,7,38,39,38,39,54,55,54,55,54,23,22,23,49,23,38, +39,7,38,39,38,39,38,39,6,7,6,21,22,23,22,51,50,55,54,55,54,39,5,52,55,49,54,55,51,22,23,22, +21,20,7,6,35,21,33,53,34,39,38,53,52,55,54,55,51,22,23,22,29,1,50,23,22,29,1,20,7,6,35,33, +34,39,38,61,1,52,55,54,51,53,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,55,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51, +1,93,12,15,10,10,37,23,23,1,2,45,45,68,69,45,44,2,1,31,31,51,9,11,29,26,41,3,4,36,1,14, +14,15,15,3,22,12,11,1,23,22,34,28,22,23,5,5,13,254,154,9,9,14,32,14,9,9,9,9,14,1,192,14, +9,9,9,9,14,32,14,9,9,14,9,9,9,9,14,253,192,14,9,9,9,9,14,1,32,14,9,9,9,9,14,14, +9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,255,0,14,9,9,9,9,14,14,9,9,9,9,14, +1,131,15,14,8,8,36,45,45,32,68,46,46,2,2,46,46,68,41,49,50,46,8,8,26,31,115,6,6,42,1,18, +18,19,19,4,27,19,19,17,37,20,21,15,17,26,27,26,111,13,9,9,1,1,9,9,13,14,9,9,65,65,9,9, +14,13,9,9,1,1,9,9,13,97,9,9,14,64,14,9,9,9,9,14,64,14,9,9,97,193,9,9,14,14,9,9, +9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9, +0,2,0,0,255,224,2,64,1,160,0,51,0,69,0,0,1,22,23,49,22,23,22,23,22,23,22,7,6,7,6,7, +6,7,6,15,1,6,39,38,63,1,38,39,38,39,7,6,39,38,63,1,39,38,55,54,31,1,54,55,54,55,39,38, +55,54,31,2,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,97,41,35,34,27,29,21,21,11,8, +8,11,21,21,29,27,34,35,41,78,17,19,18,4,9,29,24,23,17,93,21,18,15,10,46,46,10,15,18,21,93,17, +23,24,29,9,4,18,19,17,78,63,14,9,9,9,9,14,14,9,9,9,9,14,1,95,3,15,15,20,23,24,24,19, +16,16,19,24,24,23,20,15,15,3,59,12,11,12,21,49,14,17,18,19,55,10,15,18,21,80,80,21,18,15,10,55, +19,18,17,14,49,21,12,11,12,59,127,9,9,14,14,9,9,9,9,14,14,9,9,0,0,4,0,0,255,192,2,128, +1,192,0,28,0,33,0,69,0,80,0,0,55,6,35,38,39,38,39,17,34,39,38,53,52,55,54,59,1,50,23,22, +21,20,7,6,35,21,7,6,21,3,51,53,35,21,37,50,23,49,22,21,20,7,6,35,21,23,22,21,6,7,6,7, +33,38,39,38,39,54,63,1,53,34,39,38,39,54,55,54,59,1,7,21,20,15,1,51,39,38,61,1,35,160,16,16, +41,27,27,1,14,9,9,9,9,14,192,14,9,9,9,9,14,49,15,64,64,64,1,160,14,9,9,9,9,14,118,10, +1,19,20,29,254,202,29,20,20,1,1,10,117,13,9,9,1,1,9,9,13,193,128,5,48,171,49,5,64,5,5,1, +27,27,41,1,32,9,9,14,14,9,9,9,9,14,14,9,9,246,79,25,29,1,27,96,96,160,9,9,14,14,9,9, +151,191,17,20,29,20,19,1,1,19,20,29,20,17,191,151,9,9,14,14,9,9,64,160,9,8,79,79,8,9,160,0, +0,2,0,0,255,192,1,128,1,192,0,20,0,32,0,0,1,50,23,22,7,3,6,7,6,7,35,38,39,38,39,3, +38,55,54,51,33,7,22,55,54,23,22,63,2,35,31,1,1,96,14,9,10,1,29,3,22,22,33,166,33,22,22,3, +29,1,10,9,14,1,64,255,31,31,33,33,31,31,24,7,252,7,24,1,192,10,10,14,254,108,32,21,20,1,1,20, +21,32,1,148,14,10,10,169,14,14,16,16,14,14,12,93,93,12,0,0,0,3,0,0,255,192,1,128,1,192,0,19, +0,40,0,52,0,0,37,6,7,49,6,7,38,39,38,39,54,55,54,55,54,23,22,23,22,23,55,50,23,22,7,3, +6,7,6,7,35,38,39,38,39,3,38,55,54,51,33,1,22,55,54,23,22,63,2,35,31,1,1,0,1,18,18,27, +27,18,18,1,2,17,18,15,12,12,15,18,17,2,96,14,9,10,1,29,3,22,22,33,166,33,22,22,3,29,1,10, +9,14,1,64,255,0,32,32,32,32,32,32,12,18,252,17,13,252,25,17,17,1,1,17,17,25,20,27,28,18,12,12, +18,28,27,20,196,10,10,14,254,108,32,21,20,1,1,20,21,32,1,148,14,10,10,254,208,15,15,15,15,15,15,6, +234,234,6,0,0,6,0,9,255,202,1,246,1,182,0,44,0,86,0,130,0,174,0,204,0,234,0,0,19,20,7,49, +20,21,6,7,6,7,34,35,6,7,6,7,6,39,38,39,38,55,54,55,38,39,54,55,54,55,50,23,54,55,54,23, +22,23,22,7,6,7,6,7,49,55,54,51,22,23,22,23,20,7,22,23,22,7,6,7,6,39,38,39,38,39,34,35, +38,39,38,39,52,53,38,39,38,39,38,55,54,55,54,23,22,23,49,1,50,51,22,23,22,23,20,21,22,21,22,23, +22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,54,55,38,39,38,55,54,55,54,23,22,23,22,23,49,5, +22,21,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,52,53,38,53,54,55,54,55,50,51,54,55, +54,55,54,23,22,23,22,7,6,7,49,37,22,23,22,7,6,39,38,39,38,53,54,55,39,38,55,54,59,1,22,23, +21,6,7,6,47,1,6,21,49,55,54,23,22,23,22,23,6,7,23,22,7,6,43,1,38,39,53,52,55,54,31,1, +54,55,38,39,38,55,49,160,1,1,17,18,28,2,3,11,7,4,11,12,13,13,6,6,4,9,18,6,1,1,18,18, +27,15,12,29,32,13,11,11,5,3,6,6,13,22,19,230,12,13,28,18,17,1,5,17,10,4,6,6,13,13,12,11, +4,6,12,3,3,27,18,18,1,19,22,13,6,6,3,5,11,11,13,32,29,254,212,3,2,28,18,17,1,1,19,22, +13,6,6,3,5,11,11,13,32,29,12,15,27,18,18,1,1,6,18,9,4,6,6,13,13,12,11,4,7,11,1,128, +5,1,17,18,28,13,12,29,32,13,11,11,5,3,6,6,13,22,19,1,1,18,19,26,4,3,11,7,4,11,12,13, +13,6,6,4,10,17,254,231,2,33,18,8,12,20,28,16,17,1,28,11,6,3,3,7,60,10,1,1,6,6,5,15, +15,82,12,21,27,17,16,1,1,28,11,5,3,3,6,61,9,1,6,6,6,15,14,1,2,33,19,8,1,102,2,1, +2,1,27,18,18,1,19,22,13,6,6,3,5,11,11,13,32,29,12,14,27,18,18,1,6,18,9,4,6,6,13,13, +12,11,4,7,11,52,6,1,18,18,27,14,12,29,32,13,11,11,5,3,6,6,13,22,19,1,18,18,27,3,3,11, +7,4,11,12,13,13,6,6,4,9,18,254,198,1,18,18,27,1,2,1,2,11,7,4,12,11,13,13,6,6,4,10, +17,5,1,1,18,18,27,14,12,29,32,13,11,11,5,3,6,6,13,22,19,38,12,14,27,18,18,1,1,5,17,10, +4,6,6,13,13,11,12,4,7,11,1,2,1,2,27,18,18,1,19,22,13,6,6,3,5,11,11,13,32,29,133,39, +18,12,20,19,8,15,26,26,33,44,31,11,6,6,6,1,9,61,6,3,3,5,15,17,24,91,19,8,15,26,26,33, +45,30,12,5,6,6,1,9,61,7,2,3,4,16,17,24,39,18,12,20,0,2,0,0,255,224,2,0,1,160,0,36, +0,73,0,0,1,23,22,23,22,7,6,7,6,47,1,35,6,7,22,23,51,22,23,22,7,6,43,1,34,47,1,7, +38,39,53,54,55,51,50,23,49,3,39,38,39,38,55,54,55,54,31,1,51,54,55,38,39,35,38,39,38,55,54,59, +1,50,31,1,51,22,23,21,6,7,33,34,39,49,1,73,103,13,3,2,10,10,16,16,14,87,106,14,2,2,14,63, +26,8,2,10,9,16,112,41,32,47,8,13,2,2,13,251,35,28,178,135,13,3,2,10,10,16,16,14,119,121,15,1, +1,15,78,27,7,2,10,9,15,128,42,32,47,23,15,1,1,15,254,229,35,27,1,140,68,10,16,16,14,13,3,2, +10,57,2,14,15,1,2,26,15,10,11,25,39,1,1,16,95,15,1,20,254,104,100,10,16,16,14,13,3,2,10,88, +1,15,15,1,2,25,15,11,11,26,38,1,15,96,15,1,20,0,0,0,0,8,0,0,255,192,2,128,1,192,0,17, +0,35,0,73,0,91,0,135,0,153,0,171,0,189,0,0,1,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,7,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,21,50,23,49,22,21,51,22,23,21,20,21, +22,23,22,23,6,7,6,7,38,39,38,39,54,55,54,55,38,61,1,54,55,51,52,55,54,51,17,54,55,49,54,55, +38,39,38,39,6,7,6,7,22,23,22,23,55,54,55,38,61,1,52,55,54,59,1,52,55,54,55,22,23,22,21,51, +50,23,22,29,1,20,21,22,23,22,23,6,7,6,7,38,39,38,39,54,53,52,39,49,55,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,47,1,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,23,52,55,49, +54,51,50,23,22,21,20,7,6,35,34,39,38,53,1,48,9,9,14,14,9,9,9,9,14,14,9,9,144,9,9,14, +14,9,9,9,9,14,14,9,9,14,9,9,8,22,2,43,26,26,1,2,45,45,68,68,45,45,2,1,26,26,44,1, +2,22,8,9,9,14,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,178,26,53,1,7,7,10,8,9,9, +14,14,9,9,8,10,7,7,43,26,26,1,2,45,45,68,48,37,37,20,14,14,142,41,27,27,1,1,27,27,41,41, +27,27,1,1,27,27,41,144,9,9,14,14,9,9,9,9,14,14,9,9,80,9,9,14,14,9,9,9,9,14,14,9, +9,1,160,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9,14,48,9,9,14, +2,22,16,3,2,19,39,39,50,68,45,45,2,2,45,45,68,50,39,39,19,2,3,16,22,2,14,9,9,254,192,1, +27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,169,51,23,2,4,16,10,7,7,13,9,9,1,1,9,9,13, +7,7,10,16,4,2,19,39,39,50,68,45,45,2,1,23,24,39,34,39,39,34,23,1,27,27,41,41,27,27,1,1, +27,27,41,41,27,27,1,224,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9, +14,0,0,0,0,2,0,32,255,192,2,96,1,192,0,74,0,98,0,0,19,23,22,55,54,47,1,38,55,54,55,54, +23,22,31,1,22,23,21,51,53,52,63,1,54,55,54,23,22,23,22,15,1,6,23,22,63,1,53,52,55,54,51,50, +23,22,29,1,20,15,1,51,22,23,6,7,33,38,39,54,55,51,39,38,61,1,52,55,54,51,50,23,22,21,7,19, +34,39,49,38,53,52,55,54,51,33,22,23,6,7,35,21,35,53,35,21,35,53,35,95,70,10,15,15,10,28,8,1, +1,10,11,12,13,9,47,23,1,65,25,47,9,13,12,11,10,1,1,9,27,10,15,14,11,69,9,9,14,14,9,9, +14,86,4,22,2,2,22,254,128,22,2,2,22,4,86,14,9,9,14,14,9,9,1,32,10,7,7,7,7,10,1,129, +22,2,2,22,32,128,65,128,32,1,47,92,12,7,11,16,36,10,12,13,8,9,1,1,10,52,29,38,94,94,38,29, +52,10,1,1,9,8,13,12,10,36,16,11,7,12,92,113,14,9,9,9,9,14,182,22,17,99,2,22,22,2,2,22, +22,2,99,17,22,182,14,9,9,9,9,14,113,254,177,7,7,10,10,7,7,2,22,22,2,32,32,32,32,0,0,0, +0,4,0,0,255,192,2,128,1,192,0,17,0,47,0,92,0,136,0,0,1,54,55,49,54,51,50,23,22,21,20,7, +6,35,34,39,38,39,23,22,7,6,47,1,35,7,6,39,38,63,1,7,6,39,38,63,1,54,51,50,31,1,22,7, +6,47,1,23,37,50,23,49,22,29,1,22,31,1,22,55,54,55,54,47,1,38,53,52,55,54,51,50,31,1,22,23, +21,6,7,6,7,35,34,47,1,38,39,53,52,55,54,51,35,5,21,6,15,1,6,43,1,38,39,38,39,53,54,63, +1,54,51,50,23,22,21,20,15,1,6,23,22,23,22,63,1,54,61,1,52,55,54,55,22,23,22,29,1,1,23,1, +11,12,16,18,11,12,12,11,18,16,12,11,1,97,1,23,21,5,4,8,4,5,22,22,1,11,19,19,15,13,16,27, +30,38,38,30,28,15,13,15,18,20,11,254,175,18,11,11,1,19,51,14,17,10,1,1,8,48,9,9,10,13,13,10, +72,32,1,1,13,14,20,67,26,19,100,27,1,12,11,17,1,2,89,1,27,100,20,25,67,20,14,13,1,1,32,72, +10,13,13,10,9,9,48,8,1,1,10,17,14,51,19,12,11,17,17,11,12,1,152,17,11,12,12,11,17,17,11,12, +12,11,17,213,22,5,1,23,35,35,23,1,5,22,89,16,14,16,18,16,23,25,25,23,16,18,16,14,16,89,189,12, +11,17,160,27,19,51,12,9,7,11,11,9,47,10,13,13,10,9,9,73,33,46,79,20,14,13,1,19,100,29,38,222, +17,11,12,40,222,38,29,100,19,1,13,14,20,79,46,33,73,9,9,10,13,13,10,47,9,11,11,7,9,12,51,19, +27,161,16,12,11,1,1,11,12,16,1,0,0,3,0,0,255,192,2,128,1,192,0,17,0,62,0,106,0,0,19,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,47,1,50,23,49,22,29,1,22,31,1,22,55,54,55,54,47, +1,38,53,52,55,54,51,50,31,1,22,23,21,6,7,6,7,35,34,47,1,38,39,53,52,55,54,51,35,5,21,6, +15,1,6,43,1,38,39,38,39,53,54,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,22,63,1,54,61,1, +52,55,54,55,22,23,22,29,1,191,2,36,36,54,55,36,37,1,1,37,36,55,54,36,36,2,152,18,11,11,1,19, +51,14,17,10,1,1,8,48,9,9,10,13,13,10,72,32,1,1,13,14,20,67,26,19,100,27,1,12,11,17,1,2, +89,1,27,100,20,25,67,20,14,13,1,1,32,72,10,13,13,10,9,9,48,8,1,1,10,17,14,51,19,12,11,17, +17,11,12,1,64,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,64,12,11,17,160,27,19,51,12,9,7, +11,11,9,47,10,13,13,10,9,9,73,33,46,79,20,14,13,1,19,100,29,38,222,17,11,12,40,222,38,29,100,19, +1,13,14,20,79,46,33,73,9,9,10,13,13,10,47,9,11,11,7,9,12,51,19,27,161,16,12,11,1,1,11,12, +16,1,0,0,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,74,0,0,37,22,23,7,6,35,34,47,1,38, +55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,51,54,55,49,54,55,22,23,22, +23,6,7,6,7,38,39,38,39,55,7,6,23,22,59,1,7,6,23,22,63,1,54,39,38,43,1,55,54,39,38,7, +49,1,0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75, +49,50,2,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,177,96,7,3,3,8,36,30,4,6,7,8, +96,7,3,3,8,36,31,3,6,7,8,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35, +29,39,39,39,17,2,50,49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,82,72,6,8,8,54,8, +7,5,4,72,6,8,8,54,8,8,4,4,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,66,0,0,37,22, +23,7,6,35,34,47,1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,33, +6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7, +49,1,0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75, +49,50,2,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72, +10,10,11,11,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50, +49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10, +10,0,0,0,0,4,0,0,255,192,2,64,1,160,0,32,0,50,0,59,0,70,0,0,37,22,23,7,6,35,34,47, +1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,51,54,55,49,54,55,22, +23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,1, +0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75,49,50, +2,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1, +1,15,14,2,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50, +49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1, +15,80,15,1,1,15,0,0,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,61,0,0,37,22,23,7,6,35, +34,47,1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,33,6,7,49,6, +7,38,39,38,39,54,55,54,55,22,23,22,23,39,35,6,7,22,23,51,54,55,38,39,1,0,1,28,6,10,13,13, +9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75,49,50,2,1,64,2,40,41,61, +61,41,40,2,2,40,41,61,61,41,40,2,80,128,15,1,1,15,128,15,1,1,15,80,54,43,5,10,10,199,46,60, +59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50,49,75,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,17,2,14,15,1,1,15,14,2,0,0,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,75, +0,0,37,22,23,7,6,35,34,47,1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6, +7,6,7,51,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,38,39,6,7,21,35,6,7,22,23, +51,21,22,23,54,55,53,51,54,55,38,39,35,53,1,0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40, +19,19,40,52,52,44,32,11,11,10,34,41,75,49,50,2,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40, +2,160,1,15,15,1,48,15,1,1,15,48,1,15,15,1,48,15,1,1,15,48,80,54,43,5,10,10,199,46,60,59, +43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50,49,75,61,41,40,2,2,40,41,61,61,41,40,2, +2,40,41,61,65,14,2,2,14,48,2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,0,0,3,0,0, +255,192,2,64,1,160,0,32,0,50,0,75,0,0,37,22,23,7,6,35,34,47,1,38,55,54,55,54,23,22,31,1, +55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,51,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,0,1,28,6,10, +13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75,49,50,2,32,2,40,41, +61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37, +11,11,10,10,36,36,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17, +2,50,49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37, +37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,0,0,5,0,34,255,194,2,30,1,190,0,11,0,23,0,34, +0,46,0,87,0,0,1,53,22,23,22,23,35,38,39,38,39,49,17,53,54,55,54,55,51,6,7,6,7,49,37,51, +22,23,22,23,21,38,39,38,39,19,21,6,7,6,7,35,54,55,54,55,49,7,51,53,52,55,54,51,50,23,22,29, +1,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,52,55,54,51,50,23,22,29,1,1,64, +89,60,61,12,65,11,42,43,61,61,43,42,11,65,12,61,60,89,254,226,65,11,42,43,61,89,60,61,12,222,61,43, +42,11,65,12,61,60,89,16,96,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14, +9,9,1,125,65,12,61,60,89,61,43,42,11,254,69,65,11,42,43,61,89,60,61,12,222,61,43,42,11,65,12,61, +60,89,1,30,65,11,42,43,61,89,60,61,12,222,64,14,9,9,9,9,14,192,14,9,9,9,9,14,64,64,14,9, +9,9,9,14,192,14,9,9,9,9,14,64,0,4,0,0,255,192,2,0,1,192,0,38,0,43,0,66,0,91,0,0, +37,50,23,49,22,21,20,7,6,43,1,21,23,51,22,23,6,7,35,34,47,1,35,38,39,38,39,53,54,55,54,55, +54,55,22,23,22,23,49,7,35,7,23,53,39,38,7,6,7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6, +7,21,39,7,38,39,6,7,21,22,23,22,23,54,55,54,55,53,38,39,6,7,21,6,7,38,39,53,1,224,14,9, +9,9,9,14,112,2,86,22,2,2,22,96,10,6,129,127,38,24,25,1,1,32,32,54,54,67,98,66,67,9,160,46, +33,79,35,7,11,10,1,1,15,15,1,35,7,11,10,1,1,15,15,1,35,125,1,15,15,1,1,13,14,20,20,14, +13,1,1,15,15,1,1,15,15,1,224,9,9,14,14,9,9,175,1,2,22,22,2,7,121,1,25,24,38,56,67,54, +54,32,32,1,2,63,63,96,64,56,73,129,185,9,3,4,11,96,15,1,1,15,43,52,9,3,4,11,96,15,1,1, +15,43,52,9,15,1,1,15,64,20,14,13,1,1,13,14,20,64,15,1,1,15,64,15,1,1,15,64,0,4,0,32, +255,192,2,97,1,160,0,51,0,69,0,87,0,104,0,0,19,38,53,54,55,54,55,22,23,54,55,22,23,22,23,20, +7,20,7,22,23,22,21,6,7,23,22,51,50,55,54,53,52,39,38,35,34,7,39,54,51,50,23,22,21,20,7,6, +7,6,39,1,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,7,52,55,49,54,51,50,23,22,21, +20,7,6,35,34,39,38,53,3,22,7,49,6,7,33,38,39,38,39,17,54,55,54,23,1,161,1,1,13,14,20,35, +11,23,43,34,23,22,1,2,1,23,14,14,2,35,82,12,16,16,12,12,12,12,16,16,12,34,27,35,35,27,26,26, +24,30,31,26,254,201,1,95,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,9,9,14,14,9, +9,24,19,9,10,27,254,195,34,23,22,1,2,23,22,21,1,100,1,100,6,6,20,14,13,1,2,33,33,2,1,22, +23,34,8,7,3,4,9,19,20,26,44,24,81,12,12,12,16,16,12,13,13,34,26,26,27,35,35,27,23,3,2,17, +1,54,28,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,254,228,21,22, +23,2,1,22,23,34,1,61,27,10,9,18,254,155,0,0,0,5,0,0,255,192,2,64,1,160,0,18,0,35,0,54, +0,72,0,90,0,0,19,38,63,1,54,59,1,50,31,1,22,15,1,6,43,1,34,47,1,19,22,7,49,6,7,33, +38,39,38,39,17,54,55,54,23,1,55,38,61,1,52,63,1,54,31,1,22,29,1,20,15,1,6,47,1,1,20,7, +49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38, +53,252,4,4,27,5,9,54,9,5,27,4,4,27,5,9,54,9,5,27,172,19,9,10,27,254,195,34,23,22,1,2, +23,22,21,1,100,32,8,8,48,7,9,48,8,8,48,9,7,48,254,248,9,9,14,14,9,9,9,9,14,14,9,9, +160,9,9,14,14,9,9,9,9,14,14,9,9,1,88,8,8,48,8,8,48,8,8,48,8,8,48,254,172,21,22,23, +2,1,22,23,34,1,61,27,10,9,18,254,155,67,5,9,54,9,5,27,4,4,27,5,9,54,9,5,27,4,4,27, +1,57,14,9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,0,0,3,0,0, +255,192,2,128,1,192,0,46,0,64,0,80,0,0,37,35,34,7,6,29,1,20,7,6,43,1,34,35,48,49,34,43, +1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6,7,6,7,35,5,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,1, +64,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,212,13,13,70, +49,49,7,1,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11, +72,10,10,11,11,96,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14,10,224,9,1,7,187,2, +2,44,45,69,16,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72, +11,11,10,10,0,4,0,0,255,192,2,128,1,192,0,46,0,64,0,73,0,84,0,0,37,35,34,7,6,29,1,20, +7,6,43,1,34,35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1, +38,35,6,7,6,7,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7, +22,23,39,21,22,23,54,55,53,38,39,6,7,1,64,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32, +14,9,9,10,1,0,11,11,12,10,212,13,13,70,49,49,7,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61, +41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,96,9,9,14,88,17,11,12,12,11,17, +112,1,2,69,1,9,9,13,14,10,224,9,1,7,187,2,2,44,45,69,16,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,0,0,3,0,0, +255,192,2,128,1,192,0,46,0,64,0,89,0,0,37,35,34,7,6,29,1,20,7,6,43,1,34,35,48,49,34,43, +1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6,7,6,7,35,23,54,55, +49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63, +1,23,22,55,54,47,1,55,1,64,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1, +0,11,11,12,10,212,13,13,70,49,49,7,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10, +10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,96,9,9,14,88,17,11,12,12, +11,17,112,1,2,69,1,9,9,13,14,10,224,9,1,7,187,2,2,44,45,69,16,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37, +0,3,0,0,255,192,2,128,1,192,0,49,0,75,0,99,0,0,37,21,35,34,7,6,29,1,20,7,6,43,1,34, +35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,38,7,6,7,6, +7,6,21,49,55,54,55,54,23,22,23,22,23,6,7,6,7,38,39,38,39,54,55,54,55,54,23,22,23,49,23,38, +39,7,38,39,38,39,38,39,6,7,6,21,22,23,22,51,50,55,54,55,54,39,1,32,32,14,9,9,12,11,17,56, +2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,137,19,15,54,34,16,10,11,221,12,15,10,10, +37,23,23,1,2,45,45,68,69,45,44,2,1,31,31,51,9,11,29,26,41,3,4,36,1,14,14,15,15,3,22,12, +11,1,23,22,35,27,22,23,5,5,13,98,2,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14, +10,224,9,1,7,121,1,13,49,54,25,28,27,27,128,16,15,6,7,36,45,45,32,68,46,46,2,2,46,46,68,41, +49,50,46,8,8,26,32,114,6,6,43,1,18,18,19,19,4,27,19,19,17,37,20,21,16,16,27,27,26,0,0,0, +0,2,0,0,255,192,2,128,1,192,0,20,0,59,0,0,1,50,23,49,22,21,51,22,23,21,6,7,35,17,35,17, +52,55,54,51,49,3,49,51,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29,1,20,7,6,43,1,34,39,38, +61,1,35,38,39,38,63,1,54,31,1,17,1,224,14,9,9,112,15,1,1,15,112,64,9,9,14,64,1,65,14,9, +9,9,9,14,64,14,9,9,9,9,14,64,14,9,9,33,20,9,7,16,224,21,21,139,1,192,9,9,14,1,15,128, +15,1,254,192,1,224,14,9,9,254,0,9,9,14,96,14,9,9,9,9,14,96,14,9,9,9,9,14,192,1,20,21, +14,192,16,16,119,254,159,0,0,3,0,0,255,192,2,63,1,192,0,34,0,88,0,142,0,0,1,22,7,6,7,35, +23,6,7,6,7,38,39,38,35,34,7,6,7,38,39,34,39,38,35,53,35,38,39,38,63,1,54,31,1,7,54,23, +22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6, +7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,49,23,51,54,23,22,23,22,23,22,7,6,7,6, +39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23, +54,55,54,23,22,23,54,55,49,1,227,17,6,8,22,17,1,3,2,29,30,30,29,17,20,20,17,26,33,31,28,1, +1,1,2,16,22,8,6,17,176,19,19,176,213,18,19,34,43,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12, +38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35, +191,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11, +11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,42,35,1,58,14,22,21,1,73,2,1,20,1,1, +20,12,12,19,2,1,20,1,2,73,1,21,22,14,128,12,12,128,176,12,12,25,1,2,24,13,15,18,7,3,11,11, +13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15, +13,24,2,1,25,112,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25, +15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,2,24,0,5,0,0,255,192,2,95, +1,192,0,17,0,39,0,73,0,127,0,181,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +39,23,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1,38,7,6,23,49,63,1,54,31,1,22,7,6,7,35, +23,38,39,38,35,38,7,6,7,38,39,38,35,34,7,6,7,54,55,54,53,52,39,49,19,54,55,51,54,23,22,23, +22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55, +54,55,54,23,49,22,23,54,55,54,23,22,23,49,7,22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39, +38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54, +55,54,23,49,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,147,28,89,15,1,1,15,89,28,10, +10,11,11,56,10,10,56,11,11,10,10,160,80,19,19,176,17,6,8,22,17,1,4,3,17,21,21,19,29,30,30,29, +17,20,20,17,15,18,32,19,18,18,115,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31, +9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,77,34, +43,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38, +13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,1,48,61,41,40,2,2,40,41,61,61,41,40,2, +2,40,41,61,45,29,1,15,15,1,29,11,11,10,10,56,11,11,56,10,10,11,11,35,58,12,12,128,14,22,21,1, +84,2,2,15,1,12,20,1,1,20,12,12,10,6,24,36,37,43,43,37,254,240,2,24,13,15,18,7,3,11,11,13, +13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13, +24,2,1,25,12,12,25,1,86,25,1,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4, +4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,0,0,3,0,0, +255,192,2,128,1,192,0,59,0,90,0,103,0,0,5,20,23,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29, +1,20,7,6,43,1,34,35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50, +31,1,6,7,6,7,21,6,7,21,19,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1, +52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,128,9,1,17,11,12,9,9,14, +64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,181,34,20,20,1, +30,2,144,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,32, +18,14,12,11,17,88,14,9,9,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14,10,224,9,1, +7,159,12,29,28,37,25,18,37,128,1,32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48, +34,23,22,1,48,9,9,14,48,48,14,9,9,0,0,0,0,4,0,0,255,192,2,128,1,192,0,51,0,58,0,76, +0,92,0,0,37,22,23,49,22,23,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6, +7,49,35,53,38,39,35,6,7,21,35,6,7,21,22,23,51,21,22,23,51,50,55,49,55,51,20,21,6,49,53,5, +6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7, +49,1,65,3,20,19,32,254,245,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,212,13,13,65,47,56,1,16, +48,14,2,56,14,2,2,14,56,2,14,48,6,4,7,1,1,1,56,2,40,41,61,61,41,40,2,2,40,41,61,61, +41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,66,40,34,34,22,1,18,18,27,160,1,9,9,13, +14,10,224,9,1,7,187,2,1,39,56,15,1,1,15,56,1,15,48,15,1,56,15,1,2,70,1,1,1,3,56,61, +41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0, +0,5,0,0,255,192,2,128,1,192,0,51,0,58,0,76,0,85,0,96,0,0,37,22,23,49,22,23,33,38,39,38, +39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6,7,49,35,53,38,39,35,6,7,21,35,6,7,21, +22,23,51,21,22,23,51,50,55,49,55,51,20,21,6,49,53,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,1,65,3,20,19,32,254,245,27, +18,18,1,32,14,9,9,10,1,0,11,11,12,10,212,13,13,65,47,56,1,16,48,14,2,56,14,2,2,14,56,2, +14,48,6,4,7,1,1,24,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2, +22,17,2,14,15,1,1,15,14,2,66,40,34,34,22,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,187,2, +1,39,56,15,1,1,15,56,1,15,48,15,1,56,15,1,2,70,1,1,1,3,56,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,4,0,0, +255,192,2,128,1,192,0,51,0,58,0,76,0,101,0,0,37,22,23,49,22,23,33,38,39,38,39,53,35,38,39,38, +53,52,55,37,54,23,50,31,1,38,35,6,7,49,35,53,38,39,35,6,7,21,35,6,7,21,22,23,51,21,22,23, +51,50,55,49,55,51,20,21,6,49,53,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39, +38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,65,3,20,19,32,254,245,27,18, +18,1,32,14,9,9,10,1,0,11,11,12,10,212,13,13,65,47,56,1,16,48,14,2,56,14,2,2,14,56,2,14, +48,6,4,7,1,1,24,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11, +10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,66,40,34,34,22,1,18,18,27,160,1,9,9,13,14,10, +224,9,1,7,187,2,1,39,56,15,1,1,15,56,1,15,48,15,1,56,15,1,2,70,1,1,1,3,56,61,41,40, +2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36, +10,10,11,11,37,37,0,0,0,3,0,0,255,192,2,128,1,192,0,20,0,39,0,68,0,0,1,50,23,49,22,21, +51,22,23,21,6,7,35,17,35,17,52,55,54,51,49,3,49,51,33,34,39,38,61,1,35,38,39,38,63,1,54,31, +1,17,3,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35,6,7,21,1, +224,14,9,9,112,15,1,1,15,112,64,9,9,14,64,1,254,191,14,9,9,33,20,9,7,16,224,21,21,139,193,48, +14,2,2,14,48,2,14,32,15,1,49,15,1,1,15,49,1,15,32,14,2,1,192,9,9,14,1,15,128,15,1,254, +192,1,224,14,9,9,254,0,9,9,14,192,1,20,21,14,192,16,16,119,254,159,1,0,1,15,32,15,1,48,15,1, +1,15,48,1,15,32,15,1,48,15,1,1,15,48,0,0,0,3,0,0,255,192,2,64,1,192,0,96,0,125,0,179, +0,0,19,50,23,22,23,22,7,6,7,6,39,38,35,6,7,6,7,22,23,22,23,22,51,50,49,48,49,54,55,54, +23,22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,34,35, +38,7,38,7,48,35,34,39,38,39,38,39,54,55,54,55,50,23,22,23,22,7,6,7,6,39,38,35,6,7,6,7, +54,55,49,55,54,31,1,22,23,21,20,7,38,39,38,39,38,35,38,7,6,7,38,39,34,53,38,35,53,52,63,1, +19,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39, +38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,54,55,49,184,35,29,12,5,5,6,6,12,12, +12,17,21,37,26,25,1,1,17,17,27,16,18,1,43,35,18,19,34,43,42,35,1,20,19,22,28,13,7,7,3,3, +11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,1,1,2,1,1,1,1,22,20,67,37,37,1,2,60,59,88, +36,32,13,6,6,4,5,11,12,13,23,25,43,33,34,18,42,61,245,19,19,96,12,1,1,8,8,21,17,17,21,21, +19,29,30,30,29,1,2,2,13,96,32,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7, +7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,42,35,1,96, +14,6,12,12,13,12,4,5,6,8,1,25,25,37,30,22,23,9,4,2,24,12,12,25,1,2,24,13,15,18,7,3, +11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,1,1,1,6,18,53,53,70,86,56,56,2, +11,4,12,11,13,13,6,6,4,8,1,19,20,33,40,1,50,12,12,72,10,16,144,4,4,4,2,5,13,15,1,12, +20,1,1,20,1,2,122,15,10,72,254,136,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4, +4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,2,24,0,0, +0,3,0,0,255,192,1,64,1,192,0,19,0,41,0,46,0,0,19,52,55,49,54,59,1,50,23,22,21,20,7,6, +43,1,34,39,38,53,7,54,55,49,54,55,51,22,23,22,23,17,6,7,6,7,35,38,39,38,39,17,5,35,21,51, +53,32,9,9,14,192,14,9,9,9,9,14,192,14,9,9,32,1,18,18,27,192,27,18,18,1,1,18,18,27,192,27, +18,18,1,1,0,192,192,1,160,14,9,9,9,9,14,14,9,9,9,9,14,128,27,18,18,1,1,18,18,27,254,224, +27,18,18,1,1,18,18,27,1,32,64,160,160,0,0,0,0,5,0,0,255,192,1,64,1,192,0,19,0,41,0,58, +0,75,0,99,0,0,19,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,7,54,55,49,54,55, +51,22,23,22,23,17,6,7,6,7,35,38,39,38,39,17,23,54,55,49,54,55,35,6,7,38,39,35,22,23,22,23, +51,53,54,55,49,54,55,35,6,7,38,39,35,22,23,22,23,51,21,54,55,49,54,55,35,6,7,38,39,35,22,23, +22,23,51,21,22,23,54,55,53,51,32,9,9,14,192,14,9,9,9,9,14,192,14,9,9,32,1,18,18,27,192,27, +18,18,1,1,18,18,27,192,27,18,18,1,192,27,18,18,1,48,30,18,18,30,48,1,18,18,27,64,27,18,18,1, +48,30,18,18,30,48,1,18,18,27,64,27,18,18,1,48,30,18,18,30,48,1,18,18,27,16,1,15,15,1,16,1, +160,14,9,9,9,9,14,14,9,9,9,9,14,128,27,18,18,1,1,18,18,27,254,224,27,18,18,1,1,18,18,27, +1,32,160,1,18,18,27,1,21,21,1,27,18,18,1,96,1,18,18,27,1,21,21,1,27,18,18,1,192,1,18,18, +27,1,21,21,1,27,18,18,1,32,15,1,1,15,32,0,0,1,0,32,255,192,2,32,1,192,0,60,0,0,1,22, +29,1,23,53,54,55,22,23,21,6,7,38,39,53,35,21,23,22,29,1,6,7,35,53,38,39,6,7,21,35,38,39, +53,38,63,1,53,35,21,6,7,38,39,53,54,55,22,23,21,55,53,52,63,1,54,51,50,31,1,1,91,5,144,2, +22,22,2,2,22,22,2,144,59,5,1,15,96,1,15,15,1,96,15,1,1,7,58,144,2,22,22,2,2,22,22,2, +144,5,44,5,10,10,5,44,1,79,12,13,77,84,19,22,2,2,22,112,22,2,2,22,8,33,50,5,8,16,15,1, +64,15,1,1,15,64,1,15,16,8,5,50,33,8,22,2,2,22,112,22,2,2,22,19,84,77,13,12,103,10,10,103, +0,3,0,0,255,192,1,128,1,192,0,18,0,40,0,60,0,0,19,54,55,51,22,23,21,51,22,23,6,7,35,38, +39,54,55,51,53,7,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,5,20,23,49,22, +51,50,55,54,61,1,52,39,38,35,34,7,6,29,1,96,2,22,80,22,2,8,22,2,2,22,144,22,2,2,22,8, +96,1,36,37,54,128,54,37,36,1,1,18,18,27,255,0,27,18,18,1,1,0,9,9,14,14,9,9,9,9,14,14, +9,9,1,168,22,2,2,22,24,2,22,22,2,2,22,22,2,24,232,54,37,36,1,1,36,37,54,192,27,18,18,1, +1,18,18,27,192,96,14,9,9,9,9,14,96,14,9,9,9,9,14,96,0,8,0,0,255,192,2,32,1,192,0,17, +0,51,0,69,0,87,0,100,0,124,0,132,0,143,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,54,55,51,22,23,22,23,6,7,6,7, +35,38,39,35,39,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,21,51,22,23,6,7,35,38,39, +54,55,51,53,54,55,22,23,7,53,51,21,6,7,6,7,35,38,39,38,47,1,22,23,49,22,23,6,7,6,7,35, +20,7,6,43,1,34,39,38,61,1,54,55,51,23,38,39,35,21,51,54,55,23,22,23,6,7,35,38,39,54,55,51, +80,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,204,11,39,38,52,61,41,40,2,2,40,41,61,52,38, +39,11,72,14,22,104,20,14,13,1,1,13,14,20,104,22,14,72,140,41,27,27,1,1,27,27,41,41,27,27,1,1, +27,27,41,1,24,96,22,2,2,22,240,22,2,2,22,96,2,22,22,2,136,224,1,13,14,20,128,20,14,13,1,112, +20,14,13,1,1,13,14,20,16,9,9,14,64,14,9,9,1,15,128,16,1,15,16,16,15,1,8,22,2,2,22,176, +22,2,2,22,176,1,48,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,32,49,31,31,1,2,40,41,61, +61,41,40,2,1,31,31,49,15,1,1,13,14,20,20,14,13,1,1,15,128,1,27,27,41,41,27,27,1,1,27,27, +41,41,27,27,1,216,8,2,22,22,2,2,22,22,2,8,22,2,2,22,200,112,112,20,14,13,1,1,13,14,20,144, +1,13,14,20,20,14,13,1,14,9,9,9,9,14,80,15,1,48,15,1,32,1,15,96,2,22,22,2,2,22,22,2, +0,5,0,0,255,192,2,64,1,192,0,10,0,24,0,41,0,53,0,64,0,0,1,6,7,38,39,53,54,55,22,23, +21,7,52,55,49,54,59,1,50,23,22,29,1,33,53,7,54,55,33,22,31,1,22,7,6,7,33,38,39,38,63,1, +3,54,31,1,22,7,6,47,1,38,55,49,37,54,23,22,15,1,6,39,38,63,1,1,56,2,22,22,2,2,22,22, +2,152,9,9,14,192,14,9,9,255,0,77,14,29,1,68,29,14,28,7,9,8,19,254,104,19,8,9,7,28,79,14, +20,104,17,11,14,20,104,17,11,2,22,20,14,11,17,104,20,14,11,17,104,1,24,22,2,2,22,144,22,2,2,22, +144,152,14,9,9,9,9,14,32,32,91,26,1,1,26,55,16,15,14,1,1,14,15,16,55,1,17,17,11,72,14,20, +17,11,72,14,20,6,11,17,20,14,72,11,17,20,14,72,0,2,0,0,255,192,2,0,1,192,0,30,0,65,0,0, +1,22,23,21,6,7,35,21,51,50,23,22,21,20,7,6,35,33,34,39,38,39,54,55,54,59,1,53,54,55,51,5, +51,21,51,53,51,21,51,53,51,21,51,53,51,21,48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,48, +49,53,1,96,15,1,1,15,80,192,14,9,9,9,9,14,254,95,13,9,9,1,1,9,9,13,192,2,14,97,254,223, +64,40,64,49,64,40,64,1,1,48,18,5,8,23,254,63,22,8,5,18,48,1,1,192,1,15,64,15,1,32,9,9, +14,14,9,9,9,9,14,14,9,9,112,15,1,224,192,192,192,192,192,192,196,1,32,14,22,22,1,1,22,22,14,32, +1,196,0,0,0,4,0,0,255,192,2,128,1,192,0,27,0,57,0,62,0,66,0,0,19,20,23,49,22,59,1,21, +35,6,7,6,7,21,6,7,35,38,39,38,39,17,54,55,54,55,51,21,23,54,55,49,54,55,33,22,23,22,23,21, +51,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,51,53,23,21,51,53,35,55,35,53,23,192,9,9,14,96, +32,34,23,22,1,33,12,115,20,14,13,1,1,13,14,20,144,48,1,13,14,20,1,0,20,14,13,1,32,15,1,1, +18,18,27,254,192,27,18,18,1,1,15,32,64,224,224,16,96,96,1,96,14,9,9,64,1,22,23,34,112,2,30,1, +13,14,20,1,64,20,14,13,1,96,176,20,14,13,1,1,13,14,20,144,1,15,16,27,18,18,1,1,18,18,27,16, +15,1,144,16,128,128,192,96,96,0,0,0,0,3,0,0,255,224,1,128,1,160,0,19,0,40,0,61,0,0,23,6, +7,49,6,39,38,39,38,55,19,54,55,54,23,22,23,22,7,3,19,22,23,49,22,7,3,6,7,6,39,38,39,38, +55,19,54,55,54,23,49,51,50,23,49,22,21,17,20,7,6,35,34,39,38,53,17,52,55,54,51,49,62,4,12,11, +13,13,6,5,4,128,4,12,11,13,13,6,5,4,128,199,14,7,7,1,64,3,10,11,13,14,7,7,1,64,3,10, +11,13,91,14,9,9,9,9,14,14,9,9,9,9,14,10,13,6,5,4,4,12,11,13,1,128,13,6,5,4,4,12, +11,13,254,128,1,170,3,10,11,13,254,128,14,7,7,1,3,10,11,13,1,128,14,7,7,1,9,9,14,254,128,14, +9,9,9,9,14,1,128,14,9,9,0,0,0,4,0,0,255,192,2,0,1,192,0,31,0,49,0,80,0,93,0,0, +23,38,39,49,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,21,6,7,21,6,7,6,35,34,39,49, +55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,22,23,49,22,23,21,50,23,22,29,1,20,7, +6,43,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,168,27, +40,39,30,30,2,2,54,54,82,73,52,52,13,41,26,26,1,30,2,23,17,10,14,14,10,24,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,208,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34, +14,9,9,64,9,9,14,51,33,56,55,59,59,45,82,54,54,2,2,44,45,71,7,30,30,43,25,18,37,95,31,21, +12,12,243,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,1,22,23,34,48,9,9,14,128,14,9,9, +9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48,48,14,9,9,0,0,0,0,5,0,0,255,224,2,64, +1,160,0,69,0,73,0,78,0,87,0,97,0,0,1,22,23,49,22,23,49,22,23,21,48,49,48,49,6,7,6,7, +35,23,22,7,6,47,1,35,7,6,39,38,63,1,35,7,6,39,38,63,1,39,7,6,39,38,55,19,54,23,22,31, +1,55,54,23,22,31,1,51,50,23,38,39,38,39,35,38,39,54,55,51,23,51,39,7,39,7,51,55,39,23,54,55, +38,39,6,7,22,23,37,51,7,38,39,54,55,54,55,49,1,72,69,56,56,33,33,1,1,23,22,34,12,25,9,18, +20,13,39,81,47,14,20,17,11,30,75,52,14,19,17,12,40,43,79,15,19,16,12,240,9,13,13,6,22,41,8,14, +13,6,42,64,15,14,14,54,53,76,16,22,2,2,22,16,4,48,17,31,74,33,48,2,17,238,15,1,1,15,15,1, +1,15,254,105,38,78,16,1,1,16,16,24,1,160,1,33,33,56,56,69,40,34,23,22,1,44,20,13,9,18,68,70, +17,11,14,20,42,70,17,12,14,19,55,17,101,16,12,15,19,1,48,10,1,2,13,50,55,11,1,2,13,97,5,72, +46,45,2,2,22,22,2,208,41,41,41,41,2,39,137,1,15,15,1,1,15,15,1,96,97,16,24,24,16,16,1,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,47,0,0,37,6,7,23,22,21,20,7,6,35,34,47,1,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,39,38,7,6,31,1,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1, +1,160,1,40,128,9,9,10,13,13,10,126,53,70,88,59,59,2,2,59,59,88,88,59,59,2,176,16,17,14,14,31, +118,22,2,2,22,118,31,14,14,17,16,72,15,15,72,240,70,53,126,10,13,13,10,9,9,128,40,1,2,59,59,88, +88,59,59,2,2,59,59,88,89,14,14,17,16,32,2,22,22,2,31,17,16,15,15,72,16,17,72,0,0,4,0,0, +255,192,2,0,1,192,0,26,0,37,0,48,0,59,0,0,37,6,7,23,22,21,20,7,6,35,34,47,1,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,5,22,23,54,55,53,38,39,6,7,21,51,22,23,54,55,53,38,39,6,7, +21,51,22,23,54,55,53,38,39,6,7,21,1,160,1,40,128,9,9,10,13,13,10,126,53,70,88,59,59,2,2,59, +59,88,88,59,59,2,254,200,2,22,22,2,2,22,22,2,80,2,22,22,2,2,22,22,2,80,2,22,22,2,2,22, +22,2,240,70,53,126,10,13,13,10,9,9,128,40,1,2,59,59,88,88,59,59,2,2,59,59,88,72,22,2,2,22, +64,22,2,2,22,64,22,2,2,22,160,22,2,2,22,160,22,2,2,22,96,22,2,2,22,96,0,0,0,3,0,3, +255,192,2,127,1,192,0,75,0,93,0,128,0,0,1,50,23,49,22,29,1,20,7,6,35,34,39,38,39,53,7,22, +21,6,7,6,7,21,51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,39,53,35,34,39,38,39,54, +55,54,59,1,53,38,39,38,39,54,55,54,55,22,23,55,35,34,39,38,39,54,55,54,59,1,7,6,7,49,6,7, +22,23,22,23,54,55,54,55,38,39,38,47,1,55,6,7,6,7,22,23,6,47,1,7,6,39,38,63,1,39,38,39, +38,63,1,39,38,55,54,31,1,55,54,51,50,31,1,2,95,14,9,9,9,9,14,13,9,9,1,35,19,1,35,35, +57,16,14,9,9,9,9,14,16,9,9,14,13,9,9,1,16,13,9,9,1,1,9,9,13,16,56,35,36,1,2,45, +46,67,57,42,33,20,13,9,9,1,1,9,9,13,96,208,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41, +179,60,33,20,19,1,2,41,9,6,60,58,8,9,10,1,5,78,11,3,1,8,66,40,5,6,7,11,76,29,5,9, +12,4,29,1,192,9,9,14,88,14,9,9,9,9,14,11,37,35,43,59,43,42,13,19,9,9,14,14,9,9,16,14, +9,9,9,9,14,16,9,9,14,14,9,9,19,13,42,43,59,68,45,45,2,1,32,33,9,9,14,14,9,9,128,1, +27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,36,18,26,39,39,46,69,51,2,6,54,54,7,4,5,11,79, +13,2,10,10,7,45,69,9,9,8,3,23,74,11,11,74,0,4,0,0,255,192,2,128,1,160,0,54,0,68,0,82, +0,95,0,0,1,22,23,49,22,23,51,22,23,22,23,21,6,7,6,15,1,6,7,53,54,55,52,39,38,39,38,39, +6,7,6,7,6,21,22,23,21,38,47,1,38,39,38,39,53,54,55,54,55,51,54,55,54,55,49,5,6,7,21,20, +23,22,31,1,38,39,54,55,35,33,22,23,20,7,55,54,55,54,61,1,38,39,35,7,52,55,49,54,51,50,23,22, +29,1,35,53,1,64,39,35,34,27,129,24,16,15,1,1,24,25,41,71,37,57,31,1,13,13,22,21,27,27,21,22, +13,13,1,31,59,35,71,41,25,24,1,1,15,16,24,129,26,35,34,40,254,248,7,1,15,15,25,31,6,1,1,31, +103,1,169,30,1,6,32,24,15,15,1,7,103,193,9,9,14,14,9,9,64,1,160,1,27,26,42,1,15,16,24,85, +42,32,32,11,17,47,20,77,25,42,25,32,31,23,23,1,1,23,23,31,32,25,42,25,77,20,47,17,11,32,32,42, +85,24,16,15,1,42,26,27,1,144,1,7,85,25,19,19,7,8,22,24,57,68,68,57,24,22,8,7,19,19,25,85, +7,1,144,14,9,9,9,9,14,192,192,0,0,3,0,0,0,0,2,128,1,128,0,12,0,34,0,47,0,0,37,35, +38,39,38,39,17,54,55,54,55,51,17,39,20,23,49,22,59,1,50,55,54,61,1,52,39,38,43,1,34,7,6,29, +1,19,33,22,23,22,23,17,6,7,6,7,33,17,1,0,192,27,18,18,1,1,18,18,27,192,192,9,9,14,64,14, +9,9,9,9,14,64,14,9,9,224,1,32,27,18,18,1,1,18,18,27,254,224,0,1,18,18,27,1,0,27,18,18, +1,254,128,96,14,9,9,9,9,14,192,14,9,9,9,9,14,192,1,32,1,18,18,27,255,0,27,18,18,1,1,128, +0,9,0,0,255,192,1,64,1,192,0,21,0,34,0,43,0,52,0,61,0,70,0,79,0,88,0,99,0,0,19,54, +55,49,54,55,51,22,23,22,23,17,6,7,6,7,35,38,39,38,39,17,23,22,23,51,54,55,53,38,39,35,6,7, +21,23,54,55,38,39,6,7,22,23,21,6,7,22,23,54,55,38,39,55,54,55,38,39,6,7,22,23,21,6,7,22, +23,54,55,38,39,55,54,55,38,39,6,7,22,23,21,6,7,22,23,54,55,38,39,3,6,7,22,23,51,54,55,38, +39,35,0,1,18,18,27,192,27,18,18,1,1,18,18,27,192,27,18,18,1,64,2,22,144,22,2,2,22,144,22,2, +16,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,80,22,2,2,22,22,2,2,22,22,2,2,22,22,2, +2,22,80,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,112,15,1,1,15,64,15,1,1,15,64,1,128, +27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,168,22,2,2,22,80,22,2,2,22,80,120, +2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2, +22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,1,80,1,15,15,1,1,15,15,1,0, +0,6,0,0,255,193,2,128,1,192,0,23,0,47,0,93,0,101,0,108,0,126,0,0,1,54,31,1,22,21,20,15, +1,6,39,38,63,1,35,38,39,54,63,1,39,38,55,49,1,7,55,22,23,6,15,1,23,22,7,6,47,1,38,53, +52,63,1,54,23,22,7,49,3,51,6,21,22,23,22,59,1,22,23,22,23,22,51,50,63,1,21,6,7,6,7,35, +54,53,52,39,38,39,7,38,39,38,39,38,35,34,15,1,53,54,55,54,55,49,21,54,55,49,54,55,35,21,5,53, +6,7,6,7,51,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,2,23,17,16,64,8,8,64,16, +17,14,14,23,174,22,2,2,22,174,23,14,14,254,81,22,173,23,1,1,23,173,22,15,15,16,17,64,7,7,64,17, +16,15,15,9,243,6,1,14,15,22,97,6,22,3,3,16,21,21,16,19,1,18,18,27,242,5,15,14,23,96,6,22, +3,3,16,21,21,16,20,1,18,18,27,28,18,17,1,64,1,193,27,18,18,1,64,225,42,27,27,1,1,27,27,42, +41,27,27,1,1,27,27,41,1,185,14,14,64,7,10,10,6,64,15,15,16,17,24,2,21,22,2,1,22,17,17,254, +143,24,1,3,21,23,1,1,23,17,16,15,15,64,6,11,9,7,64,14,14,17,16,1,56,11,12,23,14,15,28,15, +4,3,15,15,19,214,27,18,18,1,11,14,21,15,15,1,1,27,15,4,3,15,15,20,215,27,18,18,1,128,1,18, +18,27,64,192,64,1,18,18,27,32,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,0,7,0,0, +255,192,2,0,1,192,0,50,0,72,0,79,0,86,0,94,0,102,0,120,0,0,1,22,23,22,21,22,21,49,21,20, +7,6,35,34,39,38,61,1,7,6,35,34,47,1,7,6,39,38,39,38,55,54,63,1,54,31,1,55,35,34,39,38, +53,52,55,54,59,1,50,23,49,1,54,55,49,54,55,33,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,23, +51,38,39,38,39,21,53,21,54,55,54,55,35,5,6,7,49,6,7,51,53,39,22,23,49,22,23,53,35,7,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,215,4,3,1,1,9,9,14,14,9,9,105,10,12,12,10, +92,90,11,12,13,9,9,1,1,10,112,21,21,89,85,19,14,9,9,9,9,14,95,15,9,254,41,1,13,14,20,1, +160,20,14,13,1,1,13,14,20,254,96,20,14,13,1,48,48,1,13,14,20,20,14,13,1,48,1,160,20,14,13,1, +48,48,1,13,14,20,48,160,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,183,5,6,3,4,3,2, +96,14,9,9,9,9,14,19,106,9,8,78,78,9,1,1,10,11,12,13,9,96,16,16,76,84,9,9,14,14,9,9, +9,254,217,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,160,160,20,14,13,1,48,160,48,1,13,14, +20,112,1,13,14,20,48,112,20,14,13,1,48,16,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0, +0,15,0,0,255,192,2,0,1,192,0,12,0,23,0,34,0,45,0,58,0,71,0,84,0,97,0,110,0,132,0,139, +0,146,0,154,0,162,0,180,0,0,1,6,7,38,39,38,39,54,55,22,23,22,23,39,22,23,6,7,35,38,39,54, +55,51,23,22,23,6,7,35,38,39,54,55,51,7,54,55,51,22,23,6,7,35,38,39,55,54,55,22,23,22,23,6, +7,38,39,38,39,23,6,7,38,39,38,39,54,55,22,23,22,23,7,38,39,54,55,54,55,22,23,6,7,6,7,39, +22,23,6,7,6,7,38,39,54,55,54,55,7,38,39,54,55,54,55,22,23,6,7,6,15,1,54,55,49,54,55,33, +22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,23,51,38,39,38,39,21,53,21,54,55,54,55,35,5,6,7, +49,6,7,51,53,39,22,23,49,22,23,53,35,7,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1, +0,1,15,34,23,22,1,1,15,34,23,22,1,152,22,2,2,22,48,22,2,2,22,48,32,22,2,2,22,112,22,2, +2,22,112,104,2,22,48,22,2,2,22,48,22,2,240,1,15,34,23,22,1,1,15,34,23,22,1,208,1,15,34,23, +22,1,1,15,34,23,22,1,80,15,1,1,22,23,34,15,1,1,22,23,34,48,15,1,1,22,23,34,15,1,1,22, +23,34,176,15,1,1,22,23,34,15,1,1,22,23,34,176,1,13,14,20,1,160,20,14,13,1,1,13,14,20,254,96, +20,14,13,1,48,48,1,13,14,20,20,14,13,1,48,1,160,20,14,13,1,48,48,1,13,14,20,48,160,27,18,18, +1,1,18,18,27,27,18,18,1,1,18,18,27,1,112,15,1,1,22,23,34,15,1,1,22,23,34,64,2,22,22,2, +2,22,22,2,72,2,22,22,2,2,22,22,2,96,22,2,2,22,22,2,2,22,168,15,1,1,22,23,34,15,1,1, +22,23,34,64,15,1,1,22,23,34,15,1,1,22,23,34,144,1,15,34,23,22,1,1,15,34,23,22,1,96,1,15, +34,23,22,1,1,15,34,23,22,1,96,1,15,34,23,22,1,1,15,34,23,22,1,80,20,14,13,1,1,13,14,20, +160,20,14,13,1,1,13,14,20,160,160,20,14,13,1,48,160,48,1,13,14,20,112,1,13,14,20,48,112,20,14,13, +1,48,16,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0,1,0,0,255,192,2,128,1,192,0,105, +0,0,5,39,38,61,1,39,21,20,7,6,7,38,39,38,39,53,7,21,20,15,1,6,39,38,63,1,53,52,63,1, +49,7,6,39,38,39,38,39,54,55,54,63,1,39,38,63,1,39,38,55,54,31,1,22,15,1,23,53,54,55,53,54, +55,22,29,1,22,23,21,55,39,38,63,1,54,23,22,15,1,23,22,15,1,23,22,23,22,23,6,7,6,7,6,47, +1,49,23,22,29,1,23,22,7,6,39,49,1,174,48,6,25,9,9,14,13,9,9,1,23,6,48,16,18,15,13,42, +6,65,132,30,36,35,27,26,1,1,22,22,34,153,40,12,8,24,39,11,16,18,15,48,9,8,22,49,2,22,1,7, +8,23,1,51,22,8,9,48,15,19,15,11,38,23,8,11,41,153,34,22,22,1,1,26,27,35,36,30,134,68,5,42, +13,15,18,16,56,56,7,9,56,31,63,13,9,9,1,1,9,9,13,63,31,56,9,7,56,15,13,16,18,49,55,9, +6,87,122,29,1,2,25,26,42,37,26,26,6,23,41,14,16,42,51,19,15,12,16,64,13,15,39,50,38,24,7,57, +7,1,1,7,57,7,24,38,50,39,15,13,64,16,12,15,19,51,42,16,14,41,23,6,26,26,37,42,26,25,2,1, +29,122,87,6,9,55,49,18,16,13,15,0,0,6,0,0,255,193,2,128,1,191,0,105,0,187,0,192,0,197,0,202, +0,207,0,0,23,38,63,1,53,54,63,1,53,7,6,39,38,39,38,39,54,55,54,63,1,39,38,63,1,39,38,55, +54,31,1,22,15,1,23,53,54,55,53,54,51,50,29,1,22,23,21,55,39,38,63,1,54,23,22,15,1,23,22,15, +1,23,22,23,6,7,38,39,6,7,38,39,34,7,6,7,6,7,39,21,23,20,21,22,23,6,7,39,21,20,7,6, +7,38,39,38,39,53,7,21,20,15,1,6,39,49,37,22,23,21,51,53,54,55,22,23,21,51,22,23,6,7,35,21, +51,22,23,6,7,35,21,51,22,23,6,7,35,21,6,7,38,39,53,35,21,6,7,38,39,53,35,21,6,7,38,39, +53,35,38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,51,53,54,55,22,23,21,51,53,54,55,49, +23,53,35,21,51,21,53,35,21,51,39,21,51,53,35,29,1,51,53,35,169,13,6,29,1,5,58,116,27,32,32,23, +24,1,1,19,20,31,160,49,8,3,14,29,6,13,14,7,32,3,2,12,44,2,23,1,6,9,22,1,46,12,2,3, +32,7,14,13,6,29,14,3,8,49,160,34,20,4,3,14,26,26,14,14,26,17,12,12,5,16,10,41,33,1,21,7, +4,44,9,9,14,13,9,9,1,31,2,32,7,14,1,87,15,1,48,1,15,15,1,16,15,1,1,15,16,16,15,1, +1,15,16,16,15,1,1,15,16,1,15,15,1,48,1,15,15,1,48,1,15,15,1,16,15,1,1,15,16,16,15,1, +1,15,16,16,15,1,1,15,16,1,15,15,1,48,1,15,64,48,48,48,48,128,48,48,48,48,14,7,14,61,45,5, +5,60,23,101,26,1,1,22,22,37,31,23,22,4,24,42,7,10,42,58,14,7,6,13,64,6,6,38,38,23,24,8, +42,8,8,42,8,24,23,38,38,6,6,64,13,6,7,14,58,42,10,7,42,24,5,26,4,5,21,2,2,21,21,2, +10,10,15,5,14,35,23,33,3,2,28,12,5,6,43,50,13,9,9,1,1,9,9,13,50,32,40,5,3,64,13,6, +207,2,14,16,16,14,2,2,14,16,2,14,15,1,48,2,14,15,1,48,2,14,15,1,16,15,1,1,15,16,16,15, +1,1,15,16,16,15,1,1,15,16,1,15,14,2,48,1,15,14,2,48,1,15,14,2,16,14,2,2,14,16,16,14, +2,112,48,48,80,48,48,128,48,48,80,48,48,0,0,0,0,1,0,31,0,32,2,32,1,96,0,20,0,0,19,54, +55,49,54,51,50,23,22,31,1,22,7,6,7,33,38,39,38,63,1,144,23,38,38,45,45,38,38,23,108,9,9,8, +19,254,62,19,8,9,9,108,1,13,39,22,22,22,22,39,189,17,15,15,1,1,15,15,17,189,0,0,0,7,0,0, +255,192,2,128,1,192,0,47,0,60,0,73,0,86,0,99,0,115,0,121,0,0,1,22,23,49,22,23,21,51,53,54, +55,22,23,21,51,22,23,22,23,21,6,7,6,7,35,48,55,48,55,54,47,1,51,54,55,53,38,39,35,34,7,39, +53,54,55,54,55,51,7,6,7,21,22,23,51,54,55,53,38,39,35,7,22,23,51,54,55,53,38,39,35,6,7,21, +23,22,23,51,54,55,53,38,39,35,6,7,21,23,6,7,21,22,23,51,54,55,53,38,39,35,7,22,7,6,7,33, +38,39,38,55,19,54,55,22,23,19,3,7,23,55,51,39,1,176,20,14,13,1,40,2,22,22,2,24,20,14,13,1, +1,13,14,20,122,1,1,17,19,73,3,15,1,1,15,32,5,4,71,1,13,14,20,96,64,15,1,1,15,32,15,1, +1,15,32,16,1,15,32,15,1,1,15,32,15,1,160,1,15,32,15,1,1,15,32,15,1,16,15,1,1,15,32,15, +1,1,15,32,85,10,9,11,19,254,132,20,10,9,10,190,9,20,19,10,190,220,73,24,48,62,61,1,192,1,13,14, +20,144,72,22,2,2,22,72,1,13,14,20,224,20,14,13,1,1,1,34,34,122,1,15,32,15,1,3,119,92,20,14, +13,1,64,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1, +1,15,32,48,1,15,32,15,1,1,15,32,15,1,107,17,18,17,1,1,17,18,17,1,58,16,1,1,16,254,198,1, +14,122,41,64,99,0,0,0,0,2,0,0,255,192,2,128,1,192,0,17,0,44,0,0,1,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,1,52,55,19,54,55,22,31,1,55,54,51,50,31,1,22,21,6,7,6,7,33, +38,39,38,39,49,1,224,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,254,32,9,216,11,20,20,11,126, +48,6,13,12,7,132,9,1,17,17,26,253,245,24,16,15,1,1,112,34,23,22,1,1,22,23,34,34,23,22,1,1, +22,23,34,254,136,16,14,1,89,16,1,1,16,201,79,11,11,216,15,17,26,17,17,1,1,16,16,23,0,2,0,0, +255,192,2,64,1,189,0,65,0,70,0,0,37,22,7,49,6,15,1,6,39,38,47,1,5,21,51,63,1,7,51,39, +55,23,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,17,54,55,22,23,21,63,1,54,55,22, +31,1,55,39,38,55,54,63,1,54,23,22,31,1,5,51,39,35,7,2,58,8,16,16,33,15,13,12,11,3,26,254, +174,42,53,74,25,66,27,62,67,137,14,9,9,9,9,14,254,0,14,9,9,9,9,14,16,2,22,22,2,132,14,8, +22,22,8,7,108,25,3,6,7,13,15,33,28,28,9,42,254,147,134,11,112,11,232,33,28,27,10,4,3,6,7,13, +94,88,159,152,20,76,78,16,190,9,9,14,14,9,9,9,9,14,14,9,9,1,8,22,2,2,22,39,35,39,20,1, +1,20,19,28,92,13,11,11,4,4,8,16,16,32,155,232,32,32,0,0,0,10,0,0,255,224,2,128,1,160,0,17, +0,45,0,51,0,78,0,84,0,102,0,120,0,150,0,156,0,162,0,0,19,6,7,49,6,7,38,39,38,39,54,55, +54,55,22,23,22,31,1,6,7,20,23,21,20,7,6,43,1,34,39,38,61,1,38,39,38,53,54,55,54,55,51,22, +23,49,7,6,7,22,23,53,5,53,54,55,38,39,54,55,51,22,23,22,23,20,7,6,7,21,20,7,6,43,1,34, +39,38,53,55,54,55,38,39,21,39,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,23,20,7,49,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39, +38,53,54,55,54,55,51,22,23,22,23,7,53,6,7,22,23,55,21,54,55,38,39,184,1,15,16,24,24,16,15,1, +1,15,16,24,24,16,15,1,24,46,2,32,9,9,14,64,14,9,9,29,17,18,1,32,31,48,32,36,28,144,15,1, +1,15,1,128,31,1,2,46,27,37,32,48,31,32,1,18,17,29,9,9,14,64,14,9,9,128,15,1,1,15,8,1, +15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,254,200,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18, +1,192,18,17,29,9,9,14,64,14,9,9,29,17,18,1,32,31,48,32,48,31,32,1,192,15,1,1,15,128,15,1, +1,15,1,104,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,108,42,66,52,39,21,14,9,9,9,9,14, +27,14,26,27,34,48,31,32,1,1,19,50,17,25,25,17,84,170,21,39,52,66,42,19,1,1,32,31,48,34,27,26, +14,27,14,9,9,9,9,14,86,17,25,25,17,84,242,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,8, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,208,34,27,26,14,43,14,9,9,9,9,14,43,14,26,27, +34,48,31,32,1,1,32,31,48,42,84,17,25,25,17,84,84,17,25,25,17,0,0,0,0,5,0,0,255,224,2,128, +1,160,0,17,0,35,0,55,0,73,0,165,0,0,1,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +5,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,5,50,23,49,22,21,20,7,6,35,33,34,39,38, +53,52,55,54,51,33,39,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,5,20,7,49,6,43,1,34, +39,38,61,1,7,6,39,38,63,1,54,55,54,59,1,50,23,55,54,55,54,59,1,50,23,22,31,1,54,59,1,50, +23,22,31,1,22,7,6,47,1,21,20,7,6,43,1,34,39,38,61,1,7,6,39,38,63,1,38,47,1,21,20,7, +6,43,1,34,39,38,39,53,7,6,7,6,7,23,22,7,6,47,1,23,1,104,12,11,17,17,11,12,12,11,17,17, +11,12,255,0,12,11,17,17,11,12,12,11,17,17,11,12,1,248,14,9,9,9,9,14,253,192,14,9,9,9,9,14, +2,64,152,12,11,17,17,11,12,12,11,17,17,11,12,255,0,9,9,14,48,14,9,9,27,12,20,19,9,38,12,20, +21,24,20,25,20,34,12,20,21,24,20,24,21,20,12,34,20,25,20,24,21,20,12,38,9,19,20,12,27,9,9,14, +48,14,9,9,27,12,20,19,9,36,2,2,27,9,9,14,49,13,9,9,1,26,1,1,1,1,36,9,19,20,12,28, +1,1,120,17,11,12,12,11,17,17,11,12,12,11,17,96,17,11,12,12,11,17,17,11,12,12,11,17,248,9,9,14, +14,9,9,9,9,14,14,9,9,248,17,11,12,12,11,17,17,11,12,12,11,17,184,14,9,9,9,9,14,38,49,19, +9,12,20,71,21,13,12,13,63,21,13,12,12,13,21,63,13,12,13,21,71,20,12,9,19,49,38,14,9,9,9,9, +14,38,49,19,9,12,20,68,2,4,49,54,14,9,9,9,9,14,54,49,2,1,2,1,68,20,12,9,19,49,38,0, +0,4,0,0,255,192,2,63,1,192,0,18,0,109,0,128,0,147,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,49,23,50,31,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47, +1,7,23,22,31,1,22,7,6,7,6,39,38,47,2,38,63,1,6,35,34,21,7,6,15,1,6,39,6,47,1,19, +22,7,6,7,6,39,38,47,1,35,23,22,7,6,7,6,39,38,47,1,6,35,34,39,38,61,1,54,55,54,55,23, +37,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,49,3,23,7,6,15,1,6,35,34,39,38,53,52, +63,2,22,23,49,32,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,86,19,18,134,20,34,11,31,35,34, +27,27,14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71, +23,9,17,1,1,1,11,24,10,1,10,21,6,5,119,58,3,7,7,13,13,11,11,3,30,16,21,1,7,7,14,13, +11,10,3,24,9,15,14,9,9,1,18,18,27,54,1,42,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +59,40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,80,7,56,30,14,5,14,19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16,23,65,54,9,12,92,14, +10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,11,24,4,20,1,1,2,50,254,251,13,11,11,3,3,7,7, +13,135,123,13,11,10,3,1,7,7,14,144,11,9,10,14,128,26,19,18,1,1,80,20,14,13,1,1,13,14,20,20, +14,13,1,1,13,14,20,254,216,45,36,9,7,62,9,9,10,13,13,10,59,62,4,4,0,4,0,8,255,192,2,47, +1,192,0,54,0,73,0,92,0,137,0,0,1,54,55,49,54,23,22,23,22,15,1,6,7,17,20,7,6,35,34,39, +38,61,1,35,21,20,7,6,35,34,39,38,53,17,38,47,1,38,55,54,55,54,23,22,31,1,22,23,22,51,50,55, +54,63,1,7,54,55,49,54,55,22,23,22,23,6,7,6,35,34,39,38,39,49,5,54,55,49,54,55,22,23,22,23, +6,7,6,7,38,39,38,39,49,23,22,31,1,51,50,23,22,21,20,7,6,43,1,34,47,1,21,20,7,6,35,34, +39,38,61,1,35,21,20,7,6,35,34,39,38,61,3,54,55,54,55,23,1,240,4,11,12,13,13,6,7,3,9,19, +59,9,9,14,14,9,9,16,9,9,14,14,9,9,59,19,10,2,6,7,13,14,10,11,4,9,8,24,24,32,32,24, +24,8,8,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,192,1,13,14,20,20,14,13,1,1,13, +14,20,20,14,13,1,73,43,24,38,30,14,9,9,9,9,14,48,17,11,12,9,9,14,14,9,9,16,9,9,14,14, +9,9,1,18,18,27,33,1,168,13,6,7,3,4,11,10,14,35,67,32,254,206,14,9,9,9,9,14,128,128,14,9, +9,9,9,14,1,50,32,67,35,14,10,11,4,3,7,6,13,35,31,18,19,19,18,31,35,23,20,13,13,1,1,13, +13,20,21,13,14,14,13,21,1,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,1,36,59,9,9,14, +14,9,9,15,20,227,14,9,9,9,9,14,128,128,14,9,9,9,9,14,191,2,96,26,19,18,1,1,0,5,0,0, +255,192,2,127,1,192,0,23,0,41,0,60,0,78,0,170,0,0,1,22,23,49,22,7,6,7,6,39,37,5,6,39, +38,39,38,55,54,55,37,54,23,13,1,54,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,39,7,54,55,49, +54,51,50,23,22,21,20,7,6,35,34,39,38,39,49,33,20,7,49,6,35,34,39,38,39,54,55,54,51,50,23,22, +21,5,39,21,20,7,6,43,1,34,39,38,39,53,7,6,39,38,63,1,54,55,54,59,1,50,23,55,54,55,54,59, +1,50,23,22,31,1,54,59,1,50,23,22,31,1,22,7,6,47,1,21,20,7,6,43,1,34,39,38,39,53,7,6, +39,38,63,1,38,47,1,21,20,7,6,43,1,34,39,38,39,53,7,6,7,6,7,23,22,7,6,39,49,2,112,11, +3,4,7,6,12,12,12,254,238,254,241,13,12,12,7,6,3,4,11,1,33,15,16,1,32,254,167,1,11,12,16,18, +11,11,11,11,18,16,12,11,1,176,1,11,12,16,18,11,11,11,11,18,16,12,11,1,1,176,11,11,18,16,12,11, +1,1,11,12,16,18,11,11,254,204,28,9,9,14,48,13,9,9,1,26,12,20,19,9,38,12,20,21,24,20,25,20, +34,12,20,21,24,20,24,21,20,12,34,20,25,20,24,21,20,12,38,9,19,20,12,28,9,9,14,48,13,9,9,1, +26,12,20,19,9,36,2,2,28,9,9,14,48,13,9,9,1,26,1,1,1,1,36,9,19,20,12,1,28,7,12,12, +13,11,3,4,7,150,150,7,4,3,11,13,12,12,7,160,8,8,160,36,17,11,12,12,11,17,17,11,12,12,11,17, +96,17,11,12,12,11,17,17,11,12,12,11,17,17,11,12,12,11,17,17,11,12,12,11,17,195,49,38,14,9,9,9, +9,14,38,49,19,9,12,20,71,21,13,12,13,63,21,13,13,13,13,21,63,13,12,13,21,71,20,12,9,19,49,38, +14,9,9,9,9,14,38,49,19,9,12,20,68,2,4,49,54,14,9,9,9,9,14,54,49,2,1,2,1,68,20,12, +9,19,0,0,0,4,0,0,255,192,2,128,1,192,0,17,0,68,0,73,0,109,0,0,19,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,15,1,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22, +7,6,7,6,39,38,47,1,21,33,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,53,23,53,35, +21,51,55,38,53,49,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20,15, +1,6,35,34,47,1,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,24,29,7,12,13,11,12,3,3, +7,58,13,22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,29,1,88,14,9,9,9,9,14,253,192,14, +9,9,9,9,14,88,80,16,16,193,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13,13,10,9,9,80,10, +13,13,10,80,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,209,48,11,3,3,7,7,12,13,11, +97,22,13,12,12,13,22,97,11,13,12,7,7,3,3,11,48,191,9,9,14,14,9,9,9,9,14,14,9,9,191,191, +96,96,121,10,13,13,10,9,9,26,243,14,9,9,9,9,14,243,26,9,9,10,13,13,10,80,9,9,80,0,0,0, +0,4,0,0,255,192,2,128,1,192,0,17,0,68,0,73,0,109,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,15,1,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22,7,6,7,6, +39,38,47,1,21,33,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,53,23,53,35,21,51,1,22, +21,49,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,54,51,50, +31,1,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,24,29,7,12,13,11,12,3,3,7,58,13,22, +21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,29,1,88,14,9,9,9,9,14,253,192,14,9,9,9,9, +14,88,80,16,16,1,143,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13,13,10,9,9,80,10,13,13,10, +80,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,209,48,11,3,3,7,7,12,13,11,97,22,13, +12,12,13,22,97,11,13,12,7,7,3,3,11,48,191,9,9,14,14,9,9,9,9,14,14,9,9,191,191,96,96,1, +71,10,13,13,10,9,9,26,243,14,9,9,9,9,14,243,26,9,9,10,13,13,10,80,9,9,80,0,0,3,0,0, +255,192,1,191,1,192,0,17,0,84,0,102,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39, +1,7,6,7,6,39,38,39,38,55,35,38,39,53,52,39,38,35,34,7,6,29,1,20,21,23,22,23,22,7,6,7, +6,47,1,48,35,38,35,38,39,38,39,38,55,54,55,48,49,55,54,55,54,59,1,50,23,22,31,1,22,23,22,7, +22,7,49,39,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,144,1,22,23,34,34,23,22,1,1,22, +23,34,34,23,22,1,1,37,63,14,19,19,16,13,4,3,7,1,60,40,9,9,14,14,9,9,102,18,6,6,9,10, +18,18,18,160,1,1,1,7,6,7,2,5,9,1,1,68,20,31,32,36,76,35,30,31,21,51,3,2,5,2,1,11, +161,19,12,13,13,12,19,19,12,13,13,12,19,1,112,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254, +209,78,16,3,2,12,12,15,16,15,10,45,37,14,9,9,9,9,14,48,1,1,51,10,18,18,19,18,6,6,9,80, +1,5,7,7,10,19,18,1,2,101,30,17,17,16,16,28,71,5,5,10,11,16,13,95,13,12,19,19,12,13,13,12, +19,19,12,13,0,3,0,3,255,192,2,127,1,192,0,17,0,70,0,110,0,0,1,54,55,49,54,55,22,23,22,21, +20,7,6,7,38,39,38,39,19,34,39,49,38,39,53,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23, +22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,39,53,35,21,20,7,6,35,49,3,55,54, +23,22,15,1,23,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,39,38,63,1,39,38,55,54,31,1,55, +54,51,50,31,1,1,175,1,14,13,20,21,13,14,14,13,21,20,13,14,1,8,13,9,9,1,28,7,12,13,11,12, +3,3,7,58,13,22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,30,9,9,14,13,9,9,1,16,9, +9,14,219,76,11,7,6,6,38,55,25,50,5,1,10,9,8,60,58,8,9,10,1,5,78,11,3,1,8,66,40,5, +6,7,11,76,29,5,9,12,4,29,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,48,9,9, +14,223,48,11,3,3,7,7,12,13,11,97,22,13,12,12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9, +9,9,14,128,128,14,9,9,1,164,23,3,8,9,9,69,38,41,8,79,11,5,4,7,54,54,7,4,5,11,79,13, +2,10,10,7,45,69,9,9,8,3,23,74,11,11,74,0,0,3,0,0,255,192,1,128,1,192,0,17,0,67,0,92, +0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,20,7,49,6,35,34,39,38,61,1,35, +21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,22,31,1,22,7,6,7, +6,39,38,47,1,21,55,6,7,38,39,53,54,55,54,55,22,23,22,23,21,6,7,38,39,53,38,39,6,7,21,240, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,8,9,9,14,14,9,9,16,9,9,14,14,9,9,29,7, +12,13,11,12,3,3,7,58,13,22,21,26,36,45,29,74,8,1,1,11,10,13,13,9,47,88,2,22,22,2,1,15, +16,24,24,16,15,1,2,22,22,2,1,7,7,1,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +254,80,14,9,9,9,9,14,128,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22,13,12,1,34, +89,10,13,13,9,8,1,1,11,57,245,96,22,2,2,22,8,24,16,15,1,1,15,16,24,112,22,2,2,22,112,7, +1,1,7,8,0,2,0,32,255,192,2,128,1,192,0,17,0,93,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,19,34,39,49,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,53,54,55,54, +55,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,51,21,51,53,35,21,51,50,23,22,21,20,7,6,43, +1,17,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,49,144,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,8,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,143,1,13,14,20,224,20,14,13,1,1, +13,14,20,224,20,14,13,1,64,192,192,16,14,9,9,9,9,14,136,9,9,14,14,9,9,16,9,9,14,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,48,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22, +13,12,80,20,14,13,1,1,13,14,20,224,20,14,13,1,1,13,14,20,48,32,192,64,9,9,14,14,9,9,254,224, +14,9,9,9,9,14,128,128,14,9,9,0,0,4,0,0,255,192,2,64,1,192,0,17,0,66,0,84,0,100,0,0, +19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7, +6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38,49,38,47,1,21,20,7,6,35,34,39,38, +61,1,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1, +54,39,38,7,49,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12, +13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,1,168, +2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1, +144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7, +7,12,13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2, +40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,0,5,0,0, +255,192,2,64,1,192,0,17,0,66,0,84,0,93,0,104,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23, +22,31,1,6,7,38,49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,208,1,13,14,20, +20,14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21, +26,30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41, +61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,144,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22,13,12, +12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2,40,41,61,61,41,40,2,2, +40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,4,0,0,255,192,2,64, +1,192,0,17,0,66,0,84,0,95,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21, +20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38, +49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22, +23,39,35,6,7,22,23,51,54,55,38,39,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9, +14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,45,25,11,1,3,1,29,9,9, +14,14,9,9,16,1,168,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,80,128,15,1,1,15,128,15,1, +1,15,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11, +3,3,7,7,12,13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41, +40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,2,14,15,1,1,15,14,2,0,0,4,0,0,255,192,2,64, +1,192,0,17,0,66,0,84,0,109,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21, +20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38, +49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,55,38,39,6,7,21,35,6,7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,208,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26, +30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41,61, +61,41,40,2,160,1,15,15,1,48,15,1,1,15,48,1,15,15,1,48,15,1,1,15,48,1,144,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22, +13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,65,14,2,2,14,48,2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,0,5,0,0, +255,192,2,64,1,192,0,17,0,66,0,84,0,93,0,128,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23, +22,31,1,6,7,38,49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,22,23,54,55,53,54,55,51,22,23,20,15,1,6,29, +1,22,23,54,55,53,55,54,55,52,39,38,43,1,34,7,6,29,1,208,1,13,14,20,20,14,13,1,1,13,14,20, +20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,45,25, +11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2, +2,22,22,2,2,22,64,1,15,15,1,1,9,40,13,1,7,32,9,1,15,15,1,24,23,1,13,13,20,40,18,12, +12,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3, +3,7,7,12,13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40, +2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,136,15,1,1,15,6,9,1,1,13, +8,4,17,5,9,15,15,1,1,15,5,12,15,26,20,13,13,12,12,18,6,0,0,0,0,4,0,0,255,192,2,64, +1,192,0,17,0,66,0,84,0,109,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21, +20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38, +49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,208,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26, +30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41,61, +61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12, +13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2,40,41, +61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11, +37,37,0,0,0,3,0,3,255,192,2,127,1,192,0,17,0,81,0,121,0,0,1,20,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,21,3,55,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22,7, +6,7,6,39,38,47,1,23,22,7,6,43,1,21,20,7,6,35,34,39,38,39,53,35,21,20,7,6,35,34,39,38, +39,53,35,34,39,38,55,49,3,55,54,23,22,15,1,23,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38, +39,38,63,1,39,38,55,54,31,1,55,54,51,50,31,1,2,15,14,13,21,20,13,14,1,1,14,13,20,21,13,14, +152,38,34,7,12,13,11,12,3,3,7,53,16,25,25,30,12,30,25,25,16,53,7,3,3,11,12,13,12,7,34,37, +3,4,5,8,19,9,9,14,13,9,9,1,16,9,9,14,13,9,9,1,17,8,5,4,2,155,76,11,7,6,6,38, +55,25,50,5,1,10,9,8,60,58,8,9,10,1,5,78,11,3,1,8,66,40,5,6,7,11,76,29,5,9,12,4, +29,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,197,115,57,11,3,3,7,7,12,13,11,90, +25,14,15,15,14,25,90,11,13,12,7,7,3,3,11,57,115,8,6,7,96,14,9,9,9,9,14,96,96,14,9,9, +9,9,14,96,7,6,8,1,15,23,3,8,9,9,69,38,41,8,79,11,5,4,7,54,54,7,4,5,11,79,13,2, +10,10,7,45,69,9,9,8,3,23,74,11,11,74,0,0,0,3,0,0,255,224,2,63,1,160,0,45,0,63,0,117, +0,0,19,22,23,49,22,23,22,63,1,54,23,22,23,22,7,6,15,1,6,15,1,38,39,38,35,34,7,6,7,38, +39,55,38,39,38,61,1,54,55,54,51,50,23,22,29,1,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,19,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39, +6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,49,191,1,23,23,38,61,62,106, +13,11,11,3,3,7,7,13,105,16,16,17,21,19,17,20,20,17,26,33,11,12,21,29,17,17,1,9,9,13,14,9, +9,64,1,18,19,27,27,18,18,1,1,18,18,27,27,19,18,1,129,42,35,1,20,19,22,28,13,7,7,3,3,11, +12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42, +43,35,18,19,34,43,1,96,40,32,31,12,19,13,24,3,7,7,13,13,11,11,3,24,4,2,97,5,13,12,12,19, +2,1,3,146,27,35,36,41,32,14,9,9,9,9,14,32,31,27,18,18,1,1,18,18,27,28,18,17,1,1,17,18, +28,254,223,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15, +10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,0,0,0,2,0,32,255,193,1,192, +1,192,0,60,0,78,0,0,1,50,23,49,22,29,1,20,7,6,7,21,23,51,22,31,1,22,7,6,7,6,39,38, +47,1,35,23,22,7,6,7,6,39,38,47,1,6,7,21,6,7,34,39,38,39,53,54,55,54,55,54,55,54,61,1, +52,55,54,51,49,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,1,0,14,9,9,20,19,33,57, +87,24,14,44,7,1,2,11,11,13,12,9,38,97,92,7,3,2,12,11,13,12,8,160,5,1,2,30,13,9,9,1, +1,27,27,46,28,15,16,10,9,14,224,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,9,9,14, +10,41,35,35,22,1,79,1,19,58,11,12,13,9,7,1,2,11,52,144,11,13,12,8,7,3,2,12,248,14,15,73, +30,2,9,9,14,73,50,39,40,19,11,24,23,30,10,14,9,9,80,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,0,0,3,0,0,255,193,2,124,1,192,0,59,0,77,0,124,0,0,1,20,7,49,6,7,21,23,51,22, +31,1,22,7,6,7,6,39,38,47,1,35,23,22,7,6,7,6,39,38,47,1,6,7,21,6,7,34,39,38,39,53, +54,55,54,55,54,55,54,61,1,54,55,54,51,50,23,22,21,23,7,6,7,49,6,35,34,39,38,39,54,55,54,55, +22,23,22,23,5,7,38,47,1,55,39,38,39,35,20,39,48,49,38,63,1,39,38,55,54,31,1,55,54,51,50,31, +1,55,54,23,22,15,1,23,22,7,6,15,1,23,22,7,6,47,1,1,0,20,19,33,57,70,25,14,44,7,1,2, +11,11,13,12,9,39,80,92,7,3,2,12,11,13,12,8,160,5,1,2,30,13,9,9,1,1,27,27,46,28,15,16, +1,9,9,13,14,9,9,1,160,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,112,39,3,3,37,2, +18,23,32,18,1,2,9,66,40,5,6,7,11,76,29,4,11,11,4,29,76,11,7,6,6,38,65,8,1,3,11,78, +5,1,10,9,8,59,1,150,41,35,35,22,1,79,1,19,58,11,12,13,9,7,1,2,11,52,144,11,13,12,8,7, +3,2,12,248,14,15,73,30,2,9,9,14,73,50,39,40,19,11,24,23,30,10,14,9,9,9,9,14,10,37,21,13, +14,14,13,21,20,14,13,1,1,13,14,20,207,36,4,4,49,17,3,21,1,1,1,10,7,45,69,9,9,8,3,23, +74,10,10,74,23,3,8,9,9,69,45,7,10,10,2,13,79,11,5,4,7,54,0,0,0,3,0,0,255,192,1,63, +1,192,0,17,0,43,0,75,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,51,50,23, +22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,53,17,7,54,55,49,54,55,17,20,7,6, +35,34,39,38,61,1,35,34,39,38,63,1,7,6,7,6,39,38,39,38,63,1,112,1,13,14,20,20,14,13,1,1, +13,14,20,20,14,13,1,56,7,26,21,22,13,58,7,3,3,11,12,13,12,7,29,9,9,14,14,9,9,110,15,25, +25,29,9,9,14,14,9,9,18,8,5,4,2,38,34,7,12,13,11,12,3,3,7,53,1,144,20,14,13,1,1,13, +14,20,20,14,13,1,1,13,14,20,80,12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9,9,9,14,1, +96,54,25,14,14,1,254,160,14,9,9,9,9,14,96,7,6,8,115,57,11,3,3,7,7,12,13,11,90,0,0,0, +0,6,0,0,255,192,2,64,1,192,0,18,0,69,0,87,0,121,0,132,0,143,0,0,19,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,49,3,38,39,49,38,63,1,54,55,54,59,1,22,31,1,22,7,6,7,6,39, +38,47,1,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,49,37,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54,55,49,54,55,22,23,22,23,21,6,7,6,7,34, +47,1,7,6,7,6,39,38,39,38,63,1,54,55,54,31,1,53,3,54,55,51,22,23,6,7,35,38,39,23,22,7, +6,47,1,38,55,54,31,1,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,12,3,3,7,58,13, +22,21,26,36,45,29,74,8,1,1,11,10,13,13,9,47,9,9,14,14,9,9,16,9,9,14,14,9,9,29,7,12, +13,11,1,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,16,1,15,16,24,24,16,15,1,1,18,19, +28,27,20,54,28,7,12,12,12,12,4,4,5,48,7,17,16,12,41,176,1,15,56,15,1,1,15,56,15,1,47,13, +6,7,14,48,13,6,7,14,48,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,245,7,12,13, +11,97,22,13,12,1,34,89,10,13,13,9,8,1,1,11,57,245,14,9,9,9,9,14,128,128,14,9,9,9,9,14, +223,48,11,3,3,7,75,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,104,24,16,15,1,1,15,16,24, +102,28,19,18,1,19,55,56,12,4,4,5,7,12,12,12,96,15,3,2,11,42,59,1,40,15,1,1,15,15,1,1, +15,74,7,14,13,6,24,7,14,13,6,24,0,5,0,0,255,192,2,0,1,191,0,11,0,26,0,41,0,58,0,71, +0,0,1,22,23,21,6,7,35,38,39,54,63,1,7,52,55,51,22,21,6,7,6,7,38,39,38,39,49,23,22,23, +7,53,35,34,39,38,53,52,55,54,55,33,31,1,22,7,6,7,6,39,38,47,1,21,35,55,22,23,49,7,21,20, +7,6,43,1,34,39,38,61,1,51,1,111,15,2,1,15,152,22,2,1,22,152,159,2,156,2,1,22,23,34,34,23, +22,1,105,22,20,163,152,17,11,12,12,11,17,1,17,117,76,9,4,4,15,15,15,15,9,54,169,171,27,17,46,9, +9,14,128,14,9,9,192,1,191,1,15,30,15,1,2,22,22,3,13,110,7,9,9,7,35,22,22,1,1,22,22,35, +112,1,7,162,90,11,11,18,16,12,11,1,68,129,15,15,15,9,9,4,4,15,90,46,171,17,29,157,32,14,9,9, +9,9,14,32,0,5,0,0,255,192,1,192,1,191,0,12,0,26,0,66,0,79,0,102,0,0,19,54,63,1,22,23, +21,6,7,35,38,39,49,23,22,21,6,7,6,7,38,39,38,39,52,55,51,19,39,21,20,21,48,49,39,54,55,51, +22,23,55,38,55,54,31,1,22,15,1,23,22,23,22,15,1,22,31,1,22,7,6,7,6,39,38,39,49,39,54,55, +52,39,38,35,34,7,6,21,22,23,7,34,39,49,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,19,6,43, +1,128,1,22,152,15,2,1,15,152,22,2,174,2,1,22,23,34,34,23,22,1,2,156,72,54,174,25,28,50,24,22, +95,12,6,8,14,28,12,7,56,3,11,3,4,7,36,3,2,76,9,4,4,15,15,15,15,9,110,22,2,7,7,10, +10,7,7,2,22,104,14,9,9,54,9,15,15,15,15,4,4,9,76,14,22,181,5,6,128,1,153,22,3,13,1,15, +30,15,1,2,22,56,9,7,35,22,22,1,1,22,22,35,7,9,254,147,90,110,2,2,249,11,1,1,8,164,9,13, +12,6,16,9,13,96,1,7,12,13,12,63,4,5,129,15,15,15,9,9,4,4,15,141,1,23,10,7,7,7,7,10, +23,1,193,9,9,14,110,90,15,4,4,9,9,15,15,15,129,25,15,254,253,2,0,0,0,8,0,0,255,192,2,0, +1,192,0,11,0,27,0,39,0,54,0,72,0,94,0,119,0,145,0,0,19,50,23,21,6,7,35,38,39,54,63,1, +23,6,7,49,6,7,38,39,38,39,52,55,51,22,21,49,7,54,55,23,34,43,1,34,39,38,61,1,23,39,50,55, +54,59,1,22,23,22,23,21,20,7,49,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,22,23, +49,22,23,21,20,7,6,43,1,34,39,38,61,1,54,55,54,55,51,1,6,39,38,63,1,39,38,39,52,55,54,51, +23,39,38,55,54,31,1,22,21,20,15,1,63,1,54,23,22,15,1,51,50,23,22,21,6,7,35,23,22,7,6,47, +1,38,53,52,55,49,182,16,2,1,15,111,16,1,1,14,111,10,1,18,18,27,27,18,18,1,3,123,2,160,1,20, +144,2,3,128,14,9,9,190,137,2,2,3,4,64,27,18,18,1,2,98,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,96,27,18,18,1,9,9,14,128,14,9,9,1,18,18,27,64,254,248,18,16,13,15,16,113,21,2,7, +7,10,112,16,15,13,16,18,64,8,8,64,144,64,18,16,13,15,16,112,10,7,7,2,22,112,16,15,13,16,18,64, +8,8,1,192,16,14,15,1,1,16,14,3,12,96,27,18,18,1,1,18,18,27,9,9,9,9,160,29,18,111,9,9, +14,32,43,106,1,1,1,18,19,26,32,7,5,203,27,19,18,1,1,18,19,27,27,18,18,1,1,18,18,27,96,1, +18,18,27,32,14,9,9,9,9,14,32,27,18,18,1,254,198,13,15,18,16,14,1,1,23,10,7,7,1,14,16,18, +15,13,56,7,10,12,7,56,92,56,13,15,18,16,13,7,7,10,23,1,15,16,18,15,13,56,7,12,10,7,0,0, +0,6,0,0,255,192,1,255,1,192,0,17,0,68,0,80,0,91,0,103,0,114,0,0,1,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54, +55,54,59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,61,1,35,3,54,31, +1,22,7,6,47,1,38,55,49,33,54,23,22,15,1,6,39,38,63,1,1,55,54,23,22,15,1,6,39,38,55,49, +37,38,55,54,31,1,22,7,6,47,1,1,48,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9, +14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7, +29,9,9,14,14,9,9,16,241,17,17,79,15,15,16,17,80,14,14,1,208,17,16,15,15,80,16,17,14,14,80,254, +48,80,17,16,15,15,79,17,17,14,14,1,128,14,14,17,16,80,15,15,16,17,80,1,144,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22,13,12, +12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9,9,9,14,128,1,89,14,14,80,17,16,15,15,79,17, +17,14,14,17,17,79,15,15,16,17,80,254,48,80,14,14,17,16,80,15,15,16,17,47,16,17,14,14,80,17,16,15, +15,80,0,0,0,3,0,15,255,192,2,32,1,192,0,20,0,38,0,91,0,0,1,50,23,17,35,53,7,6,7,6, +39,38,39,38,63,1,54,55,54,59,1,55,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,55,21,22, +23,21,55,53,54,55,51,22,23,21,6,15,1,21,51,22,23,21,6,7,35,23,22,7,35,38,39,53,35,34,39,38, +61,1,52,55,54,51,53,54,55,53,38,39,54,55,51,22,23,49,1,9,39,32,192,54,9,15,15,15,15,4,4,9, +76,19,30,31,37,50,55,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,144,15,1,16,1,15,16,15,1, +1,10,53,48,15,1,1,15,44,23,2,17,60,15,1,16,14,9,9,9,9,14,1,15,15,1,1,15,32,15,1,1, +0,20,254,212,174,90,15,4,4,9,9,15,15,15,129,32,17,18,112,34,23,22,1,1,22,23,34,34,23,22,1,1, +22,23,34,64,116,9,19,109,5,56,15,1,1,15,85,11,4,17,27,1,15,16,15,1,92,18,2,1,15,96,9,9, +14,144,14,9,9,32,19,9,100,1,15,15,1,1,15,0,0,3,0,0,255,192,2,0,1,192,0,30,0,48,0,84, +0,0,1,22,23,17,20,7,6,35,34,39,38,53,17,39,7,17,20,7,6,35,34,39,38,53,17,54,63,1,54,31, +1,5,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,19,38,39,53,7,6,39,38,63,1,54,55,54, +59,1,50,23,22,31,1,22,7,6,47,1,21,6,7,38,39,53,35,21,6,7,49,1,240,15,1,9,9,14,14,9, +9,192,192,9,9,14,14,9,9,1,15,224,15,17,224,254,232,12,11,17,17,11,12,12,11,17,17,11,12,8,22,2, +27,12,20,19,9,38,12,20,21,24,20,24,21,20,12,38,9,19,20,12,27,2,22,22,2,16,2,22,1,60,10,18, +254,192,14,9,9,9,9,14,1,45,110,110,254,211,14,9,9,9,9,14,1,64,18,10,128,8,8,128,36,17,11,12, +12,11,17,17,11,12,12,11,17,254,168,2,22,174,49,19,9,12,20,71,21,13,13,13,13,21,71,20,12,9,19,49, +174,22,2,2,22,88,88,22,2,0,0,0,0,4,0,0,255,192,2,128,1,192,0,18,0,77,0,96,0,150,0,0, +19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,49,7,6,15,1,6,7,6,39,38,39,38,63,1, +54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22,7,6,7,6, +39,38,47,2,38,63,1,6,35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22,23,49,5,38, +53,49,52,63,1,54,51,50,23,22,21,20,15,1,51,54,55,54,55,38,39,38,39,35,34,39,38,53,52,55,54,59, +1,22,23,22,23,6,7,6,7,35,23,22,21,20,7,6,35,34,47,1,160,1,13,14,20,20,14,13,1,1,13,14, +20,20,14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34,27,27,14,14,22,12,4,4, +5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71,23,9,17,1,1,1,11,12, +40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,1,4,9,9,80,10,13,13,10,9,9,26,19,41,27,27,1, +1,27,27,41,128,14,9,10,10,9,14,128,68,45,45,2,2,45,45,68,19,26,9,9,10,13,13,10,80,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,157,11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14, +19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77, +27,33,64,1,1,4,139,45,36,9,7,62,9,9,10,13,13,10,59,62,4,4,31,10,13,13,10,80,9,9,10,13, +13,10,25,1,27,27,41,41,27,27,1,9,9,14,14,9,9,2,45,45,68,68,45,45,2,25,10,13,13,10,9,9, +80,0,0,0,0,4,0,0,255,192,2,128,1,192,0,18,0,77,0,96,0,132,0,0,19,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,49,7,6,15,1,6,7,6,39,38,39,38,63,1,54,63,1,54,51,50,23,22, +31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22,7,6,7,6,39,38,47,2,38,63,1,6, +35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22,23,49,37,22,21,49,20,15,1,6,35,34, +39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52,55,54,51,50,31,1,160,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34,27,27, +14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71,23,9, +17,1,1,1,11,12,40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,2,18,9,9,80,10,13,13,10,9,9, +26,147,14,9,9,9,9,14,147,26,9,9,10,13,13,10,80,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,157,11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14,19,18,31,37,10,7,12,12,12,12,4,4, +5,14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,139,45,36,9,7,62, +9,9,10,13,13,10,59,62,4,4,111,10,13,13,10,80,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13, +13,10,9,9,80,0,0,0,0,8,0,0,255,192,2,128,1,192,0,18,0,77,0,96,0,132,0,143,0,154,0,165, +0,176,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,49,7,6,15,1,6,7,6,39,38, +39,38,63,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22, +7,6,7,6,39,38,47,2,38,63,1,6,35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22, +23,49,37,22,21,49,20,15,1,6,35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52, +55,54,51,50,31,1,39,22,23,21,6,7,38,39,53,54,55,23,6,7,38,39,53,54,55,22,23,21,7,22,23,21, +6,7,38,39,53,54,55,23,6,7,38,39,53,54,55,22,23,21,160,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34,27,27,14,14,22,12,4,4,5,7, +12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71,23,9,17,1,1,1,11,12,40,14, +4,7,61,10,13,13,10,9,9,60,25,3,4,2,18,9,9,80,10,13,13,10,9,9,26,147,14,9,9,9,9,14, +147,26,9,9,10,13,13,10,80,239,22,2,2,22,22,2,2,22,24,2,22,22,2,2,22,22,2,24,22,2,2,22, +22,2,2,22,24,2,22,22,2,2,22,22,2,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,157, +11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14,19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16, +23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,139,45,36,9,7,62,9,9,10,13, +13,10,59,62,4,4,111,10,13,13,10,80,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13,13,10,9,9, +80,233,2,22,48,22,2,2,22,48,22,2,168,22,2,2,22,16,22,2,2,22,16,152,2,22,16,22,2,2,22,16, +22,2,168,22,2,2,22,48,22,2,2,22,48,0,0,0,0,4,0,3,255,192,1,255,1,192,0,17,0,76,0,95, +0,121,0,0,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,7,6,15,1,6,7,6,39,38,39, +38,63,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22,7, +6,7,6,39,38,47,2,38,63,1,6,35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22,23, +49,39,22,15,1,6,15,1,6,7,6,47,1,38,39,38,63,1,54,55,54,31,1,55,54,23,49,1,96,1,13,14, +20,20,14,13,1,1,13,14,20,20,14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34, +27,27,14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71, +23,9,17,1,1,1,11,12,40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,70,13,6,44,1,2,64,7,13, +12,12,55,12,3,4,7,63,8,12,13,12,54,32,9,12,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,157,11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14,19,18,31,37,10,7,12,12,12,12,4,4,5, +14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,139,45,36,9,7,62,9, +9,10,13,13,10,59,62,4,4,70,9,12,77,4,4,111,11,3,4,7,32,7,12,12,12,111,12,3,4,6,32,56, +11,6,0,0,0,3,0,0,255,192,2,128,1,192,0,42,0,60,0,76,0,0,1,21,23,6,7,6,21,20,23,22, +23,6,35,34,35,39,7,34,35,38,39,53,52,63,1,53,7,6,39,53,52,63,1,53,54,55,54,55,22,23,22,23, +49,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39, +38,7,49,1,64,77,35,21,21,17,17,29,3,11,1,2,110,110,2,2,13,1,6,58,172,17,3,8,184,1,18,18, +27,28,18,17,1,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11, +11,72,10,10,11,11,1,98,84,44,25,37,38,46,41,35,34,24,10,32,32,1,14,41,9,4,43,71,49,3,18,66, +9,5,105,84,29,31,31,3,3,31,31,29,254,238,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60, +28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,0,0,4,0,0,255,192,2,128,1,192,0,42,0,60,0,69, +0,80,0,0,1,21,23,6,7,6,21,20,23,22,23,6,35,34,35,39,7,34,35,38,39,53,52,63,1,53,7,6, +39,53,52,63,1,53,54,55,54,55,22,23,22,23,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,1,64,77,35,21,21,17,17,29,3,11, +1,2,110,110,2,2,13,1,6,58,172,17,3,8,184,1,18,18,27,28,18,17,1,32,2,40,41,61,61,41,40,2, +2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,98,84,44,25,37, +38,46,41,35,34,24,10,32,32,1,14,41,9,4,43,71,49,3,18,66,9,5,105,84,29,31,31,3,3,31,31,29, +254,238,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1, +15,80,15,1,1,15,0,0,0,3,0,0,255,192,2,128,1,192,0,42,0,60,0,85,0,0,1,21,23,6,7,6, +21,20,23,22,23,6,35,34,35,39,7,34,35,38,39,53,52,63,1,53,7,6,39,53,52,63,1,53,54,55,54,55, +22,23,22,23,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39,38,7, +6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,64,77,35,21,21,17,17,29,3,11,1,2,110,110,2, +2,13,1,6,58,172,17,3,8,184,1,18,18,27,28,18,17,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61, +41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,98,84,44, +25,37,38,46,41,35,34,24,10,32,32,1,14,41,9,4,43,71,49,3,18,66,9,5,105,84,29,31,31,3,3,31, +31,29,254,238,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37, +37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,0,0,3,0,0,255,192,2,128,1,192,0,45,0,76,0,89, +0,0,19,54,55,49,54,55,22,23,22,23,21,23,6,29,1,6,7,39,21,23,22,29,1,6,7,34,35,39,7,34, +35,38,39,53,52,63,1,53,7,6,39,53,52,63,1,53,5,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,192,1,18,18, +27,28,18,17,1,102,6,28,4,64,58,6,1,14,1,2,110,110,2,2,13,1,6,58,172,17,3,8,184,1,80,34, +23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,98,29,31,31, +3,3,31,31,29,84,58,17,19,25,16,35,19,71,43,4,9,41,14,1,32,32,1,14,41,9,4,43,71,49,3,18, +66,9,5,105,84,98,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9, +9,14,48,48,14,9,9,0,0,10,0,0,255,224,1,253,1,160,0,14,0,25,0,36,0,47,0,62,0,77,0,93, +0,108,0,124,0,155,0,0,1,21,6,7,38,39,38,39,53,54,55,22,23,22,23,39,22,23,6,7,35,38,39,54, +55,51,23,22,23,6,7,35,38,39,54,55,51,7,54,55,51,22,23,6,7,35,38,39,55,54,55,22,23,22,23,21, +6,7,38,39,38,39,53,23,21,6,7,38,39,38,39,53,54,55,22,23,22,23,21,6,7,49,6,7,38,39,53,54, +55,54,55,22,23,21,39,22,23,21,6,7,6,7,38,39,53,54,55,54,55,7,6,7,49,6,7,38,39,53,54,55, +54,55,22,23,21,7,38,55,49,54,51,33,50,23,22,7,6,7,6,7,21,20,7,6,35,33,34,39,38,39,53,38, +39,38,39,49,1,0,1,15,34,23,22,1,1,15,34,23,22,1,152,22,2,2,22,48,22,2,2,22,48,32,22,2, +2,22,112,22,2,2,22,112,104,2,22,48,22,2,2,22,48,22,2,240,1,15,34,23,22,1,1,15,34,23,22,1, +208,1,15,34,23,22,1,1,15,34,23,22,1,1,22,23,34,15,1,1,22,23,34,15,1,128,15,1,1,22,23,34, +15,1,1,22,23,34,96,1,22,23,34,15,1,1,22,23,34,15,1,253,1,7,7,12,1,200,11,7,8,1,6,25, +25,37,9,9,14,254,255,13,9,9,1,36,25,25,6,1,80,16,15,1,1,22,23,34,16,15,1,1,22,23,34,48, +2,22,22,2,2,22,22,2,72,2,22,22,2,2,22,22,2,96,22,2,2,22,22,2,2,22,184,15,1,1,22,23, +34,16,15,1,1,22,23,34,16,64,16,15,1,1,22,23,34,16,15,1,1,22,23,34,96,34,23,22,1,1,15,16, +34,23,22,1,1,15,16,32,1,15,16,34,23,22,1,1,15,16,34,23,22,1,32,34,23,22,1,1,15,16,34,23, +22,1,1,15,16,140,12,8,8,8,8,12,38,26,27,7,2,14,9,9,9,9,14,2,7,27,26,38,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,100,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55, +7,6,23,22,59,1,7,6,23,22,63,1,54,39,38,43,1,55,54,39,38,7,49,96,14,9,9,64,9,9,14,192, +14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1,64, +64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,177,96,7,3,3,8,36,30,4,6,7,8,96,7,3, +3,8,36,31,3,6,7,8,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160,9,9,14,3,4, +16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2,40,41,61,61,41, +40,2,2,40,41,61,82,72,6,8,8,54,8,7,5,4,72,6,8,8,54,8,8,4,4,0,0,0,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,92,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39, +7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14,64, +14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1,64,224,2,40,41,61,61,41,40, +2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,192,9,9,14,96,96,14, +9,9,9,9,14,96,96,14,9,9,160,9,9,14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9, +9,14,14,9,9,208,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10, +72,11,11,10,10,0,0,0,0,6,0,0,255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,85,0,96,0,0, +19,50,23,49,22,29,1,35,53,52,55,54,59,1,50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21, +20,7,6,7,6,7,20,23,6,7,21,35,53,38,39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6, +7,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35, +36,1,14,9,9,9,9,14,1,64,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22, +22,2,2,22,17,2,14,15,1,1,15,14,2,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160, +9,9,14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2, +40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0, +0,5,0,0,255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,87,0,0,19,50,23,49,22,29,1,35,53,52, +55,54,59,1,50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7, +21,35,53,38,39,38,39,53,34,39,38,53,52,55,54,51,33,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22, +23,22,23,39,35,6,7,22,23,51,54,55,38,39,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14,64,14, +9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1,64,224,2,40,41,61,61,41,40,2, +2,40,41,61,61,41,40,2,80,128,15,1,1,15,128,15,1,1,15,1,192,9,9,14,96,96,14,9,9,9,9,14, +96,96,14,9,9,160,9,9,14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9, +208,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,2,14,15,1,1,15,14,2,0,0,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,101,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55, +38,39,6,7,21,35,6,7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,96,14,9,9,64,9,9,14, +192,14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1, +64,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,15,15,1,48,15,1,1,15,48,1,15,15, +1,48,15,1,1,15,48,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160,9,9,14,3,4,16, +46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,65,14,2,2,14,48,2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,101,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55, +54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,96,14,9,9,64,9,9,14, +192,14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1, +64,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10, +10,11,11,37,37,11,11,10,10,36,36,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160,9,9, +14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2,40,41, +61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11, +37,37,0,0,0,4,0,0,255,192,2,128,1,192,0,31,0,53,0,75,0,97,0,0,1,22,23,49,22,15,1,23, +20,7,6,47,1,7,6,39,38,53,55,39,38,55,54,63,2,54,51,50,31,2,7,50,23,49,22,29,1,20,7,6, +43,1,34,39,38,61,1,52,55,54,59,1,7,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54, +59,1,5,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,1,150,7,2,3,5,38,9, +5,6,6,47,47,7,5,5,9,38,5,3,2,7,52,24,4,6,7,3,24,52,22,14,9,9,9,9,14,128,14,9, +9,9,9,14,128,224,14,9,9,9,9,14,128,14,9,9,9,9,14,128,1,32,9,9,14,128,14,9,9,9,9,14, +128,14,9,9,1,130,1,7,6,5,37,52,7,4,4,3,24,25,3,4,4,7,53,37,5,6,7,1,8,48,6,6, +48,8,194,9,9,14,192,14,9,9,9,9,14,192,14,9,9,64,9,9,14,128,14,9,9,9,9,14,128,14,9,9, +96,14,9,9,9,9,14,64,14,9,9,9,9,14,64,0,0,5,0,0,255,224,2,128,1,160,0,23,0,28,0,33, +0,38,0,60,0,0,19,50,23,49,22,29,1,51,7,21,20,7,6,35,34,39,38,53,17,52,55,54,51,49,1,35, +55,51,7,55,51,7,35,55,33,51,7,35,55,5,53,52,55,54,51,50,23,22,21,17,20,7,6,35,34,39,38,61, +1,35,55,32,14,9,9,85,85,9,9,14,14,9,9,9,9,14,1,21,74,96,74,96,150,74,96,74,96,255,0,74, +96,74,96,1,117,9,9,14,14,9,9,9,9,14,14,9,9,85,85,1,160,9,9,14,32,170,182,14,9,9,9,9, +14,1,128,14,9,9,255,0,192,192,192,192,192,192,192,22,54,14,9,9,9,9,14,254,128,14,9,9,9,9,14,160, +170,0,0,0,0,6,0,0,255,192,2,128,1,192,0,20,0,31,0,42,0,53,0,91,0,96,0,0,1,33,50,23, +22,21,17,20,7,6,35,33,34,39,38,53,17,52,55,54,51,23,21,22,23,54,55,53,38,39,6,7,23,38,39,6, +7,21,22,23,54,55,53,3,21,22,23,54,55,53,38,39,6,7,5,33,21,35,21,51,21,6,7,6,7,21,20,7, +6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39,38,53,52,55,54,51,23,35,21,51,53,1,96,1, +0,14,9,9,9,9,14,255,0,14,9,9,9,9,14,104,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22, +2,48,2,22,22,2,2,22,22,2,254,88,1,0,40,40,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72, +40,14,9,9,9,9,14,168,80,80,1,192,9,9,14,254,64,14,9,9,9,9,14,1,192,14,9,9,224,64,22,2, +2,22,64,22,2,2,22,160,22,2,2,22,64,22,2,2,22,64,1,64,64,22,2,2,22,64,22,2,2,22,32,64, +64,96,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,96,64,9,9,14,14,9,9,64,64,64,0,0,0, +0,3,0,32,255,192,2,128,1,160,0,62,0,80,0,96,0,0,19,51,21,20,23,22,51,50,55,54,61,1,51,50, +23,22,31,1,38,35,34,7,6,7,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,6,21,20,23,35,34, +7,6,29,1,35,38,39,38,39,52,55,19,54,55,54,51,49,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22, +23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,213,75,9,9,14,14,9,9,75,20,17,16,7, +43,17,17,45,37,38,24,9,9,14,14,9,9,9,9,14,3,4,7,1,1,14,9,9,201,24,15,15,1,3,118,7, +16,16,21,1,171,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72, +10,10,11,11,1,160,64,14,9,9,9,9,14,64,12,11,20,120,3,20,20,35,43,14,9,9,9,9,14,64,14,9, +9,1,24,25,8,8,9,9,14,64,1,15,15,24,9,9,1,76,20,11,12,254,176,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,0,4,0,32,255,192,2,128, +1,160,0,62,0,80,0,89,0,100,0,0,19,51,21,20,23,22,51,50,55,54,61,1,51,50,23,22,31,1,38,35, +34,7,6,7,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,6,21,20,23,35,34,7,6,29,1,35,38, +39,38,39,52,55,19,54,55,54,51,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55, +38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,213,75,9,9,14,14,9,9,75,20,17,16,7,43,17, +17,45,37,38,24,9,9,14,14,9,9,9,9,14,3,4,7,1,1,14,9,9,201,24,15,15,1,3,118,7,16,16, +21,139,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1, +1,15,14,2,1,160,64,14,9,9,9,9,14,64,12,11,20,120,3,20,20,35,43,14,9,9,9,9,14,64,14,9, +9,1,24,25,8,8,9,9,14,64,1,15,15,24,9,9,1,76,20,11,12,254,176,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,3,0,32, +255,192,2,128,1,160,0,62,0,80,0,105,0,0,19,51,21,20,23,22,51,50,55,54,61,1,51,50,23,22,31,1, +38,35,34,7,6,7,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,6,21,20,23,35,34,7,6,29,1, +35,38,39,38,39,52,55,19,54,55,54,51,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,51, +55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,213,75,9,9,14,14,9,9, +75,20,17,16,7,43,17,17,45,37,38,24,9,9,14,14,9,9,9,9,14,3,4,7,1,1,14,9,9,201,24,15, +15,1,3,118,7,16,16,21,139,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,167,36,10,10,11,11,37, +37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,1,160,64,14,9,9,9,9,14,64,12,11,20,120, +3,20,20,35,43,14,9,9,9,9,14,64,14,9,9,1,24,25,8,8,9,9,14,64,1,15,15,24,9,9,1,76, +20,11,12,254,176,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,0,0,0,0,4,0,32,255,192,2,128,1,160,0,49,0,69,0,100, +0,113,0,0,1,20,23,49,22,51,50,55,54,61,1,51,50,23,22,31,1,6,7,6,7,21,6,7,21,35,53,52, +39,38,35,34,7,6,29,1,35,38,39,38,39,52,55,19,54,55,54,59,1,31,1,52,39,49,38,35,34,7,6,29, +1,20,23,22,51,50,55,54,61,1,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1, +52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,32,9,9,14,14,9,9,75,20, +17,16,7,31,44,29,28,1,30,2,32,9,9,14,14,9,9,201,24,15,15,1,3,118,7,16,16,21,74,1,64,9, +9,14,14,9,9,9,9,14,14,9,9,176,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23, +34,14,9,9,64,9,9,14,1,96,14,9,9,9,9,14,64,12,11,20,86,4,31,31,45,25,18,37,128,64,14,9, +9,9,9,14,64,1,15,15,24,9,9,1,76,20,11,12,64,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64, +32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48,48,14, +9,9,0,0,0,2,0,0,0,1,2,128,1,91,0,30,0,50,0,0,19,54,55,49,54,31,1,53,54,55,54,31, +1,53,54,55,54,31,1,53,54,55,54,31,1,22,7,6,7,33,53,1,22,23,49,22,21,20,7,6,35,33,34,39, +38,53,52,55,54,55,33,64,1,10,11,7,99,1,10,11,7,99,1,10,11,7,99,1,10,11,7,130,10,9,8,20, +253,252,2,32,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64,1,75,12,4,3,9,148,138,12,4,3,9, +148,138,12,4,3,9,148,138,12,4,3,9,195,17,16,15,1,234,254,246,1,9,9,13,14,9,9,9,9,14,13,9, +9,1,0,0,0,3,0,0,0,0,2,128,1,128,0,35,0,40,0,76,0,0,19,17,35,38,39,54,55,51,53,35, +38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,59,1,33,17,33,17,5, +35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,17,51,22, +23,6,7,80,56,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2, +22,56,32,1,160,254,96,1,248,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2, +22,56,56,22,2,2,22,1,128,254,128,2,22,22,2,40,2,22,22,2,32,2,22,22,2,32,2,22,22,2,40,2, +22,22,2,254,128,1,128,48,40,2,22,22,2,32,2,22,22,2,32,2,22,22,2,40,2,22,22,2,1,128,2,22, +22,2,0,0,0,3,0,0,255,192,2,0,1,192,0,13,0,47,0,72,0,0,19,38,55,49,54,55,51,22,23,22, +15,1,35,39,23,22,23,49,22,23,49,22,23,6,7,6,7,33,38,39,38,39,54,55,54,55,54,55,48,49,54,55, +51,48,51,22,23,49,23,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,145, +5,4,4,10,196,10,4,4,5,47,128,47,187,31,41,42,32,32,2,1,27,27,41,254,192,41,27,27,1,2,32,32, +41,42,30,7,6,128,1,5,6,4,15,15,16,17,47,48,16,17,14,14,47,47,14,14,17,16,48,47,17,16,15,15, +46,46,1,167,9,8,7,1,1,7,8,9,71,71,111,18,34,35,55,56,82,41,27,27,1,1,27,27,41,82,56,55, +35,34,18,4,4,4,4,152,16,17,14,14,47,47,14,14,17,16,48,47,17,16,15,15,46,46,15,15,16,17,47,48, +0,6,0,0,255,192,2,128,1,192,0,53,0,66,0,79,0,94,0,112,0,127,0,0,1,23,22,23,22,29,1,38, +39,38,39,6,7,54,53,38,39,38,39,6,7,6,7,22,23,22,23,50,55,6,7,35,49,6,7,6,7,21,51,33, +38,39,38,39,17,52,55,54,63,2,54,31,1,5,6,7,21,22,23,51,54,55,53,38,39,35,21,6,7,21,22,23, +51,54,55,53,38,39,35,55,22,23,21,51,22,23,6,7,35,38,39,53,54,55,5,6,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,23,7,39,38,7,6,31,1,22,63,1,54,39,38,15,1,1,221,125,17,10,11,24,38,37, +45,59,44,15,1,25,25,37,37,25,25,1,1,25,25,37,24,19,36,6,1,27,18,18,1,64,254,240,20,14,13,1, +11,10,17,125,139,17,19,139,254,131,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,224,15, +1,16,15,1,1,15,32,15,1,1,15,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,29,11, +11,10,10,40,11,11,72,10,10,11,11,61,1,94,27,5,13,13,17,94,35,20,20,1,1,33,21,29,37,25,25,1, +1,25,25,37,38,25,24,1,10,41,58,1,18,18,27,96,1,13,14,20,1,35,17,13,13,5,27,93,10,10,93,94, +1,15,64,15,1,1,15,64,15,1,128,1,15,64,15,1,1,15,64,15,1,192,1,15,16,1,15,15,1,1,15,32, +15,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,28,10,10,11,11,40,10,10,72,11,11,10, +10,60,0,0,0,7,0,0,255,192,2,128,1,192,0,53,0,66,0,79,0,94,0,112,0,121,0,132,0,0,1,23, +22,23,22,29,1,38,39,38,39,6,7,54,53,38,39,38,39,6,7,6,7,22,23,22,23,50,55,6,7,35,49,6, +7,6,7,21,51,33,38,39,38,39,17,52,55,54,63,2,54,31,1,5,6,7,21,22,23,51,54,55,53,38,39,35, +21,6,7,21,22,23,51,54,55,53,38,39,35,55,22,23,21,51,22,23,6,7,35,38,39,53,54,55,23,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39, +6,7,1,221,125,17,10,11,24,38,37,45,59,44,15,1,25,25,37,37,25,25,1,1,25,25,37,24,19,36,6,1, +27,18,18,1,64,254,240,20,14,13,1,11,10,17,125,139,17,19,139,254,131,15,1,1,15,32,15,1,1,15,32,15, +1,1,15,32,15,1,1,15,32,224,15,1,16,15,1,1,15,32,15,1,1,15,32,2,40,41,61,61,41,40,2,2, +40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,94,27,5,13,13,17, +94,35,20,20,1,1,33,21,29,37,25,25,1,1,25,25,37,38,25,24,1,10,41,58,1,18,18,27,96,1,13,14, +20,1,35,17,13,13,5,27,93,10,10,93,94,1,15,64,15,1,1,15,64,15,1,128,1,15,64,15,1,1,15,64, +15,1,192,1,15,16,1,15,15,1,1,15,32,15,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61, +96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,6,0,0,255,192,2,128,1,192,0,53, +0,66,0,79,0,94,0,112,0,137,0,0,1,23,22,23,22,29,1,38,39,38,39,6,7,54,53,38,39,38,39,6, +7,6,7,22,23,22,23,50,55,6,7,35,49,6,7,6,7,21,51,33,38,39,38,39,17,52,55,54,63,2,54,31, +1,5,6,7,21,22,23,51,54,55,53,38,39,35,21,6,7,21,22,23,51,54,55,53,38,39,35,55,22,23,21,51, +22,23,6,7,35,38,39,53,54,55,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,51,55,54,39, +38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,1,221,125,17,10,11,24,38,37,45,59, +44,15,1,25,25,37,37,25,25,1,1,25,25,37,24,19,36,6,1,27,18,18,1,64,254,240,20,14,13,1,11,10, +17,125,139,17,19,139,254,131,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,224,15,1,16, +15,1,1,15,32,15,1,1,15,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,167,36,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,1,94,27,5,13,13,17,94,35,20,20,1,1, +33,21,29,37,25,25,1,1,25,25,37,38,25,24,1,10,41,58,1,18,18,27,96,1,13,14,20,1,35,17,13,13, +5,27,93,10,10,93,94,1,15,64,15,1,1,15,64,15,1,128,1,15,64,15,1,1,15,64,15,1,192,1,15,16, +1,15,15,1,1,15,32,15,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36, +36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,0,0,0,6,0,0,255,192,2,64,1,192,0,48, +0,66,0,79,0,92,0,105,0,118,0,0,1,51,22,23,21,6,7,35,21,23,51,22,23,22,23,21,6,7,6,7, +35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,53,54,55,54,55,51,55,53,52,55,54,51,49,21,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,7,6,7,21,22,23,51,54,55,53,38,39,35,5,22,23,51, +54,55,53,38,39,35,6,7,21,5,6,7,21,22,23,51,54,55,53,38,39,35,33,6,7,21,22,23,51,54,55,53, +38,39,35,1,32,112,15,1,1,15,80,90,102,27,18,18,1,1,18,18,27,176,1,13,14,20,20,14,13,1,176,27, +18,18,1,1,18,18,27,102,90,9,9,14,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,208,15,1,1, +15,32,15,1,1,15,32,1,112,1,15,32,15,1,1,15,32,15,1,254,144,15,1,1,15,32,15,1,1,15,32,1, +128,15,1,1,15,32,15,1,1,15,32,1,192,1,15,48,15,1,16,64,1,18,18,27,224,27,18,18,1,112,20,14, +13,1,1,13,14,20,112,1,18,18,27,224,27,18,18,1,64,64,14,9,9,192,1,13,14,20,20,14,13,1,1,13, +14,20,20,14,13,1,32,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64,15,1,1,15,64,48,1,15,64, +15,1,1,15,64,15,1,1,15,64,15,1,1,15,64,15,1,0,0,0,0,7,0,0,255,192,2,128,1,192,0,14, +0,55,0,68,0,81,0,99,0,130,0,143,0,0,1,51,22,23,6,7,35,38,39,53,54,55,22,23,21,39,54,31, +2,22,23,22,29,1,38,39,38,39,6,7,6,7,21,6,7,35,49,6,7,6,7,21,51,33,38,39,38,39,17,52, +55,54,63,2,3,22,23,51,54,55,53,38,39,35,6,7,29,1,22,23,51,54,55,53,38,39,35,6,7,21,55,54, +55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,80,16,15, +1,1,15,32,15,1,1,15,15,1,34,17,19,139,125,17,10,11,1,32,31,48,48,31,32,1,30,2,64,27,18,18, +1,64,254,240,20,14,13,1,11,10,17,125,139,222,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32, +15,1,240,37,25,25,1,1,25,25,37,37,25,25,1,1,25,25,37,208,34,23,22,1,14,9,9,9,9,14,160,14, +9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,32,1,15,15,1,1,15,32,15,1,1,15,16,155,10, +10,93,27,5,13,13,17,98,47,32,32,1,1,32,32,47,26,18,37,1,18,18,27,96,1,13,14,20,1,35,17,13, +13,5,27,93,254,245,15,1,1,15,64,15,1,1,15,64,128,15,1,1,15,64,15,1,1,15,64,136,1,25,25,37, +37,25,25,1,1,25,25,37,37,25,25,1,72,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9, +48,34,23,22,1,48,9,9,14,48,48,14,9,9,0,0,0,4,0,0,255,192,1,128,1,192,0,23,0,35,0,46, +0,50,0,0,19,54,55,49,54,55,33,22,23,22,23,17,35,34,7,6,29,1,35,38,39,38,39,17,55,38,15,1, +6,23,22,63,1,54,39,49,23,54,39,38,15,1,6,23,22,63,1,19,7,53,51,0,1,18,18,27,1,0,27,18, +18,1,128,14,9,9,160,27,18,18,1,171,11,11,96,10,10,11,11,96,10,10,96,10,10,11,11,160,10,10,11,11, +160,117,128,128,1,128,27,18,18,1,1,18,18,27,254,224,9,9,14,128,1,18,18,27,1,128,11,10,10,96,11,11, +10,10,96,11,11,54,11,11,10,10,160,11,11,10,10,160,254,235,128,128,0,4,0,16,255,192,1,240,1,192,0,8, +0,17,0,45,0,59,0,0,55,54,55,22,23,6,7,38,39,51,6,7,38,39,54,55,22,23,3,50,31,1,22,23, +22,7,6,7,6,7,6,35,34,39,38,39,38,39,38,55,54,63,1,54,51,49,7,39,21,22,23,22,23,54,55,54, +55,53,7,35,199,2,14,15,1,1,15,14,2,113,1,15,15,1,1,15,15,1,56,9,7,205,17,2,4,16,17,49, +49,96,9,8,8,9,95,50,49,16,16,4,1,18,204,8,8,33,64,1,27,27,41,42,27,27,1,64,65,176,15,1, +1,15,15,1,1,15,15,1,1,15,15,1,1,15,1,16,4,87,7,20,50,74,75,73,73,45,4,4,45,73,73,75, +74,50,20,7,87,4,208,64,128,41,27,27,1,1,27,27,41,128,64,0,0,4,0,16,255,192,1,240,1,192,0,8, +0,36,0,61,0,75,0,0,37,6,7,38,39,54,55,22,23,39,50,31,1,22,23,22,7,6,7,6,7,6,35,34, +39,38,39,38,39,38,55,54,63,1,54,51,49,3,7,23,53,51,54,55,54,55,53,38,39,35,39,38,39,35,21,6, +7,6,7,34,39,49,39,21,22,23,22,51,50,55,54,61,1,35,6,7,1,32,1,15,15,2,2,15,15,1,32,9, +7,205,17,2,4,16,17,49,49,96,9,8,8,9,95,50,49,16,16,4,1,18,204,8,8,95,18,129,48,34,23,22, +1,1,15,64,7,9,20,45,1,17,18,28,7,7,18,1,9,9,13,14,9,9,48,14,2,240,15,1,1,15,15,1, +1,15,208,4,87,7,20,50,74,75,73,73,45,4,4,45,73,73,75,74,50,20,7,87,4,254,226,34,64,64,1,22, +23,34,32,15,1,14,17,1,64,27,18,18,1,2,110,48,14,9,9,9,9,14,64,1,15,0,0,0,0,2,0,16, +255,192,1,240,1,192,0,27,0,51,0,0,1,50,31,1,22,23,22,7,6,7,6,7,6,35,34,39,38,39,38,39, +38,55,54,63,1,54,51,49,19,55,54,39,38,39,38,7,6,15,1,39,38,39,38,7,6,7,6,31,1,22,55,49, +1,0,9,7,205,17,2,4,16,17,49,49,96,9,8,8,9,95,50,49,16,16,4,1,18,204,8,8,10,98,21,1, +2,24,21,25,26,20,10,10,19,27,26,21,24,1,1,21,96,12,10,1,192,4,87,7,20,50,74,75,73,73,45,4, +4,45,73,73,75,74,50,20,7,87,4,254,149,99,23,30,30,21,18,2,3,20,9,9,20,3,2,18,21,30,30,23, +99,10,10,0,0,4,0,0,255,224,1,192,1,160,0,21,0,45,0,67,0,78,0,0,19,54,55,49,54,55,33,22, +23,22,23,17,6,7,6,7,33,38,39,38,39,17,23,21,22,23,54,55,53,23,22,55,54,61,1,38,39,6,7,21, +39,38,7,6,7,49,23,22,23,54,55,53,51,54,55,38,39,35,53,51,54,55,38,39,35,6,7,21,55,38,39,6, +7,21,22,23,54,55,53,0,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,27,18,18,1,64,1,15,15, +1,66,6,12,11,1,15,14,2,65,7,11,11,1,160,1,15,15,1,48,15,1,1,15,48,48,15,1,1,15,64,15, +1,160,1,15,15,1,1,15,15,1,1,96,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +80,160,15,1,1,15,102,110,10,3,3,12,160,15,1,1,15,102,110,10,3,3,12,160,15,1,1,15,80,1,15,15, +1,32,1,15,15,1,1,15,160,160,15,1,1,15,160,15,1,1,15,160,0,3,0,0,255,224,1,192,1,160,0,21, +0,39,0,72,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,6,7,49, +6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,39,38,7,6,15,1,6,23,22,23,22,55,54,63,1,23,22, +51,54,55,54,55,53,38,39,38,39,6,7,6,7,21,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1, +18,18,27,1,64,176,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,32,41,12,16,17,7,48,5,4,4, +12,12,12,12,7,28,54,20,27,28,19,18,1,1,15,16,24,24,16,15,1,1,160,1,18,18,27,254,192,27,18,18, +1,1,18,18,27,1,64,27,18,18,1,64,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,211,42,11,2, +3,15,96,12,12,12,7,5,4,4,12,56,55,19,1,18,19,28,102,24,16,15,1,1,15,16,24,59,0,4,0,0, +255,224,1,192,1,160,0,17,0,26,0,48,0,115,0,0,55,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39, +38,53,23,6,7,38,39,54,55,22,23,19,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55, +33,7,6,7,49,6,39,38,7,6,23,22,7,6,7,6,7,22,23,22,23,22,7,6,23,22,55,54,23,22,23,22, +23,54,55,54,55,54,23,22,55,54,39,38,55,54,55,54,55,38,39,38,39,38,55,54,39,38,7,6,39,38,39,38, +39,6,7,49,160,9,9,14,14,9,9,9,9,14,14,9,9,120,2,22,22,2,2,22,22,2,104,27,18,18,1,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,184,2,18,19,17,17,17,14,14,15,8,8,22,22,2,2,22, +22,8,8,15,14,14,17,17,17,19,18,2,2,22,22,2,1,19,19,17,17,17,14,14,15,8,7,23,22,2,2,22, +23,7,8,15,14,14,17,17,17,19,19,1,2,22,22,2,224,14,9,9,9,9,14,14,9,9,9,9,14,64,22,2, +2,22,22,2,2,22,1,0,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,86,22,8,8, +15,14,14,17,17,17,19,18,2,2,22,22,2,1,19,19,17,17,17,14,14,15,8,8,22,22,2,2,22,22,8,8, +15,14,14,17,17,17,19,19,1,2,22,22,2,2,18,19,17,17,17,14,14,15,8,8,22,22,2,2,22,0,0,0, +0,2,0,0,255,192,1,128,1,192,0,97,0,106,0,0,19,51,22,23,22,23,6,7,6,7,35,53,51,54,55,38, +39,35,7,51,22,23,22,23,6,7,6,7,35,53,51,54,55,38,39,35,7,6,7,38,47,1,35,34,39,38,39,54, +55,54,59,1,39,35,38,39,38,39,54,55,54,55,21,22,23,51,39,35,6,7,35,38,39,38,39,54,55,54,55,51, +39,52,49,48,53,54,55,54,51,50,23,22,23,20,49,48,29,1,7,38,39,6,7,22,23,54,55,223,65,41,27,27, +1,1,27,27,41,40,40,15,1,1,15,68,4,40,41,27,27,1,1,27,27,41,16,16,15,1,1,15,44,3,2,16, +13,2,1,40,16,12,11,1,1,11,12,16,36,1,19,40,27,28,1,1,22,23,34,2,14,18,5,41,16,35,16,24, +16,15,1,1,15,16,24,106,2,1,9,9,13,13,9,8,1,144,1,15,14,2,2,14,15,1,1,144,1,27,27,41, +41,27,27,1,80,1,15,15,1,144,1,27,27,41,41,27,27,1,80,1,15,15,1,144,15,1,1,15,32,12,11,17, +17,11,12,32,1,27,27,41,36,26,26,7,95,15,1,144,30,2,1,15,16,24,24,16,15,1,16,1,1,13,8,9, +9,8,13,1,1,16,48,15,1,1,15,15,1,1,15,0,0,4,0,0,255,192,2,128,1,192,0,17,0,67,0,85, +0,166,0,0,19,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,39,50,31,1,55,54,23,22,15,1, +23,22,21,20,15,1,23,22,7,6,47,1,7,6,35,34,47,1,7,6,39,38,63,1,39,38,53,52,63,1,39,38, +55,54,31,1,55,54,51,49,21,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,51,50,23,22,21, +20,7,6,35,33,34,39,38,53,52,55,54,51,33,53,52,39,38,35,34,7,6,29,1,22,23,6,7,6,7,38,39, +38,39,54,55,53,54,55,54,55,22,23,53,54,55,54,55,22,23,22,23,21,22,23,6,7,6,7,38,39,38,39,54, +55,53,52,39,38,39,6,7,6,21,17,192,9,9,14,14,9,9,9,9,14,14,9,9,32,10,5,24,57,10,7,7, +3,22,56,9,9,56,22,3,7,7,10,57,24,5,10,11,4,24,57,10,7,7,3,22,56,9,9,56,22,3,7,7, +10,57,24,4,11,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,88,104,14,9,9,9,9,14,253,192, +14,9,9,9,9,14,1,168,9,9,14,14,9,9,23,1,1,13,14,20,20,14,13,1,1,23,1,22,23,34,17,15, +1,22,23,34,34,23,22,1,23,1,1,13,14,20,20,14,13,1,1,23,9,9,14,14,9,9,1,32,14,9,9,9, +9,14,14,9,9,9,9,14,160,9,56,22,3,7,7,10,57,24,4,11,10,5,24,57,10,7,7,3,22,56,9,9, +56,22,3,7,7,10,57,24,5,10,11,4,24,57,10,7,7,3,22,56,9,224,1,18,18,27,27,18,18,1,1,18, +18,27,27,18,18,1,224,9,9,14,14,9,9,9,9,14,14,9,9,176,14,9,9,9,9,14,21,12,33,15,22,21, +20,20,21,22,15,33,12,22,33,23,23,1,1,7,24,33,23,23,1,1,23,23,33,54,12,33,15,22,21,20,20,21, +22,15,33,12,54,13,9,9,1,1,9,9,13,254,239,0,0,3,0,0,0,0,2,64,1,128,0,22,0,40,0,44, +0,0,37,35,34,7,6,29,1,33,38,39,38,39,17,54,55,54,55,33,22,23,22,23,21,37,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,1,53,51,7,2,64,128,14,9,9,254,160,27,18,18,1,1,18,18,27,1, +192,27,18,18,1,254,32,14,9,9,9,9,14,14,9,9,9,9,14,1,96,128,128,160,9,9,14,128,1,18,18,27, +1,0,27,18,18,1,1,18,18,27,160,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,128,128,0,4,0,0, +255,192,2,64,1,191,0,20,0,53,0,71,0,75,0,0,19,54,55,49,54,55,54,23,22,23,22,23,6,7,6,7, +38,39,38,39,49,7,51,22,23,22,23,54,55,54,55,51,22,23,22,23,21,35,34,7,6,29,1,33,38,39,38,39, +17,54,55,54,55,49,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,53,51,7,224,2,17,18, +15,12,12,15,18,17,2,1,18,18,27,27,18,18,1,160,134,10,24,24,32,32,24,24,11,133,27,18,18,1,128,14, +9,9,254,160,27,18,18,1,1,18,18,27,32,14,9,9,9,9,14,14,9,9,9,9,14,1,96,128,128,1,92,19, +28,28,19,11,11,19,28,28,19,25,17,17,1,1,17,17,25,28,28,18,17,1,1,17,18,28,1,18,18,27,160,9, +9,14,128,1,18,18,27,1,0,27,18,18,1,128,9,9,14,14,9,9,9,9,14,14,9,9,255,0,128,128,0,0, +0,1,0,0,255,192,2,64,1,192,0,22,0,0,1,54,31,1,22,23,19,22,7,6,43,1,39,21,33,34,39,38, +55,19,54,63,1,1,13,19,19,224,11,2,32,1,9,10,14,128,128,255,0,14,10,9,1,32,2,11,224,1,186,12, +12,159,10,14,254,224,14,10,11,224,224,11,10,14,1,32,14,10,159,0,0,3,0,0,255,192,2,128,1,192,0,23, +0,52,0,56,0,0,19,22,15,1,6,47,1,38,55,54,31,1,53,52,55,54,51,22,23,21,55,54,23,49,23,54, +31,1,22,31,1,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,55,54,63,1,19,51,39,21,242, +13,15,80,16,16,80,15,13,16,18,39,7,7,10,23,1,41,17,17,123,19,19,168,11,2,24,14,9,9,9,9,14, +253,192,14,9,9,9,9,14,128,24,2,11,168,19,77,77,1,80,17,17,72,12,12,72,17,17,15,13,36,122,10,7, +7,2,22,122,36,13,15,23,14,14,128,8,12,165,9,9,14,14,9,9,9,9,14,14,9,9,165,12,8,128,254,199, +128,128,0,0,0,2,0,0,255,192,2,64,1,192,0,34,0,57,0,0,1,22,21,20,15,1,6,39,38,63,1,33, +23,22,7,6,47,1,38,53,52,63,1,54,23,22,15,1,33,39,38,55,54,31,1,7,22,31,1,22,7,6,43,1, +39,21,35,34,39,38,63,1,54,63,1,54,31,1,2,56,8,8,80,18,16,13,15,34,254,109,33,15,13,17,17,80, +8,8,80,17,17,13,15,33,1,147,34,15,13,16,18,80,93,11,2,24,2,10,9,15,96,97,191,15,9,10,2,24, +2,11,168,19,19,168,1,114,7,11,11,7,72,13,15,18,16,30,30,16,18,15,13,72,7,11,11,7,72,13,15,18, +16,30,30,16,18,15,13,72,217,8,12,160,15,11,11,160,160,11,11,15,160,12,8,128,14,14,128,0,0,2,0,0, +255,192,2,64,1,192,0,32,0,55,0,0,19,33,22,23,22,23,21,6,7,38,39,53,38,39,38,39,33,23,22,7, +6,47,1,38,53,52,63,1,54,23,22,15,1,5,22,31,1,22,7,6,43,1,39,21,35,34,39,38,63,1,54,63, +1,54,31,1,87,1,113,51,34,34,1,2,22,22,2,1,20,20,31,254,143,33,15,13,17,17,80,8,8,80,17,17, +13,15,33,1,132,11,2,24,2,10,9,15,96,97,191,15,9,10,2,24,2,11,168,19,19,168,1,120,1,34,34,51, +40,22,2,2,22,40,31,20,20,1,30,16,18,15,13,72,7,11,11,7,72,13,15,18,16,30,223,8,12,160,15,11, +11,160,160,11,11,15,160,12,8,128,14,14,128,0,0,0,0,3,0,7,255,192,2,56,1,192,0,21,0,43,0,66, +0,0,19,22,15,1,6,47,1,38,55,54,31,1,53,54,55,22,23,21,55,54,23,49,33,22,15,1,6,47,1,38, +55,54,31,1,53,54,55,22,23,21,55,54,23,49,7,22,31,1,22,7,6,43,1,39,21,35,34,39,38,63,1,54, +63,1,54,31,1,210,13,15,80,16,16,80,15,13,16,18,40,2,22,22,2,40,17,17,1,96,13,15,80,16,16,80, +15,13,16,18,40,2,22,22,2,40,17,17,87,11,2,24,2,10,9,15,96,97,191,15,9,10,2,24,2,11,168,19, +19,168,1,80,17,17,72,12,12,72,17,17,15,13,36,122,22,2,2,22,122,36,13,15,17,17,72,12,12,72,17,17, +15,13,36,122,22,2,2,22,122,36,13,15,183,8,12,160,15,11,11,160,160,11,11,15,160,12,8,128,14,14,128,0, +0,2,0,0,255,192,2,128,1,192,0,18,0,41,0,0,1,54,31,1,22,31,1,22,7,6,43,1,39,38,47,1, +38,39,55,19,22,31,1,22,7,6,43,1,39,21,35,34,39,38,63,1,54,63,1,54,31,1,1,141,19,19,168,11, +2,24,2,10,9,15,146,7,4,20,168,13,14,161,14,11,2,24,2,10,9,15,97,96,191,15,9,10,2,24,2,11, +168,19,19,168,1,185,14,14,128,8,12,160,15,11,11,41,26,16,128,9,3,122,254,224,8,12,160,15,11,11,160,160, +11,11,15,160,12,8,128,14,14,128,0,0,0,3,0,0,255,192,1,64,1,192,0,13,0,28,0,39,0,0,19,52, +55,49,54,51,33,50,23,22,29,1,33,53,5,17,6,7,38,39,53,35,21,6,7,38,39,17,33,7,38,39,6,7, +21,22,23,54,55,53,0,9,9,14,1,0,14,9,9,254,192,1,64,2,22,22,2,224,2,22,22,2,1,64,64,1, +15,15,1,1,15,15,1,1,160,14,9,9,9,9,14,32,32,64,254,120,22,2,2,22,8,8,22,2,2,22,1,136, +144,15,1,1,15,64,15,1,1,15,64,0,0,6,0,0,255,192,2,64,1,192,0,13,0,28,0,39,0,53,0,68, +0,79,0,0,19,50,23,49,22,29,1,33,53,52,55,54,59,1,7,33,17,6,7,38,39,53,35,21,6,7,38,39, +17,23,21,22,23,54,55,53,38,39,6,7,37,50,23,49,22,29,1,33,53,52,55,54,59,1,7,33,17,6,7,38, +39,53,35,21,6,7,38,39,17,23,21,22,23,54,55,53,38,39,6,7,224,14,9,9,255,0,9,9,14,192,224,1, +0,2,22,22,2,160,2,22,22,2,176,1,15,15,1,1,15,15,1,1,112,14,9,9,255,0,9,9,14,192,224,1, +0,2,22,22,2,160,2,22,22,2,176,1,15,15,1,1,15,15,1,1,192,9,9,14,32,32,14,9,9,96,254,120, +22,2,2,22,8,8,22,2,2,22,1,136,144,64,15,1,1,15,64,15,1,1,15,240,9,9,14,32,32,14,9,9, +96,254,120,22,2,2,22,8,8,22,2,2,22,1,136,144,64,15,1,1,15,64,15,1,1,15,0,0,0,7,0,0, +255,193,2,64,1,191,0,26,0,53,0,88,0,93,0,97,0,115,0,133,0,0,19,22,23,49,22,7,6,21,20,23, +22,7,6,7,6,39,38,39,38,53,52,55,54,55,54,23,49,33,54,23,49,22,23,22,21,20,7,6,7,6,39,38, +39,38,55,54,53,52,39,38,55,54,55,49,3,22,7,49,6,7,6,39,38,47,1,35,7,6,7,6,39,38,39,38, +55,19,38,53,54,55,54,55,22,23,22,23,20,7,19,47,1,35,7,51,39,51,39,7,39,20,23,22,7,6,39,38, +53,52,55,54,23,22,7,6,21,49,33,20,7,6,39,38,55,54,55,38,39,38,55,54,23,22,21,49,63,12,5,5, +5,16,16,5,5,5,12,13,12,12,5,21,21,5,12,12,13,1,194,13,12,12,5,21,21,5,12,12,13,12,5,5, +5,16,16,5,5,5,12,36,5,4,5,12,12,12,12,6,21,220,21,6,12,12,12,12,5,4,5,137,12,1,18,18, +27,27,18,18,1,12,137,108,14,134,14,162,119,76,38,38,98,11,7,19,21,11,15,15,11,21,19,7,11,1,64,15, +11,21,19,7,10,1,1,10,7,19,21,11,15,1,190,6,12,11,13,39,45,45,38,13,12,12,6,4,5,5,12,50, +58,58,50,12,5,5,4,4,5,5,12,50,58,58,50,12,5,5,4,6,12,12,13,38,45,45,39,13,11,12,6,254, +47,12,12,12,6,5,4,5,12,45,45,12,5,4,5,6,12,12,12,1,46,16,21,27,18,18,1,1,18,18,27,21, +16,254,210,83,32,32,96,83,83,160,29,25,22,9,8,19,35,39,39,35,19,7,11,21,25,29,39,35,19,8,9,22, +25,29,29,25,21,11,7,19,35,39,0,0,0,6,0,0,255,192,2,0,1,192,0,59,0,63,0,69,0,73,0,77, +0,88,0,0,19,54,31,1,22,23,22,7,6,7,21,20,7,6,43,1,23,51,50,23,22,21,20,7,6,43,1,34, +49,48,43,1,34,49,48,49,35,34,39,38,53,52,55,54,59,1,55,35,34,39,38,61,1,38,39,38,55,54,63,1, +19,39,7,51,39,23,55,39,35,15,2,55,39,31,1,39,7,39,6,7,22,23,51,54,55,38,39,35,242,14,14,160, +12,4,4,5,10,19,9,9,14,5,32,69,14,9,9,9,9,14,95,1,1,254,1,96,14,9,9,9,9,14,69,32, +5,14,9,9,19,10,5,4,4,12,160,73,59,58,117,122,63,63,5,116,5,9,11,46,35,110,45,11,34,118,15,1, +1,15,160,15,1,1,15,160,1,189,6,6,80,7,12,12,12,17,1,80,14,9,9,192,9,9,14,14,9,9,9,9, +14,14,9,9,192,9,9,14,80,1,17,12,12,12,7,80,254,67,49,49,164,53,53,28,28,55,67,38,29,29,38,67, +29,240,1,15,15,1,1,15,15,1,0,0,0,7,0,0,255,192,2,128,1,192,0,34,0,47,0,60,0,73,0,86, +0,99,0,136,0,0,1,54,55,49,54,55,51,22,23,22,23,21,51,53,54,55,22,23,21,51,22,23,22,23,21,6, +7,6,7,33,38,39,38,39,17,23,22,23,51,54,55,53,38,39,35,6,7,21,23,6,7,21,22,23,51,54,55,53, +38,39,35,7,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,7,22,23, +51,54,55,53,38,39,35,6,7,21,37,20,7,22,23,6,7,6,7,35,21,20,7,6,35,34,39,38,61,1,35,38, +39,38,39,54,55,38,53,54,55,54,55,22,23,22,23,1,32,1,13,14,20,96,20,14,13,1,40,2,22,22,2,24, +20,14,13,1,1,13,14,20,255,0,20,14,13,1,64,1,15,32,15,1,1,15,32,15,1,16,15,1,1,15,32,15, +1,1,15,32,16,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,16,1,15,32,15,1, +1,15,32,15,1,254,224,2,32,2,1,22,23,34,16,10,9,13,14,9,9,16,35,22,22,1,2,31,1,1,27,27, +41,41,27,27,1,1,144,20,14,13,1,1,13,14,20,144,72,22,2,2,22,72,1,13,14,20,224,20,14,13,1,1, +13,14,20,1,160,64,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15, +32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,240,9,7,23, +41,35,22,22,1,160,14,9,9,9,9,14,160,1,22,22,35,41,23,7,9,41,27,27,1,1,27,27,41,0,0,0, +0,1,0,0,255,192,2,0,1,192,0,37,0,0,37,7,23,22,7,6,7,5,6,39,38,55,19,54,55,54,31,1, +55,38,53,52,63,1,54,51,50,23,22,21,20,15,1,6,35,34,39,49,1,88,99,66,12,4,5,16,255,0,19,14, +13,5,80,6,17,18,13,65,99,11,11,95,22,27,28,21,20,20,96,11,15,15,11,235,99,65,13,18,17,6,80,5, +13,14,18,1,0,17,5,4,12,66,99,11,15,15,11,96,20,20,21,28,27,22,95,11,11,0,0,0,0,4,0,0, +255,192,2,0,1,192,0,33,0,55,0,77,0,99,0,0,19,22,29,1,51,54,55,51,22,23,22,23,6,7,6,7, +35,38,39,35,21,20,7,6,47,1,38,39,54,63,1,54,23,49,23,52,55,49,54,59,1,50,23,22,29,1,20,7, +6,43,1,34,39,38,61,1,7,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59,1,33,50, +23,49,22,29,1,20,7,6,35,33,34,39,38,61,1,52,55,54,51,33,241,15,89,7,24,88,20,14,13,1,1,13, +14,20,88,24,7,89,15,15,16,192,17,1,1,17,192,16,15,47,9,9,14,160,14,9,9,9,9,14,160,14,9,9, +160,14,9,9,9,9,14,96,14,9,9,9,9,14,96,1,96,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1, +0,1,187,9,18,72,22,2,1,13,14,20,20,14,13,1,2,22,72,18,9,9,7,96,10,19,19,10,96,7,9,251, +14,9,9,9,9,14,64,14,9,9,9,9,14,64,128,9,9,14,64,14,9,9,9,9,14,64,14,9,9,9,9,14, +64,14,9,9,9,9,14,64,14,9,9,0,0,5,0,0,255,192,2,128,1,192,0,50,0,56,0,74,0,92,0,113, +0,0,19,54,55,49,54,55,33,22,23,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7,6,43,1,6,7, +6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,5,53,39,35,21,51,5,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,23,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,3, +38,7,6,31,1,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1,0,1,13,14,20,1,64,20,14,13,1,51, +25,20,77,19,14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,16,20,14,13, +1,2,32,77,51,128,254,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13, +14,20,20,14,13,1,1,13,14,20,224,16,17,14,14,39,166,22,2,2,22,166,39,14,14,17,16,80,15,15,80,1, +144,20,14,13,1,1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,27,41,1,13,14,20,1,64,208,19,77,96,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,17,14,14,17,16,40,2,22,22,2,39,17,16,15, +15,80,16,17,80,0,0,0,0,5,0,0,255,192,2,128,1,192,0,50,0,56,0,74,0,92,0,113,0,0,19,54, +55,49,54,55,33,22,23,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7,6,43,1,6,7,6,7,38,39, +38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,5,53,39,35,21,51,5,54,55,49,54,55,38,39,38, +39,6,7,6,7,22,23,22,23,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,37,54,55,49,54, +55,38,39,38,39,38,7,6,7,6,7,22,23,22,23,49,0,1,13,14,20,1,64,20,14,13,1,51,25,20,77,19, +14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,16,20,14,13,1,2,32,77, +51,128,254,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,254,240,31,20,20,1,2,20,21,17,13,11,17,21,20,2,1,20,20,31,1,144,20,14,13,1, +1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41, +1,13,14,20,1,64,208,19,77,96,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20, +20,14,13,1,1,13,14,20,20,14,13,1,96,1,18,19,29,21,33,33,22,13,13,22,33,33,21,29,19,18,1,0, +0,4,0,0,255,224,2,128,1,160,0,66,0,71,0,89,0,107,0,0,19,54,55,49,54,55,51,22,23,51,22,31, +1,20,59,1,22,23,22,23,21,50,23,22,21,20,7,6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38, +39,38,39,35,34,39,38,53,52,55,54,51,53,34,39,38,61,1,52,55,54,55,53,5,39,35,21,51,5,54,55,49, +54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39, +32,1,18,18,27,224,37,18,52,41,18,53,1,4,27,18,18,1,14,9,9,9,9,14,32,1,27,27,41,41,27,27, +1,128,1,27,27,41,41,27,27,1,32,14,9,9,9,9,14,14,9,9,9,9,14,1,182,43,43,86,254,202,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,96,27,18,18,1,2,30,2,36,119,2,1,18,19,26,32,10,9,14,14,9,9,41,27,27,1,1,27,27,41,41, +27,27,1,1,27,27,41,9,9,14,14,9,10,32,9,9,14,96,13,9,9,1,31,128,96,96,208,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,6,0,0, +255,224,2,128,1,160,0,67,0,72,0,90,0,108,0,131,0,156,0,0,1,22,23,51,22,31,1,6,23,50,21,51, +22,23,22,23,21,50,23,22,21,20,7,6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35, +34,39,38,53,52,55,54,51,53,34,39,38,61,1,52,55,54,51,53,54,55,54,55,51,23,21,51,39,35,7,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,3,38,7,6,7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6,7,21,39,7,38,39,6,7,21,22,23, +22,23,54,55,54,55,53,38,39,6,7,21,6,7,38,39,53,1,64,37,18,52,41,18,53,1,1,1,4,27,18,18, +1,14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,32,14,9,9,9,9,14, +14,9,9,9,9,14,1,18,18,27,224,64,86,43,43,224,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,227,7,11,10,1,1,15,15,1,35,7,11,10,1, +1,15,15,1,35,125,1,15,15,1,1,13,14,20,20,14,13,1,1,15,15,1,1,15,15,1,1,160,2,30,2,36, +119,1,1,1,1,18,18,27,32,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,9, +9,14,14,9,9,32,9,9,14,96,14,9,9,32,27,18,18,1,96,96,96,208,1,13,14,20,20,14,13,1,1,13, +14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,41,9,3,4,11,96,15,1, +1,15,43,52,9,3,4,11,96,15,1,1,15,43,52,9,15,1,1,15,64,20,14,13,1,1,13,14,20,64,15,1, +1,15,64,15,1,1,15,64,0,5,0,0,255,192,2,128,1,192,0,39,0,71,0,81,0,90,0,99,0,0,1,29, +2,49,22,23,21,20,23,39,7,6,39,38,61,1,52,63,1,53,7,6,39,38,61,1,52,63,1,53,54,55,54,55, +22,23,22,23,49,23,54,55,49,54,55,33,22,23,22,23,21,6,7,21,6,7,35,38,39,53,35,21,6,7,35,38, +39,53,38,39,53,23,7,51,39,38,39,35,6,7,49,23,54,55,38,39,6,7,22,23,39,6,7,22,23,54,55,38, +39,1,0,3,29,2,90,91,8,6,7,6,50,123,8,7,6,8,136,1,16,15,24,24,16,15,1,32,1,13,14,20, +1,0,20,14,13,1,2,30,2,22,16,22,2,160,2,22,16,22,2,30,2,80,16,224,16,6,14,152,14,6,200,22, +2,2,22,22,2,2,22,208,22,2,2,22,22,2,2,22,1,106,97,1,228,34,17,33,8,6,29,30,2,5,4,8, +32,8,4,40,82,37,3,5,5,8,64,9,5,81,107,26,29,29,2,2,29,29,26,90,20,14,13,1,1,13,14,20, +224,33,12,43,22,2,2,22,40,40,22,2,2,22,43,12,33,224,79,49,49,14,1,1,14,145,2,22,22,2,2,22, +22,2,48,2,22,22,2,2,22,22,2,0,0,8,0,0,255,192,2,128,1,192,0,10,0,21,0,39,0,58,0,75, +0,98,0,116,0,134,0,0,19,54,55,33,22,23,6,7,33,38,39,17,54,55,33,22,23,6,7,33,38,39,19,20, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,7,54,55,49,54,55,51,50,23,6,7,6,7,35,34,39, +38,53,49,37,54,59,1,22,23,22,23,20,7,6,43,1,38,39,38,39,7,22,23,22,21,6,7,6,43,1,34,39, +38,53,52,55,54,55,54,59,1,50,23,55,20,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,5,52,55, +49,54,55,22,23,22,23,6,7,6,7,38,39,38,53,0,2,22,2,80,22,2,2,22,253,176,22,2,2,22,2,80, +22,2,2,22,253,176,22,2,211,19,18,27,27,18,18,1,1,18,18,27,27,18,19,179,1,18,18,27,96,19,14,28, +20,19,8,86,14,9,9,1,128,14,18,96,27,18,18,1,9,9,14,82,9,20,21,28,25,51,18,6,1,9,9,13, +224,14,9,9,5,18,48,11,14,96,11,10,172,19,18,27,27,18,18,1,1,18,18,27,27,18,19,254,191,23,23,34, +34,22,23,1,1,23,22,34,34,23,23,1,168,22,2,2,22,22,2,2,22,254,48,22,2,2,22,22,2,2,22,1, +72,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,27,18,18,1,9,12,23,22,30,9,9,14,55,9, +1,18,18,27,14,9,9,30,23,23,11,25,14,48,15,17,14,9,9,9,9,14,17,15,47,14,3,2,130,27,18,18, +1,1,18,18,27,27,18,18,1,1,18,18,27,16,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,0,0, +0,7,0,0,255,224,2,128,1,160,0,17,0,36,0,53,0,76,0,94,0,112,0,132,0,0,19,20,7,49,6,7, +38,39,38,39,54,55,54,55,22,23,22,21,7,54,55,49,54,55,51,50,23,6,7,6,7,35,34,39,38,53,49,37, +54,59,1,22,23,22,23,20,7,6,43,1,38,39,38,39,7,22,23,22,21,6,7,6,43,1,34,39,38,53,52,55, +54,55,54,59,1,50,23,55,20,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,5,52,55,49,54,55,22, +23,22,23,6,7,6,7,38,39,38,53,1,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,211, +19,18,27,27,18,18,1,1,18,18,27,27,18,19,179,1,18,18,27,96,19,14,28,20,19,8,86,14,9,9,1,128, +14,18,96,27,18,18,1,9,9,14,82,9,20,21,28,25,51,18,6,1,9,9,13,224,14,9,9,5,18,48,11,14, +96,11,10,172,19,18,27,27,18,18,1,1,18,18,27,27,18,19,254,191,23,23,34,34,22,23,1,1,23,22,34,34, +23,23,1,110,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64,1,96,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,160,27,18,18,1,9,12,23,22,30,9,9,14,55,9,1,18,18,27,14,9,9,30,23,23,11, +25,14,48,15,17,14,9,9,9,9,14,17,15,47,14,3,2,130,27,18,18,1,1,18,18,27,27,18,18,1,1,18, +18,27,16,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,208,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,10,0,0,255,193,2,127,1,192,0,10,0,21,0,33,0,44,0,62,0,92,0,111,0,126,0,140, +0,158,0,0,19,22,7,6,47,1,38,55,54,31,1,37,54,23,22,15,1,6,39,38,63,1,1,55,54,23,22,15, +1,6,39,38,55,49,37,38,55,54,31,1,22,7,6,47,1,37,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,23,54,53,50,51,50,59,1,50,51,50,51,22,23,22,23,20,49,22,21,6,7,35,38,39,52,55,54,55, +49,39,52,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,53,49,23,50,23,6,7,6,7,35,38,39,54,55, +54,55,51,5,35,38,39,54,59,1,22,23,22,23,6,7,49,39,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,112,15,15,16,17,72,14,14,17,17,71,1,231,17,16,15,15,72,16,17,14,14,72,253,176,72,17,16,15, +15,71,17,17,14,14,2,8,14,14,17,16,72,15,15,16,17,72,254,241,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,10,1,5,3,3,2,80,2,3,3,4,39,15,1,1,4,2,22,176,22,2,4,14,40,138,14,13,21, +20,14,13,1,1,13,14,20,21,13,14,91,14,11,25,17,17,6,56,25,2,1,15,15,22,70,1,42,56,14,52,13, +13,70,22,15,15,1,2,25,101,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,113,17,16,15,15,71, +17,17,14,14,72,72,14,14,17,17,71,15,15,16,17,72,254,48,72,14,14,17,16,72,15,15,16,17,39,16,17,14, +14,72,17,16,15,15,72,240,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,98,1,1,9,34,3,1,1, +11,13,22,2,2,22,13,11,37,9,114,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,6,10,19,19, +26,2,25,22,15,15,1,80,53,21,6,1,15,15,22,25,2,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,0,0,0,8,0,0,255,192,2,128,1,192,0,17,0,34,0,48,0,72,0,90,0,108,0,130,0,152,0,0, +19,6,7,49,6,7,38,39,38,53,52,55,54,55,22,23,22,23,7,54,55,49,54,55,51,50,23,6,7,6,7,35, +38,39,49,37,54,59,1,22,23,22,23,6,7,35,38,39,49,7,22,23,22,21,6,7,35,38,39,52,55,54,55,50, +51,50,59,1,50,51,50,51,49,55,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,37,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55, +54,55,33,1,20,23,49,22,51,33,50,55,54,53,17,52,39,38,35,33,34,7,6,21,17,224,1,13,14,20,21,13, +14,14,13,21,20,14,13,1,128,1,15,15,22,70,14,11,25,17,17,6,56,25,2,1,43,13,13,70,22,15,15,1, +2,25,56,14,52,23,41,15,4,2,22,176,22,2,4,15,40,5,3,3,2,80,2,3,3,4,140,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,255,0,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,32,41, +27,27,1,1,27,27,41,254,64,41,27,27,1,1,27,27,41,1,192,254,32,9,9,14,1,192,14,9,9,9,9,14, +254,64,14,9,9,1,16,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,133,22,15,15,1,6,10,19,19, +26,2,25,47,6,1,15,15,22,25,2,53,21,26,10,38,11,13,22,2,2,22,13,11,38,10,112,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,16,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,192,1,27,27, +41,254,192,41,27,27,1,1,27,27,41,1,64,41,27,27,1,254,96,14,9,9,9,9,14,1,64,14,9,9,9,9, +14,254,192,0,0,10,0,0,255,192,2,128,1,192,0,16,0,35,0,50,0,64,0,87,0,105,0,123,0,140,0,157, +0,174,0,0,19,6,7,38,39,53,52,55,54,59,1,22,23,6,7,35,21,23,52,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,53,49,23,50,23,6,7,6,7,35,38,39,54,55,54,55,51,5,35,38,39,54,59,1,22,23, +22,23,6,7,49,7,6,7,35,38,39,52,55,54,55,50,51,50,59,1,50,51,50,51,22,23,22,21,39,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,7,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +55,54,55,51,50,23,22,29,1,6,7,38,39,53,35,38,39,1,51,22,23,6,7,35,34,39,38,61,1,54,55,22, +23,21,33,51,53,54,55,22,23,21,20,7,6,43,1,38,39,54,55,48,2,22,22,2,9,9,14,104,22,2,2,22, +88,80,14,13,21,20,14,13,1,1,13,14,20,21,13,14,91,14,11,25,17,17,6,56,25,2,1,15,15,22,70,1, +42,56,14,52,13,13,70,22,15,15,1,2,25,85,2,22,176,22,2,4,15,40,5,3,3,2,80,2,3,3,4,41, +15,4,16,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,32,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,96,2,22,104,14,9,9,2,22,22,2,88,22,2,254,80,88,22,2,2,22,104,14,9,9,2,22,22, +2,1,200,88,2,22,22,2,9,9,14,104,22,2,2,22,1,56,22,2,2,22,104,14,9,9,2,22,22,2,88,40, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,6,10,19,19,26,2,25,22,15,15,1,80,53,21,6, +1,15,15,22,25,2,24,22,2,2,22,13,11,38,10,10,38,11,13,184,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,16,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,168,22,2,9,9,14,104,22,2,2,22, +88,2,22,254,72,2,22,22,2,9,9,14,104,22,2,2,22,88,88,22,2,2,22,104,14,9,9,2,22,22,2,0, +0,4,0,0,255,192,2,0,1,160,0,31,0,36,0,54,0,70,0,0,19,52,55,49,54,59,1,50,23,22,21,20, +7,6,35,21,6,7,20,23,6,7,38,39,38,39,17,34,39,38,53,49,23,51,53,35,21,5,6,7,49,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,0,9,9,14,192, +14,9,9,9,9,14,31,1,15,28,51,41,27,27,1,14,9,9,96,64,64,1,160,2,40,41,61,61,41,40,2,2, +40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,128,14,9,9,9,9,14,14,9, +9,171,44,57,38,33,39,2,1,27,27,41,1,32,9,9,14,128,96,96,176,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,5,0,32,255,192,2,33,1,160,0,74, +0,79,0,145,0,163,0,172,0,0,1,50,23,49,22,21,20,7,6,35,21,6,7,6,21,20,23,20,49,48,51,49, +48,35,20,57,1,34,51,48,49,34,7,6,21,20,23,22,23,48,49,34,51,49,52,21,48,49,48,21,50,53,21,34, +49,48,49,6,23,6,7,38,39,38,39,17,34,39,38,53,52,55,54,59,1,7,53,35,21,51,55,22,23,22,23,22, +55,54,23,22,7,6,23,22,23,22,23,6,7,6,7,6,23,22,7,6,39,38,7,6,7,6,7,38,39,38,39,38, +7,6,39,38,55,54,39,38,39,38,39,54,55,54,55,54,39,38,55,54,23,22,55,54,55,54,55,49,7,50,55,49, +54,53,52,39,38,35,34,7,6,21,20,23,22,51,23,6,7,22,23,54,55,38,39,1,0,14,9,9,9,9,14,5, +4,16,16,1,1,1,1,24,16,16,16,16,24,1,1,1,1,17,1,28,43,41,27,27,1,14,9,9,9,9,14,192, +64,64,64,192,22,2,1,19,19,17,17,17,14,14,15,8,7,23,22,2,2,22,23,7,8,15,14,14,17,17,17,19, +19,1,2,22,22,2,2,18,19,17,17,17,14,14,15,8,8,22,22,2,2,22,22,8,8,15,14,14,17,17,17,19, +18,2,2,22,32,14,9,9,9,9,14,14,9,9,9,9,14,64,22,2,2,22,22,2,2,22,1,160,9,9,14,14, +9,9,111,3,4,17,23,22,17,1,1,16,16,24,24,15,16,1,1,1,1,1,1,18,23,29,2,1,27,27,41,1, +32,9,9,14,14,9,9,160,96,96,2,2,22,22,8,8,15,14,14,17,17,17,19,18,2,2,22,22,2,1,19,19, +17,17,17,14,14,15,8,8,22,22,2,2,22,22,8,8,15,14,14,17,17,17,19,19,1,2,22,22,2,2,18,19, +17,17,17,14,14,15,8,8,22,22,2,162,9,9,14,14,9,9,9,9,14,14,9,9,8,2,22,22,2,2,22,22, +2,0,0,0,0,5,0,0,255,192,2,128,1,192,0,10,0,103,0,121,0,130,0,141,0,0,1,6,39,38,63,1, +54,23,22,15,1,39,22,23,55,54,23,22,15,1,22,7,54,23,55,54,23,22,15,1,22,23,6,7,38,47,1,7, +22,23,6,7,20,21,48,21,6,47,1,7,22,31,1,22,15,1,6,35,34,47,1,7,6,35,34,39,38,53,52,63, +1,39,38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54, +31,1,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22, +23,54,55,53,38,39,6,7,1,160,16,17,14,14,88,17,16,15,15,88,99,7,5,46,17,16,15,15,57,7,9,31, +32,59,17,16,15,15,45,7,6,70,43,11,9,12,32,26,24,24,1,46,36,13,31,43,35,11,9,9,11,30,38,39, +29,12,69,10,13,13,10,9,9,69,10,28,28,11,12,11,11,32,5,30,10,28,28,11,11,12,10,32,6,30,10,29, +29,11,11,12,11,35,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17, +2,14,15,1,1,15,14,2,1,64,15,15,16,17,88,14,14,17,17,87,89,6,8,46,14,14,17,17,58,33,33,10, +7,59,14,14,17,16,47,5,6,11,52,6,9,12,31,4,12,41,50,1,1,1,7,34,12,32,4,33,10,13,11,11, +28,28,12,69,9,9,10,13,13,10,68,11,30,38,38,30,12,8,8,12,33,42,30,11,29,39,38,29,12,9,9,12, +32,42,30,11,29,38,39,29,12,9,9,12,254,183,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2, +22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,0,2,0,32,255,192,1,224,1,192,0,61, +0,70,0,0,1,54,55,49,54,55,51,22,23,22,23,17,6,7,6,7,38,39,38,39,53,52,39,38,35,34,7,6, +29,1,6,7,6,7,38,39,38,39,53,54,55,54,55,22,23,22,23,21,20,23,22,51,50,55,54,61,1,35,38,39, +38,39,55,6,7,22,23,54,55,38,39,1,0,1,27,27,41,38,38,26,25,1,1,39,38,58,58,38,39,1,12,11, +17,17,11,12,1,13,14,20,20,14,13,1,1,39,38,58,58,38,39,1,12,11,17,17,11,12,32,41,27,27,1,120, +22,2,2,22,22,2,2,22,1,96,41,27,27,1,1,25,26,38,254,226,58,38,39,1,1,39,38,58,80,17,11,12, +12,11,17,168,20,14,13,1,1,13,14,20,168,58,38,39,1,1,39,38,58,80,17,11,12,12,11,17,184,1,27,27, +41,32,2,22,22,2,2,22,22,2,0,0,0,5,0,0,255,224,2,128,1,160,0,19,0,39,0,65,0,90,0,116, +0,0,1,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,17,50,23,49,22,21,20,7,6,35, +33,34,39,38,53,52,55,54,51,33,37,54,31,1,55,54,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1, +39,38,55,49,5,55,54,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,55,54,31,1,55,54,31, +1,55,54,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,55,49,2,96,14,9,9,9,9,14,253, +192,14,9,9,9,9,14,2,64,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64,253,167,17,17,55,55,17, +16,15,15,54,54,15,15,16,17,55,55,17,17,14,14,55,55,14,14,1,57,55,17,16,15,15,54,54,15,15,16,17, +55,56,16,17,14,14,55,55,14,14,17,16,56,135,17,16,56,55,17,16,15,15,54,54,15,15,16,17,55,56,16,17, +14,14,55,55,14,14,1,160,9,9,14,14,9,9,9,9,14,14,9,9,254,128,9,9,14,14,9,9,9,9,14,14, +9,9,249,14,14,55,55,14,14,17,16,56,55,17,16,15,15,54,54,15,15,16,17,55,56,16,17,55,55,14,14,17, +16,56,55,17,16,15,15,54,54,15,15,16,17,55,56,16,17,14,14,55,55,14,14,55,55,14,14,17,16,56,55,17, +16,15,15,54,54,15,15,16,17,55,56,16,17,0,0,0,0,2,0,0,255,192,1,64,1,192,0,17,0,76,0,0, +19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,34,39,49,38,63,1,7,6,7,6,39,38,39, +38,63,1,54,55,22,31,1,22,7,6,7,6,39,38,47,1,23,22,7,6,43,1,21,20,7,6,35,34,39,38,61, +1,35,21,20,7,6,35,34,39,38,61,1,35,223,1,17,18,28,26,19,18,1,1,18,19,26,28,18,17,1,153,8, +5,4,2,31,28,9,13,12,11,11,2,1,8,58,37,58,58,37,59,7,1,2,11,11,12,13,8,29,30,3,4,5, +8,18,9,9,14,14,9,9,16,9,9,14,14,9,9,18,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18, +18,27,254,176,7,6,8,93,37,11,2,1,7,9,13,12,11,79,44,2,2,44,79,11,12,13,9,7,1,2,11,37, +93,8,6,7,80,14,9,9,9,9,14,80,80,14,9,9,9,9,14,80,0,2,0,16,255,192,1,111,1,192,0,17, +0,74,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,22,23,50,55,54,63,1,54,55, +54,23,22,23,22,15,1,6,7,17,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,53,17,38,47, +1,38,55,54,55,54,23,22,31,1,22,23,22,51,49,1,0,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18, +1,100,17,19,31,25,26,17,18,8,12,13,12,11,2,3,7,18,28,45,9,9,14,14,9,9,32,9,9,14,14,9, +9,43,28,20,7,3,2,11,12,12,13,8,19,23,36,1,2,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1, +18,18,27,106,5,1,14,14,26,27,12,2,3,7,8,12,13,12,27,43,22,254,254,14,9,9,9,9,14,96,96,14, +9,9,9,9,14,1,3,21,42,28,12,12,13,8,7,3,2,11,30,32,13,1,0,0,0,4,0,0,255,192,2,64, +1,192,0,29,0,33,0,51,0,67,0,0,19,54,55,49,54,55,51,21,20,23,22,59,1,21,6,7,6,7,20,23, +22,23,6,35,33,38,39,38,39,17,5,53,23,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,0,1,18,18,27,160,9,9,14,128,56,36,35,1,20,20, +34,5,5,255,0,27,18,18,1,1,0,128,128,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99, +61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37, +24,1,1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10, +10,11,11,40,10,10,72,11,11,10,10,0,0,4,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,76,0,0, +19,54,55,49,54,55,51,21,20,23,22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53, +23,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39,38,7,6,31,1, +7,6,23,22,63,1,23,22,55,54,47,1,55,0,1,18,18,27,160,9,9,14,128,56,36,35,1,20,20,34,5,5, +255,0,27,18,18,1,1,0,128,128,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,128,27,18,18,1,128,14,9,9,39,16, +46,45,62,45,37,37,24,1,1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40, +41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,5,0,0, +255,193,2,128,1,192,0,17,0,53,0,71,0,89,0,99,0,0,19,20,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,21,23,35,23,22,7,6,7,6,39,38,47,1,33,38,39,38,39,17,54,55,54,55,33,22,23,22,23,17, +6,7,6,7,35,39,51,39,1,17,51,48,49,48,49,53,54,55,54,55,54,55,54,61,1,35,33,21,20,7,6,7, +20,49,20,49,23,51,22,31,1,51,17,35,3,39,6,7,21,48,49,20,53,23,191,14,13,21,20,13,14,1,1,14, +13,20,21,13,14,194,74,84,7,3,2,11,12,12,13,8,33,254,252,20,14,13,1,1,13,14,20,2,32,20,14,13, +1,1,13,14,20,170,43,46,40,254,190,64,1,27,27,46,28,15,16,224,1,33,20,19,33,41,72,22,14,79,68,224, +86,69,5,1,75,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,208,126,11,13,13,8,7,3,2, +11,50,1,13,14,20,1,96,20,14,13,1,1,13,14,20,254,160,20,14,13,1,64,48,1,16,254,192,74,50,39,40, +19,11,24,23,30,10,10,41,35,35,22,1,1,62,1,17,95,1,64,254,192,103,13,16,73,1,1,1,0,1,0,0, +255,192,2,0,1,192,0,62,0,0,5,35,17,38,39,38,39,6,7,6,7,21,22,23,6,7,6,7,38,39,38,39, +54,55,53,54,55,54,55,50,23,53,54,55,54,55,22,23,22,23,21,22,23,6,7,6,7,38,39,38,39,54,55,53, +38,39,38,39,6,7,6,7,17,1,32,64,1,15,16,24,24,16,15,1,46,2,1,22,23,34,34,23,22,1,2,46, +1,34,34,51,31,25,1,34,34,51,51,34,34,1,46,2,1,22,23,34,34,23,22,1,2,46,1,15,16,24,24,16, +15,1,64,1,8,24,16,15,1,1,15,16,24,12,17,54,22,33,33,29,29,33,32,23,54,17,12,51,34,34,1,14, +22,51,34,34,1,1,34,34,51,12,17,54,22,33,33,29,29,33,32,23,54,17,12,24,16,15,1,1,15,16,24,254, +120,0,0,0,0,2,0,0,255,224,2,128,1,160,0,42,0,47,0,0,37,21,6,7,6,7,33,34,39,38,53,52, +55,54,51,33,53,33,34,39,38,61,1,39,38,39,38,53,52,63,1,54,55,54,51,50,23,5,22,23,22,21,49,39, +37,21,33,53,2,128,1,13,14,20,253,240,14,9,9,9,9,14,1,128,254,160,14,9,9,30,15,9,10,8,36,25, +36,36,42,41,37,1,70,25,14,14,192,254,192,1,64,149,133,20,14,13,1,9,9,14,14,9,9,48,9,9,14,117, +5,3,11,11,15,14,11,47,34,18,18,18,164,12,23,22,28,11,57,73,16,0,0,0,0,4,0,0,255,192,1,191, +1,192,0,60,0,82,0,100,0,118,0,0,19,34,15,1,6,39,38,63,1,54,55,33,22,31,1,22,7,6,47,1, +38,43,1,21,51,22,23,22,23,21,6,7,23,22,7,6,7,35,34,47,1,35,7,6,43,1,38,39,38,63,1,38, +39,53,54,55,54,55,51,53,35,23,34,7,49,6,29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,43,1,21, +34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20, +23,22,51,87,19,12,13,16,18,16,12,13,27,42,1,18,42,26,14,12,17,17,16,12,13,19,113,40,41,27,27,1, +2,35,66,5,3,3,8,39,13,9,55,128,55,9,13,40,8,2,3,5,66,35,2,1,27,27,41,40,113,73,14,9, +9,9,9,14,128,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14, +9,9,9,9,14,1,144,15,16,16,12,16,18,16,32,1,1,32,16,18,16,12,16,16,15,48,1,27,27,41,160,47, +28,66,6,6,6,1,9,55,55,9,1,6,6,6,66,28,47,160,41,27,27,1,48,112,9,9,14,32,14,9,9,9, +9,14,32,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9, +0,2,0,0,255,192,1,255,1,192,0,29,0,33,0,0,1,54,39,49,38,39,33,6,7,6,31,1,21,35,6,7, +6,7,22,23,51,54,55,38,39,38,39,35,53,55,7,39,33,7,1,246,15,8,8,23,254,68,23,8,8,15,214,48, +20,14,13,1,1,15,224,15,1,1,13,13,20,47,212,246,149,1,42,149,1,134,18,19,19,2,2,19,19,18,214,176, +1,13,14,20,15,1,1,15,20,14,13,1,176,214,155,149,149,0,0,0,0,1,0,0,255,192,2,0,1,192,0,45, +0,0,37,6,7,49,6,7,38,39,38,39,54,55,54,55,50,23,53,5,21,6,7,6,7,38,39,38,39,54,55,54, +55,50,23,53,52,55,54,55,37,54,51,50,23,22,21,3,1,255,1,27,27,40,40,27,27,1,1,27,27,40,17,15, +255,0,2,27,27,41,41,27,26,1,1,27,27,40,17,15,7,6,10,1,63,6,5,14,9,9,1,81,34,23,22,1, +1,22,23,33,34,22,22,1,5,146,76,208,34,23,22,1,1,22,23,34,34,22,22,1,5,231,11,8,9,3,95,1, +9,9,14,254,177,0,0,0,0,2,0,0,255,192,2,0,1,191,0,28,0,46,0,0,37,39,54,39,38,39,38,39, +38,7,6,7,6,23,22,23,22,23,22,55,23,22,51,50,55,54,53,52,39,37,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,1,244,119,42,9,11,49,49,70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16,16, +12,12,12,254,91,1,37,36,54,54,37,36,1,1,36,37,54,54,36,37,1,4,120,62,83,70,48,49,10,8,30,31, +55,56,69,70,49,50,10,9,42,119,12,12,12,16,16,12,236,54,36,37,1,1,37,36,54,54,36,37,1,1,37,36, +54,0,0,0,0,1,0,0,255,224,2,0,1,149,0,31,0,0,19,53,54,55,54,55,54,23,22,31,1,55,54,55, +54,23,22,23,22,23,21,6,15,1,6,35,34,47,1,38,39,49,0,1,33,33,52,34,33,33,25,12,11,26,32,33, +35,52,33,33,1,1,47,180,12,16,16,12,180,47,1,1,1,6,54,38,39,10,5,10,10,25,12,12,25,10,10,5, +10,39,38,54,6,65,44,169,11,11,169,44,65,0,0,0,0,1,0,24,255,192,2,40,1,192,0,30,0,0,1,23, +22,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,55,54,63,2,54,55,22,31,1,1,125,144,19, +7,5,13,104,24,3,16,16,17,129,128,18,16,15,2,25,104,14,6,6,19,144,64,10,19,20,9,64,1,42,22,3, +18,19,14,102,147,19,12,11,9,68,68,9,11,12,19,147,102,14,19,18,3,22,132,17,1,1,17,132,0,2,0,0, +255,192,1,192,1,192,0,17,0,36,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35, +6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,224,54,37,36,1,1,36,37,54,54,37,36,1,1,36, +37,54,51,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,192,1,36,37,54,54,37,36,1,1,36,37, +54,54,37,36,1,48,2,49,49,73,15,10,10,10,10,15,73,49,49,2,0,9,0,0,255,224,1,255,1,160,0,20, +0,33,0,46,0,59,0,72,0,85,0,98,0,111,0,124,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55, +54,53,17,52,39,38,39,1,6,7,35,38,39,53,54,55,51,22,21,23,53,6,7,35,38,39,53,54,55,51,22,29, +1,55,6,7,35,38,39,53,54,55,51,22,21,31,1,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38, +39,53,54,55,51,22,23,21,23,6,7,35,38,61,1,54,55,51,22,23,21,39,6,7,35,38,39,53,54,55,51,22, +23,21,53,6,7,35,38,39,53,54,55,51,22,29,1,1,207,254,96,20,13,13,1,1,13,13,20,1,160,20,14,14, +14,13,21,254,160,1,7,48,7,1,1,7,47,8,1,1,7,48,7,1,1,7,47,8,1,1,7,48,7,1,1,7, +47,8,1,240,1,15,160,15,1,1,15,160,15,1,1,15,160,15,1,1,15,160,15,1,112,1,7,47,7,1,7,47, +7,1,1,1,7,47,7,1,1,7,47,7,1,1,7,47,7,1,1,6,47,8,1,160,1,13,14,20,254,160,20,14, +13,1,1,13,14,20,1,96,20,14,13,1,254,136,7,1,1,7,48,7,1,1,7,48,128,7,1,1,7,48,7,1, +1,7,48,128,7,1,1,7,48,7,1,1,7,48,248,15,1,1,15,96,15,1,1,15,96,192,15,1,1,15,96,15, +1,1,15,96,200,7,1,1,7,48,7,1,1,7,48,128,7,1,1,7,48,7,1,1,7,48,128,7,1,1,7,48, +7,1,1,7,48,0,0,0,0,5,0,0,255,224,2,0,1,160,0,21,0,26,0,31,0,36,0,41,0,0,1,22, +23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,21,35,21,51,53,21,35,21,51,53,39,53, +35,21,51,7,51,53,35,21,1,192,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,160,160, +160,160,224,160,160,160,160,160,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,128, +128,192,128,128,64,128,128,192,128,128,0,0,0,10,0,0,255,224,2,0,1,160,0,21,0,26,0,31,0,36,0,41, +0,46,0,51,0,56,0,61,0,66,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54, +55,33,5,35,21,51,53,23,51,53,35,21,55,35,21,51,53,5,51,53,35,21,55,35,21,51,53,23,51,53,35,21, +7,35,21,51,53,23,51,53,35,21,55,35,21,51,53,1,192,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1, +18,18,27,1,128,254,216,88,88,56,88,88,240,88,88,254,128,88,88,232,88,88,64,88,88,208,88,88,56,88,88,240, +88,88,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,64,64,64,64,64,64,64, +64,192,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,7,0,0,255,224,2,0,1,160,0,21, +0,26,0,31,0,36,0,41,0,46,0,51,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,33,38, +39,38,39,17,23,51,53,35,21,37,33,21,33,53,5,51,53,35,21,37,33,21,33,53,5,51,53,35,21,37,33,21, +33,53,0,1,18,18,27,1,128,27,18,18,1,1,18,18,27,254,128,27,18,18,1,64,64,64,1,128,255,0,1,0, +254,128,64,64,1,128,255,0,1,0,254,128,64,64,1,128,255,0,1,0,1,96,27,18,18,1,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,64,64,64,64,64,64,192,64,64,64,64,64,192,64,64,64,64,64,0,1,0,0, +0,32,1,192,1,96,0,26,0,0,1,22,21,49,20,7,1,6,35,34,47,1,38,53,52,55,54,51,50,31,1,55, +54,51,50,23,49,1,183,9,9,255,0,10,13,13,10,128,9,9,10,13,13,10,104,234,10,13,13,10,1,87,10,13, +13,10,255,0,9,9,128,10,13,13,10,9,9,106,234,9,9,0,0,0,0,1,0,0,0,32,1,64,1,96,0,41, +0,0,37,22,21,49,20,7,6,35,34,47,1,7,6,35,34,39,38,53,52,63,1,39,38,53,52,55,54,51,50,31, +1,55,54,51,50,23,22,21,20,15,1,23,1,55,9,9,10,13,13,10,105,105,10,13,13,10,9,9,106,106,9,9, +10,13,13,10,105,105,10,13,13,10,9,9,106,106,87,10,13,13,10,9,9,106,106,9,9,10,13,13,10,105,105,10, +13,13,10,9,9,106,106,9,9,10,13,13,10,105,105,0,0,2,0,0,255,192,2,0,1,191,0,28,0,55,0,0, +37,39,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,22,55,23,22,51,50,55,54,53,52,47,1,35,21, +6,7,38,39,53,35,38,39,54,55,51,53,54,55,50,23,22,29,1,51,22,23,6,7,1,244,119,42,9,11,49,49, +70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16,16,12,12,12,212,57,2,21,22,2,57,21,2,2,21,57, +2,21,10,7,7,56,23,2,2,22,4,120,62,83,70,48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12, +12,12,16,16,12,212,56,22,2,2,22,56,2,22,22,2,56,22,2,7,7,10,56,2,22,22,2,0,0,2,0,0, +255,192,2,0,1,191,0,28,0,39,0,0,37,39,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,22,55, +23,22,51,50,55,54,53,52,47,1,35,38,39,54,55,51,22,23,6,7,1,244,119,42,9,11,49,49,70,69,56,55, +31,30,8,10,49,48,70,83,62,120,12,16,16,12,12,12,212,161,21,2,2,21,160,23,2,2,22,4,120,62,83,70, +48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12,12,12,16,16,12,212,2,22,22,2,2,22,22,2,0, +0,2,0,16,255,208,1,240,1,192,0,19,0,73,0,0,37,20,7,49,6,35,34,39,38,61,1,52,55,54,51,50, +23,22,29,1,35,22,23,49,22,23,54,55,54,55,52,39,38,39,38,39,38,55,54,55,54,23,22,23,22,21,6,7, +6,7,6,7,38,39,38,39,38,39,52,55,54,55,54,23,22,23,22,7,6,7,6,7,6,21,1,32,9,9,14,14, +9,9,9,9,14,14,9,9,208,2,50,49,75,75,49,50,2,17,17,29,11,1,1,8,9,13,13,10,40,24,23,1, +32,32,54,54,67,67,54,54,32,32,1,23,24,40,10,13,13,9,8,1,1,10,30,17,17,192,14,9,9,9,9,14, +224,14,9,9,9,9,14,224,75,49,50,2,2,50,49,75,41,35,35,24,9,13,13,10,11,1,1,8,34,47,48,55, +68,54,54,32,32,1,1,32,32,54,54,68,55,48,47,34,8,1,1,11,10,13,13,9,24,35,35,41,0,5,0,0, +255,192,2,64,1,192,0,19,0,39,0,59,0,79,0,99,0,0,1,34,7,49,6,21,17,20,23,22,51,50,55,54, +53,17,52,39,38,35,1,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1,52,39,38,35,7,34,7,49,6,29, +1,20,23,22,51,50,55,54,61,1,52,39,38,35,1,34,7,49,6,21,17,20,23,22,51,50,55,54,53,17,52,39, +38,35,7,34,7,49,6,21,17,20,23,22,51,50,55,54,53,17,52,39,38,35,2,32,14,9,9,9,9,14,14,9, +9,9,9,14,254,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,13,13,10,10,9,9,14,1, +128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,1,192,9,9,13,254, +63,14,9,9,9,9,13,1,194,13,9,9,254,224,9,9,13,160,14,10,9,9,9,13,162,13,9,9,96,9,9,13, +64,14,10,9,9,9,14,65,13,9,9,1,32,9,9,13,254,159,14,9,9,9,9,13,1,98,13,9,9,96,9,9, +13,255,0,14,10,9,9,9,13,1,2,13,9,9,0,0,0,2,0,14,255,192,1,241,1,192,0,81,0,99,0,0, +1,22,15,1,22,21,20,7,23,22,7,6,15,1,6,7,6,47,1,6,15,1,6,7,6,35,34,39,38,47,1,38, +39,7,6,39,38,47,1,38,39,38,63,1,38,53,52,55,39,38,55,54,63,1,54,55,54,31,1,54,63,1,54,55, +54,51,50,23,22,31,1,22,23,55,54,23,22,31,1,22,23,49,7,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,1,240,4,10,44,2,2,44,10,4,7,9,4,10,13,10,14,56,21,23,12,4,14,21,23,21,20,15, +4,12,24,20,56,14,10,13,9,5,9,7,4,10,44,2,2,44,10,4,7,9,5,9,13,10,14,56,20,24,12,4, +15,20,22,22,21,14,4,12,23,21,56,14,10,13,10,4,9,7,240,34,23,22,1,1,22,23,34,34,23,22,1,1, +22,23,34,1,25,14,10,40,12,13,13,12,40,10,14,18,17,8,16,15,11,4,18,16,10,57,14,4,3,3,4,14, +57,10,16,18,4,11,15,16,8,17,18,14,10,40,12,13,13,12,40,10,14,18,17,8,16,15,11,4,18,16,10,57, +14,3,4,4,3,14,57,10,16,18,4,11,15,16,8,17,18,169,1,23,22,35,33,23,23,1,1,23,23,33,35,22, +23,1,0,0,0,1,0,0,255,192,2,64,1,192,0,75,0,0,37,6,7,49,6,7,35,23,6,29,1,20,7,6, +43,1,34,49,38,7,38,7,34,49,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29,1,20,7,6,43,1,34, +35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,22,7,49,2,64, +1,9,9,13,32,1,1,12,11,17,16,1,1,1,2,1,1,57,17,11,12,9,9,14,64,14,9,9,12,11,17,56, +2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,255,12,1,192,13,9,9,1,160,4,4,16,17, +11,12,1,1,1,1,12,11,17,88,14,9,9,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14, +10,224,9,1,7,225,10,14,0,2,0,0,255,192,2,0,1,192,0,26,0,43,0,0,5,38,39,49,38,39,49,38, +39,54,55,54,55,54,55,22,23,22,23,22,23,6,7,6,7,6,7,3,20,31,1,22,55,54,47,1,53,38,39,34, +7,6,21,23,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,24,11, +96,19,13,12,18,85,2,23,10,7,7,1,64,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,0,13,6,64,12,18,19,14,57,123,22,2,7,7,10,136,0,0,0,2,0,0,255,224,2,64, +1,160,0,47,0,67,0,0,1,20,23,49,22,51,50,55,54,61,1,51,50,23,22,23,19,22,21,6,7,6,7,35, +53,52,39,38,35,34,7,6,29,1,35,38,39,38,39,52,55,19,54,55,54,59,1,31,1,52,39,49,38,35,34,7, +6,29,1,20,23,22,51,50,55,54,61,1,1,0,9,9,14,14,9,9,75,20,17,16,7,118,3,1,15,15,24,201, +9,9,14,14,9,9,201,24,15,15,1,3,118,7,16,16,21,74,1,64,9,9,14,14,9,9,9,9,14,14,9,9, +1,96,14,9,9,9,9,14,64,12,11,20,254,180,9,9,24,15,15,1,64,14,9,9,9,9,14,64,1,15,15,24, +9,9,1,76,20,11,12,64,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64,0,0,3,0,0,255,192,2,0, +1,192,0,27,0,36,0,71,0,0,37,35,7,6,35,34,47,1,35,34,7,6,29,1,20,23,22,51,33,50,55,54, +61,1,52,39,38,35,7,38,39,54,55,22,23,6,7,39,22,51,50,63,1,54,53,52,39,38,35,34,15,1,53,52, +39,38,35,34,7,6,29,1,39,38,35,34,7,6,21,20,31,1,1,224,133,46,19,26,26,19,45,134,14,9,9,9, +9,14,1,192,14,9,9,9,9,14,48,22,2,2,22,22,2,2,22,199,10,13,13,10,128,9,9,10,13,13,10,73, +9,9,14,14,9,9,73,10,13,13,10,9,9,128,96,45,19,19,45,9,9,14,96,14,9,9,9,9,14,96,14,9, +9,104,2,22,22,2,2,22,22,2,81,9,9,128,10,13,13,10,9,9,74,243,14,9,9,9,9,14,243,74,9,9, +10,13,13,10,128,0,0,0,0,2,0,0,255,224,2,0,1,161,0,22,0,31,0,0,1,38,39,33,6,15,1,6, +29,1,22,23,22,23,33,54,55,54,55,53,52,47,1,3,35,39,35,55,33,23,35,7,1,191,7,24,254,192,24,7, +61,4,1,13,14,20,1,160,20,14,13,1,4,61,95,192,32,55,48,1,14,48,55,32,1,136,23,2,2,22,250,15, +16,96,20,14,13,1,1,13,14,20,96,16,15,249,254,216,64,192,192,64,0,1,0,32,255,224,1,240,1,176,0,64, +0,0,1,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,38,39,38,35,6,7,6,7,22,23,22,23,50,55, +54,23,22,23,22,7,6,7,6,7,38,39,38,39,38,39,54,55,54,55,54,55,50,23,22,23,53,52,55,54,51,50, +23,22,21,1,240,9,9,14,144,14,9,9,9,9,14,63,23,33,33,38,68,45,45,2,2,45,45,68,53,43,11,12, +13,8,8,1,2,11,60,74,63,50,50,30,30,1,1,30,30,50,50,63,52,46,46,32,9,9,14,14,9,9,1,144, +144,14,9,9,9,9,14,14,9,9,30,17,17,2,45,45,68,68,45,45,2,32,8,2,2,10,11,13,13,8,44,1, +1,30,30,50,51,62,62,51,50,30,30,1,23,23,40,70,14,9,9,9,9,14,0,0,0,2,0,16,255,208,1,240, +1,176,0,49,0,99,0,0,1,34,7,49,6,29,1,38,39,38,35,6,7,6,7,6,23,22,23,22,55,54,55,54, +55,54,55,50,23,22,23,35,34,7,6,21,20,23,22,59,1,50,55,54,61,1,52,39,38,35,3,38,7,49,6,7, +6,7,6,7,34,39,38,39,51,50,55,54,53,52,39,38,43,1,34,7,6,29,1,20,23,22,51,50,55,54,61,1, +22,23,22,51,54,55,54,55,54,39,38,39,1,208,14,9,9,30,46,46,54,72,56,55,23,4,6,5,13,13,12,11, +4,17,39,39,51,38,33,32,21,44,14,9,9,9,9,14,128,14,9,9,9,9,14,22,13,12,11,4,17,39,39,51, +38,33,32,21,44,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,31,45,46,53,72,56,55,24,4,6,5, +13,1,176,9,9,14,74,42,24,24,1,40,41,68,13,12,11,4,4,5,6,13,48,29,28,1,17,17,30,9,9,14, +14,9,9,9,9,14,144,14,9,9,254,238,4,6,5,13,48,29,28,1,17,17,30,9,9,14,14,9,9,9,9,14, +144,14,9,9,9,9,14,74,42,24,24,1,40,41,68,13,12,12,3,0,0,7,0,0,255,224,2,64,1,160,0,21, +0,39,0,57,0,75,0,86,0,97,0,108,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,33,38, +39,38,39,17,23,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,61,1,52,39,49,38,35,34,7,6,21, +20,23,22,51,50,55,54,53,21,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,53,55,6,7,22,23,51, +54,55,38,39,35,21,6,7,22,23,51,54,55,38,39,35,21,6,7,22,23,51,54,55,38,39,35,0,1,18,18,27, +1,192,27,18,18,1,1,18,18,27,254,64,27,18,18,1,160,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14, +14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,64,22,2,2,22,224,22,2,2,22,224, +22,2,2,22,224,22,2,2,22,224,22,2,2,22,224,22,2,2,22,224,1,96,27,18,18,1,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,160,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9, +9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,216,2,22,22,2,2,22,22,2,96,2,22,22,2,2, +22,22,2,96,2,22,22,2,2,22,22,2,0,2,0,0,255,192,1,192,1,192,0,31,0,43,0,0,19,53,54,55, +54,55,22,23,22,23,21,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,59,2,53,38,39, +38,39,6,7,6,7,21,80,2,40,41,61,61,41,40,2,16,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1, +18,18,27,16,64,160,1,22,23,34,34,23,22,1,1,0,48,61,41,40,2,2,40,41,61,48,1,18,18,27,192,27, +18,18,1,1,18,18,27,192,27,18,18,1,48,34,23,22,1,1,22,23,34,48,0,0,0,2,0,0,255,192,2,0, +1,192,0,15,0,42,0,0,23,6,7,35,38,39,17,52,55,54,51,50,23,22,21,17,1,34,7,6,39,38,39,38, +39,34,7,17,54,51,22,23,22,23,22,55,54,55,17,52,39,38,35,64,1,15,32,15,1,9,9,14,14,9,9,1, +156,9,10,67,41,42,34,36,52,36,53,48,37,54,45,46,53,48,64,20,1,11,10,15,48,15,1,1,15,1,208,14, +9,9,9,9,14,254,48,1,240,4,30,2,2,13,14,3,16,254,162,14,2,14,14,2,1,24,9,20,1,45,15,8, +8,0,0,0,0,1,0,0,255,224,2,0,1,160,0,54,0,0,37,21,6,7,6,7,38,39,38,39,53,54,55,54, +55,50,23,38,39,38,39,6,7,6,7,54,51,22,23,22,23,21,6,7,6,7,38,39,38,47,1,54,55,54,55,54, +55,22,23,22,23,22,21,20,51,2,0,1,23,22,34,20,14,13,1,1,13,14,20,16,14,11,57,57,81,81,57,57, +11,14,16,20,14,13,1,1,13,14,20,34,22,22,1,1,1,34,34,58,58,71,71,58,57,34,35,1,160,112,34,23, +22,1,1,13,14,20,128,20,14,13,1,7,80,50,51,2,2,51,50,80,7,1,13,14,20,128,20,14,13,1,1,22, +23,34,112,71,58,58,34,34,1,1,34,34,58,57,71,1,0,1,0,0,255,224,1,64,1,159,0,24,0,0,1,17, +6,7,6,35,34,47,1,35,38,39,38,39,53,54,55,54,59,1,55,54,23,22,23,1,64,1,18,7,6,12,9,135, +84,20,14,13,1,1,13,14,20,84,135,15,19,18,1,1,128,254,129,20,9,4,8,120,1,13,13,20,97,20,13,14, +120,13,8,7,21,0,0,0,0,2,0,0,255,224,1,192,1,160,0,18,0,43,0,0,1,38,7,6,23,22,21,20, +7,6,23,22,51,50,55,54,55,38,47,1,38,15,1,35,6,7,6,7,21,22,23,22,59,1,23,22,55,50,55,54, +55,17,38,39,1,157,19,15,12,15,18,18,16,13,7,11,9,7,34,1,1,34,112,19,15,135,84,20,14,13,1,1, +13,14,20,84,135,9,12,7,6,18,1,1,18,1,10,12,15,19,15,15,22,22,15,15,19,8,5,29,45,45,29,147, +8,13,120,1,13,13,20,95,21,13,13,120,12,1,3,9,20,1,128,21,8,0,0,0,0,4,0,0,255,220,2,128, +1,164,0,18,0,41,0,68,0,93,0,0,1,38,7,6,23,22,21,20,7,6,23,22,51,50,55,54,55,38,39,55, +38,7,6,23,22,23,22,21,6,7,6,23,22,51,50,55,54,55,54,53,38,39,55,38,7,6,23,22,23,22,21,20, +7,6,7,6,23,22,51,50,55,54,55,54,53,52,39,38,39,7,38,15,1,35,6,7,6,7,21,22,23,22,23,51, +23,22,51,50,55,54,55,17,38,39,1,157,19,15,12,15,18,18,16,13,7,11,9,7,34,1,1,34,60,18,16,12, +16,25,14,14,1,52,16,12,8,11,8,7,34,18,19,2,69,61,18,15,13,16,42,23,23,23,23,42,16,13,7,11, +8,7,51,27,28,28,27,51,233,19,15,135,84,20,14,13,1,1,13,14,20,84,135,9,12,7,6,18,1,1,18,1, +10,12,15,19,15,15,21,22,15,15,19,8,5,28,46,45,28,74,12,16,18,15,21,29,28,32,65,46,15,19,8,5, +28,38,38,44,89,58,75,12,16,18,15,35,48,48,54,54,48,49,35,15,18,10,5,42,58,58,66,66,57,57,42,2, +8,13,120,1,13,14,20,96,20,14,13,1,120,8,3,9,20,1,128,20,9,0,0,0,0,9,0,0,255,224,1,192, +1,160,0,21,0,26,0,48,0,53,0,75,0,80,0,85,0,90,0,103,0,0,19,22,23,49,22,23,21,6,7,6, +7,35,38,39,38,39,53,54,55,54,55,51,7,35,21,51,53,23,22,23,49,22,23,21,6,7,6,7,35,38,39,38, +39,53,54,55,54,55,51,7,35,21,51,53,19,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38, +39,53,23,51,53,35,21,19,51,21,35,53,23,35,53,51,21,39,51,21,35,53,35,21,35,53,51,21,51,53,144,20, +14,13,1,1,13,14,20,96,20,14,13,1,1,13,14,20,96,16,64,64,16,20,14,13,1,1,13,14,20,96,20,14, +13,1,1,13,14,20,96,16,64,64,128,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,64,64,64, +32,32,32,96,32,32,32,32,96,32,64,96,64,1,160,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13, +1,64,64,64,192,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,64,64,64,1,16,20,14,13,1, +1,13,14,20,96,20,14,13,1,1,13,14,20,96,80,64,64,254,224,32,32,32,32,32,192,128,32,96,192,32,32,0, +0,6,0,0,255,224,2,0,1,160,0,12,0,23,0,36,0,49,0,62,0,73,0,0,19,22,23,17,6,7,35,38, +39,17,54,55,51,23,17,6,7,38,39,17,54,55,22,23,55,22,23,17,6,7,35,38,39,17,54,55,59,1,22,23, +17,6,7,35,38,39,17,54,55,51,23,54,55,51,22,23,17,6,7,35,38,39,17,39,54,55,22,23,17,6,7,38, +39,17,40,22,2,2,22,16,22,2,2,22,16,88,1,15,15,1,1,15,15,1,72,22,2,2,22,16,22,2,2,22, +16,96,22,2,2,22,16,22,2,2,22,16,152,2,22,16,22,2,2,22,16,22,2,64,1,15,15,1,1,15,15,1, +1,160,2,22,254,112,22,2,2,22,1,144,22,2,16,254,96,15,1,1,15,1,160,15,1,1,15,16,2,22,254,112, +22,2,2,22,1,144,22,2,2,22,254,112,22,2,2,22,1,144,22,2,24,22,2,2,22,254,112,22,2,2,22,1, +144,8,15,1,1,15,254,96,15,1,1,15,1,160,0,0,0,2,0,0,255,235,1,181,1,160,0,22,0,40,0,0, +19,51,50,31,1,22,21,20,15,1,6,35,34,47,1,38,61,1,54,55,54,55,49,23,50,55,49,54,53,52,39,38, +35,34,7,6,21,20,23,22,51,48,150,26,19,176,18,18,134,19,26,26,19,176,19,1,13,14,20,64,14,9,9,9, +9,14,14,9,9,9,9,14,1,160,19,176,19,26,26,19,134,18,18,176,19,26,150,20,14,13,1,144,9,9,14,14, +9,9,9,9,14,14,9,9,0,3,0,0,255,224,2,0,1,160,0,21,0,44,0,62,0,0,1,22,21,49,20,15, +1,6,39,38,63,1,54,53,52,47,1,38,55,54,31,1,5,53,54,55,54,55,51,50,31,1,22,21,20,15,1,6, +35,34,47,1,38,53,49,55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,217,39,39,112,17,17, +14,14,112,25,25,128,14,14,17,16,129,254,39,1,13,14,20,150,26,19,168,18,18,134,19,26,26,19,168,19,112,14, +9,9,9,9,14,14,9,9,9,9,14,1,24,42,54,54,42,113,14,14,17,17,113,27,35,35,27,129,17,17,14,14, +129,62,150,20,14,13,1,19,168,19,26,26,19,134,18,18,168,19,26,118,9,9,14,14,9,9,9,9,14,14,9,9, +0,4,0,0,255,192,1,192,1,192,0,25,0,36,0,47,0,59,0,0,37,17,38,39,38,39,33,6,7,6,7,17, +22,23,22,23,33,50,55,54,53,38,39,53,54,55,37,51,22,23,6,7,35,38,39,54,55,21,51,22,23,6,7,35, +38,39,54,55,19,33,34,39,38,53,52,55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27,1,1,27,27,41, +1,64,14,9,9,1,15,15,1,254,207,192,16,1,1,15,193,13,2,2,13,192,16,1,1,15,193,13,2,2,13,241, +254,224,14,9,9,9,9,14,1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9, +82,14,22,208,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,255,0,9,9,14,14,9,9,64,0,0, +0,1,0,0,255,192,1,128,1,192,0,21,0,0,19,33,22,23,22,23,17,6,7,34,47,1,7,6,35,38,39,17, +54,55,54,55,48,1,32,20,14,13,1,2,22,8,6,154,154,6,8,22,2,1,13,14,20,1,192,1,13,14,20,254, +72,22,2,4,108,108,4,2,22,1,184,20,14,13,1,0,0,4,0,0,255,192,2,0,1,192,0,32,0,37,0,46, +0,65,0,0,1,33,6,7,6,7,21,20,23,22,59,1,21,20,23,22,51,33,50,55,54,61,1,51,50,55,54,61, +1,38,39,38,39,3,33,53,33,21,55,38,39,54,55,22,23,6,7,37,51,23,21,51,53,52,47,1,38,35,33,34, +7,6,29,1,51,53,1,192,254,128,27,18,18,1,9,9,14,32,9,9,14,1,64,14,9,9,32,14,9,9,1,18, +18,27,64,255,0,1,0,48,22,2,2,22,22,2,2,22,254,208,230,26,64,9,46,9,13,254,237,14,9,9,64,1, +0,1,18,18,27,96,14,9,9,96,14,9,9,9,9,14,96,9,9,14,96,27,18,18,1,255,0,96,96,152,2,22, +22,2,2,22,22,2,232,27,69,83,13,9,46,9,9,9,14,128,96,0,0,2,0,0,255,224,2,0,1,160,0,29, +0,47,0,0,19,51,22,31,1,51,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,55,54, +55,49,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,195,122,34,12,10,75,27,18,18,1,1,18, +18,27,254,128,27,18,18,1,1,18,18,27,75,10,12,34,61,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27, +41,1,160,2,31,31,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,31,31,2,254,160,1, +27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,2,0,0,255,224,1,192,1,160,0,47,0,51,0,0, +37,35,3,38,39,6,7,3,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,43,1,55,51,23,49,34, +7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,39,55,23,35,1,160,26,137,8,22,21,9,135,26,14,9, +9,9,9,14,96,14,9,9,9,9,14,2,17,160,17,14,9,9,9,9,14,96,14,9,9,9,9,14,248,56,56,112, +32,1,107,20,1,1,20,254,149,9,9,14,14,9,9,9,9,14,14,9,9,48,48,9,9,14,14,9,9,9,9,14, +14,9,9,112,149,149,0,0,0,3,0,0,255,224,1,128,1,160,0,35,0,47,0,59,0,0,37,54,55,38,39,38, +39,35,34,7,6,21,20,23,22,59,1,17,35,34,7,6,21,20,23,22,59,1,54,55,54,55,52,39,38,47,1,51, +22,23,22,23,6,7,6,7,35,53,19,35,53,51,22,23,22,23,6,7,6,7,1,65,30,1,1,37,36,54,192,14, +9,9,9,9,14,16,16,14,9,9,9,9,14,224,54,36,37,1,17,17,29,209,112,27,18,18,1,1,18,18,27,112, +144,144,144,27,18,18,1,1,18,18,27,206,34,48,54,36,37,1,9,9,14,14,9,9,254,192,9,9,14,14,9,9, +1,37,36,54,35,29,28,18,146,1,18,18,27,27,18,18,1,128,254,192,128,1,18,18,26,27,18,19,1,0,0,0, +0,1,0,0,255,224,1,128,1,160,0,41,0,0,1,20,7,49,6,43,1,3,51,50,23,22,21,20,7,6,43,1, +34,39,38,53,52,55,54,59,1,19,35,34,39,38,53,52,55,54,59,1,50,23,22,21,1,128,9,9,14,59,133,64, +14,9,9,9,9,14,192,14,9,9,9,9,14,59,133,64,14,9,9,9,9,14,192,14,9,9,1,128,14,9,9,254, +192,9,9,14,14,9,9,9,9,14,14,9,9,1,64,9,9,14,14,9,9,9,9,14,0,2,0,0,255,224,2,64, +1,160,0,52,0,103,0,0,1,33,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,17,35,34,7,6,21,20, +23,22,59,1,50,55,54,53,52,39,38,43,1,17,51,21,20,23,22,51,50,55,54,61,1,52,39,38,35,19,7,53, +23,22,51,50,55,54,53,52,47,1,38,35,34,15,1,6,21,20,23,22,51,50,63,1,21,39,38,35,34,7,6,21, +20,31,1,22,51,50,63,1,54,53,52,39,38,35,34,7,1,32,255,0,14,9,9,9,9,14,14,9,9,64,32,14, +9,9,9,9,14,128,14,9,9,9,9,14,32,64,9,9,14,14,9,9,9,9,14,233,9,9,10,13,13,10,9,9, +64,10,13,13,10,64,9,9,10,13,13,10,9,9,10,13,13,10,9,9,64,10,13,13,10,64,9,9,10,13,13,10, +1,160,9,9,14,64,14,9,9,9,9,14,32,254,192,9,9,14,14,9,9,9,9,14,14,9,9,1,64,32,14,9, +9,9,9,14,64,14,9,9,254,183,10,230,10,9,9,10,13,13,10,64,9,9,64,10,13,13,10,9,9,10,230,10, +9,9,10,13,13,10,64,9,9,64,10,13,13,10,9,9,0,2,0,0,255,224,1,192,1,160,0,52,0,104,0,0, +1,33,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,21,35,34,7,6,21,20,23,22,59,1,50,55,54,53, +52,39,38,43,1,53,51,21,20,23,22,51,50,55,54,61,1,52,39,38,35,3,38,35,49,34,7,6,21,20,31,1, +35,55,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47,1,51,7,6,21,20,23,22, +51,50,63,1,54,53,52,47,1,1,160,254,128,14,9,9,9,9,14,14,9,9,128,16,14,9,9,9,9,14,96,14, +9,9,9,9,14,16,128,9,9,14,14,9,9,9,9,14,41,10,13,13,10,9,9,10,230,10,9,9,10,13,13,10, +64,9,9,64,10,13,13,10,9,9,10,230,10,9,9,10,13,13,10,64,9,9,64,1,160,9,9,14,63,14,9,9, +9,9,14,32,128,9,9,13,13,10,9,9,9,14,13,9,9,128,32,14,9,9,9,9,14,63,14,9,9,254,247,9, +9,10,13,13,10,9,9,10,13,13,10,9,9,64,10,13,13,10,64,9,9,10,13,13,10,9,9,10,13,13,10,9, +9,64,10,13,13,10,64,0,0,4,0,0,255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,35,34,39, +38,53,52,55,54,59,1,50,23,22,21,20,7,6,35,17,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7, +6,35,37,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,1,33,34,39,38,53,52,55,54,51, +33,50,23,22,21,20,7,6,35,1,0,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14, +224,14,9,9,9,9,14,255,0,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160,254,128,14,9,9, +9,9,14,1,128,14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,9,9,14,14,9, +9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,254,224,9,9,14,14,9,9,9,9,14,14, +9,9,0,0,0,4,0,0,255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,35,34,39,38,53,52,55, +54,59,1,50,23,22,21,20,7,6,35,23,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,5,52, +55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,37,35,34,39,38,53,52,55,54,59,1,50,23,22, +21,20,7,6,35,1,64,192,14,9,9,9,9,14,192,14,9,9,9,9,14,96,254,128,14,9,9,9,9,14,1,128, +14,9,9,9,9,14,254,96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,64,192,14,9,9,9,9, +14,192,14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14, +14,9,9,224,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,4,0,0,255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,35,34,39,38,53,52,55,54,59,1,50, +23,22,21,20,7,6,35,17,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7,6,35,37,52,55,49,54,51, +33,50,23,22,21,20,7,6,35,33,34,39,38,53,1,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6, +35,1,160,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,254, +96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160,254,128,14,9,9,9,9,14,1,128,14,9,9, +9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,9,9,14,14,9,9,9,9,14,14,9,9,160, +14,9,9,9,9,14,14,9,9,9,9,14,254,224,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,4,0,0, +255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20, +7,6,35,17,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,37,52,55,49,54,51,33,50,23,22, +21,20,7,6,35,33,34,39,38,53,1,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,1,160,254, +128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254, +96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160,254,128,14,9,9,9,9,14,1,128,14,9,9, +9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,9,9,14,14,9,9,9,9,14,14,9,9,160, +14,9,9,9,9,14,14,9,9,9,9,14,254,224,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,6,0,16, +255,240,2,0,1,144,0,12,0,32,0,52,0,72,0,85,0,98,0,0,19,22,23,21,6,7,35,38,39,53,54,55, +51,5,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33, +34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,37,54,55, +51,22,23,21,6,7,35,38,39,53,23,22,23,21,6,7,35,38,39,53,54,55,51,88,22,2,2,22,48,22,2,2, +22,48,1,136,14,9,9,9,9,14,254,224,14,9,9,9,9,14,1,32,14,9,9,9,9,14,254,224,14,9,9,9, +9,14,1,32,14,9,9,9,9,14,254,224,14,9,9,9,9,14,1,32,254,48,2,22,48,22,2,2,22,48,22,2, +72,22,2,2,22,48,22,2,2,22,48,1,144,2,22,48,22,2,2,22,48,22,2,16,9,9,14,14,9,9,9,9, +14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,152,22, +2,2,22,48,22,2,2,22,48,136,2,22,48,22,2,2,22,48,22,2,0,5,0,26,255,224,1,224,1,160,0,20, +0,40,0,60,0,81,0,95,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,49,23, +52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,23,50,23,49,22,21,20,7,6,43,1,34,39, +38,53,52,55,54,59,1,5,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,49,53,38,63,1, +54,23,22,23,21,6,7,6,47,1,32,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,192,9,9,14,192, +14,9,9,9,9,14,192,14,9,9,224,14,9,9,9,9,14,192,14,9,9,9,9,14,192,254,96,9,9,14,1,128, +14,9,9,9,9,14,254,128,14,9,9,12,12,102,9,8,8,1,1,8,8,9,102,1,128,14,9,9,9,9,14,14, +9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9,9,9,9,14,14,9,9,160, +14,9,9,9,9,14,14,9,9,9,9,14,179,13,13,79,6,4,4,11,158,11,4,4,6,79,0,0,0,5,0,0, +255,224,1,192,1,160,0,19,0,39,0,59,0,79,0,94,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6, +35,33,34,39,38,53,23,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,23,50,23,49,22,21, +20,7,6,43,1,34,39,38,53,52,55,54,59,1,5,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39, +38,53,55,6,39,49,38,39,53,54,55,54,31,1,22,15,1,0,9,9,14,1,128,14,9,9,9,9,14,254,128,14, +9,9,192,9,9,14,192,14,9,9,9,9,14,192,14,9,9,224,14,9,9,9,9,14,192,14,9,9,9,9,14,192, +254,96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,26,9,8,8,1,1,8,8,9,102,11,11,102,1, +128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9, +9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,100,6,4,4,11,158,11,4,4,6,79,13, +13,79,0,0,0,2,0,0,0,0,2,64,1,128,0,20,0,33,0,0,1,17,6,7,6,7,33,38,39,38,39,17, +54,55,54,55,33,22,23,22,31,1,17,6,7,6,47,1,53,55,54,23,22,23,1,128,1,13,14,20,254,224,20,14, +13,1,1,13,14,20,1,32,20,14,13,1,192,1,16,16,17,110,110,17,16,16,1,1,80,254,224,20,14,13,1,1, +13,14,20,1,32,20,14,13,1,1,13,14,20,16,255,0,20,8,9,11,75,158,75,11,9,8,20,0,0,3,0,0, +255,224,1,255,1,160,0,20,0,38,0,60,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38, +39,38,39,5,22,23,49,22,21,20,7,6,7,38,39,38,39,54,55,54,55,1,6,35,33,34,39,38,63,1,54,51, +50,31,1,55,54,51,50,31,1,22,7,1,191,254,128,26,18,18,1,1,18,18,26,1,128,27,18,18,1,1,17,18, +28,254,176,20,14,14,14,13,21,21,13,13,1,1,13,14,20,1,79,5,9,254,162,10,4,4,5,70,5,8,8,5, +32,94,5,8,8,5,128,5,4,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,200,8,9,8,8,96,7,7,44,139,8,7,192,8,9, +0,1,0,0,255,193,1,128,1,192,0,27,0,0,1,6,7,49,6,7,49,6,7,6,35,34,39,38,39,38,39,38, +39,54,55,54,55,22,23,22,23,49,1,128,2,30,31,39,39,27,10,14,14,10,27,40,39,30,30,2,2,54,54,82, +82,54,54,2,1,0,45,59,59,55,56,33,12,12,33,56,55,59,59,45,82,54,54,2,2,54,54,82,0,2,0,0, +255,192,2,0,1,192,0,26,0,36,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54, +55,22,23,22,23,22,23,37,17,54,55,54,55,38,39,38,39,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,255,0,82,54,54,2,2,54,54,82,192,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,192,254,128,2,54,54,82,82,54,54,2,0,0,0,0,2,0,16, +255,208,1,112,1,186,0,26,0,43,0,0,55,54,55,49,54,55,49,54,55,54,51,50,23,22,23,22,23,22,23,6, +7,6,7,38,39,38,39,51,38,39,6,7,22,23,22,23,54,55,38,39,38,39,38,39,16,1,27,27,35,35,26,10, +15,15,10,26,35,35,27,27,1,2,50,49,75,75,49,50,2,96,1,15,15,1,1,32,31,48,15,1,1,15,34,23, +22,1,129,38,57,56,56,56,37,13,13,37,56,56,56,57,38,76,49,50,2,2,50,49,76,14,2,2,14,48,32,32, +1,1,15,15,1,1,23,22,35,0,0,0,0,3,0,0,255,192,1,251,1,187,0,13,0,28,0,78,0,0,1,22, +21,49,20,15,1,39,55,54,51,50,31,1,5,55,23,7,6,15,1,6,39,38,63,1,54,55,49,55,22,23,49,22, +21,20,7,6,43,1,6,7,6,21,17,20,23,22,51,33,50,55,54,61,1,52,55,54,55,22,23,22,29,1,6,7, +6,7,33,38,39,38,39,17,54,55,54,55,51,1,234,17,17,30,98,30,18,22,22,18,18,254,194,168,98,168,9,13, +88,15,10,10,4,30,4,9,20,14,9,9,9,9,14,96,14,9,9,9,9,14,1,0,14,9,9,9,9,14,14,9, +9,1,27,27,41,255,0,41,27,27,1,1,27,27,41,96,1,152,18,22,22,18,30,98,30,17,17,18,202,168,98,168, +9,4,30,4,11,9,15,88,13,9,179,1,9,9,13,14,9,9,1,9,9,13,254,255,14,9,9,9,9,14,97,13, +9,9,1,1,9,9,13,97,41,27,27,1,1,27,27,41,1,1,41,27,27,1,0,0,0,1,0,0,255,192,2,0, +1,192,0,104,0,0,37,20,15,1,6,35,34,39,38,53,52,63,1,35,21,55,54,51,50,23,22,21,20,15,1,6, +35,34,47,1,38,53,52,55,54,51,50,31,1,53,35,23,22,21,20,7,6,35,34,47,1,38,53,52,63,1,54,51, +50,23,22,21,20,15,1,51,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47, +1,21,51,39,38,53,52,55,54,51,50,31,1,22,21,2,0,9,72,10,13,14,9,9,9,18,115,17,10,13,14,9, +9,9,72,10,13,13,10,72,9,9,9,14,13,10,17,115,18,9,9,9,14,13,10,72,9,9,72,10,13,14,9,9, +9,18,115,17,10,13,14,9,9,9,72,10,13,13,10,72,9,9,9,14,13,10,17,115,18,9,9,9,14,13,10,72, +9,193,13,10,72,10,10,9,13,13,10,17,115,18,9,10,9,13,13,10,72,9,9,72,10,13,13,9,10,9,18,115, +17,10,13,13,9,10,9,72,10,14,13,9,72,9,10,9,13,13,10,17,115,18,9,10,9,13,13,10,72,9,9,72, +10,13,13,9,10,9,18,115,17,10,13,13,9,10,9,72,10,12,0,0,0,2,0,0,0,0,1,64,1,128,0,19, +0,35,0,0,19,34,7,49,6,21,17,20,23,22,51,54,55,54,53,17,52,39,38,35,23,7,6,21,20,31,1,22, +55,54,55,17,38,39,38,7,31,13,9,9,9,9,14,14,9,9,9,10,14,237,192,12,11,192,17,17,18,1,2,17, +17,16,1,128,9,9,14,254,192,14,9,9,1,9,9,14,1,63,14,9,9,7,160,11,14,14,11,159,12,8,8,21, +1,64,20,8,8,12,0,0,0,1,0,0,0,0,2,0,1,128,0,42,0,0,55,17,52,55,54,51,50,23,22,29, +1,55,54,23,22,23,21,55,54,23,22,23,17,6,7,6,47,1,21,6,7,6,47,1,21,20,7,6,35,34,39,38, +53,0,9,9,13,14,10,9,172,16,17,18,1,172,16,17,18,1,1,18,17,16,172,1,18,17,16,172,9,9,13,14, +10,9,33,1,63,14,8,9,9,8,14,132,157,12,8,8,21,132,157,12,8,8,21,254,192,21,8,8,12,156,131,21, +8,8,12,156,131,13,9,9,9,9,14,0,0,2,0,0,0,0,2,0,1,128,0,12,0,28,0,0,1,7,21,23, +22,55,54,55,17,38,39,38,7,33,7,6,21,20,31,1,22,55,54,55,17,38,39,38,7,1,204,172,172,16,17,18, +1,1,18,17,16,255,0,193,11,11,192,17,17,18,1,2,17,17,16,1,121,143,84,143,12,8,8,22,1,63,21,8, +8,12,160,11,14,14,11,159,12,8,8,21,1,64,20,8,8,12,0,0,0,1,0,0,255,224,1,128,1,160,0,15, +0,0,37,22,23,6,7,5,6,39,38,39,17,54,55,54,23,5,1,105,22,1,1,22,254,224,24,24,24,1,1,24, +24,24,1,32,233,15,26,27,13,176,15,13,14,28,1,96,28,14,13,14,176,0,0,0,0,2,0,0,0,0,1,64, +1,129,0,20,0,41,0,0,1,35,6,7,6,7,17,22,23,22,51,23,54,55,54,55,17,38,39,38,39,43,1,6, +7,6,7,17,22,23,22,59,1,54,55,54,55,17,38,39,38,39,1,16,32,20,14,13,1,1,13,14,20,32,20,14, +13,1,1,13,14,20,192,32,20,14,13,1,1,13,14,20,32,20,14,13,1,1,13,14,20,1,129,1,13,13,20,254, +224,21,13,14,2,1,13,14,20,1,32,20,14,14,1,1,13,14,20,254,224,21,14,14,1,13,14,20,1,32,20,14, +14,1,0,0,0,1,0,0,0,1,1,128,1,128,0,20,0,0,1,21,6,7,6,7,33,38,39,38,39,53,54,55, +54,55,33,22,23,22,23,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,1,64,255, +27,18,18,1,1,18,18,27,255,27,18,18,1,1,18,18,27,0,0,0,0,2,0,0,0,0,2,0,1,128,0,12, +0,28,0,0,63,1,53,39,38,7,6,7,17,22,23,22,55,33,55,54,53,52,47,1,38,7,6,7,17,22,23,22, +55,53,171,171,17,17,18,1,1,18,17,17,1,0,192,11,11,192,17,17,18,1,1,18,17,17,7,143,84,143,12,8, +8,21,254,192,21,8,8,12,159,11,14,14,11,159,12,8,8,21,254,192,20,7,8,12,0,1,0,0,0,0,2,0, +1,128,0,42,0,0,1,17,20,7,6,35,34,39,38,61,1,7,6,39,38,39,53,7,6,39,38,39,17,54,55,54, +31,1,53,54,55,54,31,1,53,52,55,54,51,50,23,22,21,2,0,9,9,13,14,10,9,171,17,17,18,1,171,17, +17,18,1,1,18,17,17,171,1,18,17,17,171,9,9,13,14,10,9,1,96,254,192,13,9,9,9,9,14,131,157,12, +8,8,22,131,157,12,8,8,22,1,63,21,8,8,12,156,131,21,8,8,12,156,131,14,8,9,9,8,14,0,0,0, +0,2,0,0,0,0,1,62,1,128,0,19,0,35,0,0,37,50,55,49,54,53,17,52,39,38,35,34,7,6,21,17, +22,23,22,51,39,55,54,53,52,47,1,38,7,6,7,17,22,23,22,55,1,31,14,8,9,9,9,14,13,9,9,1, +9,9,13,234,192,11,11,192,17,17,18,1,1,18,17,17,1,9,9,14,1,63,14,9,9,9,9,13,254,192,14,9, +9,6,159,11,14,14,11,159,13,7,8,21,254,192,21,8,8,12,0,0,0,2,0,0,255,224,1,191,1,161,0,15, +0,34,0,0,55,33,54,55,54,47,1,38,35,34,15,1,6,23,22,23,5,33,6,7,6,7,22,23,22,23,33,54, +55,54,53,52,39,38,39,48,1,95,32,12,12,21,175,15,20,20,15,176,21,12,12,32,1,95,254,161,20,14,13,1, +1,13,14,20,1,95,20,14,14,14,13,21,129,2,27,26,25,192,16,16,193,25,26,26,2,65,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,0,0,0,1,0,0,255,224,1,0,1,160,0,24,0,0,23,34,47,1,38,53, +52,63,1,54,51,50,23,22,21,20,15,1,23,22,21,20,7,6,35,224,13,10,192,9,9,192,10,13,13,10,9,9, +170,170,9,9,10,13,32,9,192,10,13,13,10,192,9,9,10,13,13,10,169,169,10,13,13,10,9,0,0,1,0,64, +255,224,1,64,1,160,0,24,0,0,23,34,39,38,53,52,63,1,39,38,53,52,55,54,51,50,31,1,22,21,20,15, +1,6,35,96,13,10,9,9,170,170,9,9,10,13,13,10,192,9,9,192,10,13,32,9,10,13,13,10,169,169,10,13, +13,10,9,9,192,10,13,13,10,192,9,0,0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,53,51,54,55,38,39, +35,53,38,39,6,7,21,35,6,7,22,23,51,21,22,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,1,0,22,2,64,22,2,2,22,64,2,22,22,2,64,22,2,2,22,64,2,22,192, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,112,2,22,64,2,22,22,2, +64,22,2,2,22,64,2,22,22,2,64,22,2,0,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,37,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,6,7,22,23, +51,54,55,38,39,35,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,168, +22,2,2,22,176,22,2,2,22,176,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,24,2,22,22,2,2,22,22,2,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,23,7,6,23,22,63,1,23, +22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,175,47,47,14,14,17,16,47,48,17,16,15,15,46,46,15,15,16,17,48,47,16, +17,14,14,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,48,47,48,17, +16,15,15,46,46,15,15,16,17,48,47,16,17,14,14,47,47,14,14,17,16,0,0,0,0,2,0,0,255,192,2,0, +1,192,0,26,0,52,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,37,54,53,49,52,39,38,35,34,15,1,39,38,35,34,7,6,21,20,31,1,22,51,50,63,1,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,116,8,8,9,11,11,9,108,44, +9,11,11,9,8,8,64,9,11,11,9,128,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1, +34,34,58,57,72,44,9,11,11,9,8,8,108,44,8,8,9,11,11,9,64,8,8,128,0,3,0,0,255,192,2,0, +1,192,0,26,0,42,0,75,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,17,34,39,49,38,53,54,55,50,23,22,21,20,7,6,35,55,7,21,6,7,38,39,53,52,63,1, +54,53,38,39,35,6,7,6,7,38,39,54,55,54,55,51,22,23,22,23,6,7,1,0,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,14,9,9,2,30,13,9,10,10,9,13,69,45,2,22,22, +2,12,57,11,2,21,51,21,1,2,22,22,2,1,19,20,29,51,31,20,20,1,1,34,1,192,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,112,9,9,14,29,3,9,9,14,14,9,9,142, +28,2,22,2,2,22,16,13,8,34,6,13,20,2,2,20,22,2,2,22,30,20,19,1,1,19,20,30,38,22,0,0, +0,3,0,0,255,192,2,0,1,192,0,26,0,44,0,66,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22, +23,54,55,54,55,54,55,38,39,38,39,38,39,21,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,19, +35,38,39,54,55,51,53,35,38,39,54,55,51,22,23,21,51,22,23,6,7,1,0,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,14,9,9,9,9,14,14,9,9,9,9,14,40,80,22,2,2, +22,16,8,22,2,2,22,32,22,2,16,22,2,2,22,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,128,9,9,14,14,9,9,9,9,14,14,9,9,255,0,2,22,22,2,64,2,22,22, +2,2,22,88,2,22,22,2,0,3,0,0,255,192,2,0,1,192,0,17,0,76,0,133,0,0,55,52,55,49,54,51, +50,23,22,21,20,7,6,35,34,39,38,53,19,50,23,49,22,29,1,22,23,22,23,51,50,23,22,21,20,7,6,43, +1,6,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54, +55,53,52,55,54,51,49,3,53,52,55,54,51,50,23,22,29,1,54,55,54,55,35,34,39,38,53,52,55,54,59,1, +38,39,38,39,21,20,7,6,35,34,39,38,61,1,6,7,6,7,51,50,23,22,21,20,7,6,43,1,22,23,22,23, +224,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,72,49,49,12,10,14,9,9,9,9,14,10,12,49,49, +72,9,9,14,14,9,9,72,49,49,12,10,14,9,9,9,9,14,10,12,49,49,72,9,9,14,32,9,9,14,14,9, +9,44,31,32,10,21,14,9,9,9,9,14,21,10,32,31,44,9,9,14,14,9,9,44,31,32,10,21,14,9,9,9, +9,14,21,10,32,31,44,192,14,9,9,9,9,14,14,9,9,9,9,14,1,0,9,9,14,10,12,49,49,72,9,9, +14,14,9,9,72,49,49,12,10,14,9,9,9,9,14,10,12,49,49,72,9,9,14,14,9,9,72,49,49,12,10,14, +9,9,254,107,21,14,9,9,9,9,14,21,10,32,31,44,9,9,14,14,9,9,44,31,32,10,21,14,9,9,9,9, +14,21,10,32,31,44,9,9,14,14,9,9,44,31,32,10,0,3,0,0,255,192,2,0,1,192,0,26,0,36,0,48, +0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,6,7, +22,23,22,23,54,55,1,5,38,39,49,38,39,6,7,1,54,55,49,2,0,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,254,100,35,1,2,54,54,82,63,48,254,245,1,92,2,54,54,82,63, +48,1,12,34,1,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,111,48, +63,82,54,54,2,1,34,1,12,111,82,54,54,2,1,35,254,245,48,63,0,1,0,0,0,0,1,191,1,128,0,35, +0,0,37,20,7,49,6,35,33,23,22,21,20,7,6,35,34,47,1,38,53,52,63,1,54,51,50,23,22,21,20,15, +1,33,50,23,22,21,1,191,9,8,14,254,205,106,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,9,106,1, +51,14,8,9,192,14,9,9,105,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,105,9,9,14,0, +0,1,0,0,0,0,1,192,1,128,0,34,0,0,37,7,6,35,34,39,38,53,52,63,1,33,34,39,38,53,52,55, +54,51,33,39,38,53,52,55,54,51,50,31,1,22,21,20,7,1,183,160,10,13,13,10,9,9,106,254,205,14,9,9, +9,9,14,1,51,106,9,9,10,13,13,10,160,9,9,169,160,9,9,10,13,13,10,105,9,9,14,14,9,9,105,10, +13,13,10,9,9,160,10,13,13,10,0,0,0,1,0,0,255,225,1,128,1,160,0,34,0,0,37,6,35,34,47,1, +17,20,7,6,35,34,39,38,53,17,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,1,119,10, +13,13,10,105,9,9,13,13,10,10,105,10,13,13,10,9,9,160,10,13,13,10,160,9,9,201,9,9,106,254,205,14, +8,9,9,8,14,1,51,106,9,9,10,13,13,10,160,9,9,160,10,13,13,10,0,0,0,1,0,0,255,224,1,128, +1,159,0,34,0,0,37,7,6,35,34,47,1,38,53,52,55,54,51,50,31,1,17,52,55,54,51,50,23,22,21,17, +55,54,51,50,23,22,21,20,7,1,119,160,10,13,13,10,160,9,9,10,13,13,10,105,9,9,13,13,10,10,105,10, +13,13,10,9,9,137,160,9,9,160,10,13,13,10,9,9,106,1,51,14,8,9,9,8,14,254,205,106,9,9,10,13, +13,10,0,0,0,1,0,0,255,225,2,0,1,160,0,34,0,0,37,7,6,39,38,39,53,34,7,6,23,22,7,6, +39,38,39,38,39,54,55,54,55,54,51,53,54,55,54,31,1,22,21,20,7,1,248,176,13,13,13,1,117,46,47,33, +3,10,9,12,34,24,24,1,1,38,38,65,65,81,1,13,13,13,176,8,8,222,151,10,6,6,16,87,39,40,107,12, +7,6,7,24,42,41,47,75,40,40,16,15,80,16,6,6,10,151,8,11,11,7,0,0,0,4,0,0,255,224,1,192, +1,160,0,24,0,49,0,74,0,100,0,0,19,35,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,50,55,54, +53,52,39,38,35,33,35,34,7,6,21,20,23,22,59,1,21,20,23,22,51,50,55,54,61,1,52,39,38,35,1,35, +53,52,39,38,35,34,7,6,29,1,20,23,22,59,1,50,55,54,53,52,39,38,35,37,34,7,49,6,29,1,35,34, +7,6,21,20,23,22,59,1,50,55,54,61,1,52,39,38,35,128,96,14,9,9,9,9,14,14,9,9,64,14,9,9, +9,9,14,1,32,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,254,224,64,9,9,14,14,9,9,9, +9,14,96,14,9,9,9,9,14,1,32,14,9,9,64,14,9,9,9,9,14,96,14,9,9,9,9,14,1,160,9,9, +14,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,96,14,9,9, +254,128,64,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,96,9,9,14,64,9,9,14,14,9,9,9,9, +14,96,14,9,9,0,0,0,0,4,0,0,255,224,1,192,1,160,0,24,0,49,0,74,0,100,0,0,55,35,34,7, +6,21,20,23,22,59,1,21,20,23,22,51,50,55,54,61,1,52,39,38,35,33,35,34,7,6,29,1,20,23,22,51, +50,55,54,61,1,51,50,55,54,53,52,39,38,35,39,51,50,55,54,53,52,39,38,43,1,53,52,39,38,35,34,7, +6,29,1,20,23,22,51,39,34,7,49,6,29,1,35,34,7,6,21,20,23,22,59,1,50,55,54,61,1,52,39,38, +35,128,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,1,32,96,14,9,9,9,9,14,14,9,9,64, +14,9,9,9,9,14,96,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,192,14,9,9,64,14,9,9, +9,9,14,96,14,9,9,9,9,14,128,9,9,14,14,9,9,64,14,9,9,9,9,14,96,14,9,9,9,9,14,96, +14,9,9,9,9,14,64,9,9,14,14,9,9,128,9,9,14,14,9,9,64,14,9,9,9,9,14,96,14,9,9,160, +9,9,14,64,9,9,14,14,9,9,9,9,14,96,14,9,9,0,0,0,0,1,0,16,0,160,1,176,0,224,0,18, +0,0,37,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,1,144,254,160,14,9,9,9,9,14,1, +96,14,9,9,9,9,14,160,9,9,14,14,9,9,9,9,14,14,9,9,0,3,0,0,255,192,2,0,1,192,0,26, +0,37,0,55,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38, +39,7,54,55,22,23,21,6,7,38,39,53,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,0, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,24,2,22,22,2,2,22,22, +2,24,13,9,9,9,9,13,13,9,9,9,9,13,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,152,22,2,2,22,128,22,2,2,22,128,248,9,9,13,14,9,9,9,9,14,13,9,9, +0,5,0,0,255,192,2,0,1,192,0,41,0,55,0,70,0,79,0,88,0,0,19,51,22,31,1,55,54,55,51,22, +23,22,23,20,7,51,50,23,22,29,1,20,7,6,35,33,34,39,38,61,1,52,55,54,59,1,38,53,54,55,54,55, +23,38,39,35,34,7,6,21,20,23,22,59,1,39,55,35,6,15,1,51,50,55,54,53,52,39,38,35,49,5,51,21, +35,38,39,38,39,53,5,53,51,21,6,7,6,7,35,152,2,51,27,24,24,27,51,2,37,25,25,1,10,42,14,9, +9,9,9,14,254,64,14,9,9,9,9,14,42,10,1,25,25,37,39,13,24,2,17,11,12,12,11,17,73,34,169,2, +24,12,35,73,17,11,12,12,11,17,254,184,192,144,20,14,13,1,1,0,192,1,13,14,20,144,1,192,2,42,41,41, +42,2,1,25,25,37,21,19,9,9,14,64,14,9,9,9,9,14,64,14,9,9,19,21,37,25,25,1,69,20,1,12, +11,17,17,11,12,59,21,1,20,59,12,11,17,17,11,12,240,224,1,13,14,20,176,224,224,176,20,14,13,1,0,0, +0,1,0,0,255,224,2,0,1,160,0,53,0,0,1,6,7,49,6,7,6,35,38,39,38,39,6,7,6,21,6,7, +34,39,38,55,54,55,54,55,54,55,54,55,38,39,6,7,6,7,52,55,54,55,54,55,54,23,22,55,54,55,54,51, +50,23,22,23,2,0,1,47,47,80,31,34,49,42,41,24,39,15,15,5,18,3,3,20,3,4,32,33,72,72,122,15, +1,1,15,80,60,59,41,4,11,35,35,50,43,38,43,41,41,24,5,8,8,4,25,1,1,27,98,72,73,28,12,1, +25,25,44,40,33,33,3,17,1,1,7,22,22,54,53,47,47,3,1,15,15,1,1,21,22,32,17,16,51,36,35,13, +9,9,10,15,15,41,7,8,58,67,0,0,0,2,0,0,255,192,1,192,1,192,0,24,0,50,0,0,1,6,7,38, +39,6,7,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,3,6,7,38,39,38,39,52,55,54,55, +22,23,22,23,22,23,48,49,55,22,23,22,7,6,7,1,68,32,25,41,58,75,46,46,1,1,30,29,51,50,63,63, +50,51,29,30,1,1,34,34,55,20,33,44,56,37,37,1,18,18,37,5,23,24,22,23,2,58,6,5,21,8,9,37, +1,141,29,31,57,54,71,77,78,56,64,52,52,31,30,1,1,30,31,52,52,64,43,67,67,54,254,171,23,1,1,33, +33,58,28,30,30,43,6,30,30,28,29,2,66,10,9,41,43,43,27,0,0,3,0,0,255,224,2,64,1,160,0,24, +0,63,0,81,0,0,1,50,51,22,23,22,23,6,7,6,7,38,39,38,39,52,53,22,23,54,55,54,55,38,39,55, +22,23,49,22,23,22,7,6,7,6,7,6,7,6,7,38,39,38,39,38,39,38,39,38,55,54,55,54,55,54,55,54, +55,22,23,22,23,49,39,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,24,4,4,41,27,27,1, +1,27,27,41,41,27,27,1,15,17,27,18,18,1,1,7,201,35,23,23,12,4,4,12,23,23,35,36,48,48,61,61, +48,48,36,35,23,23,12,4,4,12,23,23,35,36,48,48,61,61,48,48,36,193,61,41,40,2,2,40,41,61,61,41, +40,2,2,40,41,61,1,32,1,27,27,41,41,27,27,1,1,27,27,41,4,4,7,1,1,18,18,27,17,15,47,33, +35,35,28,12,12,28,35,34,34,34,23,23,1,1,23,23,34,34,34,35,28,12,12,28,35,35,33,34,23,23,1,1, +23,23,34,1,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,0,3,0,0,255,192,2,128,1,192,0,30, +0,55,0,82,0,0,19,54,55,49,54,55,22,23,22,23,22,23,22,23,22,7,6,7,6,7,23,22,7,6,39,1, +38,55,54,31,3,54,53,38,39,50,51,54,51,22,23,22,23,20,7,23,54,53,38,39,38,39,6,7,19,38,39,49, +38,39,38,39,38,39,38,55,54,55,23,6,21,22,23,22,23,50,55,23,6,7,49,151,33,42,43,51,61,48,48,36, +35,23,23,12,4,4,11,20,20,29,105,16,12,15,19,253,176,16,12,15,19,112,72,90,7,1,7,1,2,3,2,41, +27,27,1,9,40,17,2,40,41,61,57,40,97,61,48,48,36,35,23,23,12,4,4,15,34,94,1,2,40,41,61,28, +25,73,54,72,1,99,27,17,16,1,1,23,23,34,33,35,35,28,12,12,25,31,32,31,82,15,19,16,12,1,208,15, +19,16,12,88,57,70,12,17,16,15,1,1,27,27,41,22,18,30,31,39,60,41,41,2,2,37,254,182,1,23,23,34, +34,34,35,28,12,12,36,46,74,10,9,62,41,40,2,10,58,30,2,0,0,3,0,0,255,224,2,0,1,160,0,15, +0,28,0,46,0,0,37,3,38,35,34,7,3,6,23,22,23,33,54,55,54,39,37,54,55,22,23,21,6,7,34,39, +38,61,1,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,250,213,14,23,23,14,213,12,12,11, +26,1,170,26,11,12,12,254,238,2,22,22,2,2,21,10,7,8,24,13,9,9,9,9,13,13,9,9,9,9,13,31, +1,108,21,21,254,148,22,20,20,1,1,20,20,22,249,22,2,2,22,128,22,2,7,7,10,128,248,9,9,13,14,9, +9,9,9,14,13,9,9,0,0,1,0,0,255,192,2,64,1,192,0,45,0,0,1,22,23,49,22,23,6,7,6,7, +35,7,6,7,35,38,63,1,35,7,6,43,1,38,39,52,63,1,39,38,53,54,55,51,50,31,1,51,39,38,55,51, +22,31,1,51,1,226,29,31,31,3,3,31,31,29,116,101,9,19,56,18,3,49,103,43,5,8,42,13,1,1,31,31, +1,1,13,42,8,5,43,103,49,3,18,56,19,9,101,116,1,0,1,18,18,27,28,18,17,1,176,15,1,3,17,172, +58,6,1,14,1,2,110,110,2,2,13,1,6,58,172,17,3,1,15,176,0,8,0,0,255,192,1,192,1,192,0,34, +0,47,0,60,0,73,0,86,0,99,0,112,0,125,0,0,19,21,51,53,52,55,54,51,50,23,22,29,1,51,22,23, +22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22,21,7,33,17,6,7,6,7,33,38,39,38,39,17, +23,22,23,51,54,55,53,38,39,35,6,7,21,51,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39, +35,23,22,23,51,54,55,53,38,39,35,6,7,21,160,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14, +20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160,20,14,13,1,64,1,15,32,15,1,1,15,32,15,1, +128,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,254,240,1,15,32,15,1,1,15,32, +15,1,144,15,1,1,15,32,15,1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,1,160,32,32,14,9,9,9, +9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1, +16,112,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15, +1,176,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1, +15,32,0,0,0,3,0,0,255,216,1,255,1,168,0,33,0,55,0,71,0,0,37,38,7,49,6,7,21,35,39,38, +43,1,34,7,6,21,20,23,22,59,1,23,22,59,1,21,22,23,22,63,1,54,47,2,51,21,22,23,22,63,1,54, +47,1,38,7,6,7,21,35,34,15,1,23,55,7,35,34,7,6,21,20,23,22,59,1,50,63,1,39,7,1,168,12, +14,13,1,48,182,10,16,96,14,9,9,9,9,14,80,182,10,16,64,1,14,13,13,79,14,14,80,88,48,1,14,13, +12,79,14,14,79,12,14,14,1,63,16,10,40,39,43,224,80,14,9,9,9,9,14,96,16,10,40,40,42,161,11,6, +5,17,48,243,13,9,9,14,14,9,9,243,13,48,16,6,6,11,80,17,17,80,127,48,17,5,6,11,80,17,17,80, +11,6,6,16,48,13,54,53,56,192,9,9,14,14,9,9,13,54,53,56,0,1,0,0,255,224,1,255,1,160,0,36, +0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22,51,54,55,54,55,54, +55,38,39,38,39,38,39,1,0,72,57,58,34,34,1,2,55,12,20,20,3,3,2,2,5,50,36,35,20,49,58,71, +58,57,34,34,1,1,34,34,57,58,71,1,160,1,27,28,47,47,58,76,55,39,27,28,1,4,5,5,1,17,17,16, +19,1,27,28,47,47,58,58,47,47,28,27,1,0,0,0,0,3,0,0,255,224,1,192,1,160,0,26,0,40,0,54, +0,0,19,21,22,23,22,23,54,55,54,55,53,51,21,6,7,6,7,6,7,38,39,38,39,38,39,53,51,39,52,55, +49,54,59,1,50,23,22,29,1,35,53,33,52,55,49,54,59,1,50,23,22,29,1,35,53,128,1,27,27,41,41,27, +27,1,128,1,30,29,51,50,63,63,50,51,29,30,1,128,128,9,9,14,64,14,9,9,128,1,64,9,9,14,64,14, +9,9,128,1,32,96,41,27,27,1,1,27,27,41,96,96,63,50,51,29,30,1,1,30,29,51,50,63,96,96,14,9, +9,9,9,14,64,64,14,9,9,9,9,14,64,64,0,0,0,1,0,0,0,96,1,192,1,96,0,24,0,0,37,34, +47,1,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,1,160,13,10,169,169,10,13,13, +10,9,9,192,10,13,13,10,192,9,9,10,13,96,9,170,170,9,9,10,13,13,10,192,9,9,192,10,13,13,10,9, +0,1,0,0,0,32,1,192,1,32,0,24,0,0,55,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23, +22,21,20,15,1,6,35,224,13,10,192,9,9,10,13,13,10,169,169,10,13,13,10,9,9,192,10,13,32,9,192,10, +13,13,10,9,9,170,170,9,9,10,13,13,10,192,9,0,0,2,0,24,0,0,2,103,1,128,0,34,0,69,0,0, +37,38,39,35,53,38,39,38,39,35,34,7,6,21,20,23,22,59,1,22,23,21,35,6,7,6,31,1,22,51,50,63, +1,54,39,5,35,38,39,53,51,54,55,54,47,1,38,35,34,15,1,6,23,22,23,51,21,22,23,22,23,51,50,55, +54,53,52,39,38,35,2,102,6,16,48,1,22,23,34,128,14,9,9,9,9,14,128,15,1,48,16,6,6,11,80,7, +10,10,7,80,10,5,254,202,128,15,1,48,16,6,6,11,80,7,10,10,7,80,10,5,6,16,48,1,22,23,34,128, +14,9,9,9,9,14,113,15,1,143,34,23,22,1,9,9,14,14,9,9,1,15,143,1,14,15,11,80,8,7,80,12, +14,17,1,15,144,1,14,14,12,80,7,7,80,12,14,14,1,144,34,23,22,1,9,9,14,14,9,9,0,3,0,0, +255,192,2,61,1,192,0,28,0,46,0,64,0,0,19,22,31,1,33,22,23,22,15,1,6,7,33,23,33,22,23,6, +7,33,38,39,3,35,38,39,54,55,51,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,33,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,96,19,5,1,1,165,16,9,9,3,54,8,23,254,195,9,1, +52,22,2,2,22,254,183,18,5,60,52,22,2,2,22,72,32,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,1,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,1,19,12,1,12,12,16,192,22,1,48, +2,22,22,2,1,18,1,61,2,22,22,2,254,48,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0,1,0,0,255,224,2,0,1,160,0,22,0,0,1,17, +6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,23,51,22,23,22,23,2,0,1,13,14,20,254,96,20,14,13, +1,1,13,14,20,160,64,192,20,14,13,1,1,48,254,224,20,14,13,1,1,13,14,20,1,96,20,14,13,1,64,1, +13,14,20,0,0,2,0,0,255,224,2,63,1,160,0,17,0,30,0,0,19,33,53,38,39,38,39,35,39,35,6,7, +6,7,17,55,54,55,5,33,6,15,1,33,54,63,1,54,39,38,39,148,1,76,1,13,14,20,160,64,160,20,14,13, +1,91,18,39,1,139,254,117,20,9,119,1,191,19,10,96,8,9,9,19,1,0,48,20,14,13,1,64,1,13,14,20, +254,184,181,34,1,32,1,17,238,1,17,192,17,14,14,1,0,1,0,0,255,192,1,0,1,192,0,50,0,0,55,22, +21,20,15,1,6,35,34,47,1,38,53,52,55,54,51,50,31,1,17,7,6,35,34,39,38,53,52,63,1,54,51,50, +31,1,22,21,20,7,6,35,34,47,1,17,55,54,51,50,23,247,9,9,96,10,13,13,10,96,9,9,10,13,13,10, +41,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,41,10,13,13,10,87,10,13,13,10,96, +9,9,96,10,13,13,10,9,9,42,1,38,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,254,218, +42,9,9,0,0,1,0,0,0,64,2,0,1,64,0,50,0,0,37,7,6,35,34,39,38,53,52,63,1,33,23,22, +21,20,7,6,35,34,47,1,38,53,52,63,1,54,51,50,23,22,21,20,15,1,33,39,38,53,52,55,54,51,50,31, +1,22,21,20,7,1,247,96,10,13,13,10,9,9,42,254,218,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10, +9,9,42,1,38,42,9,9,10,13,13,10,96,9,9,169,96,9,9,10,13,13,10,41,41,10,13,13,10,9,9,96, +10,13,13,10,96,9,9,10,13,13,10,41,41,10,13,13,10,9,9,96,10,13,13,10,0,4,0,0,255,224,2,0, +1,160,0,27,0,47,0,67,0,87,0,0,19,50,23,49,22,21,17,22,23,33,50,23,22,21,20,7,6,35,33,38, +39,38,39,17,52,55,54,51,23,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,23,50,23,49, +22,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,23,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52, +55,54,51,33,32,14,9,9,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1,9,9,14,96,9,9,14,192, +14,9,9,9,9,14,192,14,9,9,160,14,9,9,9,9,14,128,14,9,9,9,9,14,128,128,14,9,9,9,9,14, +255,0,14,9,9,9,9,14,1,0,1,160,9,9,14,254,176,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14, +9,9,96,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,3,0,0,255,224,2,0,1,160,0,31,0,45,0,63,0,0,19,53, +54,55,51,22,23,21,51,55,54,59,1,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,23,6, +43,1,21,51,54,55,22,23,51,53,35,7,23,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,64,1, +15,64,15,1,32,51,13,15,177,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,157,14,15,128,115, +33,44,44,33,115,177,50,35,37,25,25,1,1,25,25,37,37,25,25,1,1,25,25,37,1,128,16,15,1,1,15,16, +25,7,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,32,27,18,18,1,57,7,64,23,1,1,23,96,25,95, +1,25,25,37,37,25,25,1,1,25,25,37,37,25,25,1,0,2,0,0,255,192,2,0,1,192,0,34,0,52,0,0, +37,7,6,43,1,21,6,7,35,21,6,7,35,38,39,53,52,63,1,38,53,54,55,54,55,22,23,22,23,6,7,6, +7,34,39,55,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,26,34,6,10,40,2,22,40,2,22, +80,22,2,7,161,8,2,50,49,75,75,49,50,2,2,50,49,75,28,26,94,17,11,12,12,11,17,17,11,12,12,11, +17,104,32,8,40,22,2,40,22,2,2,22,80,10,7,161,26,28,75,49,50,2,2,50,49,75,75,49,50,2,8,168, +12,11,17,17,11,12,12,11,17,17,11,12,0,4,0,3,255,196,2,120,1,184,0,92,0,110,0,203,0,221,0,0, +1,22,21,20,7,23,22,7,6,7,6,15,1,6,7,6,7,6,47,1,6,15,1,6,7,6,35,34,39,38,47,1, +38,39,7,6,39,38,47,1,38,39,38,63,1,38,53,38,53,52,55,52,55,39,38,55,54,55,48,63,1,54,55,54, +31,1,54,63,1,54,55,54,51,50,23,22,31,1,22,23,55,54,23,22,23,22,31,1,22,23,22,15,1,39,6,7, +49,6,7,22,23,22,51,50,55,54,55,38,39,38,39,1,6,35,34,39,7,6,39,38,47,1,38,39,38,39,38,63, +1,38,47,1,38,39,38,53,52,55,54,63,1,54,55,39,38,55,54,55,54,63,1,48,55,54,55,54,31,1,54,51, +50,23,55,54,23,22,31,1,22,23,22,23,22,15,1,22,31,1,22,23,22,21,20,7,6,15,1,6,7,23,22,7, +6,7,6,15,1,6,7,6,7,6,47,1,55,38,39,49,38,39,6,7,6,7,22,23,22,23,54,55,54,55,1,30, +2,2,23,11,5,2,1,2,3,3,3,2,2,3,10,14,29,16,20,7,3,15,10,10,10,10,16,3,7,19,16,28, +15,10,5,5,3,4,4,5,12,22,1,2,2,1,22,12,5,3,4,1,3,5,5,10,15,28,16,19,7,3,16,10, +10,10,10,15,3,7,20,16,29,14,10,3,2,2,3,3,4,4,5,11,23,126,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,1,69,10,11,11,10,20,11,14,8,7,6,4,4,3,3,12,5,9,13,8,29,15,3,1,1, +3,15,29,8,13,9,5,12,1,2,6,6,5,1,6,8,14,11,20,10,11,11,10,20,10,15,8,7,6,5,6,2, +1,12,5,9,13,8,29,15,3,1,1,3,15,29,8,13,9,5,12,3,3,4,4,6,4,5,3,3,15,10,20,27, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,37,11,9,12,10,20,10,15,3,3,5,4,6,4,4, +3,3,12,5,9,13,8,29,15,3,1,1,3,15,29,8,13,9,5,12,7,7,6,7,8,15,10,20,2,1,9,10, +8,8,2,2,20,11,14,8,6,1,5,8,7,12,5,9,13,8,29,15,3,1,1,3,15,29,8,13,9,5,12,3, +4,3,4,6,7,8,14,11,20,28,1,14,13,20,21,13,14,14,13,21,20,13,14,1,254,161,2,2,23,11,5,4, +4,3,3,2,2,3,10,14,29,16,20,7,3,15,10,10,10,10,16,3,7,19,16,28,15,10,1,1,5,3,3,1, +4,3,5,12,22,2,2,22,12,5,4,4,3,3,5,1,1,10,15,28,16,19,7,3,16,10,10,10,10,15,3,7, +20,16,29,14,10,3,2,2,3,3,3,2,1,2,5,11,23,126,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,0,0,0,2,0,0,255,192,2,128,1,192,0,27,0,64,0,0,1,38,39,49,38,39,6,7,6,7,22,23, +6,7,6,7,6,23,22,51,54,55,22,23,54,55,54,55,19,54,55,38,39,38,39,48,49,34,49,20,21,22,21,6, +7,6,7,22,23,22,23,54,55,22,23,50,55,54,39,48,49,38,39,38,39,1,160,2,59,59,88,88,59,59,2,1, +41,14,12,13,1,3,2,2,5,58,37,47,58,88,59,59,2,184,39,1,2,54,54,82,1,1,2,51,52,81,17,50, +50,69,51,42,37,54,5,2,2,3,3,11,12,12,1,16,75,49,50,2,2,50,49,75,60,45,25,16,16,1,4,4, +5,2,22,23,1,2,50,49,75,254,244,46,62,75,49,50,2,1,1,7,7,75,55,55,18,58,37,37,1,1,21,20, +2,5,4,4,2,15,15,23,0,2,0,24,255,192,1,177,1,192,0,16,0,20,0,0,37,7,6,39,38,63,1,39, +38,55,54,63,2,54,55,19,23,34,35,51,1,32,128,18,16,15,2,25,104,14,6,6,19,144,64,10,18,1,145,1, +2,3,8,68,9,11,12,19,147,102,14,19,18,3,22,132,17,1,254,72,72,0,0,0,0,2,0,0,255,224,2,0, +1,160,0,38,0,73,0,0,55,35,34,39,38,53,17,52,55,54,59,1,50,55,54,53,52,39,38,43,1,6,7,6, +7,17,22,23,22,23,51,50,55,54,53,52,39,38,35,37,39,38,35,34,7,6,21,20,31,1,35,34,7,6,21,20, +23,22,59,1,7,6,21,20,23,22,51,50,63,1,54,53,52,39,160,64,14,9,9,9,9,14,64,14,9,9,9,9, +14,64,41,27,27,1,1,27,27,41,64,14,9,9,9,9,14,1,87,128,10,13,13,10,9,9,74,211,14,9,9,9, +9,14,211,74,9,9,10,13,13,10,128,9,9,32,9,9,14,1,0,14,9,9,9,9,14,14,9,9,1,27,27,41, +255,0,41,27,27,1,9,9,14,14,9,9,183,128,9,9,10,13,13,10,73,9,9,14,14,9,9,73,10,13,13,10, +9,9,128,10,13,13,10,0,0,2,0,0,255,192,1,127,1,192,0,37,0,49,0,0,19,52,55,49,54,51,33,50, +23,22,21,20,7,6,43,1,23,22,31,1,22,7,6,35,33,34,39,38,63,1,54,63,1,35,34,39,38,53,19,21, +20,7,6,35,34,39,38,61,1,51,32,9,9,14,1,0,14,9,9,9,9,14,29,11,57,22,1,5,10,9,16,254, +192,16,10,9,5,1,22,57,12,30,14,9,9,192,9,9,14,14,9,9,64,1,160,14,9,9,9,9,14,14,9,9, +148,31,64,3,15,14,13,13,14,15,3,64,31,148,9,9,14,254,160,96,14,9,9,9,9,14,96,0,0,2,0,0, +255,224,1,192,1,160,0,50,0,88,0,0,1,52,55,49,54,59,1,48,49,48,49,50,23,20,51,22,23,48,49,22, +23,48,49,48,49,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,35,34,39,38,53,49,5, +54,55,49,54,55,51,50,23,22,21,20,7,6,43,1,17,33,53,52,55,54,51,50,23,22,29,1,6,7,6,7,33, +38,39,38,39,17,1,0,9,9,14,127,8,5,1,5,5,8,1,9,9,14,14,9,9,169,10,13,13,10,9,9,170, +51,14,9,9,255,0,1,18,18,27,96,14,9,9,9,9,14,96,1,32,9,9,14,14,9,9,1,18,18,27,254,224, +27,18,18,1,1,128,14,9,9,2,1,2,4,10,13,128,14,9,9,9,9,14,51,170,9,9,10,13,13,10,169,9, +9,14,64,27,18,18,1,9,9,14,14,9,9,254,224,96,14,9,9,9,9,14,96,27,18,18,1,1,18,18,27,1, +32,0,0,0,0,2,0,0,255,224,2,0,1,160,0,38,0,73,0,0,1,35,34,7,6,21,20,23,22,59,1,50, +23,22,21,17,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,17,38,39,38,39,7,39,38,35,34, +7,6,21,20,31,1,35,34,7,6,21,20,23,22,59,1,7,6,21,20,23,22,51,50,63,1,54,53,52,39,1,160, +64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41,73,128, +10,13,13,10,9,9,74,211,14,9,9,9,9,14,211,74,9,9,10,13,13,10,128,9,9,1,160,9,9,14,14,9, +9,9,9,14,255,0,14,9,9,9,9,14,14,9,9,1,27,27,41,1,0,41,27,27,1,201,128,9,9,10,13,13, +10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,0,3,0,0,255,192,2,63,1,192,0,64, +0,77,0,89,0,0,1,38,39,35,52,53,38,39,38,35,33,34,7,6,7,6,23,20,21,35,6,7,6,7,6,23, +22,23,22,23,22,23,20,7,6,43,1,6,7,6,7,22,23,51,54,55,52,39,38,39,35,34,39,38,39,54,55,54, +55,54,55,54,39,38,39,5,38,39,49,38,55,51,22,23,22,23,38,39,33,6,7,54,55,54,55,51,22,7,6,7, +2,60,5,18,101,1,9,9,13,255,0,13,9,9,1,1,1,101,18,5,1,3,2,7,7,25,57,131,29,2,13,12, +18,5,20,14,13,1,2,13,223,14,1,14,13,21,4,19,12,12,1,2,30,131,56,27,7,8,3,2,1,254,17,20, +5,5,1,81,3,14,13,27,73,36,1,166,36,73,27,13,14,3,81,1,5,5,20,1,110,17,1,19,14,13,9,9, +9,9,13,11,15,3,4,1,17,3,24,24,36,37,40,84,33,10,32,18,12,13,1,13,14,20,15,1,1,15,20,14, +13,1,13,12,18,32,10,33,84,40,37,36,24,24,3,138,32,29,29,18,46,49,50,44,29,52,52,29,44,50,50,45, +18,29,29,32,0,3,0,0,255,192,2,0,1,192,0,35,0,65,0,74,0,0,19,22,51,49,50,63,1,21,20,23, +22,51,50,55,54,61,1,23,22,51,50,55,54,53,52,47,1,38,35,34,15,1,6,21,20,23,5,35,6,7,6,7, +38,39,38,39,35,34,7,6,29,1,20,23,22,51,33,50,55,54,61,1,52,39,38,35,7,38,39,54,55,22,23,6, +7,105,10,13,13,10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,128,9,9,1,119,160,1, +18,18,27,27,18,18,1,160,14,9,9,9,9,14,1,192,14,9,9,9,9,14,48,22,2,2,22,22,2,2,22,1, +9,9,9,74,243,14,9,9,9,9,14,243,74,9,9,10,13,13,10,128,9,9,128,10,13,13,10,169,27,18,18,1, +1,18,18,27,9,9,14,96,14,9,9,9,9,14,96,14,9,9,104,2,22,22,2,2,22,22,2,0,0,2,0,0, +255,224,1,192,1,160,0,41,0,61,0,0,1,38,39,49,38,7,6,39,38,7,6,7,6,7,6,23,22,7,6,23, +22,23,22,23,22,55,54,23,22,55,54,55,54,55,54,39,38,55,54,39,38,39,7,6,7,49,6,7,6,35,34,35, +38,55,54,55,54,55,54,23,22,7,1,172,16,18,18,14,26,43,43,54,54,61,58,9,9,6,7,13,8,4,4,15, +16,18,18,14,26,43,43,54,54,61,58,9,9,6,7,13,8,4,4,15,216,35,36,35,10,4,13,2,2,13,2,13, +41,42,44,15,5,2,14,1,140,15,4,4,8,13,7,6,9,9,58,61,54,54,43,43,26,14,18,18,16,15,4,4, +8,13,7,6,9,9,58,61,54,54,43,43,26,14,18,18,16,76,10,35,36,35,11,4,15,44,41,42,12,3,14,15, +5,0,0,0,0,1,0,0,255,192,1,255,1,191,0,28,0,0,37,7,6,7,38,39,38,39,38,39,54,63,1,54, +31,1,22,15,1,22,23,22,23,55,54,31,1,22,7,1,255,23,7,24,127,103,103,61,62,1,1,23,101,24,12,46, +8,17,53,25,41,41,52,44,15,22,108,21,3,61,101,23,1,1,62,61,103,103,127,24,7,23,4,22,108,22,15,43, +52,41,41,26,54,17,8,46,13,24,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,47,0,0,1,33,6,7, +6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,7,6,7,38,39,38,39,38,39,54,63,1,54,31, +1,22,15,1,22,23,55,54,31,1,22,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18, +18,27,32,12,3,12,64,52,51,31,30,1,1,11,51,12,5,24,4,9,27,27,53,22,8,10,55,11,2,1,160,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,222,50,11,1,1,30,31,51,52,64,12,3, +12,2,11,55,10,8,22,53,27,27,9,4,24,5,13,0,0,1,0,0,255,192,1,192,1,192,0,47,0,0,19,51, +22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51,53,54,55,54,55,22,23,22,23,22,7,6, +7,6,39,38,39,38,39,38,35,6,7,6,7,21,144,240,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18, +18,27,16,2,40,41,61,44,34,34,18,6,5,4,13,12,12,12,6,10,19,19,24,34,23,22,1,1,0,1,18,18, +27,192,27,18,18,1,1,18,18,27,192,27,18,18,1,48,61,41,40,2,1,22,22,37,13,12,12,6,5,4,4,12, +21,12,13,1,22,23,34,48,0,4,0,0,255,224,2,64,1,160,0,13,0,27,0,38,0,49,0,0,1,22,23,49, +22,23,21,33,53,54,55,54,55,33,19,6,7,49,6,7,33,38,39,38,39,53,33,21,37,6,7,22,23,51,54,55, +38,39,35,23,51,54,55,38,39,35,6,7,22,23,2,0,27,18,18,1,253,192,1,18,18,27,1,192,64,1,18,18, +27,254,64,27,18,18,1,2,64,254,48,15,1,1,15,64,15,1,1,15,64,128,128,15,1,1,15,128,15,1,1,15, +1,160,1,18,18,27,32,32,27,18,18,1,254,128,27,18,18,1,1,18,18,27,192,192,64,1,15,15,1,1,15,15, +1,32,1,15,15,1,1,15,15,1,0,0,0,3,0,0,255,224,1,192,1,160,0,24,0,54,0,72,0,0,19,6, +7,22,23,22,23,22,23,22,23,22,23,50,51,48,49,54,55,38,39,38,39,38,39,55,34,7,49,6,21,20,23,22, +51,22,23,22,23,22,23,20,23,22,51,50,55,54,53,38,39,38,39,38,39,19,6,7,49,6,7,22,23,22,23,54, +55,54,55,52,39,38,39,26,22,4,1,21,61,52,51,33,32,5,3,20,1,1,21,1,5,39,38,61,61,73,6,14, +9,9,9,9,14,98,80,79,47,47,1,9,9,14,14,9,9,1,56,55,94,94,116,31,26,18,18,1,1,18,18,26, +27,18,18,1,18,18,28,1,16,1,21,22,4,5,32,33,51,51,62,20,2,4,22,73,61,61,39,38,6,144,9,9, +14,14,9,9,1,47,47,79,80,98,14,9,9,9,9,14,116,94,94,55,56,1,254,192,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,0,4,0,0,255,224,2,0,1,160,0,20,0,38,0,56,0,73,0,0,37,33,6,7, +6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20, +7,6,35,51,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,19,33,6,7,6,7,21,54,55,33,22, +23,53,38,39,38,39,1,208,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,144,14,9,9, +9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,48,254,96,20,14,13,1,20,28,1, +160,28,20,1,13,14,20,160,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,128,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,1,128,1,13,14,20,192,15,1,1,15,192,20, +14,13,1,0,0,2,0,0,255,192,2,0,1,192,0,51,0,65,0,0,1,22,23,49,22,21,20,7,6,7,21,6, +7,6,47,1,38,39,38,43,1,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,54,55,54,55,51,50,55, +54,63,1,54,23,22,23,21,5,35,21,51,50,23,22,23,17,6,7,6,35,49,1,224,14,9,9,9,9,14,1,19, +19,16,43,37,46,47,51,9,9,9,14,64,14,9,9,27,18,18,1,1,18,18,27,137,51,47,46,37,43,16,19,19, +1,254,233,9,9,60,55,55,45,45,55,55,60,1,12,7,16,16,21,21,16,16,7,148,21,9,7,14,45,36,19,19, +128,14,9,9,9,9,14,128,1,18,18,27,96,27,18,18,1,19,20,36,44,14,7,9,21,148,12,96,22,21,40,1, +6,40,21,22,0,1,0,0,255,193,1,255,1,191,0,72,0,0,1,55,54,23,22,31,1,55,54,23,22,15,1,23, +22,23,22,15,1,23,22,7,6,15,1,23,22,7,6,47,1,7,6,7,6,47,1,7,6,39,38,47,1,7,6,39, +38,63,1,39,38,39,38,63,1,39,38,55,54,63,1,39,38,55,54,31,1,55,54,55,54,31,1,1,0,44,10,14, +14,3,16,62,14,10,9,3,18,63,13,4,3,9,46,46,9,3,4,13,63,18,3,9,10,14,62,16,3,14,14,10, +44,45,11,12,14,3,16,62,14,10,9,3,18,63,13,4,3,9,46,46,9,3,4,13,63,18,3,9,10,14,62,16, +3,14,12,11,45,1,139,46,9,3,4,13,63,18,3,9,10,14,62,16,3,14,12,11,45,44,10,14,14,3,16,62, +14,10,9,3,18,63,13,4,3,9,46,46,9,3,4,13,63,18,3,9,10,14,62,16,3,14,14,10,44,45,11,12, +14,3,16,62,14,10,9,3,18,63,13,4,3,9,46,0,0,5,0,0,0,0,2,0,1,128,0,19,0,33,0,49, +0,69,0,115,0,0,55,20,23,49,22,59,1,50,55,54,53,52,39,38,43,1,34,7,6,21,55,51,50,55,54,53, +52,39,38,43,1,21,20,7,55,51,50,55,54,53,52,39,38,43,1,20,21,22,29,1,19,52,39,49,38,43,1,34, +7,6,21,20,23,22,59,1,50,55,54,53,39,38,53,52,55,38,39,38,39,53,54,55,22,23,21,20,23,22,23,50, +55,54,61,1,52,39,38,43,1,6,15,1,6,29,1,22,23,22,23,51,38,53,52,55,54,55,224,9,9,14,64,14, +9,9,9,9,14,64,14,9,9,44,84,14,9,9,9,9,14,80,4,4,208,14,9,9,9,9,14,209,1,48,9,9, +14,64,14,9,9,9,9,14,64,14,9,9,118,10,3,29,19,18,1,2,13,15,1,10,10,21,17,11,12,12,11,17, +63,53,32,26,26,1,39,38,58,33,9,12,12,18,128,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14, +9,9,40,13,11,96,9,9,14,14,9,9,1,1,3,3,56,255,0,14,9,9,9,9,14,14,9,9,9,9,14,60, +16,20,9,8,2,20,20,29,73,13,2,2,13,70,13,14,14,1,11,11,17,128,17,11,12,1,42,36,36,44,89,58, +38,39,1,14,18,21,16,16,7,0,0,0,0,5,0,0,0,0,2,0,1,128,0,18,0,32,0,49,0,68,0,114, +0,0,37,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,39,53,35,34,7,6,21,20,23,22,59, +1,38,61,1,52,55,49,52,53,35,34,7,6,21,20,23,22,59,1,53,3,51,50,55,54,53,52,39,38,43,1,34, +7,6,21,20,23,22,51,55,20,7,51,54,55,54,55,53,52,47,1,38,39,35,34,7,6,29,1,20,23,22,51,54, +55,54,53,55,54,55,22,23,21,6,7,6,7,22,21,20,7,22,23,22,21,1,0,64,14,9,9,9,9,14,64,14, +9,9,9,9,14,16,80,14,9,9,9,9,14,84,4,1,209,14,9,9,9,9,14,208,16,64,14,9,9,9,9,14, +64,14,9,9,9,9,14,128,9,33,58,38,39,1,26,26,33,52,63,17,11,12,12,11,16,21,10,9,1,1,15,15, +1,1,18,19,29,3,11,19,12,12,160,9,9,14,14,9,9,9,9,14,14,9,9,56,40,9,9,14,14,9,9,11, +13,128,3,3,1,1,9,9,14,14,9,9,56,254,168,9,9,14,14,9,9,9,9,14,14,9,9,32,18,14,1,39, +38,58,89,44,36,36,42,1,12,11,17,128,17,11,11,1,14,14,13,70,13,2,2,13,73,29,20,20,2,8,9,20, +16,7,16,16,21,0,0,0,0,5,0,32,255,192,1,160,1,192,0,19,0,33,0,49,0,69,0,115,0,0,37,50, +55,49,54,61,1,52,39,38,35,34,7,6,29,1,20,23,22,51,39,53,52,39,38,35,34,7,6,29,1,51,50,23, +39,53,52,39,38,35,34,7,6,29,1,50,51,54,59,1,37,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1, +52,39,38,35,7,6,7,34,39,6,7,6,7,35,38,39,54,55,51,50,55,54,55,52,39,38,43,1,34,7,6,29, +1,22,31,1,22,59,1,54,55,54,55,53,6,35,34,39,38,39,1,32,14,9,9,9,9,14,14,9,9,9,9,14, +64,9,9,14,14,9,9,40,13,11,96,9,9,14,14,9,9,1,1,3,3,56,1,0,14,9,9,9,9,14,14,9, +9,9,9,14,60,16,20,9,8,2,20,20,29,73,13,2,2,13,70,13,14,14,1,11,11,17,128,17,11,12,1,42, +36,36,44,89,58,38,39,1,14,18,21,16,16,7,160,9,9,14,64,14,9,9,9,9,14,64,14,9,9,44,84,14, +9,9,9,9,14,80,4,4,208,14,9,9,9,9,14,209,1,48,9,9,14,64,14,9,9,9,9,14,64,14,9,9, +117,10,1,3,29,19,18,1,1,15,15,1,9,10,21,17,11,12,12,11,17,63,53,32,26,26,1,39,38,58,33,9, +12,12,19,0,0,5,0,32,255,192,1,160,1,192,0,18,0,32,0,49,0,68,0,114,0,0,37,21,20,23,22,51, +50,55,54,61,1,52,39,38,35,34,7,6,21,7,35,21,20,23,22,51,50,55,54,61,1,6,43,1,34,39,49,34, +35,21,20,23,22,51,50,55,54,61,1,35,5,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,54,53,39, +50,23,53,38,39,38,39,35,34,15,1,6,7,21,20,23,22,59,1,50,55,54,53,38,39,38,43,1,38,39,54,55, +51,22,23,22,23,54,51,50,23,54,55,54,51,1,0,9,9,14,14,9,9,9,9,14,14,9,9,56,40,9,9,14, +14,9,9,11,13,128,3,3,1,1,9,9,14,14,9,9,56,1,88,9,9,14,14,9,9,9,9,14,14,9,9,32, +18,14,1,39,38,58,89,44,36,36,42,1,12,11,17,128,17,11,11,1,14,14,13,70,13,2,2,13,73,29,20,20, +2,8,9,20,16,7,16,16,21,192,64,14,9,9,9,9,14,64,14,9,9,9,9,14,16,80,14,9,9,9,9,14, +84,4,1,209,14,9,9,9,9,14,208,16,64,14,9,9,9,9,14,64,14,9,9,9,9,14,128,9,33,58,38,39, +1,26,26,32,53,63,17,11,12,12,11,16,21,10,9,3,14,15,1,1,18,19,29,3,11,19,12,12,0,2,0,0, +255,192,2,0,1,192,0,26,0,61,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54, +55,38,39,38,39,38,39,19,35,23,22,21,20,7,6,35,34,47,1,38,55,38,63,1,54,51,50,23,22,21,20,15, +1,51,50,23,22,21,20,7,6,35,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,128,179,50,9,9,10,13,13,10,104,10,1,1,10,103,10,13,13,10,9,9,49,179,14,9,9,9,9, +14,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,224,49,10,13, +13,10,9,9,104,14,9,9,14,103,9,9,10,13,13,10,48,9,9,14,14,9,9,0,0,2,0,0,255,192,2,0, +1,192,0,26,0,61,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38, +39,38,39,19,7,6,35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52,55,54,51,50, +31,1,22,7,22,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72, +151,103,10,13,13,10,9,9,49,179,14,9,9,9,9,14,179,50,9,9,10,13,13,10,103,12,2,1,10,1,192,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,233,103,9,9,10,13,13,10, +48,9,9,14,14,9,9,49,10,13,13,10,9,9,103,15,9,9,14,0,0,2,0,0,255,192,2,0,1,192,0,26, +0,62,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,23, +6,35,49,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,54,23,54,31,1,22, +21,20,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,127,10,13, +13,10,49,9,9,14,14,9,9,49,10,13,13,10,9,9,103,15,9,9,14,103,10,9,1,192,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,255,9,9,50,179,14,9,9,9,9,14,179,50,9, +9,10,13,13,10,103,12,2,1,10,103,11,13,13,10,0,0,2,0,0,255,192,2,0,1,192,0,26,0,61,0,0, +1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,7,6,39,6, +47,1,38,53,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20,7,1,0, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,127,103,15,9,9,14,104,9, +9,10,13,13,10,49,9,9,14,14,9,9,49,10,13,13,10,9,9,1,192,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,254,209,103,12,2,1,10,104,10,13,13,10,9,9,50,179,14,9,9, +9,9,14,179,50,9,9,10,13,13,10,0,0,9,0,0,255,192,2,0,1,192,0,10,0,21,0,29,0,44,0,53, +0,64,0,79,0,89,0,98,0,0,37,20,7,35,38,39,54,55,51,22,21,55,22,21,20,7,35,54,53,52,39,51, +39,35,38,39,22,23,22,23,43,1,54,55,54,55,54,23,54,23,22,23,22,23,49,33,54,55,49,54,55,6,7,35, +23,6,7,22,23,35,38,53,52,55,51,23,38,39,51,6,7,6,7,6,39,6,39,38,39,49,7,38,39,49,38,39, +51,22,23,49,51,54,55,51,6,7,6,7,49,1,96,3,186,3,1,1,3,186,3,152,8,8,123,3,3,123,11,116, +16,40,60,45,44,23,149,176,9,18,16,17,17,11,11,17,17,16,18,9,254,187,23,44,45,60,40,16,116,112,3,1, +1,3,123,8,8,123,64,18,9,176,9,18,16,17,17,12,10,17,17,16,4,60,45,44,23,116,16,40,130,40,16,116, +23,44,45,60,192,33,31,31,33,33,31,31,33,64,31,33,33,31,32,32,33,31,32,98,54,17,39,40,56,55,40,35, +16,15,1,1,15,16,35,40,55,56,40,39,17,54,98,32,31,33,32,32,31,33,33,31,255,40,55,55,40,35,16,15, +1,1,15,16,35,57,17,39,40,56,98,54,54,98,56,40,39,17,0,0,0,2,0,1,255,192,2,0,1,191,0,39, +0,48,0,0,1,38,39,49,38,15,1,35,53,55,54,39,38,39,38,7,6,7,6,7,6,23,7,6,21,20,23,22, +51,50,63,1,22,55,54,55,54,55,54,39,1,38,39,54,55,22,23,6,7,1,252,3,9,8,7,77,83,76,7,2, +3,9,36,40,47,32,32,8,7,12,178,21,21,21,28,28,23,178,36,40,48,35,35,12,11,9,254,84,22,2,2,22, +22,2,2,22,1,69,9,3,2,6,77,83,77,7,8,9,3,9,10,11,35,35,48,39,36,178,22,29,29,22,22,21, +178,12,6,8,32,33,46,42,35,254,179,2,22,22,2,2,22,22,2,0,0,6,0,0,255,240,2,0,1,160,0,17, +0,35,0,56,0,76,0,96,0,114,0,0,19,22,15,1,6,39,6,47,1,38,55,54,31,1,55,54,23,49,21,22, +15,1,6,39,6,47,1,38,55,54,31,1,55,54,23,49,55,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1, +34,39,38,53,49,21,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,7,52,55,49,54,51,33, +50,23,22,21,20,7,6,35,33,34,39,38,53,35,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,152, +15,13,72,7,10,11,7,40,14,14,17,17,22,55,16,18,15,13,72,7,10,11,7,40,14,14,17,17,22,55,16,18, +72,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,64,9,9, +14,1,32,14,9,9,9,9,14,254,224,14,9,9,160,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1, +154,16,18,80,8,1,2,9,40,16,17,14,14,22,61,15,13,160,16,18,80,8,1,2,9,40,16,17,14,14,22,61, +15,13,102,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9, +9,9,14,14,9,9,9,9,14,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0,0,1,0,0, +255,224,1,255,1,160,0,21,0,0,19,54,55,33,22,23,22,15,1,21,6,7,6,47,1,38,61,1,39,38,55,49, +4,11,25,1,176,25,11,10,16,182,1,17,17,16,64,13,183,15,10,1,137,22,1,1,22,23,19,224,127,19,10,8, +11,48,10,16,79,224,19,23,0,3,0,0,255,224,2,0,1,192,0,20,0,45,0,50,0,0,37,6,7,35,38,39, +53,35,21,22,23,22,23,33,54,55,54,55,53,35,21,55,35,53,38,39,38,39,35,6,7,6,7,21,35,6,7,6, +7,21,33,53,38,39,38,39,43,1,53,51,21,1,64,1,15,96,15,1,192,1,13,14,20,1,160,20,14,13,1,192, +144,80,1,13,14,20,160,20,14,13,1,80,20,14,13,1,2,0,1,13,14,20,128,160,160,112,15,1,1,15,48,144, +20,14,13,1,1,13,14,20,144,48,240,48,20,14,13,1,1,13,14,20,48,1,13,14,20,112,112,20,14,13,1,48, +48,0,0,0,0,1,0,0,255,192,2,0,1,192,0,76,0,0,37,20,15,1,6,35,34,39,38,39,53,35,21,51, +22,23,22,15,1,6,35,34,47,1,38,55,54,55,51,53,35,21,6,7,6,35,34,47,1,38,53,52,63,1,54,23, +22,23,21,51,53,35,38,39,38,63,1,54,51,50,31,1,22,7,6,7,35,21,51,53,54,55,54,31,1,22,21,2, +0,8,80,7,9,5,5,13,1,96,40,15,7,6,10,72,7,12,11,7,71,10,6,7,15,39,95,1,13,5,5,9, +7,80,8,8,80,12,14,13,1,95,39,15,7,6,10,71,8,10,11,7,72,10,6,7,15,40,97,1,13,14,12,80, +8,192,11,7,72,6,2,7,15,40,96,1,13,14,12,80,8,8,80,12,14,13,1,96,40,15,7,2,6,72,7,11, +11,7,72,9,5,7,15,40,96,1,13,14,12,80,8,8,80,12,14,13,1,96,40,15,7,5,9,72,7,11,0,0, +0,6,0,0,255,192,2,128,1,192,0,17,0,36,0,54,0,72,0,90,0,107,0,0,37,54,55,49,54,55,38,39, +38,39,6,7,6,7,20,23,22,31,1,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,55,54,55, +49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,52,55,49,52,55,38,43,1,6,7,6,7,22,23,51,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,35,34,7,20,23,22,21,6,7,51,54,55, +38,39,38,39,1,64,44,29,29,1,1,29,30,43,44,29,29,1,29,30,44,50,100,60,40,40,2,8,8,12,1,72, +12,8,8,2,40,40,60,142,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,184,1,1,17,19,62,37, +25,25,1,2,16,199,32,1,56,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,1,168,62,19,17,1,1, +1,32,199,16,2,1,25,25,37,128,1,29,30,44,44,30,29,1,1,29,30,44,44,30,29,1,32,1,38,38,56,12, +7,8,8,7,12,56,38,38,1,192,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,56,6,6,2,2,8, +1,26,27,39,17,2,37,51,56,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,32,8,3,2,5,6,51, +37,2,17,39,27,26,1,0,0,2,0,18,255,213,2,110,1,171,0,55,0,111,0,0,19,54,51,49,50,23,22,23, +22,15,1,6,7,6,39,38,39,38,63,1,54,39,38,39,38,35,34,15,1,6,21,20,23,22,23,22,63,1,54,23, +22,23,22,7,6,15,1,6,39,38,39,38,53,52,63,1,5,6,35,49,34,39,38,39,38,63,1,54,55,54,23,22, +23,22,15,1,6,23,22,23,22,51,50,63,1,54,53,52,39,38,39,38,15,1,6,39,38,39,38,55,54,63,1,54, +23,22,23,22,21,20,15,1,173,44,57,58,44,38,4,5,31,1,8,12,13,11,11,2,2,7,1,17,2,2,21,25, +32,32,25,112,24,24,21,29,28,25,2,11,13,12,9,7,2,2,11,1,46,51,51,39,42,42,113,1,39,45,58,57, +45,38,4,4,31,1,7,13,12,12,11,2,2,7,1,17,2,2,21,25,32,32,25,113,23,23,22,29,28,25,2,11, +13,12,8,8,2,2,11,2,44,51,52,39,42,42,112,1,61,42,42,39,52,52,44,2,11,2,2,8,8,12,13,11, +2,25,28,29,22,23,23,113,24,32,33,25,20,3,2,17,2,7,2,3,10,12,12,13,8,1,31,4,5,37,45,57, +58,45,113,249,42,42,39,51,52,44,2,11,2,2,8,7,13,12,12,2,24,29,29,22,23,23,112,25,33,32,24,21, +3,2,17,1,8,3,2,10,12,12,13,8,1,31,4,5,37,45,57,58,45,112,0,0,0,1,0,0,255,224,2,128, +1,160,0,35,0,0,55,52,53,54,55,54,55,22,23,22,23,54,51,22,23,22,23,20,7,22,23,22,23,6,7,6, +7,33,38,39,38,39,54,55,54,55,96,2,45,45,68,45,36,36,22,23,30,41,27,27,1,6,44,29,28,1,1,36, +37,54,254,144,61,41,40,2,1,26,26,43,248,4,4,68,45,45,2,1,21,22,36,16,1,27,27,41,18,17,9,35, +34,47,54,37,36,1,2,40,41,61,48,36,36,16,0,0,0,2,0,0,255,192,1,192,1,192,0,26,0,37,0,0, +37,39,53,51,54,55,53,38,39,35,6,7,21,22,23,51,23,7,6,23,22,23,33,54,55,54,39,37,55,54,61,1, +51,21,20,31,1,35,1,181,118,7,22,1,2,21,206,22,2,2,21,7,2,117,21,19,19,43,1,50,43,19,19,21, +254,212,48,7,64,6,48,173,44,189,151,2,22,16,22,2,2,22,16,22,2,151,189,37,34,35,2,2,35,34,37,84, +78,8,10,160,160,10,8,78,0,4,0,0,255,192,1,248,1,192,0,44,0,62,0,80,0,90,0,0,1,54,51,49, +50,23,22,7,1,22,21,6,7,6,7,38,39,38,39,54,55,54,55,22,23,55,39,6,35,38,39,38,39,54,55,54, +55,22,23,22,23,20,7,23,55,7,38,39,49,38,39,6,7,6,7,22,23,22,51,50,55,54,55,3,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,23,63,1,23,22,7,6,35,34,47,1,1,141,22,29,29,22,11,11,254, +230,7,1,32,31,48,48,31,32,1,1,32,31,48,22,19,38,38,19,22,48,31,32,1,1,32,31,48,48,31,32,1, +7,38,142,237,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,48,20,14,13,1,1,13,14,20,20,14,13, +1,1,13,14,20,167,64,156,11,11,22,29,29,22,118,1,141,21,21,13,13,254,229,18,22,48,31,32,1,1,32,31, +48,48,32,32,1,1,8,41,38,7,1,32,31,48,48,31,32,1,1,32,31,48,22,19,38,140,60,20,14,13,1,1, +13,14,20,21,13,14,14,13,21,254,175,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,105,64,156,13,13, +21,21,118,0,0,3,0,0,255,192,2,0,1,192,0,22,0,26,0,49,0,0,1,53,35,6,7,6,7,17,22,23, +22,23,51,54,55,54,55,53,35,34,39,38,53,55,21,51,39,3,53,35,6,7,6,7,17,22,23,22,23,51,54,55, +54,55,53,35,38,39,38,39,1,128,112,20,14,13,1,1,13,14,20,192,20,14,13,1,95,14,9,10,32,96,96,224, +144,20,14,13,1,1,13,14,20,192,20,14,13,1,32,27,18,18,1,1,96,96,1,13,14,20,254,224,20,14,13,1, +1,13,14,20,208,9,9,14,96,96,96,254,160,224,1,13,14,20,254,224,20,14,13,1,1,13,14,20,48,1,18,18, +27,0,0,0,0,1,0,4,255,196,1,188,1,183,0,70,0,0,1,38,35,49,34,15,1,6,21,20,23,22,51,50, +63,1,54,51,50,23,22,21,20,15,1,6,35,34,39,38,53,52,63,1,54,51,50,23,22,21,20,15,1,6,35,34, +39,38,53,52,63,1,54,51,50,23,22,21,20,15,1,6,23,22,63,1,54,53,52,39,49,1,108,19,25,25,19,184, +32,32,33,43,43,33,152,9,11,11,9,8,8,152,51,65,65,51,48,48,184,37,47,47,37,35,35,176,23,29,29,23, +21,21,144,9,11,11,9,8,8,144,10,10,12,12,176,19,19,1,108,19,19,184,33,43,43,33,32,32,152,8,8,9, +11,11,9,152,48,48,51,65,65,51,184,35,35,37,47,47,37,176,21,21,23,29,29,23,144,8,8,9,11,11,9,144, +12,12,10,10,176,19,25,25,19,0,0,0,0,3,0,0,255,224,1,192,1,160,0,23,0,41,0,54,0,0,1,39, +38,39,38,43,1,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,38,39,3,38,39,49,38,39,54,55,54,55, +22,23,22,23,6,7,6,7,55,6,7,35,38,39,53,54,55,51,22,23,21,1,177,84,5,10,9,9,252,27,18,18, +1,1,18,18,27,1,64,27,18,18,1,1,14,209,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,1, +15,224,15,1,1,15,224,15,1,1,63,84,5,4,4,1,18,18,27,254,192,27,18,18,1,1,18,18,27,252,19,16, +254,225,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,208,15,1,1,15,96,15,1,1,15,96,0,0,0, +0,1,0,0,255,224,1,192,1,160,0,21,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,33,38, +39,38,39,17,0,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,96,27,18,18,1,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,0,0,3,0,0,0,0,1,192,1,128,0,19,0,39,0,58, +0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,21,52,55,49,54,51,33,50,23,22, +21,20,7,6,35,33,34,39,38,53,5,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,0,9,9, +14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160, +254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,1,96,14,9,9,9,9,14,14,9,9,9,9,14,160,14, +9,9,9,9,14,14,9,9,9,9,14,192,9,9,14,14,9,9,9,9,14,14,9,9,0,6,0,16,255,240,2,0, +1,144,0,17,0,37,0,57,0,77,0,95,0,113,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,37,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35, +33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,5,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23, +22,23,16,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,208,14,9,9,9,9,14,254,224,14,9,9, +9,9,14,1,32,14,9,9,9,9,14,254,224,14,9,9,9,9,14,1,32,14,9,9,9,9,14,254,224,14,9,9, +9,9,14,1,32,254,48,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,1,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,32,9,9,14,14,9, +9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9, +9,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,0,0,5,0,39,255,224,2,32,1,160,0,31,0,63,0,83,0,103,0,123,0,0,19,52,55,49,54,59, +1,22,23,21,51,22,23,6,7,35,34,39,38,53,52,55,54,59,1,53,35,34,39,38,53,49,19,38,15,1,6,39, +38,63,1,54,55,54,23,22,7,20,15,1,51,22,23,6,7,35,38,39,38,63,1,54,39,49,1,50,23,49,22,21, +20,7,6,35,33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54, +51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,55,7,7,10,32,23,1,16,23,1, +1,23,80,10,7,7,7,7,10,16,8,10,7,7,64,13,11,11,15,19,17,11,12,19,29,29,22,16,1,16,35,33, +22,2,2,22,88,15,7,6,10,72,8,7,1,137,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1,0,14,9, +9,9,9,14,255,0,14,9,9,9,9,14,1,0,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1,0,1,136, +10,7,7,2,22,120,2,22,22,2,7,7,10,10,7,7,96,7,7,10,254,227,11,12,16,17,11,15,19,15,26,1, +1,23,18,24,24,18,38,2,22,22,2,1,13,15,11,78,10,11,1,21,9,9,14,14,9,9,9,9,14,14,9,9, +160,9,9,14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,2,0,0, +255,224,2,0,1,160,0,27,0,67,0,0,37,22,7,6,7,6,39,38,39,38,7,6,7,6,23,22,23,22,23,22, +23,22,55,54,55,54,39,35,55,35,38,39,38,39,38,55,54,55,54,55,54,23,22,55,54,55,54,39,38,39,38,7, +6,7,6,23,22,23,35,6,7,22,23,33,54,55,38,39,1,76,25,6,4,21,28,49,50,59,13,11,12,6,4,4, +5,13,25,42,43,48,45,38,47,10,5,9,78,156,176,25,22,63,24,23,6,4,19,14,37,36,68,13,11,12,3,4, +7,6,13,138,69,42,9,6,11,12,22,113,22,2,2,22,1,208,22,2,2,22,128,17,31,26,11,15,5,6,24,4, +5,4,13,13,11,12,6,10,12,12,1,1,20,26,56,35,24,80,8,7,17,17,17,30,22,12,11,3,3,17,3,6, +6,14,13,11,11,4,36,44,28,49,38,26,26,17,2,21,21,2,2,21,21,2,0,0,0,2,0,0,255,192,1,192, +1,192,0,18,0,77,0,0,37,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,1,51,21,22,23, +22,23,54,55,54,55,53,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,59,1,21,6,7,6,7,38, +39,38,39,53,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,1,160,254,128,14,9,9,9,9,14, +1,128,14,9,9,9,9,14,254,144,16,2,45,45,68,68,45,45,2,16,14,9,9,9,9,14,96,14,9,9,9,9, +14,16,1,27,27,41,41,27,27,1,16,14,9,9,9,9,14,96,14,9,9,9,9,14,0,9,9,14,14,9,9,9, +9,14,14,9,9,1,128,160,68,45,44,2,2,45,45,67,160,9,9,14,14,8,9,9,9,14,14,9,9,160,41,26, +27,1,1,27,28,40,160,9,9,14,14,9,9,9,9,13,13,10,10,0,0,5,0,0,255,224,2,0,1,160,0,21, +0,26,0,31,0,36,0,41,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33, +7,53,35,21,51,7,21,51,53,35,23,51,53,35,21,55,53,35,21,51,1,192,27,18,18,1,1,18,18,27,254,128, +27,18,18,1,1,18,18,27,1,128,224,160,160,160,160,160,224,160,160,160,160,160,1,160,1,18,18,27,254,192,27,18, +18,1,1,18,18,27,1,64,27,18,18,1,224,96,96,64,96,96,96,96,96,160,96,96,0,2,0,0,255,192,2,0, +1,192,0,21,0,26,0,0,23,38,53,49,52,55,1,54,51,50,31,1,22,21,20,7,1,6,35,34,47,1,1,55, +39,7,23,14,14,14,1,125,15,19,20,14,35,14,14,254,131,15,19,20,14,35,1,78,105,24,105,24,15,14,20,19, +15,1,125,14,14,35,14,20,19,15,254,131,14,14,35,1,19,105,24,105,24,0,0,0,0,4,0,0,255,192,2,128, +1,192,0,50,0,56,0,74,0,92,0,0,1,22,23,49,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7, +6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,54,55,54,55,33,23, +21,51,53,39,35,5,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,54,55,49,54,55,38,39,38, +39,6,7,6,7,22,23,22,23,1,112,20,14,13,1,51,25,20,77,19,14,9,9,9,9,14,32,1,27,27,41,41, +27,27,1,128,1,27,27,41,41,27,27,1,16,20,14,13,1,1,13,14,20,1,64,48,128,77,51,255,0,20,14,13, +1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1, +192,1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27, +41,1,13,14,20,1,64,20,14,13,1,160,96,19,77,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,0,0,6,0,0,0,0,2,64,1,128,0,21, +0,29,0,37,0,44,0,51,0,69,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54, +55,33,1,38,39,49,38,39,21,51,39,54,55,49,54,55,35,21,5,53,6,7,6,7,51,17,35,22,23,22,23,53, +7,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,2,0,27,18,18,1,1,18,18,27,254,64,27,18, +18,1,1,18,18,27,1,192,254,128,1,18,18,27,64,64,27,18,18,1,64,1,192,27,18,18,1,64,64,1,18,18, +27,224,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,128,1,18,18,27,255,0,27,18,18,1,1,18, +18,27,1,0,27,18,18,1,254,192,27,18,18,1,64,192,1,18,18,27,64,192,64,1,18,18,27,1,0,27,18,18, +1,64,224,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,1,0,0,0,64,1,63,1,0,0,15, +0,0,37,7,6,35,34,47,1,38,55,54,55,51,22,23,22,7,1,55,127,11,13,13,10,127,15,7,9,21,255,21, +9,7,13,201,128,9,9,128,16,19,19,1,1,19,19,16,0,1,0,0,0,128,1,63,1,64,0,15,0,0,63,1, +54,51,50,31,1,22,7,6,7,35,38,39,38,55,9,127,11,13,13,10,127,14,7,8,22,255,21,9,7,14,183,128, +9,9,128,16,19,19,1,1,19,19,16,0,0,1,0,0,0,32,0,192,1,96,0,15,0,0,55,39,38,53,52,63, +1,54,23,22,23,21,6,7,6,39,137,128,9,9,128,16,19,19,1,1,19,19,16,41,127,11,14,13,10,127,14,7, +9,21,255,21,9,7,13,0,0,1,0,64,0,33,1,0,1,96,0,15,0,0,19,23,22,21,20,15,1,6,39,38, +39,53,54,55,54,23,119,128,9,9,128,16,19,19,1,1,19,19,16,1,87,128,11,11,12,11,127,14,7,8,21,255, +21,9,7,14,0,3,0,0,255,224,2,0,1,160,0,21,0,26,0,31,0,0,19,54,55,49,54,55,33,22,23,22, +23,17,6,7,6,7,33,38,39,38,39,17,19,51,17,35,17,1,35,17,51,17,0,1,18,18,27,1,128,27,18,18, +1,1,18,18,27,254,128,27,18,18,1,64,160,160,1,128,160,160,1,96,27,18,18,1,1,18,18,27,254,192,27,18, +18,1,1,18,18,27,1,64,254,192,1,0,255,0,1,0,255,0,1,0,0,2,0,0,255,224,1,64,1,160,0,15, +0,31,0,0,55,33,54,55,54,47,1,38,35,34,15,1,6,23,22,23,5,33,6,7,6,31,1,22,51,50,63,1, +54,39,38,39,28,1,8,19,7,6,12,132,9,11,11,8,133,12,6,7,19,1,8,254,248,19,7,6,12,133,7,12, +11,9,132,12,6,7,19,224,1,16,16,14,137,8,8,137,14,16,16,1,64,1,16,16,14,137,8,8,137,14,16,16, +1,0,0,0,0,1,0,0,255,224,1,64,0,160,0,15,0,0,37,7,6,35,34,47,1,38,55,54,55,33,22,23, +22,7,1,56,132,9,11,11,8,133,12,6,7,19,1,8,19,7,6,12,113,137,8,8,137,14,16,16,1,1,16,16, +14,0,0,0,0,1,0,0,0,224,1,64,1,160,0,15,0,0,55,33,54,55,54,47,1,38,35,34,15,1,6,23, +22,23,28,1,8,19,7,6,12,132,9,11,11,8,133,12,6,7,19,224,1,16,16,14,137,8,8,137,14,16,16,1, +0,2,0,0,0,0,2,0,1,128,0,18,0,37,0,0,1,22,23,49,22,23,6,15,1,6,47,1,38,39,54,55, +54,55,33,3,22,51,49,50,63,1,21,6,7,6,7,33,38,39,38,39,53,23,1,208,20,14,13,1,1,18,218,19, +19,218,18,1,1,13,14,20,1,160,246,17,21,21,17,218,1,18,18,27,254,128,27,18,18,1,218,1,128,1,13,14, +20,24,14,164,12,12,164,14,24,20,14,13,1,254,237,13,13,163,208,27,18,18,1,1,18,18,27,208,163,0,0,0, +0,1,0,16,255,224,1,224,1,176,0,66,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,55,54,55,54, +23,22,51,54,55,54,55,38,39,38,39,34,7,6,7,51,50,23,22,21,20,7,6,43,1,34,39,38,61,1,52,55, +54,51,50,23,22,29,1,54,55,54,51,22,23,22,23,22,23,1,224,1,30,30,50,50,63,74,60,11,2,1,8,8, +13,12,11,43,53,68,45,45,2,2,45,45,68,38,33,33,23,63,14,9,9,9,9,14,144,14,9,9,9,9,14,14, +9,9,32,46,45,53,63,50,50,30,30,1,192,62,51,50,30,30,1,1,44,8,13,13,11,10,2,2,8,32,2,45, +45,68,68,45,45,2,17,17,30,9,9,14,14,9,9,9,9,14,144,14,9,9,9,9,14,70,40,23,23,1,30,30, +50,51,62,0,0,2,0,0,255,192,2,0,1,192,0,44,0,67,0,0,37,52,47,1,38,35,34,15,1,39,55,54, +53,52,47,1,38,35,34,15,1,6,21,20,31,1,22,51,50,63,1,23,7,6,21,20,31,1,22,51,50,63,1,54, +53,5,7,38,35,34,15,1,6,21,20,31,1,22,51,50,63,1,54,53,52,39,55,39,2,0,7,23,7,9,9,7, +6,114,5,7,7,22,8,9,10,7,125,7,7,23,7,9,10,6,6,113,6,7,7,23,7,10,9,8,124,9,254,228, +59,10,12,13,10,115,9,9,46,9,13,13,10,115,9,9,58,45,232,9,8,22,7,7,5,113,5,8,8,10,7,22, +9,7,125,7,10,9,7,23,7,7,6,114,5,8,8,9,7,23,7,7,125,5,10,22,59,9,9,115,10,13,12,10, +46,9,9,115,10,13,12,10,59,46,0,0,0,1,0,0,255,192,1,127,1,192,0,22,0,0,55,51,22,23,22,7, +5,6,39,38,63,1,35,38,39,38,55,37,54,23,22,15,1,241,111,22,7,8,16,255,0,19,21,19,9,77,113,20, +9,7,16,1,0,19,21,19,9,76,224,1,20,20,15,224,15,13,16,23,179,1,20,20,15,224,15,13,16,23,179,0, +0,1,0,0,255,224,2,64,1,160,0,109,0,0,19,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,21, +51,22,23,22,23,21,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,53,38,39,35,21, +51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,53,35,6,7,21,51,22,23,22,23,21, +6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,53,54,55,54,55,51,53,35,38,39,38,39,53,208,1,13,14, +20,64,20,14,13,1,1,13,14,20,8,152,24,16,15,1,8,20,14,13,1,1,13,14,20,64,20,14,13,1,1,13, +14,20,8,1,7,152,8,20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,8,152,7,1,8,20,14,13, +1,1,13,14,20,64,20,14,13,1,1,13,14,20,8,1,15,16,24,152,8,20,14,13,1,1,112,20,14,13,1,1, +13,14,20,64,20,14,13,1,40,1,15,16,24,32,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1, +32,7,1,40,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,40,1,7,32,1,13,14,20,64,20, +14,13,1,1,13,14,20,64,20,14,13,1,32,24,16,15,1,40,1,13,14,20,64,0,0,2,0,0,255,192,2,64, +1,192,0,26,0,78,0,0,55,21,6,7,38,39,38,39,38,7,6,7,6,23,22,23,22,51,54,55,54,55,53,38, +39,6,7,37,38,39,49,38,39,53,52,39,38,35,34,7,6,29,1,6,7,6,7,6,23,22,55,54,23,22,23,22, +55,54,55,54,55,22,23,22,23,22,23,22,49,22,55,54,55,54,23,22,55,54,39,255,1,15,12,3,5,11,12,13, +13,5,6,5,9,21,20,25,35,22,23,1,14,18,18,15,1,65,24,71,71,90,9,9,14,14,9,10,90,70,71,24, +1,6,6,8,39,41,40,39,10,9,15,21,21,33,27,19,19,11,11,3,1,9,11,38,41,40,39,9,6,6,1,146, +130,15,1,1,10,12,6,5,4,5,11,12,13,24,14,15,1,23,22,35,130,13,1,2,13,21,103,59,59,10,18,14, +9,9,9,9,14,18,10,59,59,103,8,5,5,7,42,7,6,66,14,14,28,22,22,1,1,15,15,17,16,7,2,14, +14,66,6,7,42,7,5,5,8,0,0,0,0,4,0,0,255,192,2,0,1,192,0,27,0,36,0,40,0,63,0,0, +1,53,38,39,38,39,35,38,39,6,7,35,6,7,6,7,17,22,23,22,23,51,17,54,55,54,55,51,39,38,39,54, +55,22,23,6,7,5,21,51,39,7,53,35,6,7,6,7,17,22,23,22,23,51,54,55,54,55,53,35,34,39,38,53, +1,64,1,13,14,20,57,18,37,37,18,57,20,14,13,1,1,13,14,20,144,1,22,23,34,48,160,22,2,2,22,22, +2,2,22,1,0,96,96,32,112,20,14,13,1,1,13,14,20,192,20,14,13,1,96,14,9,9,1,96,16,20,14,13, +1,30,2,2,30,1,13,14,20,254,192,20,14,13,1,1,16,34,23,22,1,8,2,22,22,2,2,22,22,2,40,96, +96,96,96,1,13,14,20,254,224,20,14,13,1,1,13,14,20,208,9,9,14,0,0,0,0,3,0,16,255,192,1,112, +1,192,0,14,0,45,0,63,0,0,23,20,31,1,22,23,51,54,63,1,54,55,53,35,21,19,6,7,49,6,7,22, +23,22,23,22,23,20,49,48,49,51,48,49,48,53,54,55,54,55,54,55,38,39,38,39,23,6,7,49,6,7,6,7, +38,39,54,55,54,55,22,23,6,7,112,5,18,10,16,62,16,10,18,4,1,160,79,77,49,48,1,1,43,13,15,16, +8,160,8,16,15,13,43,1,2,50,50,75,1,34,23,22,1,1,15,15,1,1,32,31,48,15,1,1,15,6,10,8, +26,13,1,1,13,26,8,10,39,39,1,198,3,50,51,71,68,48,15,25,26,25,1,1,25,26,25,15,47,69,74,50, +49,2,96,1,22,23,33,16,1,1,15,47,32,31,1,1,15,14,1,0,0,2,0,0,255,192,2,0,1,192,0,34, +0,69,0,0,19,33,7,6,21,20,23,22,51,50,63,1,54,53,52,47,1,38,35,34,7,6,21,20,31,1,33,34, +7,6,21,20,23,22,51,5,33,55,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47, +1,33,50,55,54,53,52,39,38,35,32,1,115,58,9,9,10,13,13,10,112,9,9,112,10,13,13,10,9,9,58,254, +141,14,9,9,9,9,14,1,192,254,141,58,9,9,10,13,13,10,112,9,9,112,10,13,13,10,9,9,58,1,115,14, +9,9,9,9,14,1,16,57,10,13,13,10,9,9,112,10,13,13,10,112,9,9,10,13,13,10,57,9,9,14,14,9, +9,160,57,10,13,13,10,9,9,112,10,13,13,10,112,9,9,10,13,13,10,57,9,9,14,14,9,9,0,2,0,0, +255,224,2,128,1,160,0,36,0,57,0,0,23,38,39,49,38,39,54,55,54,55,52,53,54,55,54,55,22,23,22,23, +54,51,22,23,22,23,20,7,22,23,22,23,6,7,6,7,33,55,22,63,1,54,39,38,15,1,53,38,39,6,7,21, +39,38,7,6,31,1,144,61,41,40,2,1,26,26,43,2,45,45,68,45,36,36,22,23,30,41,27,27,1,6,44,29, +28,1,1,36,37,54,254,144,159,17,16,80,15,15,16,17,39,2,22,22,2,40,16,17,14,14,80,32,2,40,41,61, +48,36,36,16,4,4,68,45,45,2,1,21,22,36,16,1,27,27,41,18,17,9,35,34,47,54,37,36,1,88,15,15, +80,16,17,14,14,39,134,22,2,2,22,134,39,14,14,17,16,80,0,0,0,2,0,0,255,224,2,128,1,160,0,36, +0,57,0,0,23,38,39,49,38,39,54,55,54,55,52,53,54,55,54,55,22,23,22,23,54,51,22,23,22,23,20,7, +22,23,22,23,6,7,6,7,33,55,6,23,22,63,1,21,22,23,54,55,53,23,22,55,54,47,1,38,15,1,144,61, +41,40,2,1,26,26,43,2,45,45,68,45,36,36,22,23,30,41,27,27,1,6,44,29,28,1,1,36,37,54,254,144, +79,14,14,17,16,40,2,22,22,2,39,17,16,15,15,80,16,17,80,32,2,40,41,61,48,36,36,16,4,4,68,45, +45,2,1,21,22,36,16,1,27,27,41,18,17,9,35,34,47,54,37,36,1,217,17,16,15,15,38,134,22,2,2,22, +134,38,15,15,16,17,80,14,14,80,0,0,0,3,0,0,255,192,1,192,1,192,0,17,0,95,0,104,0,0,19,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,6,7,49,6,21,22,23,22,23,54,55,54,55,52,39, +38,39,53,54,59,1,50,23,21,6,7,6,29,1,22,23,51,54,55,38,39,53,52,55,54,51,50,23,22,29,1,6, +7,22,23,51,54,55,53,52,39,38,39,53,22,23,22,23,20,7,6,35,33,34,39,38,53,54,55,54,55,21,7,54, +55,22,23,6,7,38,39,96,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,32,18,11,11,1,15,16,24, +24,16,15,1,11,11,18,9,9,92,8,10,21,13,14,1,15,16,15,1,1,15,9,9,14,14,9,9,15,1,1,15, +16,15,1,14,13,21,56,35,36,1,9,8,13,254,124,13,8,9,1,35,35,57,8,2,22,22,2,2,22,22,2,1, +64,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,242,6,14,15,19,24,16,15,1,1,15,16,24,19,15, +14,6,65,1,1,57,6,16,17,23,40,15,1,1,15,15,1,24,14,9,9,9,9,14,24,1,15,15,1,1,15,40, +23,17,16,6,51,18,46,45,62,13,8,9,9,8,13,62,45,46,18,59,54,22,2,2,22,22,2,2,22,0,0,0, +0,2,0,32,255,192,2,48,1,192,0,73,0,82,0,0,1,6,7,49,6,7,20,23,22,23,21,6,7,6,7,38, +39,38,39,54,55,54,55,53,38,47,1,38,15,1,6,31,1,21,6,7,6,7,38,39,38,39,53,55,54,47,1,38, +15,1,6,7,21,22,23,22,23,22,23,22,23,54,55,54,55,53,54,55,54,53,38,39,38,39,21,38,39,54,55,22, +23,6,7,1,224,34,23,22,1,13,14,21,1,32,31,48,46,31,32,3,55,36,36,1,1,18,63,22,6,4,2,21, +31,1,27,27,40,41,28,27,1,31,21,3,3,6,22,63,18,1,1,36,35,56,4,49,50,73,75,49,50,2,22,13, +13,1,22,23,34,22,2,2,22,22,2,2,22,1,80,1,22,23,34,25,19,20,9,79,44,29,30,1,1,28,28,42, +13,42,43,60,154,19,5,13,2,21,16,22,6,6,122,40,28,27,2,1,27,27,41,123,6,6,22,16,21,3,12,5, +19,155,59,43,43,12,69,46,46,2,2,47,48,71,79,9,20,19,25,34,23,22,1,104,2,22,22,2,2,22,22,2, +0,4,0,0,255,224,2,0,1,192,0,13,0,22,0,35,0,48,0,0,19,54,55,49,54,55,51,22,23,22,23,17, +33,17,23,51,53,38,39,35,6,7,21,35,51,17,35,38,39,38,39,17,54,55,54,55,1,35,17,51,22,23,22,23, +17,6,7,6,7,128,1,15,16,24,144,24,16,15,1,255,0,48,160,1,7,144,7,1,112,32,32,27,18,18,1,1, +18,18,27,1,128,32,32,27,18,18,1,1,18,18,27,1,136,24,16,15,1,1,15,16,24,254,88,1,168,40,40,7, +1,1,7,40,254,128,1,18,18,27,1,0,27,18,18,1,254,128,1,128,1,18,18,27,255,0,27,18,18,1,0,0, +0,2,0,0,255,192,1,192,1,192,0,36,0,46,0,0,1,21,22,23,22,23,21,22,31,1,22,7,6,7,33,38, +39,38,63,1,54,55,53,54,55,54,55,53,52,55,54,51,50,23,22,21,49,3,34,39,38,53,51,20,7,6,35,1, +0,56,35,36,1,1,48,7,13,8,9,20,254,128,20,9,8,13,8,47,1,1,35,36,56,9,9,14,14,9,9,32, +26,19,19,128,19,19,26,1,160,19,12,43,43,59,19,73,54,9,15,19,18,1,1,18,19,15,9,54,73,19,59,43, +43,12,19,14,9,9,9,9,14,254,32,19,19,26,26,19,19,0,0,0,0,3,0,0,255,224,2,128,1,160,0,22, +0,34,0,49,0,0,1,33,6,7,21,22,23,22,23,51,54,55,54,55,51,54,55,54,55,38,39,38,39,21,35,53, +51,22,23,22,23,6,7,6,7,23,33,6,7,22,23,22,23,33,54,55,54,55,38,39,2,0,254,120,22,2,1,27, +27,41,192,41,27,27,1,32,54,36,37,1,1,37,36,54,32,32,27,18,18,1,1,18,18,27,48,253,224,15,1,1, +13,14,20,1,224,20,14,13,1,1,15,1,160,2,22,232,41,27,27,1,1,27,27,41,1,37,36,54,54,36,37,1, +192,128,1,18,18,27,27,18,18,1,192,1,15,20,14,13,1,1,13,14,20,15,1,0,0,4,0,0,255,192,2,128, +1,192,0,24,0,53,0,80,0,108,0,0,19,54,55,49,54,55,51,22,23,22,23,17,35,53,38,39,38,39,6,7, +6,7,21,35,17,23,6,7,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38, +39,35,7,17,35,38,39,38,39,53,51,54,55,38,39,35,53,51,54,55,38,39,35,53,54,55,54,55,51,33,22,23, +49,22,23,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,6,7,6,7,35,17,51,192,1,13,14,20,160,20, +14,13,1,80,1,13,14,20,20,14,13,1,80,120,15,1,24,15,1,1,15,24,1,15,16,15,1,24,15,1,1,15, +24,1,15,16,152,112,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,1,13,14,20,112,1,176,20,14,13, +1,80,15,1,1,15,80,80,15,1,1,15,80,1,13,14,20,112,112,1,144,20,14,13,1,1,13,14,20,254,48,80, +20,14,13,1,1,13,14,20,80,1,208,16,1,15,24,1,15,16,15,1,24,15,1,1,15,24,1,15,16,15,1,24, +15,1,32,254,96,1,13,14,20,144,1,15,15,1,64,1,15,15,1,48,20,14,13,1,1,13,14,20,48,1,15,15, +1,64,1,15,15,1,144,20,14,13,1,1,160,0,0,0,0,5,0,0,255,192,2,128,1,192,0,50,0,56,0,74, +0,92,0,121,0,0,1,22,23,49,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7,6,43,1,6,7,6, +7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,54,55,54,55,33,23,21,51,53,39,35,5, +6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22, +23,22,23,1,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35,6,7,21,35,6,7,21, +1,112,20,14,13,1,51,25,20,77,19,14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41, +27,27,1,16,20,14,13,1,1,13,14,20,1,64,48,128,77,51,255,0,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,144,1,15,48,1,15,32,15,1, +48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,192,1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9, +41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,13,14,20,1,64,20,14,13,1,160,96,19,77,208,1, +13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +1,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15,32,0,5,0,0,255,224,2,0, +1,192,0,12,0,25,0,43,0,48,0,77,0,0,19,17,22,23,22,23,51,17,35,6,7,6,7,37,35,17,51,54, +55,54,55,17,38,39,38,47,1,38,39,49,38,39,35,6,7,6,7,21,35,17,33,17,35,53,35,51,21,35,53,19, +6,7,35,21,6,7,35,38,39,53,35,38,39,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,0,1,13,14, +20,16,16,20,14,13,1,1,208,16,16,20,14,13,1,1,13,14,20,80,1,13,14,20,160,20,14,13,1,32,1,64, +32,208,160,160,176,1,7,56,1,7,48,7,1,56,7,1,1,7,56,1,7,48,7,1,56,7,1,1,48,254,224,20, +14,13,1,1,128,1,13,14,20,48,254,128,1,13,14,20,1,32,20,14,13,1,48,20,14,13,1,1,13,14,20,48, +254,128,1,128,48,48,48,254,248,7,1,56,7,1,1,7,56,1,7,48,7,1,56,7,1,1,7,56,1,7,48,0, +0,2,0,0,255,192,2,128,1,192,0,67,0,78,0,0,19,54,55,51,22,23,6,7,35,23,51,50,31,1,22,23, +6,15,1,6,43,1,7,51,22,23,6,7,35,38,39,54,55,51,53,35,7,6,43,1,34,39,38,61,1,34,39,38, +53,52,55,54,51,53,52,55,54,59,1,50,31,1,51,53,35,38,39,49,7,6,7,22,23,51,54,55,38,39,35,160, +2,22,112,22,2,2,22,16,104,116,12,11,102,14,1,1,14,102,11,12,116,104,16,22,2,2,22,112,22,2,2,22, +8,32,55,9,13,19,14,9,9,14,9,9,9,9,14,9,9,14,19,13,9,55,32,8,22,2,80,15,1,1,15,64, +15,1,1,15,64,1,168,22,2,2,22,22,2,144,4,38,7,15,15,7,38,4,144,2,22,22,2,2,22,22,2,144, +55,9,9,9,14,64,9,9,14,14,9,9,64,14,9,9,9,55,144,2,22,216,1,15,15,1,1,15,15,1,0,0, +0,5,0,32,255,224,2,0,1,160,0,32,0,43,0,54,0,65,0,74,0,0,1,35,53,52,39,38,35,33,34,7, +6,21,17,22,23,22,23,51,54,55,54,55,53,55,54,55,54,61,1,38,39,38,39,1,6,7,38,39,53,54,55,22, +23,21,51,6,7,38,39,53,54,55,22,23,21,51,6,7,38,39,53,54,55,22,23,21,55,20,15,1,53,51,22,23, +21,1,176,48,9,9,14,254,224,14,9,9,1,18,18,27,224,27,18,18,1,81,22,12,13,1,22,23,34,254,240,1, +15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,160,9,55,48,15,1,1, +96,32,14,9,9,9,9,14,254,160,27,18,18,1,1,18,18,27,32,36,10,20,19,24,99,34,23,22,1,254,240,15, +1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,93,10,5, +24,154,1,15,99,0,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,45,0,0,1,33,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,38,39,53,35,21,6,7,38,39,53,54,55,22,23,21,51, +53,54,55,22,23,21,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,48,2,22,22, +2,128,2,22,22,2,2,22,22,2,128,2,22,22,2,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,254,184,22,2,2,22,80,80,22,2,2,22,208,22,2,2,22,80,80,22,2,2,22,208,0,0,0, +0,2,0,0,255,224,1,192,1,160,0,21,0,46,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39, +17,54,55,54,55,33,3,54,55,53,51,54,55,38,39,35,53,38,39,6,7,21,35,6,7,22,23,51,21,22,23,1, +128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,160,22,2,64,22,2,2,22,64,2,22, +22,2,64,22,2,2,22,64,2,22,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1, +254,176,2,22,64,2,22,22,2,64,22,2,2,22,64,2,22,22,2,64,22,2,0,0,0,2,0,0,0,0,1,160, +1,128,0,24,0,49,0,0,63,1,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47, +1,51,55,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47,1,77,138,9,9,10,13, +13,10,160,9,9,160,10,13,13,10,9,9,138,192,138,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,9,138, +192,137,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,9,160,10,13,13, +10,160,9,9,10,13,13,10,137,0,0,0,0,2,0,32,0,0,1,192,1,128,0,24,0,49,0,0,55,39,38,35, +34,7,6,21,20,31,1,7,6,21,20,23,22,51,50,63,1,54,53,52,39,51,39,38,35,34,7,6,21,20,31,1, +7,6,21,20,23,22,51,50,63,1,54,53,52,39,247,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,9, +9,192,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,9,9,215,160,9,9,10,13,13,10,137,137,10,13, +13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,9,160,10,13,13,10,0,0,0, +0,2,0,0,0,0,1,128,1,160,0,24,0,50,0,0,63,1,23,22,51,50,55,54,53,52,47,1,38,35,34,15, +1,6,21,20,23,22,51,50,63,1,38,35,49,34,15,1,6,21,20,23,22,51,50,63,1,23,22,51,50,55,54,53, +52,47,1,55,137,137,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,160,10,13,13,10,160,9,9, +10,13,13,10,137,137,10,13,13,10,9,9,160,201,138,138,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,9, +14,9,9,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,0,0,2,0,0,255,224,1,128,1,128,0,24, +0,49,0,0,55,22,51,50,63,1,54,53,52,39,38,35,34,15,1,39,38,35,34,7,6,21,20,31,1,55,7,39, +38,35,34,7,6,21,20,31,1,22,51,50,63,1,54,53,52,39,38,35,34,7,169,10,13,13,10,160,9,9,10,13, +13,10,137,137,10,13,13,10,9,9,160,160,137,137,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10, +169,9,9,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,14,138,138,9,9,10,13,13,10,160,9,9,160, +10,13,13,10,9,9,0,0,0,1,0,0,0,0,0,224,1,128,0,24,0,0,55,34,47,1,38,53,52,63,1,54, +51,50,23,22,21,20,15,1,23,22,21,20,7,6,35,192,13,10,160,9,9,160,10,13,13,10,9,9,138,138,9,9, +10,13,0,9,160,10,13,13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,0,0,1,0,32,0,0,1,0, +1,128,0,24,0,0,55,34,39,38,53,52,63,1,39,38,53,52,55,54,51,50,31,1,22,21,20,15,1,6,35,64, +13,10,9,9,138,138,9,9,10,13,13,10,160,9,9,160,10,13,0,9,10,13,13,10,137,137,10,13,13,10,9,9, +160,10,13,13,10,160,9,0,0,1,0,0,0,96,1,128,1,64,0,24,0,0,37,34,47,1,7,6,35,34,39,38, +53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,1,96,13,10,137,137,10,13,13,10,9,9,160,10,13,13,10, +160,9,9,10,13,96,9,138,138,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,0,1,0,0,0,64,1,128, +1,32,0,24,0,0,55,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20,15,1,6,35,192, +13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,9,160,10,13,64,9,160,10,13,13,10,9,9,138,138,9, +9,10,13,13,10,160,9,0,0,2,0,0,255,225,2,128,1,160,0,16,0,33,0,0,19,33,17,51,17,38,39,38, +39,33,6,7,6,7,17,51,17,1,33,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,128,1,128,64,1,13, +14,20,254,96,20,14,13,1,64,1,240,253,160,15,1,1,18,18,27,2,0,27,18,18,1,1,15,1,96,255,0,1, +16,20,14,13,1,1,13,14,20,254,240,1,0,254,225,2,14,16,27,18,18,1,1,18,18,27,16,14,2,0,0,0, +0,2,0,0,255,192,1,192,1,192,0,20,0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1, +18,18,27,1,64,27,18,18,1,1,18,18,27,160,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,18,18,27, +254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,254,48,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,2,0,16,255,192,1,112,1,192,0,20,0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,64,255,0,20,14,13,1,1, +13,14,20,1,0,20,14,13,1,1,13,14,20,128,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,13,14,20, +254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,254,48,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,2,0,0,0,32,1,192,1,96,0,32,0,65,0,0,55,34,7,53,54,55,54,55,50,55,54,53,52,39,38,35, +6,7,6,7,21,22,23,22,23,54,55,54,55,38,39,38,39,33,34,7,53,54,55,54,55,50,55,54,53,52,39,38, +35,6,7,6,7,21,22,23,22,23,54,55,54,55,38,39,38,39,96,17,15,1,18,18,27,14,9,9,9,9,14,54, +36,37,1,1,27,27,41,41,27,27,1,1,27,27,41,1,0,17,15,1,18,18,27,14,9,9,9,9,14,54,36,37, +1,1,27,27,41,41,27,27,1,1,27,27,41,224,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,41, +27,27,1,1,27,27,41,41,27,27,1,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,41,27,27,1, +1,27,27,41,41,27,27,1,0,2,0,0,0,32,1,192,1,96,0,33,0,67,0,0,19,6,7,49,6,7,22,23, +22,23,50,55,21,6,7,6,7,34,7,6,21,20,23,22,51,54,55,54,55,53,38,39,38,39,5,38,39,49,38,39, +6,7,6,7,22,23,22,23,50,55,21,6,7,6,7,34,7,6,21,20,23,22,51,54,55,54,55,53,96,41,27,27, +1,1,27,27,41,17,15,1,18,18,27,14,9,9,9,9,14,54,36,37,1,1,27,27,41,1,96,1,27,27,41,41, +27,27,1,1,27,27,41,17,15,1,18,18,27,14,9,9,9,9,14,54,36,37,1,1,96,1,27,27,41,41,27,27, +1,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,41,27,27,1,96,41,27,27,1,1,27,27,41,41, +27,27,1,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,0,7,0,0,255,192,2,0,1,192,0,17, +0,35,0,53,0,71,0,90,0,108,0,127,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +17,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,37,54,55,49,54,55,22,23,22,23,6,7,6,7, +38,39,38,39,33,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,38,53,49,52,55,54,51,50,23, +22,21,20,7,6,35,34,39,49,19,6,35,49,34,39,38,53,52,55,54,51,50,23,22,21,20,7,23,54,51,49,50, +23,22,21,20,7,6,35,34,39,38,53,52,55,49,1,48,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,2,0,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,75,14,14,15,19,19,15,14,14,15,19, +19,15,68,15,19,19,15,14,14,15,19,19,15,14,14,226,15,19,19,15,14,14,15,19,19,15,14,14,1,144,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +208,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14, +20,181,15,19,19,15,14,14,15,19,19,15,14,14,1,38,14,14,15,19,19,15,14,14,15,19,19,15,226,14,14,15, +19,19,15,14,14,15,19,19,15,0,0,0,0,1,0,0,255,192,2,0,1,192,0,26,0,0,37,6,7,49,6,7, +49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,2,0,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,0,4,0,0,255,192,2,0,1,192,0,26,0,52,0,70,0,88,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,38,7,6,23,22,23,22,23, +54,55,54,55,54,39,38,7,6,7,6,7,38,39,38,39,49,55,34,7,49,6,7,22,23,22,51,50,55,54,53,52, +39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,0,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,72,57,58,34,34,1,164,11,11,11,9,17,28,29,41,42,29,29,17,9,10,12,11,14, +23,23,33,32,23,22,14,12,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160,14,9,9,9,9,14,13,9,9, +1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,70,11, +9,11,12,20,16,16,1,1,16,16,20,12,11,9,11,16,13,12,1,1,12,13,16,150,9,9,14,14,9,9,9,9, +14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,53,0,71,0,89,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,23,54,55,49,54,55,22,23,22,23,22,55,54,39,38,39,38,39,6,7,6,7,6,23,22,55,49,55,34, +7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23, +22,51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,159,10,26,26,35, +35,26,26,10,5,15,13,3,13,34,34,46,46,34,34,13,3,13,15,5,17,13,9,9,1,1,9,9,13,14,9,9, +9,9,14,160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,133,30,19,19,1,1,19,19,30,13,3,5,15,40,26,25,1,1,25,26,40, +15,5,3,13,213,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,73,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22, +51,55,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,7,6,7,22,23,51,54,55,38,39,35,0,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,176,14,9,9,9,9,14,13,9, +9,1,1,9,9,13,160,13,9,9,1,1,9,9,13,14,9,9,9,9,14,176,15,1,1,15,192,15,1,1,15,192, +192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,16,9,9,14,14,9,9, +9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,160,1,15,15,1,1,15,15,1,0,4,0,0, +0,0,2,128,1,128,0,18,0,43,0,61,0,79,0,0,1,33,6,7,6,7,22,23,22,23,33,54,55,54,55,38, +39,38,39,7,35,21,6,7,38,39,53,39,38,39,54,55,51,53,54,55,22,23,21,51,22,23,6,7,23,34,39,49, +38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35, +1,192,255,0,82,54,54,2,2,54,54,82,1,0,82,54,54,2,2,54,54,82,201,32,2,22,22,2,31,22,3,2, +22,32,2,22,22,2,32,22,2,1,23,184,17,11,11,12,11,16,16,12,11,11,10,18,64,17,11,11,12,11,16,17, +11,11,11,10,18,1,128,2,54,54,82,82,54,54,2,2,54,54,82,82,54,54,2,216,32,22,2,2,22,32,1,2, +21,22,2,32,22,2,2,22,32,2,22,22,2,64,12,11,16,17,11,12,12,11,17,17,11,11,96,12,11,16,17,11, +12,12,11,17,17,11,11,0,0,14,0,0,0,0,2,64,1,128,0,20,0,33,0,46,0,59,0,72,0,85,0,98, +0,111,0,124,0,137,0,150,0,163,0,176,0,189,0,0,37,33,38,39,38,39,17,54,55,54,55,33,22,23,22,23, +17,6,7,6,7,1,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55,51, +53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7, +21,22,23,51,54,55,5,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55, +51,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6, +7,21,22,23,51,54,55,5,53,38,39,35,6,7,21,22,23,51,54,55,33,53,38,39,35,6,7,21,22,23,51,54, +55,51,53,38,39,35,6,7,21,22,23,51,54,55,2,0,254,64,27,18,18,1,1,18,18,27,1,192,27,18,18,1, +1,18,18,27,254,128,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11, +1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,254,128,1,11, +40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1, +11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,254,128,1,11,40,11,1,1,11,40,11,1, +1,32,1,11,232,11,1,1,11,232,11,1,96,1,11,40,11,1,1,11,40,11,1,0,1,18,18,27,1,0,27,18, +18,1,1,18,18,27,255,0,27,18,18,1,1,12,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1, +1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11, +96,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40, +11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,96,40,11,1,1,11,40,11,1,1,11,40,11, +1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,0,0,0,3,0,32,255,192,2,32,1,192,0,41, +0,108,0,119,0,0,1,34,7,6,39,38,39,38,39,38,7,49,52,39,38,35,34,7,6,21,17,22,23,51,54,55, +53,54,23,22,23,22,23,22,55,54,55,17,52,39,38,35,7,6,7,21,54,55,21,6,35,34,39,53,34,35,34,35, +38,39,21,38,39,53,6,39,34,35,6,7,21,6,7,53,55,54,55,54,55,53,6,7,53,55,54,55,21,54,51,50, +23,50,51,53,22,23,22,23,21,22,23,50,55,50,51,53,54,55,21,39,21,22,23,22,23,53,34,39,38,39,1,254, +10,9,65,39,41,33,35,49,49,84,9,9,14,14,9,9,1,15,32,15,1,76,52,52,44,44,52,45,63,19,1,10, +10,14,30,47,33,38,42,34,30,8,8,2,1,5,5,38,29,35,45,4,4,2,1,31,38,31,33,25,14,13,6,6, +28,36,25,21,18,39,29,4,4,2,2,26,27,13,14,30,37,5,6,1,1,38,42,240,26,27,13,14,2,1,33,44, +1,192,4,30,2,2,13,14,3,2,34,14,9,9,9,9,14,254,48,15,1,1,15,112,34,2,2,14,14,2,1,24, +9,20,1,45,14,9,8,142,20,2,81,2,16,82,11,1,74,1,9,67,10,3,76,1,1,1,11,69,8,12,63,11, +6,4,3,2,82,8,14,63,11,8,6,66,10,1,69,3,10,4,4,66,12,1,1,68,2,16,64,8,80,3,10,4, +4,83,1,13,4,0,0,0,0,2,0,0,255,224,2,64,1,160,0,25,0,45,0,0,19,38,53,49,52,55,54,51, +50,31,1,22,21,20,15,1,6,35,34,39,38,53,52,63,1,39,1,50,23,49,22,21,20,7,6,35,33,34,39,38, +53,52,55,54,51,33,9,9,9,10,13,13,10,192,9,9,192,10,13,13,10,9,9,170,170,2,23,14,9,9,9,9, +14,254,224,14,9,9,9,9,14,1,32,1,105,10,13,13,10,9,9,192,10,13,13,10,192,9,9,10,13,13,10,169, +169,254,183,9,9,14,14,9,9,9,9,14,14,9,9,0,0,3,0,0,255,192,2,128,1,192,0,19,0,45,0,71, +0,0,1,3,6,7,6,39,38,39,38,55,19,54,55,54,23,22,23,22,7,49,31,1,22,21,20,15,1,6,35,34, +39,38,53,52,63,1,39,38,53,52,55,54,51,50,23,49,5,7,23,22,21,20,7,6,35,34,47,1,38,53,52,63, +1,54,51,50,23,22,21,20,7,49,1,159,128,4,11,12,13,13,6,6,3,128,4,11,12,13,13,6,6,3,104,112, +9,9,112,10,13,13,10,9,9,90,90,9,9,10,13,13,10,254,160,90,90,9,9,10,13,13,10,112,9,9,112,10, +13,13,10,9,9,1,151,254,64,13,6,6,3,4,11,12,13,1,192,13,6,6,3,4,11,12,13,80,112,10,13,13, +10,112,9,9,10,13,13,10,89,89,10,13,13,10,9,9,46,89,89,10,13,13,10,9,9,112,10,13,13,10,112,9, +9,10,13,13,10,0,0,0,0,2,0,0,255,225,2,64,1,160,0,32,0,51,0,0,55,23,22,55,54,55,53,22, +23,22,7,6,23,22,55,54,55,54,55,38,39,38,39,53,38,39,38,15,1,6,21,20,23,35,23,22,55,54,55,53, +39,55,53,38,39,38,15,1,6,21,20,23,136,176,13,13,13,1,82,29,30,28,3,10,9,12,34,24,24,1,2,62, +61,99,1,13,13,13,176,8,8,128,176,13,13,13,1,158,158,1,13,13,13,176,8,8,222,151,10,6,6,16,84,8, +42,41,91,13,6,6,6,25,41,42,46,97,41,40,6,82,16,6,6,10,152,8,10,11,7,151,10,6,6,16,16,135, +136,16,16,6,6,10,151,8,11,11,7,0,0,1,0,16,255,241,1,176,1,144,0,16,0,0,37,6,39,38,39,53, +35,38,39,38,55,37,54,23,22,7,3,1,30,11,25,25,2,176,24,6,4,23,1,96,19,16,14,7,144,4,23,4, +6,25,176,2,24,25,11,144,7,14,16,19,254,160,0,0,0,1,0,0,255,192,2,0,1,192,0,64,0,0,37,51, +50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,53,17,7,51,21,35,38,39,38,39,17,35,34,39,38, +53,52,55,54,59,1,53,52,55,54,51,50,23,22,21,17,55,35,53,51,55,54,51,50,23,22,21,20,15,1,17,1, +192,32,14,9,9,9,9,14,32,9,9,14,14,9,9,211,179,224,27,18,18,1,32,14,9,9,9,9,14,32,9,9, +14,14,9,9,211,179,243,54,10,13,13,10,9,9,55,64,9,9,14,14,9,9,32,14,9,9,9,9,14,1,51,211, +64,1,18,18,27,1,0,9,9,14,14,9,9,32,14,9,9,9,9,14,254,205,211,64,55,9,9,10,13,13,10,54, +254,237,0,0,0,4,0,0,255,192,1,192,1,192,0,71,0,80,0,89,0,98,0,0,19,20,7,49,6,7,21,54, +59,1,54,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,6,7,6,7,35,6,7,6, +7,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,49, +7,54,55,38,39,6,7,22,23,37,6,7,22,23,54,55,38,39,1,54,55,38,39,6,7,22,23,160,13,13,22,29, +35,96,27,18,18,1,22,13,13,1,22,23,34,34,23,22,1,13,13,22,1,36,37,54,96,27,18,18,1,22,13,13, +1,22,23,34,34,23,22,1,13,13,22,22,13,13,1,22,23,34,34,23,22,1,80,22,2,2,22,22,2,2,22,1, +32,22,2,2,22,22,2,2,22,254,224,22,2,2,22,22,2,2,22,1,112,25,19,19,10,88,17,1,18,18,27,7, +10,19,19,25,34,23,22,1,1,22,23,34,25,19,19,10,7,54,37,36,1,1,18,18,27,7,9,20,19,25,34,23, +22,1,1,22,23,34,25,19,20,9,206,10,19,19,25,34,23,22,1,1,22,23,34,24,2,22,22,2,2,22,22,2, +48,2,22,22,2,2,22,22,2,254,112,2,22,22,2,2,22,22,2,0,0,4,0,0,255,192,2,128,1,192,0,49, +0,58,0,67,0,97,0,0,19,54,23,49,22,23,22,23,22,7,23,55,54,53,52,39,38,39,38,15,1,6,39,38, +39,38,55,54,63,1,54,23,22,23,22,21,20,15,1,23,22,7,6,39,1,38,55,54,31,3,54,39,38,39,38,7, +49,23,38,55,23,6,39,38,39,49,39,23,7,6,21,20,23,22,23,22,63,1,54,23,22,23,22,7,6,15,1,6, +39,38,39,38,53,52,63,1,186,44,53,53,40,33,8,8,18,32,96,23,23,22,29,28,25,2,11,13,12,8,8,2, +2,11,2,44,51,52,39,42,42,91,142,16,12,15,19,253,176,16,12,15,19,147,52,115,9,30,20,25,25,24,25,45, +3,186,38,38,38,30,146,50,61,24,24,21,29,28,25,2,11,13,12,9,7,2,2,11,1,46,51,51,39,42,42,57, +1,72,33,3,3,38,34,44,43,42,24,95,25,33,32,24,22,2,3,18,1,8,3,2,10,12,12,13,8,1,31,4, +5,37,45,57,58,45,90,111,15,19,16,12,1,208,15,19,16,12,115,41,91,42,33,19,4,3,10,219,48,62,146,11, +9,9,29,192,40,62,24,32,33,25,20,3,2,17,2,7,2,3,10,12,12,13,8,1,31,4,5,37,45,57,58,45, +56,0,0,0,0,2,0,0,255,193,0,192,1,160,0,35,0,53,0,0,55,35,53,52,39,38,43,1,34,7,6,21, +20,23,22,59,1,21,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,3,54,55,49,54,55,38,39, +38,39,6,7,6,7,22,23,22,23,160,32,9,9,14,64,14,9,9,9,9,14,32,32,14,9,9,9,9,14,128,14, +9,9,9,9,14,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,224,14,9,9,9,9,14,14,8, +9,192,9,9,14,14,9,9,9,9,14,13,9,9,1,64,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +0,2,0,0,0,0,2,0,1,192,0,30,0,88,0,0,1,53,38,39,38,15,1,6,7,6,23,22,51,21,34,7, +6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,39,50,55,49,54,53,52,39,38,43,1,34,15,1,39,38,43, +1,34,7,6,21,20,23,22,59,1,23,7,35,34,7,6,21,20,23,22,59,1,50,63,1,23,22,59,1,50,55,54, +53,52,39,38,43,1,39,55,51,1,224,1,14,15,16,32,12,4,4,5,9,20,14,9,9,9,9,14,64,14,9,9, +9,9,14,160,14,9,9,9,9,14,32,16,10,86,86,10,16,32,14,9,9,9,9,14,15,90,90,15,14,9,9,9, +9,14,32,16,10,86,86,10,16,32,14,9,9,9,9,14,15,90,90,15,1,32,128,18,9,9,7,16,7,12,12,12, +18,80,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,14,122,122,14,9,9,14,14,9,9,128, +128,9,9,14,14,8,9,14,121,122,14,9,9,13,13,9,10,128,127,0,0,2,0,0,255,192,2,0,1,128,0,30, +0,88,0,0,37,53,38,39,38,15,1,6,7,6,23,22,51,21,34,7,6,21,20,23,22,59,1,50,55,54,53,52, +39,38,35,3,50,55,49,54,53,52,39,38,43,1,34,15,1,39,38,43,1,34,7,6,21,20,23,22,59,1,23,7, +35,34,7,6,21,20,23,22,59,1,50,63,1,23,22,59,1,50,55,54,53,52,39,38,43,1,39,55,51,1,224,1, +14,15,16,32,12,4,4,5,10,19,14,9,9,9,9,14,64,14,9,9,9,9,14,160,14,9,9,9,9,14,32,16, +10,86,86,10,16,32,14,9,9,9,9,14,15,90,90,15,14,9,9,9,9,14,32,16,10,86,86,10,16,32,14,9, +9,9,9,14,15,90,90,15,0,128,18,9,9,7,16,7,12,12,12,18,80,9,9,14,14,9,9,9,9,14,14,9, +9,1,64,9,9,14,14,9,9,14,122,122,14,9,9,14,14,9,9,128,128,9,9,14,14,8,9,14,121,122,14,9, +9,13,13,9,10,128,127,0,0,2,0,7,255,224,2,0,1,153,0,29,0,35,0,0,37,50,23,49,22,21,20,7, +6,35,33,34,47,1,38,53,52,63,1,54,51,50,31,1,22,21,20,15,1,51,35,55,39,7,23,51,1,224,14,9, +9,9,9,14,254,183,27,19,80,18,18,234,19,26,26,19,138,18,18,131,124,215,68,138,124,80,114,32,9,9,14,14, +9,9,19,80,19,26,26,19,234,18,18,138,19,26,26,19,131,67,138,125,80,0,0,0,0,1,0,0,255,192,2,0, +1,191,0,121,0,0,37,6,7,49,6,7,34,39,38,39,38,39,6,7,21,20,7,6,43,1,38,39,54,55,54,55, +54,53,38,39,38,39,6,7,6,7,20,23,22,23,22,23,6,7,35,34,39,38,61,1,54,55,22,23,22,23,22,51, +54,55,54,55,38,39,38,39,34,7,6,7,6,7,38,39,53,52,55,54,59,1,54,55,38,39,38,39,38,53,54,55, +54,51,50,23,22,23,20,7,6,7,6,7,22,23,51,50,23,22,29,1,22,23,54,55,54,55,54,51,22,23,22,23, +2,0,1,13,14,20,13,7,7,6,7,16,22,2,9,9,14,72,22,2,2,12,7,5,6,1,18,18,27,27,18,18, +1,6,5,7,12,2,2,22,136,14,9,9,2,22,15,8,6,7,7,13,20,14,13,1,1,13,14,20,13,7,7,6, +7,16,22,2,9,9,14,136,22,2,2,12,7,5,6,1,18,18,27,27,18,18,1,6,5,7,12,2,2,22,72,14, +9,9,2,22,15,8,6,7,7,13,20,14,13,1,160,27,18,18,1,6,5,7,12,2,2,22,136,14,9,9,2,22, +16,8,5,7,7,13,20,14,13,1,1,13,14,20,13,7,7,6,7,16,22,2,9,9,14,136,22,2,2,12,7,5, +6,1,18,18,27,27,19,18,1,6,5,7,13,1,2,21,72,14,8,9,4,21,15,8,6,7,7,13,20,14,13,14, +13,20,13,7,7,6,7,16,22,2,9,9,13,72,22,2,2,12,7,5,6,1,18,19,27,0,0,0,0,2,0,16, +255,192,1,112,1,192,0,19,0,65,0,0,55,54,55,49,54,55,53,38,39,38,39,6,7,6,7,21,22,23,22,23, +55,6,7,21,6,7,6,39,38,39,38,39,53,38,39,6,7,21,22,23,22,23,21,35,34,7,6,21,22,23,51,54, +55,52,39,38,43,1,53,54,55,54,55,53,38,39,192,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,152, +22,2,2,38,39,57,51,34,34,1,2,22,22,2,1,42,42,67,40,14,9,9,2,14,160,14,2,9,9,14,40,66, +42,43,1,2,22,96,1,27,27,41,160,41,27,27,1,1,27,27,41,160,41,27,27,1,160,2,21,41,57,36,37,2, +5,38,39,51,36,21,2,2,21,32,69,51,51,11,35,10,9,15,13,1,1,13,15,9,10,34,10,48,48,68,41,21, +2,0,0,0,0,2,0,0,255,192,2,127,1,192,0,33,0,70,0,0,5,35,53,54,55,39,6,39,38,39,38,39, +53,39,21,22,23,22,23,21,35,34,7,6,21,22,23,51,54,55,54,39,38,35,23,39,54,55,53,38,39,6,7,21, +6,7,39,54,61,1,38,39,38,39,34,7,6,7,21,39,38,35,34,7,6,23,1,22,55,54,39,1,127,39,31,27, +44,22,24,51,34,35,1,48,1,42,42,66,40,13,9,9,2,14,159,14,1,1,8,9,14,248,159,23,1,2,21,22, +2,1,14,26,9,1,26,26,40,42,28,28,1,186,7,8,11,8,12,16,2,79,19,15,13,16,16,34,4,14,34,7, +1,5,38,39,51,4,37,38,69,51,51,11,34,9,9,13,16,1,2,13,14,10,9,5,125,39,49,40,22,2,2,22, +39,32,26,20,17,21,155,41,28,29,2,27,27,42,54,145,5,9,19,15,254,49,12,16,17,16,0,0,0,1,0,15, +255,195,1,240,1,192,0,29,0,0,1,50,31,1,22,23,22,21,22,7,6,7,6,7,6,39,38,39,38,39,38,53, +54,55,54,63,1,54,51,49,1,0,7,6,189,17,10,11,1,18,18,47,46,86,26,26,86,46,47,18,18,1,11,10, +17,189,6,7,1,192,3,80,7,15,15,19,52,69,68,66,66,43,12,12,43,66,66,68,69,52,19,15,15,7,80,3, +0,2,0,0,255,192,1,192,1,192,0,35,0,49,0,0,19,52,55,49,54,51,50,23,22,29,1,51,53,52,55,54, +51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,1,6,7,49,6,7,33,38,39,38,39,17, +33,17,96,9,9,14,14,9,9,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,1,96,1,13, +14,20,254,160,20,14,13,1,1,192,1,160,14,9,9,9,9,14,32,32,14,9,9,9,9,14,32,1,13,14,20,48, +48,20,14,13,1,32,254,80,20,14,13,1,1,13,14,20,1,16,254,240,0,3,0,0,255,192,1,254,1,192,0,13, +0,71,0,80,0,0,23,20,23,49,22,59,1,50,55,54,61,1,35,21,1,38,15,1,6,7,35,53,52,39,38,43, +1,34,7,6,29,1,6,7,6,7,6,23,22,51,54,55,54,55,54,55,21,6,7,6,29,1,51,53,52,39,38,39, +53,51,22,31,1,50,51,50,55,54,61,1,54,39,5,38,39,54,55,22,23,6,7,64,9,9,13,161,14,8,9,223, +1,183,8,11,175,19,1,65,9,9,13,33,14,9,9,44,34,34,15,5,20,4,4,16,7,10,21,21,29,29,17,18, +223,18,17,28,63,1,19,175,2,2,9,7,8,2,9,254,185,15,1,1,15,14,1,1,14,32,14,9,9,9,9,14, +32,32,1,218,7,1,32,5,19,24,14,9,9,9,9,14,27,8,29,29,43,22,9,1,1,15,29,20,19,8,31,14, +27,26,34,176,176,34,26,27,14,35,19,5,31,5,8,11,112,10,7,90,1,15,15,1,1,15,15,1,0,2,0,0, +255,192,1,255,1,191,0,48,0,66,0,0,55,39,38,55,54,55,35,34,39,38,63,1,54,55,51,54,55,54,49,54, +55,54,55,54,23,22,23,22,7,6,7,6,7,6,7,21,6,15,1,6,39,38,61,1,6,7,6,39,49,55,50,55, +49,54,53,52,39,38,39,6,7,6,21,20,23,22,51,157,31,13,4,4,9,106,14,7,6,6,53,21,41,82,3,3, +1,42,50,50,49,49,37,18,5,7,3,4,26,26,60,6,5,1,34,89,12,12,12,21,15,18,13,227,17,11,12,12, +11,17,17,11,12,12,11,17,63,32,13,18,14,20,12,12,12,89,34,2,4,5,1,60,26,26,4,3,7,5,18,37, +49,49,50,50,42,4,2,83,41,21,53,6,6,7,14,107,7,5,5,13,218,11,11,18,16,12,11,1,1,11,12,16, +18,11,11,0,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,1,6,7,49,6,7,49,6,7,22,23,22, +23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,22,21,49,20,7,6,35,34,47,1,38,53,52,63,1,54, +51,50,23,22,21,20,15,1,23,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,55,9,9,10,13,13,10,112,9,9,112,10,13,13,10,9,9,90,90,1,192,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,167,10,13,13,10,9,9,112,10,13,13,10,112,9,9, +10,13,13,10,89,89,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0,1,6,7,49,6,7,49,6, +7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,7,6,35,34,39,38,53,52,63,1,39,38, +53,52,55,54,51,50,31,1,22,21,20,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,103,112,10,13,13,10,9,9,90,90,9,9,10,13,13,10,112,9,9,1,192,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,233,112,9,9,10,13,13,10,89,89,10,13, +13,10,9,9,112,10,13,13,10,0,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,1,6,7,49, +6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,6,35,49,34,47,1,7,6, +35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,135,10,13,13,10,89,89,10,13,13,10,9,9,112,10,13,13,10,112,9,9, +1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,201,9,9,90,90, +9,9,10,13,13,10,112,9,9,112,10,13,13,10,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0, +1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,23,7,6,35,34, +47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20,7,1,0,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,135,112,10,13,13,10,112,9,9,10,13,13,10,89,89,10,13,13, +10,9,9,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,247,112,9, +9,112,10,13,13,10,9,9,90,90,9,9,10,13,13,10,0,2,0,0,255,192,2,63,1,192,0,88,0,106,0,0, +1,50,23,49,22,21,20,7,6,43,1,21,51,54,55,54,55,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1, +21,6,7,6,7,35,38,39,38,39,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53, +35,34,39,38,53,52,55,54,59,1,38,39,54,55,54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,1,96,14,9,9,9,9,14,32,48,41,27,27,1,8,16,17,14,14,56,17, +16,56,15,15,16,17,7,2,45,45,68,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27, +27,41,48,32,14,9,9,9,9,14,11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,64,14,9,9,9,9,14, +14,9,9,9,9,14,1,16,9,9,14,14,9,9,208,1,27,27,41,6,6,15,15,16,17,56,14,14,56,17,16,15, +15,6,6,68,45,45,2,2,45,45,68,6,6,15,15,16,17,56,14,14,56,17,16,15,15,6,6,41,27,27,1,208, +9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21,21,13,48,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,2,0,0,255,192,1,192,1,192,0,49,0,69,0,0,19,6,7,49,6,7,21,51,22,23,22,23, +21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51,53,54,55,54,55,22,23,22,23,22,7,6,7,6,39,38, +39,38,39,38,35,49,19,50,55,49,54,53,52,39,38,43,1,34,7,6,21,20,23,22,59,1,224,34,23,22,1,240, +27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,16,2,40,41,61,44,34,34,18,6,5,4,13,12, +12,12,6,10,19,19,24,32,14,9,9,9,9,14,64,14,9,9,9,9,14,64,1,128,1,22,23,34,48,1,18,18, +27,192,27,18,18,1,1,18,18,27,192,27,18,18,1,48,61,41,40,2,1,22,22,37,13,12,12,6,5,4,4,12, +21,12,13,254,192,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,5,0,0,255,192,2,0,1,192,0,17, +0,35,0,53,0,80,0,98,0,0,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,35,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23, +37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,6,7,49,6, +7,22,23,22,23,54,55,54,55,38,39,38,39,1,32,9,9,14,14,9,9,9,9,14,14,9,9,176,2,40,41,61, +61,41,40,2,2,40,41,61,61,41,40,2,144,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,1,0,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,255,0,82,54,54,2,2,54,54, +82,82,54,54,2,2,54,54,82,192,14,9,9,9,9,14,14,9,9,9,9,14,61,41,40,2,2,40,41,61,61,41, +40,2,2,40,41,61,80,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,80,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,192,2,54,54,82,82,54,54,2,2,54,54,82,82,54,54, +2,0,0,0,0,3,0,8,0,136,1,184,0,248,0,17,0,35,0,53,0,0,55,6,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,23,51,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,54,55,49,54,55, +22,23,22,23,6,7,6,7,38,39,38,39,120,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,160,1,15, +16,24,24,16,15,1,1,15,16,24,24,16,15,1,48,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,192, +24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24, +24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,0,3,0,8,255,232,0,120,1,152,0,17,0,35,0,53, +0,0,55,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,53,22,23,49,22,23,6,7,6,7,38,39, +38,39,54,55,54,55,53,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,64,24,16,15,1,1,15,16, +24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16, +24,24,16,15,1,1,15,16,24,88,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,160,1,15,16,24,24, +16,15,1,1,15,16,24,24,16,15,1,48,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,0,4,0,0, +255,224,1,192,1,160,0,20,0,37,0,59,0,83,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,6,35,34,39,38,53,52,55,54,51,50,23,22,21,20,7,23,38,7,49,48,35,38,39,38,39, +38,39,38,39,54,55,22,23,22,23,6,7,55,20,35,49,48,49,38,39,38,39,38,39,38,39,54,55,22,23,22,23, +22,23,20,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,233,10,13,13,10,9, +9,10,13,13,10,9,9,99,1,1,1,21,3,3,30,29,43,21,1,4,22,60,42,42,6,1,21,95,2,21,3,5, +56,57,82,22,1,3,22,66,55,55,33,34,3,22,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +27,18,18,1,254,169,9,9,10,13,13,10,9,9,10,13,13,10,9,1,1,2,20,43,29,30,4,4,22,21,1,5, +43,42,60,23,3,1,1,2,21,82,57,57,6,2,22,22,1,4,33,34,55,54,66,23,2,0,0,0,0,2,0,0, +255,192,2,0,1,192,0,26,0,43,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54, +55,22,23,22,23,22,23,37,21,20,23,22,63,1,54,53,52,47,1,38,7,6,21,49,2,0,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,176,12,12,13,144,11,11,144,13,12,12,192,72, +57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,88,176,14,7,6,6,88,8,13, +13,7,88,8,7,7,14,0,0,3,0,0,0,0,2,64,1,128,0,4,0,44,0,66,0,0,19,33,21,33,53,37, +22,23,49,22,23,21,6,7,6,7,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,38,39,38, +39,53,54,55,54,55,33,1,20,23,49,22,51,33,50,55,54,61,1,52,39,38,35,33,34,7,6,29,1,128,1,64, +254,192,1,128,27,18,18,1,20,14,13,1,1,13,14,20,1,18,18,27,254,64,27,18,18,1,20,14,13,1,1,13, +14,20,1,18,18,27,1,192,254,96,9,9,14,1,64,14,9,9,9,9,14,254,192,14,9,9,1,32,192,192,96,1, +18,18,27,80,1,13,14,20,20,14,13,1,80,27,18,18,1,1,18,18,27,80,1,13,14,20,20,14,13,1,80,27, +18,18,1,254,224,14,9,9,9,9,14,192,14,9,9,9,9,14,192,0,0,2,0,0,255,224,1,192,1,160,0,21, +0,32,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,6,7,22,23,51, +54,55,38,39,35,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,248,22,2,2,22, +176,22,2,2,22,176,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,200,2,22,22, +2,2,22,22,2,0,0,0,0,1,0,0,255,192,1,96,1,192,0,42,0,0,1,6,35,34,47,1,17,6,7,6, +7,35,34,39,38,53,52,55,54,59,1,54,55,17,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20, +7,1,87,10,14,13,10,72,1,22,23,34,112,14,9,9,9,9,14,112,15,1,73,10,13,13,10,9,9,127,10,13, +13,10,128,10,9,1,9,9,9,74,254,189,34,23,22,1,9,9,14,14,9,9,1,15,1,67,74,9,9,10,13,13, +10,128,9,9,128,10,13,13,10,0,0,0,0,1,0,0,255,192,1,96,1,192,0,42,0,0,37,7,6,35,34,47, +1,38,53,52,55,54,51,50,31,1,17,38,39,35,34,39,38,53,52,55,54,59,1,22,23,22,23,17,55,54,51,50, +23,22,21,20,7,1,87,128,10,14,13,10,127,9,9,10,13,13,10,73,1,15,112,14,9,9,9,9,14,112,34,23, +22,1,73,10,13,13,10,9,9,73,128,9,9,128,10,13,13,10,9,9,74,1,67,15,1,9,9,14,14,9,9,1, +22,23,34,254,189,74,9,9,10,13,13,10,0,2,0,0,255,224,1,192,1,160,0,21,0,47,0,0,1,22,23,49, +22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,54,53,49,52,39,38,35,34,15,1,39,38,35, +34,7,6,21,20,31,1,22,51,50,63,1,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,44,8,8,9,11,11,9,108,44,9,11,11,9,8,8,64,9,11,11,9,128,1,160,1,18,18,27,254,192,27, +18,18,1,1,18,18,27,1,64,27,18,18,1,180,9,11,11,9,8,8,108,44,8,8,9,11,11,9,64,8,8,128, +0,3,0,0,255,224,1,192,1,160,0,21,0,35,0,49,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39, +38,39,17,54,55,54,55,33,7,38,35,49,34,15,1,23,55,54,53,52,47,1,15,1,6,23,22,63,1,54,63,1, +39,7,6,7,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,58,13,16,15,13,21, +71,21,12,12,14,214,16,1,6,6,9,60,9,6,105,71,105,6,2,1,160,1,18,18,27,254,192,27,18,18,1,1, +18,18,27,1,64,27,18,18,1,108,12,12,21,71,21,13,16,16,12,14,164,59,10,6,6,2,15,2,6,105,71,104, +8,8,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,56,0,0,1,33,6,7,6,7,17,22,23,22,23,33, +54,55,54,55,17,38,39,38,39,3,20,7,49,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,35,34, +39,38,53,52,55,54,59,1,50,23,22,29,1,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1, +18,18,27,40,9,9,14,14,9,9,121,10,13,13,10,9,9,122,67,14,9,9,9,9,14,144,14,9,9,1,160,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,232,14,9,9,9,9,14,67,122,9,9,10, +13,13,10,121,9,9,14,14,9,9,9,9,14,144,0,0,0,2,0,0,255,193,2,64,1,191,0,34,0,72,0,0, +1,39,38,7,6,7,21,34,7,6,7,6,7,22,23,22,23,22,55,54,39,38,55,54,23,21,22,23,22,63,1,54, +53,52,39,7,34,7,49,6,29,1,33,17,51,50,55,54,53,52,39,38,43,1,6,7,6,7,17,22,23,22,23,33, +54,55,54,55,53,52,39,38,35,2,57,151,11,11,11,1,72,58,57,34,34,1,1,21,22,30,10,9,9,3,29,44, +44,98,1,11,11,11,151,7,7,153,14,9,9,254,192,32,14,9,9,9,9,14,32,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,9,9,14,1,48,139,8,5,5,15,74,14,13,36,35,67,41,37,36,22,6,6,5,12,93,33,32, +1,74,15,5,5,8,138,7,9,10,6,240,9,9,14,31,1,63,9,9,14,14,9,9,1,18,18,27,254,193,27,18, +18,1,1,18,18,27,31,14,9,9,0,0,0,3,0,0,255,192,2,0,1,192,0,17,0,44,0,62,0,0,37,20, +7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,33,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6, +7,6,7,6,7,38,39,38,39,38,39,5,55,54,39,38,15,1,6,15,1,6,23,22,63,1,54,55,49,1,32,9, +9,14,14,9,9,9,9,14,14,9,9,254,224,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,69,56,4,10,10,15,145,13,5,56,4,9,10,16,145,13,5,192,14,9,9,9,9,14,14,9, +9,9,9,14,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,51,145,16,10, +9,4,56,5,13,145,15,10,10,4,56,5,13,0,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,36,0,0, +1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,6,35,34,47,1,38,55,54,55, +51,22,23,22,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,38,104,8,10,10, +8,104,10,6,7,15,208,16,5,7,10,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18, +1,200,112,8,8,112,11,15,13,1,1,13,15,11,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,36,0,0, +1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,35,38,39,38,63,1,54,51, +50,31,1,22,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,35,5,16,208,15, +7,6,10,104,8,10,10,8,104,10,7,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18, +1,254,238,13,1,1,13,15,11,112,8,8,112,11,15,0,0,2,0,0,255,224,1,192,1,160,0,20,0,38,0,0, +1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,6,35,34,39,38,39,53,54,55, +54,31,1,22,21,20,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,72,112,7, +9,5,5,13,1,1,13,15,11,112,8,8,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18, +18,1,242,104,6,2,7,15,208,15,7,5,9,104,7,11,10,8,0,0,0,1,0,32,255,224,1,96,1,160,0,87, +0,0,55,34,39,49,38,53,52,55,54,59,1,54,55,54,55,51,50,23,22,21,20,7,6,43,1,6,7,6,7,51, +50,23,22,21,20,7,6,43,1,20,29,1,20,21,51,50,23,22,21,20,7,6,43,1,22,23,22,23,51,50,23,22, +21,20,7,6,43,1,38,39,38,39,35,34,39,38,53,52,55,54,59,1,52,61,1,52,53,35,64,14,9,9,9,9, +14,28,24,54,54,72,24,14,9,9,9,9,14,24,44,35,35,20,126,14,9,9,9,9,14,144,144,14,9,9,9,9, +14,126,20,35,35,44,24,14,9,9,9,9,14,24,72,54,54,24,28,14,9,9,9,9,14,16,16,208,9,9,14,14, +9,9,64,39,40,1,9,9,14,14,9,9,1,21,22,36,9,9,14,14,9,9,4,4,16,4,4,9,9,14,14,9, +9,36,22,21,1,9,9,14,14,9,9,1,40,39,64,9,9,14,14,9,9,4,4,16,4,4,0,0,0,1,0,0, +255,224,1,64,1,160,0,66,0,0,55,51,22,23,22,21,20,7,6,43,1,21,20,7,21,51,50,23,22,21,20,7, +6,35,33,38,39,38,63,1,54,61,1,35,34,39,38,53,52,55,54,59,1,53,54,55,54,55,50,31,1,22,23,22, +7,6,7,6,47,1,38,35,6,7,6,7,21,112,112,14,9,9,9,9,14,112,23,199,14,9,9,9,9,14,255,0, +18,10,8,9,29,14,16,14,9,9,9,9,14,16,1,37,36,54,21,19,82,13,6,5,4,4,12,11,13,81,10,11, +27,18,18,1,225,1,9,9,13,14,9,9,46,43,39,1,9,9,14,14,9,9,1,15,16,16,50,23,26,45,9,9, +14,14,9,9,64,54,36,37,1,7,27,4,12,11,13,13,6,5,4,27,3,1,18,18,27,63,0,0,0,3,0,0, +255,224,1,191,1,160,0,35,0,47,0,136,0,0,19,52,55,49,54,59,1,22,23,22,23,6,7,6,7,23,22,7, +6,7,6,39,38,47,1,35,21,20,7,6,35,34,39,38,53,17,23,51,54,55,54,55,38,39,38,39,35,21,5,20, +23,22,23,51,22,23,22,23,22,23,22,7,6,7,6,39,49,38,39,38,39,38,39,34,39,38,39,38,55,54,55,54, +23,22,23,22,23,22,23,22,23,22,55,54,55,54,39,38,39,38,47,1,38,39,38,39,38,55,54,55,54,23,50,23, +22,23,22,23,22,23,22,7,6,7,6,39,38,39,38,39,38,7,6,21,6,23,49,0,9,9,14,80,61,41,40,2, +1,23,23,39,52,4,5,5,12,13,12,11,6,56,42,9,9,14,14,9,9,64,48,34,23,22,1,1,22,23,34,48, +1,1,4,10,28,1,13,15,15,12,16,8,7,3,8,36,34,39,15,14,10,8,2,1,2,2,12,5,5,4,5,12, +12,13,3,5,7,8,7,5,4,3,23,10,7,2,1,2,1,3,10,27,3,26,28,15,8,8,3,8,35,35,39,1, +1,7,10,10,7,12,6,6,3,5,11,11,13,5,9,9,5,23,11,8,1,1,1,128,14,9,9,2,40,41,61,45, +35,34,18,128,13,12,11,6,4,5,5,12,140,128,14,9,9,9,9,14,1,128,192,1,22,23,34,34,23,22,1,160, +26,2,3,8,9,4,7,7,10,12,21,20,24,42,19,15,7,4,5,4,3,1,1,1,5,12,11,13,13,5,5,5, +1,2,2,4,2,2,1,1,3,6,3,10,10,2,2,4,8,9,1,7,19,11,20,20,23,43,17,16,7,1,1,2, +3,2,4,11,11,14,12,6,6,3,2,2,2,1,3,6,5,7,9,1,0,1,0,0,255,224,1,63,1,159,0,72, +0,0,63,1,54,55,54,23,22,23,22,15,1,51,22,23,22,21,20,7,6,43,1,21,51,50,23,22,21,20,7,6, +43,1,21,20,7,6,35,34,39,38,39,53,35,34,39,38,39,54,55,54,59,1,53,35,34,39,38,39,54,55,54,55, +51,39,38,55,54,55,54,23,22,31,1,159,102,8,13,12,12,11,2,3,7,95,52,14,9,9,9,9,14,80,80,14, +9,9,9,9,14,80,9,10,14,13,9,9,1,80,13,9,9,1,1,9,9,13,80,80,13,9,9,1,1,9,9,13, +53,95,7,3,2,11,12,12,13,8,100,250,152,11,2,3,7,8,13,12,12,141,1,9,9,13,14,9,9,32,10,9, +14,14,9,9,64,14,9,9,9,9,14,64,9,9,14,14,9,10,32,9,9,14,13,9,9,1,141,12,12,13,8,7, +3,2,11,152,0,2,0,0,255,224,1,128,1,160,0,58,0,71,0,0,19,22,23,49,22,23,6,7,6,7,35,21, +51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,61,1,35,34,39,38,53,52,55,54,59,1,53,35, +34,39,38,53,52,55,54,59,1,53,52,55,54,59,1,23,38,39,49,38,39,35,21,51,54,55,54,55,240,61,41,40, +2,2,40,41,61,112,160,14,9,9,9,9,14,160,9,9,14,14,9,9,32,14,9,9,9,9,14,32,32,14,9,9, +9,9,14,32,9,9,14,144,80,1,22,23,34,112,112,34,23,22,1,1,160,2,40,41,61,61,41,40,2,32,9,9, +14,14,9,9,32,14,9,9,9,9,14,32,9,9,14,14,9,9,32,9,9,14,14,9,9,192,14,9,9,144,34,23, +22,1,160,1,22,23,34,0,0,4,0,0,255,225,2,0,1,160,0,61,0,65,0,69,0,73,0,0,55,51,55,54, +55,22,31,1,51,55,54,55,54,23,22,23,22,15,1,51,50,23,22,21,20,7,6,43,1,7,6,39,38,47,1,35, +7,6,7,6,47,1,35,34,39,38,53,52,55,54,59,1,39,38,55,54,55,54,23,22,31,3,55,35,55,51,39,7, +31,1,55,35,119,64,41,8,24,24,7,41,65,57,4,12,11,13,13,6,5,4,50,20,14,9,9,9,9,14,41,57, +9,22,23,8,41,47,41,7,23,23,8,57,41,14,9,9,9,9,14,20,50,4,5,6,13,13,11,12,4,57,21,16, +11,27,108,15,7,8,96,12,16,28,224,168,23,1,1,23,168,170,13,6,5,4,4,12,11,13,150,9,9,14,14,9, +9,170,22,1,1,22,168,168,22,1,1,22,170,9,9,14,14,9,9,150,13,11,12,4,4,5,6,13,170,64,46,46, +64,28,28,64,46,46,0,0,0,2,0,0,255,192,1,128,1,192,0,23,0,27,0,0,19,54,55,49,54,55,51,21, +20,23,22,59,1,17,6,7,6,7,33,38,39,38,39,17,5,53,23,35,0,1,18,18,27,160,9,9,14,128,1,18, +18,27,255,0,27,18,18,1,1,0,128,128,1,128,27,18,18,1,128,14,9,9,254,224,27,18,18,1,1,18,18,27, +1,128,64,128,128,0,0,0,0,5,0,0,255,192,1,128,1,192,0,3,0,26,0,37,0,48,0,59,0,0,1,21, +51,39,7,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,19,35,38,39,54,55,51, +22,23,6,7,53,35,38,39,54,55,51,22,23,6,7,55,6,7,35,38,39,54,55,51,22,23,1,0,128,128,32,176, +20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,48,160,15,1,1,15,160,15,1,1,15,160,15,1, +1,15,160,15,1,1,15,16,1,15,160,15,1,1,15,160,15,1,1,192,128,128,128,128,1,13,14,20,254,96,20,14, +13,1,1,13,14,20,1,48,9,9,14,254,224,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,80,15, +1,1,15,15,1,1,15,0,0,4,0,7,255,224,1,239,1,160,0,35,0,66,0,92,0,96,0,0,55,54,39,49, +38,39,38,35,6,15,1,17,52,39,38,35,34,7,6,21,17,39,38,39,34,7,6,7,6,31,1,22,51,50,63,1, +23,35,55,54,39,38,39,35,34,7,6,21,20,23,22,59,1,7,6,23,22,23,51,50,55,54,53,52,39,38,35,55, +39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,240,9,1, +1,9,11,13,13,9,32,9,9,14,14,9,9,32,10,13,12,11,9,1,1,9,88,9,14,14,10,89,208,51,74,14, +7,9,22,128,13,9,9,9,9,14,51,74,14,7,9,20,127,15,9,10,9,9,14,45,80,10,19,19,10,80,5,4, +4,12,12,12,12,7,7,88,7,5,12,12,14,12,4,4,5,125,16,16,32,75,10,13,13,9,9,1,10,36,1,46, +14,9,9,9,9,14,254,210,35,10,1,9,9,13,13,10,96,10,10,97,43,73,16,19,19,1,9,9,14,14,9,9, +73,16,19,19,1,9,9,14,14,9,9,207,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7,6,12, +12,13,42,32,32,0,0,0,0,4,0,8,255,224,1,239,1,160,0,35,0,66,0,92,0,96,0,0,19,38,35,49, +34,15,1,6,21,22,23,22,51,54,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50,55,54,55,54,47,1, +1,35,55,54,39,38,39,35,34,7,6,21,20,23,22,59,1,7,6,23,22,23,51,50,55,54,53,52,39,38,35,55, +39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,152,10,14, +14,10,87,9,1,9,11,12,13,10,32,9,9,14,14,9,9,32,9,13,13,11,9,1,1,9,88,1,40,51,74,14, +7,9,21,129,13,9,9,9,9,14,51,74,14,7,9,20,127,15,9,10,9,9,14,45,80,10,19,19,10,80,5,4, +4,12,12,12,12,7,7,88,7,5,12,12,14,12,4,4,5,125,16,16,32,1,150,10,10,96,10,13,13,9,9,1, +10,35,254,210,14,9,9,9,10,14,1,45,35,10,1,9,9,13,13,10,96,254,138,73,16,19,19,1,9,9,14,14, +9,9,73,16,19,19,1,9,9,14,14,9,9,207,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7, +6,12,12,13,42,32,32,0,0,5,0,7,255,224,2,64,1,160,0,18,0,37,0,56,0,75,0,110,0,0,37,35, +34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,19,35,34,7,6,21,20,23,22,59,1,50,55,54,53, +52,39,38,35,3,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,19,35,34,7,6,21,20,23,22, +59,1,50,55,54,53,52,39,38,35,5,7,17,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,6,31,1, +22,51,50,63,1,54,39,52,39,38,35,6,7,1,160,95,14,9,9,9,9,14,95,14,9,9,9,9,14,128,223,14, +9,9,9,9,14,223,14,9,9,9,9,14,192,32,14,9,9,9,9,14,32,14,8,9,9,8,14,128,159,14,9,9, +9,9,14,159,14,9,9,9,9,14,254,224,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,9,14,14, +10,87,9,1,10,9,13,12,10,160,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14,14,9,9,9,9, +14,14,9,9,254,128,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14,14,9,9,9,9,14,14,9,9, +171,35,1,46,14,9,9,9,9,14,254,210,35,11,9,9,13,13,10,96,10,10,96,10,13,13,9,9,1,10,0,0, +0,5,0,8,255,224,2,64,1,160,0,18,0,37,0,56,0,75,0,111,0,0,37,35,34,7,6,21,20,23,22,59, +1,50,55,54,53,52,39,38,35,7,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,19,35,34,7, +6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,55,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39, +38,35,5,38,35,49,34,15,1,6,21,22,23,22,51,50,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50, +55,54,55,52,47,1,1,160,95,14,9,9,9,9,14,95,14,9,9,9,9,14,64,32,14,9,9,9,9,14,32,14, +8,9,9,8,14,128,159,14,9,9,9,9,14,159,14,9,9,9,9,14,64,223,14,9,9,9,9,14,223,14,9,9, +9,9,14,254,120,10,14,14,10,87,9,1,9,10,12,14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,8, +88,160,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14, +14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,10,10,10,96,10,13,13,9,9,11, +35,254,210,14,9,9,9,9,14,1,46,35,10,1,9,9,13,13,10,96,0,4,0,7,255,224,1,224,1,160,0,31, +0,60,0,69,0,104,0,0,1,20,23,49,22,51,23,50,55,54,53,52,39,38,35,53,38,39,38,15,1,6,7,6, +23,22,23,21,34,7,6,21,23,6,7,49,6,7,20,23,22,23,7,6,21,20,23,22,51,50,55,54,55,54,55,54, +39,38,39,38,35,21,38,39,54,55,22,23,6,7,39,34,15,1,17,52,39,38,35,34,7,6,21,17,39,38,39,34, +7,6,7,6,31,1,22,51,50,63,1,54,39,52,39,38,35,1,64,9,9,14,64,14,9,9,9,9,14,1,14,16, +16,32,12,3,4,6,9,19,14,9,9,72,37,25,25,1,15,15,24,8,8,9,8,11,12,8,16,13,34,14,14,1, +1,25,25,37,22,2,2,22,22,2,2,22,176,14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,1,9,88, +9,14,14,10,87,9,1,10,8,12,1,0,14,8,9,1,9,9,14,14,9,9,96,18,9,9,8,16,7,12,12,12, +17,1,47,9,9,14,64,1,24,25,38,27,22,21,11,8,8,12,11,8,8,9,16,13,34,20,19,25,38,25,25,112, +2,22,22,2,2,22,22,2,48,11,35,1,46,14,9,9,9,9,14,254,210,35,10,1,9,9,13,13,10,96,10,10, +96,10,13,13,9,9,0,0,0,4,0,8,255,224,1,224,1,160,0,31,0,60,0,69,0,104,0,0,1,20,23,49, +22,51,23,50,55,54,53,52,39,38,35,53,38,39,38,15,1,6,7,6,23,22,23,21,34,7,6,21,23,6,7,49, +6,7,20,23,22,23,7,6,21,20,23,22,51,50,55,54,55,54,55,54,39,38,39,38,35,21,38,39,54,55,22,23, +6,7,37,50,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50,55,54,55,52,47,1,38,35,34,15,1,6, +21,22,23,22,51,1,64,9,9,14,64,14,9,9,9,9,14,1,14,16,16,32,12,3,4,6,9,19,14,9,9,72, +37,25,25,1,15,15,24,8,8,9,8,11,12,8,16,13,34,14,14,1,1,25,25,37,22,2,2,22,22,2,2,22, +254,160,14,10,32,9,9,13,13,9,10,33,10,13,12,11,9,1,8,88,10,14,14,10,87,9,1,9,10,12,1,0, +14,8,9,1,9,9,14,14,9,9,96,18,9,9,8,16,7,12,12,12,17,1,47,9,9,14,64,1,24,25,38,27, +22,21,11,8,8,12,11,8,8,9,16,13,34,20,19,25,38,25,25,112,2,22,22,2,2,22,22,2,176,11,35,254, +210,14,9,9,9,9,14,1,46,35,10,1,9,9,13,13,10,96,10,10,96,10,13,13,9,9,0,0,0,2,0,0, +255,224,2,0,1,160,0,20,0,75,0,0,55,53,52,39,38,43,1,34,7,6,29,1,20,23,22,59,1,22,55,54, +53,37,38,39,49,38,39,35,54,55,54,53,52,39,38,39,34,7,6,7,6,7,6,15,1,6,21,48,49,21,22,31, +1,22,59,1,54,55,54,55,52,39,54,55,52,39,54,55,54,53,52,39,54,55,54,53,128,9,9,14,64,14,9,9, +9,9,14,64,14,9,9,1,128,1,13,14,20,146,17,8,9,13,13,23,24,9,9,6,6,12,13,30,16,18,1,18, +34,43,53,59,20,14,13,1,1,31,2,7,17,11,11,13,19,13,13,1,224,13,9,9,9,9,13,223,14,8,9,1, +8,9,14,223,20,14,13,1,29,27,28,12,18,15,14,1,13,13,21,21,24,25,25,13,15,22,160,24,14,26,32,1, +13,14,20,5,6,11,34,14,11,3,13,13,18,19,13,2,13,13,20,0,0,2,0,0,255,224,2,0,1,160,0,20, +0,74,0,0,19,35,34,7,6,29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,35,5,54,53,52,39,38,39, +54,53,38,39,54,53,38,39,38,39,35,34,15,1,6,7,21,48,49,20,31,1,22,23,22,23,22,23,22,51,54,55, +54,53,52,39,38,39,51,54,55,54,55,52,39,38,39,96,64,14,9,9,9,9,14,64,14,9,9,9,9,14,1,115, +13,11,11,17,7,2,31,1,1,13,14,20,59,53,43,34,18,1,18,16,30,13,12,6,6,9,9,24,23,13,13,9, +8,18,147,20,14,13,1,13,13,19,1,160,9,9,13,223,14,8,9,9,9,13,222,14,9,9,208,13,19,18,13,13, +3,11,15,34,11,4,6,20,14,13,1,32,26,14,23,160,22,15,13,25,25,25,21,21,13,13,1,14,15,18,13,27, +27,29,1,13,14,20,20,13,13,2,0,0,0,1,0,0,255,192,1,64,1,192,0,35,0,0,55,54,51,49,50,31, +1,17,52,55,54,51,50,23,22,21,17,55,54,51,50,23,22,21,20,15,1,6,35,34,47,1,38,53,52,55,9,10, +13,13,10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,128,9,9,119,9,9,74,1,115,14, +9,9,9,9,14,254,141,74,9,9,10,13,13,10,128,9,9,128,10,13,13,10,0,0,0,1,0,0,255,192,1,64, +1,192,0,35,0,0,1,6,35,49,34,47,1,17,20,7,6,35,34,39,38,53,17,7,6,35,34,39,38,53,52,63, +1,54,51,50,31,1,22,21,20,7,1,55,10,13,13,10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10, +13,13,10,128,9,9,1,9,9,9,74,254,141,14,9,9,9,9,14,1,115,74,9,9,10,13,13,10,128,9,9,128, +10,13,13,10,0,1,0,0,0,32,2,0,1,96,0,34,0,0,63,1,54,51,50,23,22,21,20,15,1,33,50,23, +22,21,20,7,6,35,33,23,22,21,20,7,6,35,34,47,1,38,53,52,55,9,128,10,13,13,10,9,9,74,1,115, +14,9,9,9,9,14,254,141,74,9,9,10,13,13,10,128,9,9,215,128,9,9,10,13,13,10,73,9,9,14,14,9, +9,73,10,13,13,10,9,9,128,10,13,13,10,0,0,0,0,1,0,0,0,32,2,0,1,96,0,32,0,0,37,7, +6,35,34,39,38,53,52,63,1,33,34,39,38,53,54,55,33,39,38,53,52,55,54,51,50,31,1,22,21,20,7,1, +247,128,10,13,13,10,9,9,74,254,141,14,9,9,3,29,1,115,74,9,9,10,13,13,10,128,9,9,169,128,9,9, +10,13,13,10,73,9,10,14,29,2,73,10,13,13,10,9,9,128,10,13,13,10,0,0,0,2,0,0,255,192,1,63, +1,192,0,17,0,80,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,3,35,34,39,38,63, +1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,23,22, +7,6,43,1,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,112,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,24,18,8,5,4,2,38,34,7,12,13,11,12,3,3,7,53,16,25,25,30,12, +30,25,25,16,53,7,3,3,11,12,13,12,7,34,37,3,4,5,8,18,9,9,14,14,9,9,16,9,9,14,14,9, +9,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,176,7,6,8,115,57,11,3,3,7,7,12, +13,11,90,25,14,15,15,14,25,90,11,13,12,7,7,3,3,11,57,115,8,6,7,96,14,9,9,9,9,14,96,96, +14,9,9,9,9,14,96,0,0,2,0,0,255,192,1,63,1,192,0,17,0,68,0,0,19,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54, +55,54,59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,61,1,35,208,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13, +22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,29,9,9,14,14,9,9,16,1,144,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22, +13,12,12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9,9,9,14,128,0,0,3,0,0,255,192,2,0, +1,193,0,17,0,66,0,84,0,0,1,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,39,55,54, +39,38,47,2,38,39,38,15,1,39,38,7,6,15,2,6,7,6,31,1,7,6,23,22,31,2,22,23,22,63,1,23, +22,55,54,63,2,54,55,54,39,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,0,41,26,27, +1,1,26,27,41,41,27,26,1,1,27,26,41,253,63,63,5,3,3,9,109,19,2,7,8,7,91,92,7,7,8,2, +18,109,9,3,3,5,63,63,5,3,3,9,109,19,2,7,8,7,91,91,7,8,7,2,19,109,9,3,3,5,253,54, +36,36,1,1,36,36,54,54,36,36,1,1,36,36,54,1,33,1,27,27,40,40,28,28,1,1,27,27,40,40,28,28, +1,188,92,91,7,7,8,2,19,109,9,3,3,5,64,63,5,3,3,9,109,19,2,7,7,7,92,91,7,8,7,2, +19,109,9,3,3,5,63,63,5,3,3,9,109,19,2,7,8,7,36,1,36,36,54,54,36,36,1,1,36,36,54,54, +36,36,1,0,0,1,0,32,255,224,1,176,1,160,0,40,0,0,55,54,55,49,54,55,49,54,55,50,23,22,23,22, +23,22,7,6,7,6,7,22,23,22,23,22,55,54,23,22,7,6,7,6,35,38,39,38,39,38,39,32,1,30,29,51, +50,63,9,11,12,9,7,1,1,6,42,23,23,1,1,29,29,47,47,56,7,3,4,4,32,45,45,52,63,50,51,29, +30,1,192,63,50,51,29,30,1,1,1,2,2,6,7,4,24,41,40,48,55,43,42,21,21,10,1,6,6,6,39,22, +22,1,30,29,51,50,63,0,0,3,0,0,255,224,2,0,1,160,0,13,0,26,0,43,0,0,55,22,23,49,22,23, +33,54,55,54,55,17,33,17,55,54,55,51,22,23,21,6,7,35,38,39,53,37,33,34,7,6,29,1,22,23,33,54, +55,53,52,39,38,35,32,1,13,14,20,1,96,20,14,13,1,254,64,128,1,11,168,11,1,1,11,168,11,1,1,64, +254,64,14,9,9,1,15,1,224,15,1,9,9,14,16,20,14,13,1,1,13,14,20,1,16,254,240,196,11,1,1,11, +8,11,1,1,11,8,204,9,9,14,48,15,1,1,15,48,14,9,9,0,0,2,0,0,255,192,2,0,1,192,0,19, +0,119,0,0,1,21,20,7,6,43,1,34,39,38,61,1,54,55,54,55,22,23,22,23,5,54,51,49,50,31,1,22, +23,54,59,1,50,23,52,63,1,54,51,50,23,22,21,20,15,1,34,21,48,21,22,23,51,50,23,22,21,20,7,6, +43,1,20,7,22,31,1,22,21,20,7,6,35,34,47,1,6,7,53,38,39,6,7,21,38,39,7,6,35,34,39,38, +53,52,63,1,54,55,38,53,35,34,39,38,53,52,55,54,59,1,54,55,38,47,1,38,53,52,55,49,1,96,8,8, +12,136,12,8,9,1,27,27,41,42,27,27,1,254,201,10,13,13,10,64,1,1,21,25,113,26,22,1,64,10,13,13, +10,9,9,64,2,9,2,64,14,9,9,9,9,14,64,15,3,3,64,9,9,10,13,13,10,63,37,53,1,16,14,2, +51,38,63,10,13,13,10,9,9,64,3,3,15,64,14,9,9,9,9,14,64,2,9,1,1,64,9,9,1,96,4,12, +8,8,8,8,12,4,41,27,27,1,1,27,27,41,9,9,9,64,1,1,11,11,1,1,64,9,9,10,13,13,10,64, +1,1,18,21,9,9,14,14,9,9,37,32,2,2,64,10,13,13,10,9,9,63,33,6,239,15,1,1,15,239,6,33, +63,9,9,10,13,13,10,64,2,2,32,37,9,9,14,14,9,9,21,18,1,1,64,10,13,13,10,0,0,2,0,0, +255,224,1,192,1,160,0,20,0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,3,6,7,6,35,34,47,1,38,53,52,63,1,54,23,22,23,21,1,128,254,192,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,1,18,18,27,96,1,13,5,5,9,7,112,8,8,112,11,15,13,1,1,160,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,184,15,7,2,6,104,8,10,10,8,104,9,5,7,15,208,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,44,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6, +7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,41,27,27,1,1,27,27,41, +41,27,27,1,1,27,27,41,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57, +72,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,0,3,0,0,255,192,1,255,1,192,0,44, +0,72,0,90,0,0,37,38,39,49,38,15,1,39,38,43,1,39,51,50,55,54,53,52,39,38,43,1,39,38,39,38, +7,6,7,6,31,1,22,23,51,23,22,23,50,63,1,54,55,54,39,5,38,39,49,38,39,54,55,54,55,39,6,7, +6,7,22,23,22,23,54,55,54,55,35,6,7,6,7,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,1,254,4,12,11,13,20,41,9,21,98,10,65,14,9,9,9,9,14,79,1,4,15,16,20,20,12,11,3,23,5, +27,141,45,9,21,5,5,48,13,6,5,4,254,162,48,31,32,1,1,25,25,39,8,57,36,36,1,2,45,45,68,59, +43,42,13,49,12,29,28,39,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,26,13,6,5,4,6,100, +20,48,9,9,14,14,9,9,7,20,12,11,3,3,15,15,21,140,27,2,108,19,1,2,16,4,12,11,13,42,1,32, +31,48,42,29,30,9,47,12,42,43,60,68,45,45,2,1,36,35,56,35,22,22,1,1,112,1,13,14,20,20,14,13, +1,1,13,14,20,20,14,13,1,0,0,0,0,1,0,0,255,224,1,64,1,160,0,86,0,0,19,51,22,23,22,21, +20,7,6,43,1,21,51,22,23,22,21,20,7,6,43,1,6,7,21,51,50,23,22,21,20,7,6,35,33,38,39,38, +63,1,54,55,35,34,39,38,53,52,55,54,59,1,53,35,34,39,38,53,52,55,54,59,1,53,54,55,54,55,50,31, +1,22,23,22,7,6,7,6,47,1,38,35,6,7,6,15,1,111,113,14,9,9,9,9,14,113,113,14,9,9,9,9, +14,113,4,18,199,14,9,9,9,9,14,255,0,18,10,8,9,29,9,3,14,14,9,9,9,9,14,16,16,14,9,9, +9,9,14,16,1,37,36,54,21,19,82,13,6,5,4,4,12,11,13,81,10,11,27,18,18,1,1,1,1,1,9,9, +13,14,9,9,32,1,9,9,13,14,10,9,34,29,1,9,9,14,14,9,9,1,15,16,16,50,14,16,9,9,14,14, +9,9,32,9,9,14,14,9,9,32,54,36,37,1,7,27,4,12,11,13,13,6,5,4,27,3,1,18,18,27,31,0, +0,4,0,0,255,224,2,128,1,160,0,6,0,13,0,57,0,72,0,0,23,35,53,51,7,6,7,19,35,53,51,50, +31,1,35,22,23,33,50,23,22,23,22,7,6,7,6,35,33,6,7,35,21,35,38,39,38,39,53,51,34,39,38,61, +1,52,55,54,51,35,53,54,55,54,55,51,21,51,5,34,29,1,20,51,50,55,54,61,1,52,39,38,35,129,1,224, +107,53,63,223,224,1,63,53,107,248,41,23,1,32,53,46,46,34,10,10,34,46,46,53,254,224,23,41,8,16,20,14, +13,1,8,17,11,12,12,11,17,8,1,13,14,20,16,8,1,116,4,4,16,10,10,10,10,16,32,96,64,31,1,1, +96,96,32,64,1,31,19,19,44,14,14,44,19,19,31,1,96,1,13,14,20,48,12,11,17,176,17,11,12,48,20,14, +13,1,96,80,4,88,4,10,10,16,24,16,10,10,0,0,0,3,0,0,255,224,1,192,1,160,0,20,0,39,0,55, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,17,20,7,49,6,35,33,34,39, +38,61,1,23,22,51,50,63,1,21,53,7,6,47,1,53,52,55,54,51,33,50,23,22,29,1,1,128,254,192,27,18, +18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,9,9,14,255,0,14,9,9,139,10,11,11,10,139,153,7, +7,153,9,9,14,1,0,14,9,9,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1, +254,208,14,9,9,9,9,14,110,69,5,5,69,110,146,77,3,3,77,14,14,9,9,9,9,14,14,0,0,3,0,0, +255,192,2,0,1,192,0,21,0,39,0,74,0,0,19,54,31,1,22,7,6,7,21,6,7,33,34,39,38,61,1,38, +39,38,63,1,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,3,51,53,51,21,51,53,51,21,51, +53,51,21,48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,48,49,53,51,21,243,13,13,224,22,4,6, +26,1,23,254,112,10,7,7,24,6,4,22,224,13,14,9,9,9,9,14,14,9,9,9,9,14,129,40,64,49,64,40, +64,1,1,48,18,5,8,23,254,63,22,8,5,18,48,1,64,1,189,6,6,96,11,24,24,2,8,22,2,7,7,10, +8,2,24,24,11,96,125,9,9,14,14,9,9,9,9,14,14,9,9,254,224,192,192,192,192,192,196,1,32,14,22,22, +1,1,22,22,14,32,1,196,192,0,0,0,0,2,0,0,255,224,2,128,1,160,0,36,0,53,0,0,1,37,38,7, +5,6,7,22,31,1,6,7,6,7,22,23,7,6,23,51,54,47,1,54,55,38,39,54,55,23,22,55,37,54,55,38, +39,5,6,35,34,47,1,7,22,23,22,23,54,55,54,55,39,7,2,111,254,229,21,21,254,230,15,1,1,15,60,18, +6,19,1,1,11,25,1,17,58,17,1,25,11,1,1,12,7,18,191,21,21,1,27,15,1,1,16,254,240,14,17,16, +16,145,15,2,54,54,82,81,54,55,2,15,146,1,55,101,8,8,101,6,17,17,6,22,24,30,8,21,15,9,149,17, +2,2,17,149,9,15,16,9,27,20,68,8,8,101,6,17,17,6,177,6,6,51,142,32,21,21,1,1,21,21,32,143, +52,0,0,0,0,5,0,0,0,0,2,128,1,128,0,57,0,61,0,83,0,88,0,106,0,0,1,22,23,21,51,22, +23,6,7,35,7,6,7,48,51,48,31,1,22,7,6,47,1,38,39,38,39,6,15,1,6,39,38,63,1,54,55,54, +55,39,38,55,54,31,1,49,54,55,35,38,39,54,55,51,53,54,55,21,5,23,35,55,39,54,55,49,54,55,33,22, +23,22,23,17,6,7,6,7,33,38,39,38,39,17,1,33,17,33,17,39,38,39,6,15,1,6,23,22,63,1,51,23, +22,55,54,47,1,1,192,18,2,60,18,2,2,18,2,2,13,26,1,1,19,15,8,11,16,19,2,2,5,4,16,18, +4,17,9,6,16,4,5,5,4,4,12,12,12,14,14,15,19,11,107,19,1,1,19,52,1,19,254,224,19,39,20,160, +1,18,18,27,2,0,27,18,18,1,1,18,18,27,254,0,27,18,18,1,1,64,1,0,255,0,142,5,13,13,5,64, +6,16,17,9,9,74,9,9,17,16,6,64,1,28,1,19,4,1,19,18,2,5,36,29,2,11,11,16,15,8,11,1, +1,3,4,12,8,1,6,16,17,9,2,2,3,3,2,12,14,14,12,12,14,18,27,1,19,18,2,4,18,2,1,69, +43,43,105,27,18,18,1,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,255,0,1,0,255,0,208,11,1, +1,11,144,17,9,6,16,21,21,16,6,9,17,144,0,0,0,7,0,0,255,192,2,0,1,192,0,18,0,39,0,56, +0,69,0,82,0,95,0,108,0,0,19,51,23,21,51,53,52,47,1,38,43,1,34,7,6,29,1,51,53,7,35,34, +7,6,21,17,20,23,22,59,1,50,55,54,53,17,52,39,38,35,5,33,17,20,23,22,51,33,50,55,54,53,17,52, +39,38,35,7,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,23,6,7, +35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,192,198,26,64,9,46,9,13,243, +14,9,9,64,128,32,14,9,9,9,9,14,32,14,9,9,9,9,14,1,160,254,160,9,9,14,1,64,14,9,9,9, +9,14,192,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,128,1,15,32,15,1,1,15,32, +15,1,1,15,32,15,1,1,15,32,15,1,1,128,27,69,83,13,9,46,9,9,9,14,128,96,64,9,9,14,254,192, +14,9,9,9,9,14,1,64,14,9,9,64,254,224,14,9,9,9,9,14,1,0,14,9,9,240,15,1,1,15,32,15, +1,1,15,32,128,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32, +15,1,1,15,32,0,0,0,0,7,0,0,255,192,1,128,1,192,0,32,0,45,0,58,0,71,0,84,0,97,0,110, +0,0,1,22,23,49,22,23,17,6,7,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55, +54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,1,80,20,14,13,1,1,13,14,20,96,1,13,14,20, +20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15, +32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,80,1,15,32, +15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,1,192,1,13,14,20,254,96,20,14,13,1,80,20, +14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1, +15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48, +15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,0,0,0,0,2,0,0,255,192,1,63, +1,192,0,17,0,67,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35, +34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,51,50,23,22,31,1,22,7,6,7,6,39,38,47, +1,21,20,7,6,35,34,39,38,61,1,35,224,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,80,9,9, +14,14,9,9,21,7,13,12,12,11,3,3,7,40,19,30,30,36,36,30,30,19,40,7,3,3,11,12,12,13,7,21, +9,9,14,14,9,9,32,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,192,96,14,9,9,9, +9,14,192,33,11,3,3,7,7,13,13,12,62,30,17,17,17,17,30,62,12,13,13,7,7,3,3,11,33,192,14,9, +9,9,9,14,96,0,0,0,0,5,0,0,255,224,2,0,1,160,0,17,0,35,0,73,0,91,0,109,0,0,19,22, +7,49,6,7,6,39,38,39,38,55,54,55,54,23,22,23,7,22,7,49,6,7,6,39,38,39,38,55,54,55,54,23, +22,23,7,54,55,49,54,55,49,54,23,54,23,22,23,22,23,22,29,1,20,7,6,7,34,47,1,38,15,1,6,35, +34,39,38,39,53,52,55,49,37,38,39,49,38,55,54,55,54,23,22,23,22,7,6,7,6,47,1,38,39,49,38,55, +54,55,54,23,22,23,22,7,6,7,6,39,227,10,9,10,24,25,24,24,11,11,9,10,24,25,24,24,12,127,14,2, +3,19,19,22,22,15,14,2,3,19,19,22,22,15,31,27,36,35,34,33,22,22,33,34,35,36,27,5,14,13,20,17, +17,88,24,22,88,17,17,20,13,13,1,5,1,97,19,3,2,14,15,22,22,19,19,3,2,14,15,22,22,19,112,24, +10,9,11,11,24,24,25,24,10,9,10,12,24,24,25,1,99,33,27,28,9,7,17,16,33,33,27,28,9,7,17,16, +33,106,25,24,23,12,10,9,10,25,25,24,23,12,10,9,10,25,202,70,39,38,15,16,1,1,16,15,38,39,70,15, +16,1,20,13,13,1,4,22,6,6,22,4,14,13,20,1,16,15,118,12,23,24,25,25,10,9,10,12,23,24,25,25, +10,9,10,93,9,28,27,33,33,16,17,7,9,28,27,33,33,16,17,7,0,3,0,0,255,194,2,0,1,190,0,26, +0,31,0,36,0,0,19,54,31,1,22,23,22,29,1,20,7,6,15,1,6,47,1,38,39,38,61,1,52,55,54,63, +1,23,7,23,55,39,19,55,53,7,21,235,21,22,192,18,12,12,12,12,18,192,22,21,193,19,11,12,12,11,19,193, +21,174,174,174,174,32,160,160,1,186,8,8,68,7,17,16,21,242,21,16,17,7,68,8,8,68,7,17,16,21,242,21, +16,17,7,68,60,62,62,62,62,254,143,58,188,58,188,0,0,7,0,0,255,192,2,64,1,192,0,35,0,42,0,47, +0,54,0,59,0,66,0,74,0,0,19,55,54,31,1,22,23,21,50,51,23,22,23,21,6,15,1,6,47,1,7,6, +47,1,38,39,53,54,63,1,50,51,53,54,55,49,23,38,15,1,23,55,39,23,53,7,21,55,7,38,15,1,23,55, +39,23,55,53,7,21,55,23,55,39,38,15,1,23,53,7,21,55,54,53,49,172,96,20,20,96,34,2,2,2,96,34, +2,1,32,96,23,22,114,113,23,22,97,32,1,2,34,96,2,2,2,34,119,4,2,78,80,82,78,101,82,82,237,4, +2,78,81,81,78,19,82,82,169,81,81,78,4,2,78,185,82,77,5,1,152,36,8,8,36,15,38,112,37,15,38,119, +35,16,42,10,10,49,49,10,10,42,16,35,119,38,15,37,112,38,15,9,1,1,29,32,32,29,162,90,32,89,31,40, +1,1,30,31,31,30,204,36,96,32,100,174,31,31,30,1,1,30,133,91,32,100,34,2,5,0,0,0,0,3,0,0, +255,203,2,0,1,192,0,37,0,72,0,109,0,0,55,22,7,49,6,47,1,7,6,23,22,23,51,50,23,22,21,20, +7,6,43,1,38,39,38,39,38,63,1,39,38,55,54,63,1,54,31,1,55,23,7,6,23,22,31,1,22,63,1,54, +39,38,15,1,39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,54,51,50,31,1,39,38,39,38,7,6,7,6, +31,1,22,7,6,7,35,53,38,39,38,15,1,6,31,1,22,55,54,55,53,51,54,55,54,55,54,39,180,3,12,12, +15,24,51,10,9,9,19,32,14,9,9,9,9,14,32,38,25,26,6,6,20,51,25,13,2,3,15,92,14,5,21,103, +41,24,13,2,3,15,92,14,5,21,3,12,12,15,24,42,31,50,50,31,8,7,3,3,11,12,12,13,7,8,10,17, +17,10,214,17,7,13,12,12,11,3,3,7,17,10,9,9,19,96,1,14,14,12,66,10,10,66,12,14,14,1,96,38, +25,26,6,6,20,205,16,9,9,8,15,81,17,16,15,1,9,9,14,14,9,9,1,23,23,33,34,33,81,15,10,15, +14,5,21,2,14,91,164,66,15,10,14,15,5,21,2,14,91,17,8,9,8,15,66,45,45,12,12,12,12,8,7,3, +3,11,12,15,15,222,27,11,3,3,7,7,13,12,12,27,17,16,15,1,29,16,6,6,11,67,11,11,67,11,6,6, +16,29,1,23,23,33,34,33,0,4,0,0,255,224,2,0,1,160,0,43,0,52,0,70,0,88,0,0,63,1,54,55, +54,59,1,50,23,22,31,1,22,23,22,29,1,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39, +38,61,1,52,55,54,55,49,55,33,39,38,39,35,6,15,2,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39, +38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,40,35,10,25,24,31,182,31,24,25,10,35, +18,11,11,9,9,14,32,14,9,9,254,192,9,9,14,32,14,9,9,11,11,18,69,1,38,26,8,22,182,22,8,26, +13,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9,14,14,9,9,9,9,14,251,101,29,17,18, +18,17,29,101,7,16,16,20,192,14,9,9,9,9,14,48,48,14,9,9,9,9,14,192,20,16,16,7,5,75,20,1, +1,20,75,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,4,0,32,255,192,2,32,1,192,0,55,0,64,0,82,0,100,0,0,1,50,23,49,22,29,1,49,22,23,22,31, +1,22,23,22,29,1,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39,38,61,1,52,55,54,63, +1,54,55,54,55,49,53,52,55,54,59,1,7,6,15,1,33,39,38,39,35,7,50,55,49,54,53,52,39,38,35,34, +7,6,21,20,23,22,51,37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,96,14,9,9,29,23, +23,10,35,18,11,11,9,9,14,32,14,9,9,254,192,9,9,14,32,14,9,9,11,11,18,35,10,23,23,29,9,9, +14,128,155,22,8,26,1,38,26,8,22,182,69,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9, +14,14,9,9,9,9,14,1,192,9,9,14,32,2,17,17,28,101,7,16,16,20,192,14,9,9,9,9,14,48,48,14, +9,9,9,9,14,192,20,16,16,7,101,28,17,17,2,32,14,9,9,128,1,20,75,75,20,1,224,9,9,14,14,9, +9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,1,0,0,255,192,1,192,1,192,0,50, +0,0,37,7,21,20,7,6,35,34,39,38,61,1,35,38,39,38,63,1,35,38,39,38,63,1,35,38,39,38,63,1, +54,51,50,31,1,22,7,6,7,35,23,22,7,6,7,35,23,22,7,6,7,1,158,158,9,9,14,14,9,9,159,22, +8,8,13,69,15,19,8,7,12,60,11,16,7,6,10,135,8,11,11,8,135,10,6,7,16,11,61,11,7,8,19,15, +69,13,8,9,22,1,1,32,14,9,9,9,9,14,32,1,19,18,18,80,1,16,16,16,71,1,12,12,12,147,8,8, +147,12,12,12,1,71,16,16,16,1,80,18,18,18,1,0,0,3,0,0,255,192,1,192,1,192,0,18,0,38,0,57, +0,0,1,21,6,7,6,7,38,39,38,39,53,54,55,54,55,22,23,22,23,7,54,55,21,6,7,6,7,38,39,38, +39,53,22,23,22,23,54,55,49,5,22,23,54,55,54,55,21,6,7,6,7,38,39,38,39,53,22,23,1,192,2,64, +63,95,95,63,64,2,2,64,63,95,95,63,64,2,55,31,24,2,64,63,95,95,63,64,2,23,32,70,99,99,70,254, +174,70,99,99,70,31,24,2,64,63,95,95,63,64,2,23,32,1,112,48,34,23,22,1,1,22,23,34,48,34,23,22, +1,1,22,23,34,135,11,18,102,34,23,22,1,1,22,23,34,102,18,11,24,1,1,24,160,24,1,1,24,11,18,86, +34,23,22,1,1,22,23,34,86,18,11,0,0,7,0,0,255,192,1,128,1,192,0,7,0,16,0,39,0,58,0,75, +0,97,0,101,0,0,55,35,53,51,22,23,6,7,55,51,22,23,21,6,7,35,53,19,21,20,23,22,59,1,17,6, +7,6,7,33,38,39,38,39,17,54,55,54,55,51,7,6,7,21,22,23,54,55,53,51,54,55,54,55,38,39,38,39, +35,23,22,23,51,54,55,54,55,53,38,39,38,39,35,6,7,21,55,6,7,21,22,23,54,55,53,51,54,55,38,39, +35,53,51,54,55,38,39,35,39,23,35,53,88,8,8,22,2,2,22,104,8,15,1,1,15,8,32,9,9,14,128,1, +18,18,27,255,0,27,18,18,1,1,18,18,27,160,160,15,1,1,15,15,1,8,24,16,15,1,1,15,16,24,24,96, +1,15,24,20,14,13,1,1,13,14,20,24,15,1,128,15,1,1,15,15,1,32,15,1,1,15,32,32,15,1,1,15, +48,32,128,128,144,48,2,22,22,2,48,1,15,64,15,1,96,1,0,128,14,9,9,254,224,27,18,18,1,1,18,18, +27,1,128,27,18,18,1,224,1,15,128,15,1,1,15,32,1,15,16,24,24,16,15,1,144,15,1,1,13,14,20,64, +20,14,13,1,1,15,128,144,1,15,128,15,1,1,15,48,1,15,15,1,32,1,15,15,1,224,128,128,0,3,0,0, +255,192,1,128,1,192,0,22,0,56,0,60,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17, +35,34,39,38,53,23,51,22,15,1,6,7,35,38,47,1,7,6,43,1,38,47,1,38,55,51,22,31,1,55,54,59, +1,22,31,1,55,54,55,39,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,58, +23,13,1,43,2,9,30,9,2,30,30,3,8,29,10,2,43,1,13,23,10,2,24,28,2,9,30,9,2,28,24,2, +10,26,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,112,2,13,184,8,1, +1,8,110,109,10,1,8,184,13,2,1,8,103,103,9,1,8,103,103,8,1,240,128,128,0,3,0,0,255,192,1,128, +1,192,0,22,0,59,0,63,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38, +53,23,7,23,22,7,6,7,35,34,47,1,7,6,43,1,38,39,38,63,1,39,38,55,54,55,51,50,31,1,55,54, +59,1,22,23,22,7,3,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,48,48, +49,5,5,4,10,26,9,5,27,27,5,9,26,10,4,5,5,49,49,5,5,4,10,26,9,5,27,27,5,9,26,10, +4,4,5,16,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,136,80,80,8, +8,7,1,8,44,44,8,1,7,8,8,80,80,8,8,7,1,8,44,44,8,1,7,8,8,1,8,128,128,0,0,0, +0,4,0,0,255,192,1,128,1,192,0,3,0,26,0,47,0,59,0,0,1,21,51,39,7,53,35,6,7,6,7,17, +22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,23,22,7,49,6,7,35,21,6,7,35,38,39,53,54,55,51, +22,23,22,23,7,51,50,55,54,53,52,39,38,43,1,21,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32, +20,14,13,1,127,14,10,9,56,2,22,22,34,44,1,15,16,15,1,1,15,72,30,23,23,4,120,44,12,8,8,8, +8,12,44,1,192,128,128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,180,35,24,24, +1,40,15,1,1,15,176,15,1,1,18,19,30,36,8,8,12,12,8,8,56,0,0,0,0,4,0,0,255,192,1,128, +1,192,0,22,0,40,0,62,0,66,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34, +39,38,53,7,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,23,6,43,1,34,39,38,63,1,54,51, +50,31,1,55,54,51,50,31,1,22,7,3,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127, +14,10,9,128,14,9,9,9,9,14,14,9,9,9,9,14,222,5,9,224,9,5,4,5,53,4,9,9,5,13,45,5, +9,8,5,85,5,4,62,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,96, +9,9,14,14,9,9,9,9,14,14,9,9,216,8,8,9,8,80,7,7,20,68,7,7,128,8,9,1,184,128,128,0, +0,7,0,0,255,192,1,128,1,192,0,3,0,26,0,31,0,36,0,41,0,54,0,65,0,0,1,21,51,39,7,53, +35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,39,51,21,35,53,21,51,21,35,53,21, +51,21,35,53,23,38,39,49,38,63,1,51,23,22,7,6,7,55,35,6,7,22,23,51,54,55,38,39,1,0,128,128, +32,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,128,64,64,64,64,64,64,32,31,18,19,5, +31,64,31,5,18,19,31,16,32,15,1,1,15,32,15,1,1,15,1,192,128,128,128,128,1,13,14,20,254,96,20,14, +13,1,1,13,14,20,1,48,9,9,14,96,32,32,64,32,32,64,32,32,255,1,22,22,30,116,117,30,22,21,1,79, +1,15,15,1,1,15,15,1,0,5,0,0,255,192,1,128,1,192,0,22,0,42,0,61,0,85,0,89,0,0,19,53, +35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,3,6,7,49,6,47,1,35,38,39,53, +54,55,51,55,54,23,22,23,21,55,34,39,38,55,54,53,52,39,38,55,54,23,22,23,20,7,6,35,55,20,7,49, +6,7,6,35,34,39,38,55,54,55,38,39,38,55,54,23,22,23,22,21,3,21,51,39,224,176,20,14,13,1,1,13, +14,20,1,32,20,14,13,1,127,14,10,9,48,1,6,7,6,36,44,11,1,1,11,44,36,6,7,6,1,48,7,5, +9,10,11,11,10,9,11,12,20,1,21,5,6,96,15,14,26,4,5,8,5,7,11,40,1,1,40,11,7,9,13,26, +14,15,64,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,254,236,8,3,3, +6,36,1,11,56,11,1,36,6,3,3,8,136,16,6,11,11,10,14,14,10,11,11,10,8,20,28,28,20,4,52,32, +27,28,18,3,7,13,9,29,50,49,30,9,13,11,7,18,28,27,32,1,80,128,128,0,0,4,0,0,255,192,1,128, +1,192,0,3,0,26,0,48,0,61,0,0,1,21,51,39,7,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54, +55,17,35,34,39,38,53,17,20,7,49,6,43,1,34,39,38,61,1,52,55,54,59,1,50,23,22,29,1,55,21,6, +7,6,47,1,53,55,54,23,22,23,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14, +10,9,9,9,14,96,14,9,9,9,9,14,96,14,9,9,96,1,7,8,8,40,40,8,8,7,1,1,192,128,128,128, +128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,255,0,14,9,9,9,9,14,96,14,9,9, +9,9,14,96,99,102,10,4,4,4,25,80,25,4,4,4,10,0,0,0,0,4,0,0,255,192,1,128,1,192,0,22, +0,39,0,56,0,60,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,7, +22,7,6,35,34,47,1,38,63,1,54,23,22,15,1,23,55,22,15,1,6,35,34,39,38,63,1,39,38,55,54,31, +1,3,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,70,12,12,6,8,8,6, +48,12,12,48,14,14,12,12,34,34,152,12,12,48,6,8,8,6,12,12,34,34,12,12,14,14,48,50,128,128,1,64, +128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,226,14,14,6,6,48,14,14,48,12,12,14, +14,34,34,48,14,14,48,6,6,14,14,34,34,14,14,12,12,48,1,50,128,128,0,0,0,6,0,0,255,192,2,0, +1,192,0,57,0,68,0,80,0,92,0,103,0,121,0,0,37,22,21,49,20,7,6,35,34,47,1,6,7,38,39,7, +6,35,34,39,38,53,52,63,1,38,39,54,55,39,38,53,52,55,54,51,50,31,1,54,55,22,23,55,54,51,50,23, +22,21,20,15,1,22,23,6,7,23,39,6,35,34,39,7,22,23,54,55,39,55,38,39,7,22,21,20,7,23,54,55, +53,39,6,7,23,54,55,22,23,55,38,39,35,7,38,39,54,55,39,6,7,22,23,63,1,6,7,49,6,7,22,23, +22,51,50,55,54,53,52,39,38,39,1,215,9,9,10,13,13,10,13,65,92,89,67,12,10,13,13,10,9,9,13,52, +2,2,52,13,9,9,10,13,13,10,12,67,89,92,65,13,10,13,13,10,9,9,13,52,2,2,52,13,162,24,30,28, +24,58,48,62,64,48,58,139,1,34,58,13,13,58,34,1,193,62,48,58,24,28,30,24,58,48,63,1,97,14,1,1, +14,58,35,2,2,35,58,97,20,13,14,1,1,14,13,20,21,14,14,14,14,21,23,10,13,13,10,9,9,13,52,2, +2,52,13,9,9,10,13,13,10,13,65,92,89,67,12,10,13,13,10,9,9,13,52,2,2,52,13,9,9,10,13,13, +10,12,67,89,92,65,13,70,13,13,58,34,1,1,34,58,100,62,48,58,24,29,29,24,58,48,63,1,192,2,35,58, +14,1,1,14,58,35,2,246,24,30,28,24,58,48,62,64,48,58,102,1,14,13,20,21,13,14,14,13,21,20,13,14, +1,0,0,0,0,1,0,0,255,193,2,0,1,182,0,54,0,0,19,22,7,49,6,7,6,7,6,7,22,23,22,23, +54,55,54,55,38,39,38,39,38,39,38,55,54,55,54,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39, +54,55,54,55,54,23,22,23,49,223,3,6,6,13,61,37,38,1,2,54,54,82,82,54,54,2,1,38,37,61,13,6, +6,3,5,11,11,13,81,50,50,2,1,34,34,58,57,72,72,57,58,34,34,1,2,50,50,81,13,11,11,5,1,160, +13,12,11,4,19,49,49,66,82,54,54,2,2,54,54,82,66,49,49,19,4,11,12,13,13,6,6,4,25,65,66,88, +72,58,57,34,34,1,1,34,34,57,58,72,88,66,65,25,4,6,6,13,0,1,0,0,255,192,2,0,1,192,0,28, +0,0,1,3,6,7,6,35,34,47,1,7,6,35,38,39,53,52,55,19,1,39,38,39,52,55,37,54,23,22,7,2, +0,64,3,13,8,8,6,6,123,51,6,11,19,2,7,217,254,218,102,18,2,16,1,192,18,16,16,2,1,155,254,97, +15,8,4,2,51,76,10,2,19,96,11,9,1,23,254,248,42,8,21,20,10,255,9,11,11,20,0,0,0,2,0,0, +255,192,2,0,1,192,0,55,0,71,0,0,1,22,23,49,22,23,49,22,23,6,7,6,7,6,7,38,39,38,39,38, +55,54,55,54,23,22,23,54,55,54,55,38,39,38,39,6,7,23,22,7,6,7,35,38,39,53,54,55,54,31,1,54, +55,54,59,1,21,22,23,21,23,22,7,6,47,1,38,61,1,54,55,49,1,0,72,57,58,34,34,1,1,34,34,58, +57,72,83,63,11,2,3,8,8,12,13,11,48,62,82,54,54,2,2,54,54,82,82,54,31,11,6,5,17,110,22,2, +1,14,13,13,34,35,46,46,53,1,22,2,64,15,15,16,17,72,7,2,22,1,192,1,34,34,58,57,72,72,57,58, +34,34,1,1,45,9,12,12,11,11,3,2,8,33,1,2,54,54,82,82,54,54,2,2,54,31,12,14,14,1,2,22, +110,17,5,6,11,34,35,20,20,128,2,22,94,65,17,16,15,15,72,6,10,104,22,2,0,1,0,0,255,224,1,192, +1,160,0,85,0,0,37,20,7,49,6,43,1,34,39,38,53,52,55,54,59,1,53,35,21,51,50,23,22,21,20,7, +6,43,1,34,39,38,53,52,55,54,59,1,17,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7,6,43,1, +21,51,53,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7,6,43,1,17,51,50,23,22,21,1,192,9,9, +14,96,14,9,9,9,9,14,16,224,16,14,9,9,9,9,14,96,14,9,9,9,9,14,16,16,14,9,9,9,9,14, +96,14,9,9,9,9,14,16,224,16,14,9,9,9,9,14,96,14,9,9,9,9,14,16,16,14,9,9,0,14,9,9, +9,9,14,14,9,9,144,144,9,9,14,14,9,9,9,9,14,14,9,9,1,64,9,9,14,14,9,9,9,9,14,14, +9,9,112,112,9,9,14,14,9,9,9,9,14,14,9,9,254,192,9,9,14,0,0,0,0,1,0,32,255,224,1,192, +1,160,0,41,0,0,1,20,7,49,6,43,1,17,20,7,6,35,34,39,38,53,17,35,17,20,7,6,35,34,39,38, +61,1,35,38,39,38,39,38,55,54,55,51,50,23,22,21,1,192,9,9,14,32,9,9,13,13,10,10,32,9,9,13, +13,10,10,25,65,47,46,8,5,46,46,71,224,14,10,9,1,129,14,10,9,254,160,14,9,9,9,9,14,1,96,254, +160,14,9,9,9,9,14,96,1,40,40,63,74,50,50,2,9,9,13,0,0,6,0,0,255,208,2,0,1,176,0,38, +0,56,0,94,0,112,0,150,0,168,0,0,55,52,55,49,54,59,1,54,55,54,51,50,23,22,23,51,50,23,22,21, +20,7,6,43,1,6,7,6,35,34,39,38,39,35,34,39,38,53,49,51,52,39,49,38,35,34,7,6,21,20,23,22, +51,50,55,54,53,55,50,23,49,22,23,51,50,23,22,21,20,7,6,43,1,6,7,6,35,34,39,38,39,35,34,39, +38,53,52,55,54,59,1,54,55,54,51,23,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,53,55,50,23, +49,22,21,20,7,6,43,1,6,7,6,35,34,39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54,51,50,23, +22,23,51,5,20,23,49,22,51,50,55,54,53,52,39,38,35,34,7,6,21,0,9,9,14,55,9,20,19,25,25,19, +19,10,247,14,9,9,9,9,14,247,10,19,19,25,25,19,20,9,55,14,9,9,192,9,9,14,14,9,9,9,9,14, +14,9,9,160,25,19,19,10,55,14,9,9,9,9,14,55,10,19,19,25,25,19,20,9,247,14,9,9,9,9,14,247, +9,20,19,25,32,9,9,14,14,9,9,9,9,14,14,9,9,96,14,9,9,9,9,14,215,10,19,19,25,25,19,20, +9,87,14,9,9,9,9,14,87,9,20,19,25,25,19,19,10,215,254,192,9,9,14,14,9,9,9,9,14,14,9,9, +32,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,240,13,13,22,9,9,14,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,22,13,13,80,14, +9,9,9,9,14,14,9,9,9,9,14,192,9,9,14,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,22,13, +13,13,13,22,32,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,0,1,0,0,255,224,1,192,1,160,0,57, +0,0,37,7,22,7,20,21,20,21,22,7,23,54,55,22,23,22,23,6,7,6,7,38,39,38,39,52,55,39,6,7, +38,39,38,39,54,55,54,55,22,23,55,38,53,54,55,54,55,22,23,22,23,6,7,6,7,38,39,49,1,29,94,1, +1,1,1,94,27,40,41,27,27,1,1,27,27,41,41,27,27,1,1,94,27,40,41,27,27,1,1,27,27,41,40,27, +94,1,1,27,27,41,41,27,27,1,1,27,27,41,40,27,251,47,3,4,2,3,2,2,4,4,47,26,1,1,27,27, +41,41,27,27,1,1,27,27,41,7,5,47,26,1,1,27,27,41,41,27,27,1,1,26,47,7,5,41,27,27,1,1, +27,27,41,41,27,27,1,1,26,0,0,0,0,2,0,0,255,224,1,192,1,160,0,21,0,72,0,0,1,22,23,49, +22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,6,7,49,6,7,20,21,7,38,39,6,7,6, +7,22,23,22,23,54,55,23,20,21,22,23,22,23,54,55,54,55,38,39,38,39,34,7,39,55,22,51,54,55,54,55, +38,39,38,39,49,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,64,27,18,18,1, +81,19,28,27,18,18,1,1,18,18,27,28,19,81,1,18,18,27,27,18,18,1,1,18,18,27,24,17,85,85,17,24, +27,18,18,1,1,18,18,27,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,1, +18,18,27,4,3,45,19,1,1,18,18,27,27,18,18,1,1,20,46,3,4,27,18,18,1,1,18,18,27,27,18,18, +1,15,47,46,14,1,18,18,27,27,18,18,1,0,0,0,0,3,0,0,255,192,2,0,1,192,0,24,0,53,0,74, +0,0,1,23,22,21,6,15,2,6,35,34,47,2,38,53,38,63,2,54,51,50,31,1,7,22,21,49,20,15,1,22, +21,6,7,6,7,38,39,38,39,54,55,54,55,22,23,55,54,51,50,31,1,7,54,55,38,39,35,6,7,6,7,21, +22,23,54,55,53,54,55,54,55,51,1,203,46,7,1,6,46,16,3,8,7,3,17,46,7,1,8,46,17,3,7,7, +4,16,52,9,9,3,12,2,59,59,88,88,59,59,2,2,59,59,88,37,34,2,10,13,13,10,80,200,15,1,1,15, +8,57,39,38,2,2,14,15,1,1,30,30,43,8,1,140,17,3,8,7,3,17,46,7,7,46,17,3,7,8,3,17, +45,7,7,45,133,10,13,13,10,3,33,36,89,59,59,2,2,59,59,89,88,59,59,2,1,12,3,9,9,80,7,1, +15,15,1,1,39,38,58,8,15,1,1,15,8,44,30,29,1,0,0,0,0,3,0,0,255,192,1,255,1,192,0,5, +0,32,0,55,0,0,55,23,51,55,39,7,55,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54, +55,38,39,38,39,38,39,19,39,7,6,35,34,47,1,7,38,39,55,39,54,55,23,55,22,23,7,23,6,7,177,31, +96,30,78,79,78,71,57,58,34,34,1,1,34,34,58,57,72,71,58,57,34,34,1,1,34,34,57,58,72,162,86,25, +24,26,26,24,25,86,27,3,69,27,32,49,68,68,49,32,27,69,3,27,219,91,91,57,57,229,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,71,71,58,58,35,34,1,254,151,1,81,7,7,81,1,42,53,50,80,40,19, +51,51,19,40,80,50,53,42,0,13,0,0,255,192,1,255,1,192,0,12,0,25,0,38,0,51,0,64,0,77,0,90, +0,103,0,116,0,129,0,142,0,155,0,184,0,0,37,21,22,23,51,54,55,53,38,39,35,6,7,51,21,22,23,51, +54,55,53,38,39,35,6,7,39,35,6,7,21,22,23,51,54,55,53,54,39,7,35,6,7,21,22,23,51,54,55,53, +38,39,55,21,22,23,51,54,55,53,38,39,35,6,7,55,35,6,7,21,22,23,51,54,55,53,54,39,51,35,6,7, +21,22,23,51,54,55,53,54,39,7,35,6,7,21,22,23,51,54,55,53,52,47,1,35,6,7,21,22,23,51,54,61, +1,54,39,5,35,6,7,21,22,23,51,54,55,53,52,39,37,21,22,23,51,54,55,53,38,39,35,6,7,55,35,6, +7,21,22,23,51,54,55,53,38,39,37,38,39,49,38,7,49,6,7,6,31,1,22,63,1,54,53,39,54,23,7,6, +31,1,22,63,1,54,39,1,15,1,11,40,11,1,1,11,40,10,2,96,1,11,40,11,1,1,11,40,10,2,92,40, +11,1,1,11,39,11,1,1,12,191,40,11,1,1,11,40,11,1,1,11,91,1,11,40,11,1,1,11,40,10,2,196, +40,11,1,1,10,39,11,1,2,12,96,40,11,1,1,11,39,11,1,1,12,96,232,11,1,1,11,232,11,1,12,192, +40,11,1,1,11,39,11,2,12,1,32,40,11,1,1,11,40,11,1,12,254,125,1,11,40,11,1,1,11,40,11,1, +4,40,11,1,1,11,40,11,1,1,11,1,165,70,90,89,89,90,70,12,9,42,11,18,85,15,6,87,87,5,1,15, +85,18,11,42,9,12,84,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,108,1,11,40,11, +1,1,11,40,11,1,192,1,11,40,11,1,1,11,40,11,1,84,40,11,1,1,11,40,11,1,1,11,108,1,11,40, +11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,192,1,11,40,11,1,1,11,40,11,1,192,1,11,40, +11,1,1,11,40,11,1,192,1,11,40,11,1,1,11,40,11,1,84,40,11,1,1,11,40,11,1,1,11,108,1,11, +40,11,1,1,11,40,11,1,153,69,23,22,22,23,69,14,16,67,15,5,34,8,17,53,29,29,53,18,7,34,6,16, +67,16,14,0,0,5,0,0,255,224,2,0,1,160,0,8,0,36,0,62,0,67,0,76,0,0,1,38,39,35,6,7, +21,51,53,5,6,7,49,6,7,49,6,7,49,6,7,21,20,23,22,59,1,50,55,54,53,17,35,34,7,6,7,33, +38,39,49,38,43,1,17,20,23,22,59,1,50,55,54,61,1,38,39,38,39,38,39,38,39,7,51,53,35,21,3,35, +6,7,21,51,53,38,39,1,160,1,15,64,15,1,96,254,160,1,8,8,11,13,10,11,2,9,9,14,128,14,9,9, +96,14,9,8,1,1,128,1,8,9,14,96,9,9,14,128,14,9,9,2,11,10,13,11,8,8,1,224,64,64,48,64, +15,1,96,1,15,1,144,15,1,1,15,48,48,112,32,23,24,22,25,33,33,52,44,14,9,9,9,9,14,1,64,9, +10,13,13,10,9,254,192,14,9,9,9,9,14,44,52,33,33,25,22,24,23,32,128,160,160,1,0,1,15,48,48,15, +1,0,0,0,0,3,0,0,255,192,1,128,1,192,0,12,0,25,0,57,0,0,19,50,23,49,22,29,1,35,53,52, +55,54,59,1,50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,35,21,6,7,6,7,21, +35,53,38,39,38,39,53,34,39,38,53,52,55,54,51,33,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14, +64,14,9,9,9,9,14,1,36,35,56,64,56,35,36,1,14,9,9,9,9,14,1,64,1,192,9,9,14,96,96,14, +9,9,9,9,14,96,96,14,9,9,160,9,9,14,14,9,9,32,59,43,42,13,99,99,13,42,43,59,32,9,9,14, +14,9,9,0,0,6,0,0,255,224,2,0,1,160,0,31,0,42,0,53,0,64,0,75,0,88,0,0,1,33,34,7, +6,21,17,6,7,38,39,17,35,34,7,6,21,17,22,23,22,23,33,54,55,54,55,17,52,39,38,35,3,35,38,39, +54,55,51,22,23,6,7,53,35,38,39,54,55,51,22,23,6,7,23,35,38,39,54,55,51,22,23,6,7,53,35,38, +39,54,55,51,22,23,6,7,55,6,7,33,38,39,53,54,55,33,22,23,21,1,224,254,160,14,9,9,1,15,15,1, +32,14,9,9,1,18,18,27,1,128,27,18,18,1,9,9,14,208,96,15,1,1,15,96,15,1,1,15,96,15,1,1, +15,96,15,1,1,15,160,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,16,1,15,255,0, +15,1,1,15,1,0,15,1,1,160,9,9,14,254,176,15,1,1,15,1,48,9,9,14,254,224,27,18,18,1,1,18, +18,27,1,96,14,9,9,254,128,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,96,1,15,15,1,1, +15,15,1,96,1,15,15,1,1,15,15,1,112,15,1,1,15,96,15,1,1,15,96,0,0,3,0,0,255,225,2,128, +1,160,0,17,0,47,0,81,0,0,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,55,34,7,49, +6,7,6,7,6,23,22,23,22,55,54,55,22,23,22,51,50,55,54,39,38,39,38,39,38,35,37,38,39,49,38,35, +34,7,6,7,6,21,20,23,22,51,50,55,54,55,54,51,50,23,22,23,22,51,50,55,54,53,52,39,1,63,27,18, +18,1,1,18,18,27,27,18,18,1,1,17,18,28,1,53,49,49,39,10,1,1,9,9,13,13,10,64,84,84,64,10, +11,14,10,9,1,1,9,40,49,49,53,1,54,63,80,79,88,88,79,80,63,10,9,10,12,13,10,54,68,69,75,75, +68,68,55,10,12,13,10,9,10,97,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,160,19,18,35,10,13, +13,10,10,1,1,9,55,1,1,55,8,11,10,13,13,9,35,19,19,34,61,32,32,32,32,61,9,13,13,10,10,9, +53,27,27,28,27,52,9,10,10,13,13,9,0,10,0,0,255,192,1,128,1,192,0,20,0,33,0,46,0,59,0,72, +0,85,0,98,0,111,0,124,0,137,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,5,54,55,51,22,23,21,6,7,35,38,39,53,21,54,55,51,22,23,21,6,7,35,38,39,53,23,6,7,35,38, +39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22, +23,21,23,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35, +38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,1,80,254,224,20,14,13,1,1,13, +14,20,1,32,20,14,13,1,1,13,14,20,254,240,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32, +15,1,160,1,15,128,15,1,1,15,128,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15, +1,96,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1, +1,15,224,15,1,1,15,224,15,1,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1, +208,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32,15,1,1,15, +32,96,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1,1,15,32,192,15,1,1,15,32,15,1,1, +15,32,96,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,64,15,1, +1,15,64,0,0,3,0,0,255,192,2,128,1,192,0,37,0,49,0,59,0,0,19,54,55,53,52,55,54,51,50,23, +22,29,1,22,23,22,23,21,22,31,1,22,7,48,49,34,31,1,22,7,6,39,1,38,55,54,31,1,7,53,23,33, +38,39,38,63,1,54,55,49,19,34,39,38,53,51,20,7,6,35,186,36,66,9,9,14,14,9,9,56,35,36,1,1, +48,7,13,8,1,1,90,16,12,15,19,253,176,16,12,15,19,147,26,246,254,234,21,8,8,13,8,47,1,160,26,19, +19,128,19,19,26,1,71,55,15,19,14,9,9,9,9,14,19,12,43,43,59,19,73,54,9,15,19,1,71,15,19,16, +12,1,208,15,19,16,12,116,106,5,194,1,18,19,15,9,54,73,254,227,19,19,26,26,19,19,0,0,0,2,0,0, +255,192,1,192,1,192,0,26,0,40,0,0,19,54,55,51,22,31,1,51,50,23,22,21,20,7,6,35,33,34,39,38, +53,52,55,54,59,1,55,1,6,7,49,6,43,1,34,39,38,39,3,33,3,135,9,20,120,20,9,7,96,14,9,9, +9,9,14,254,128,14,9,9,9,9,14,96,7,1,4,2,13,14,19,246,19,14,13,2,22,1,129,21,1,174,17,1, +1,17,14,9,9,14,14,9,9,9,9,14,14,9,9,14,254,64,20,13,13,13,13,20,1,82,254,174,0,2,0,0, +255,192,2,0,1,192,0,26,0,73,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54, +55,38,39,38,39,38,39,3,22,51,48,49,48,49,50,55,54,23,22,7,6,7,48,49,48,49,38,39,38,53,52,55, +54,55,48,49,48,49,22,23,22,7,6,39,38,35,48,49,34,7,6,21,20,23,1,0,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,57,24,32,33,23,17,17,14,14,37,53,52,38,37,37,38, +52,53,37,14,14,17,17,23,33,32,24,23,23,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57, +72,72,57,58,34,34,1,254,199,23,23,14,13,17,17,37,1,1,37,39,51,51,39,37,1,1,37,17,16,14,14,23, +23,25,32,32,25,0,0,0,0,2,0,0,255,192,2,0,1,192,0,31,0,57,0,0,1,22,21,49,20,15,1,23, +22,21,20,7,6,35,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,49,1,55,23,7,6,29,1,51, +50,63,1,23,7,6,43,1,7,6,39,38,63,1,53,52,55,49,1,227,29,29,102,10,9,9,10,13,13,10,160,9, +9,10,13,13,10,9,102,30,40,40,31,254,84,121,45,120,5,36,7,4,121,45,120,24,33,42,40,22,19,16,12,27, +23,1,163,31,40,40,30,102,9,10,13,13,10,9,9,160,10,13,13,10,9,9,10,102,29,29,254,218,120,45,121,4, +7,36,5,120,45,121,23,27,12,16,19,22,40,42,33,24,0,2,0,32,255,192,2,64,1,192,0,15,0,45,0,0, +55,54,63,1,54,23,22,23,22,23,22,15,1,6,7,39,23,6,7,49,6,7,35,34,39,38,53,52,55,54,59,1, +54,55,54,39,38,53,54,55,54,55,23,20,21,49,224,1,37,237,15,16,17,14,13,2,2,10,161,25,43,115,96,1, +32,31,48,144,14,9,9,9,9,14,5,13,8,8,1,1,1,30,31,46,116,185,47,29,177,11,1,1,12,12,17,17, +15,250,36,7,104,137,48,31,32,1,9,9,14,14,9,9,1,11,11,13,6,6,46,32,31,3,105,3,4,0,0,0, +0,5,0,0,255,192,1,192,1,192,0,23,0,47,0,115,0,156,0,180,0,0,1,50,55,49,54,53,38,39,38,39, +38,39,48,49,6,7,6,7,6,7,20,23,22,51,35,50,55,49,54,53,38,39,38,39,38,39,48,49,6,7,6,7, +6,7,20,23,22,51,23,55,38,39,35,6,7,21,35,53,38,39,35,6,7,21,35,53,38,39,35,6,7,21,6,7, +6,7,21,22,23,54,55,54,55,54,23,22,23,22,23,54,55,54,55,54,23,22,23,22,23,54,55,54,55,54,23,22, +23,22,23,54,55,53,38,39,38,39,7,6,7,49,6,7,38,39,38,39,6,7,6,7,38,39,38,39,6,7,6,7, +38,39,21,20,23,22,51,33,50,55,54,61,1,6,35,38,39,38,39,1,50,55,49,54,53,38,39,38,39,38,39,48, +49,6,7,6,7,6,7,20,23,22,51,1,96,17,11,12,1,9,10,10,9,1,1,9,10,10,9,1,12,11,17,128, +17,11,12,1,9,10,10,9,1,1,9,10,10,9,1,12,11,17,159,1,1,15,32,15,1,64,1,15,32,15,1,64, +1,15,32,15,1,27,18,18,1,15,17,16,15,15,7,11,11,6,15,16,16,16,15,15,7,11,11,6,15,16,16,16, +15,15,7,11,11,6,15,16,16,17,15,1,18,18,28,31,11,16,17,20,20,17,16,11,11,16,17,20,20,17,16,11, +11,16,17,20,17,15,9,9,14,1,128,14,9,9,15,17,20,17,16,11,255,0,17,11,12,1,9,10,10,9,1,1, +9,10,10,9,1,12,11,17,1,81,12,11,17,12,16,17,12,13,1,1,13,13,17,16,12,17,11,11,12,11,17,12, +16,17,12,13,1,1,13,13,17,16,12,17,11,11,112,63,15,1,1,15,64,64,15,1,1,15,64,64,15,1,1,15, +64,1,18,18,26,69,10,1,1,10,10,6,10,10,7,10,9,1,1,10,10,6,10,10,7,10,9,1,1,10,10,6, +10,10,7,10,9,1,1,10,69,27,18,18,1,150,9,9,8,1,1,8,9,9,9,9,8,1,1,8,9,9,9,9, +8,1,1,6,87,14,9,9,9,9,14,87,7,1,9,8,9,1,6,12,11,17,12,16,17,12,13,1,1,13,13,17, +16,12,17,11,11,0,0,0,0,2,0,0,255,224,2,0,1,160,0,26,0,59,0,0,55,22,23,33,50,23,22,21, +20,7,6,35,33,38,39,38,39,17,52,55,54,51,50,23,22,21,17,55,53,52,63,1,54,51,50,31,1,22,51,22, +63,1,54,51,22,31,1,22,29,1,20,7,6,35,33,34,39,38,39,51,64,1,15,1,144,14,9,9,9,9,14,254, +112,34,23,22,1,9,9,14,14,9,9,64,8,79,11,14,14,9,40,7,11,10,8,21,10,13,14,10,65,8,9,9, +14,254,223,13,9,9,1,1,48,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14,9,9,9,9,14,254,176,80, +84,12,10,90,11,12,47,8,1,8,21,9,1,10,77,9,12,68,14,9,9,9,9,14,0,3,0,32,255,192,2,62, +1,192,0,12,0,32,0,41,0,0,1,54,55,22,23,22,23,22,23,6,7,35,53,5,54,55,49,54,55,50,23,21, +23,22,7,6,7,38,39,38,39,38,39,5,22,21,6,7,6,47,1,51,1,48,1,15,63,50,51,29,30,1,2,15, +223,254,240,2,58,57,89,17,1,157,10,12,60,79,67,54,54,32,32,1,2,14,16,14,60,11,10,159,238,1,175,15, +2,1,30,29,51,50,63,15,1,223,255,93,65,66,14,16,238,157,12,11,43,1,1,32,32,54,54,67,16,2,15,86, +56,8,8,159,0,2,0,0,255,224,2,0,1,160,0,26,0,58,0,0,55,22,23,33,50,23,22,21,20,7,6,35, +33,38,39,38,39,17,52,55,54,51,50,23,22,21,17,37,6,35,49,34,47,1,7,6,35,34,39,38,53,52,63,1, +54,51,50,31,1,55,54,51,50,23,22,21,20,15,1,64,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1, +9,9,14,14,9,9,1,23,10,13,13,10,57,89,10,13,13,10,9,9,112,10,13,13,10,57,105,10,13,13,10,9, +9,128,48,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14,9,9,9,9,14,254,176,121,9,9,58,90,9,9, +10,13,13,10,112,9,9,58,106,9,9,10,13,13,10,128,0,3,0,0,0,0,2,64,1,128,0,17,0,36,0,55, +0,0,55,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,23,35,38,39,38,39,54,55,54,55,51,22, +23,22,23,6,7,6,7,17,35,6,7,6,7,22,23,22,23,51,54,55,54,55,38,39,38,39,192,41,27,27,1,1, +27,27,41,41,27,27,1,1,27,27,41,192,192,82,54,54,2,2,54,54,82,192,82,54,54,2,2,54,54,82,192,54, +37,36,1,1,36,37,54,192,54,37,36,1,1,36,37,54,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27, +1,96,2,54,54,82,82,54,54,2,2,54,54,82,82,54,54,2,1,64,1,36,37,54,54,37,36,1,1,36,37,54, +54,37,36,1,0,2,0,0,0,0,2,64,1,128,0,19,0,37,0,0,1,22,23,49,22,23,6,7,6,7,35,38, +39,38,39,54,55,54,55,51,17,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,128,82,54,54,2, +2,54,54,82,192,82,54,54,2,2,54,54,82,192,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,128, +2,54,54,82,82,54,54,2,2,54,54,82,82,54,54,2,254,224,1,27,27,41,41,27,27,1,1,27,27,41,41,27, +27,1,0,0,0,5,0,0,255,224,2,128,1,160,0,61,0,86,0,108,0,113,0,117,0,0,1,22,31,1,54,51, +22,23,22,23,6,7,6,7,38,39,38,39,54,55,39,7,6,43,1,6,7,6,7,38,39,38,39,54,55,54,55,50, +23,55,39,35,38,39,54,55,51,22,31,1,51,39,35,34,39,38,53,52,55,54,59,1,19,22,23,49,22,23,54,55, +54,55,38,39,38,39,34,7,23,22,7,6,47,1,6,7,49,37,55,34,35,6,7,6,7,22,23,22,23,50,55,54, +55,35,38,39,38,55,49,55,49,39,7,51,39,23,55,35,1,91,18,10,98,19,20,54,37,36,1,1,36,37,54,54, +37,36,1,2,45,22,84,8,13,49,7,35,35,50,54,37,36,1,1,36,37,54,16,15,27,22,44,22,2,2,22,56, +11,9,27,149,34,27,10,7,7,7,7,10,36,93,1,20,20,31,31,20,20,1,1,20,20,31,6,5,32,9,19,20, +12,32,18,1,254,181,24,2,4,30,20,21,1,1,21,20,30,27,19,19,6,65,16,7,8,7,181,72,51,123,33,60, +49,109,1,160,1,16,180,5,1,36,37,54,54,37,36,1,1,36,37,54,63,36,40,143,12,48,32,31,1,1,36,37, +54,54,37,36,1,4,53,31,2,22,22,2,1,8,39,64,7,7,10,10,7,7,254,192,31,20,20,1,1,20,20,31, +31,20,20,1,1,60,20,12,9,19,59,19,29,23,49,1,20,20,31,31,20,20,1,16,15,25,1,12,12,14,9,101, +101,128,83,83,0,6,0,32,255,192,2,32,1,192,0,62,0,76,0,89,0,107,0,125,0,136,0,0,1,22,23,49, +22,23,21,50,23,22,29,1,20,7,6,35,21,20,7,6,35,21,20,7,6,43,1,34,39,38,61,1,35,21,20,7, +6,43,1,34,39,38,61,1,34,39,38,61,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,3,20,23,49,22, +59,1,53,35,34,7,6,29,1,23,51,50,55,54,61,1,52,39,38,43,1,21,7,50,55,49,54,53,52,39,38,35, +34,7,6,21,20,23,22,51,33,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,3,35,6,7,22,23, +51,54,55,38,39,1,32,102,60,61,1,14,9,9,9,9,14,9,9,14,9,9,14,32,14,9,9,192,9,9,14,32, +14,9,9,14,9,9,14,9,9,9,9,14,1,61,60,102,160,9,9,14,112,112,14,9,9,176,112,14,9,9,9,9, +14,112,160,14,9,9,9,9,14,14,9,9,9,9,14,1,32,14,9,9,9,9,14,14,9,9,9,9,14,64,160,15, +1,1,15,160,15,1,1,15,1,192,1,22,23,34,48,9,9,14,64,14,9,9,160,14,9,9,32,14,9,9,9,9, +14,32,32,14,9,9,9,9,14,32,9,9,14,160,9,9,14,64,14,9,9,48,34,23,22,1,255,0,14,9,9,160, +9,9,14,96,32,9,9,14,96,14,9,9,160,112,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9, +9,9,14,14,9,9,1,80,1,15,15,1,1,15,15,1,0,3,0,0,255,224,2,64,1,160,0,20,0,54,0,88, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,1,22,51,49,50,55,54,23,22, +7,6,35,34,39,38,53,38,55,54,51,50,23,22,7,6,39,38,35,34,7,6,21,20,23,51,22,51,49,50,55,54, +23,22,7,6,35,34,39,38,53,38,55,54,51,50,23,22,7,6,39,38,35,34,7,6,21,20,23,2,0,254,64,27, +18,18,1,1,18,18,27,1,192,27,18,18,1,1,18,18,27,254,169,14,20,19,14,17,17,14,14,29,38,39,29,28, +1,29,29,38,39,29,14,14,17,17,14,20,19,14,14,14,192,14,20,19,14,17,17,14,14,29,38,39,29,28,1,29, +29,38,39,29,14,14,17,17,14,20,19,14,14,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +27,18,18,1,254,254,14,14,14,14,17,17,28,28,28,40,40,28,28,28,17,17,14,14,14,14,14,20,20,14,14,14, +14,14,17,17,28,28,28,40,40,28,28,28,17,17,14,14,14,14,14,20,20,14,0,0,0,2,0,0,255,224,1,192, +1,160,0,35,0,71,0,0,19,22,23,49,22,23,21,20,7,6,35,34,39,38,61,1,38,39,38,39,35,17,20,7, +6,35,34,39,38,53,17,52,55,54,59,1,3,34,39,49,38,53,17,52,55,54,51,50,23,22,29,1,51,54,55,54, +55,17,52,55,54,51,50,23,22,21,17,6,7,6,7,35,192,54,37,36,1,9,9,14,14,9,9,1,18,18,27,128, +9,9,14,14,9,9,9,9,14,160,32,14,9,9,9,9,14,14,9,9,128,27,18,18,1,9,9,14,14,9,9,1, +36,37,54,160,1,160,1,36,37,54,160,14,9,9,9,9,14,160,27,18,18,1,254,160,14,9,9,9,9,14,1,128, +14,9,9,254,64,9,9,14,1,0,14,9,9,9,9,14,224,1,18,18,27,1,32,14,9,9,9,9,14,254,224,54, +37,36,1,0,0,4,0,0,255,192,2,61,1,192,0,28,0,53,0,71,0,89,0,0,19,22,31,1,33,22,23,22, +15,1,6,7,33,23,33,22,23,6,7,33,38,39,3,35,38,39,54,55,51,23,51,21,22,23,54,55,53,51,54,55, +38,39,35,53,38,39,6,7,21,35,6,7,22,23,3,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39, +33,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,96,19,5,1,1,165,16,9,9,3,54,8,23,254, +195,9,1,52,22,2,2,22,254,183,18,5,60,52,22,2,2,22,72,176,44,1,19,18,2,44,18,2,2,18,44,2, +18,19,1,44,19,1,1,19,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,128,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,1,192,1,19,12,1,12,12,16,192,22,1,48,2,22,22,2,1,18,1,61, +2,22,22,2,180,44,18,2,2,18,44,2,18,19,1,44,18,2,2,18,44,1,19,18,2,254,228,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,3,0,0, +255,192,2,61,1,192,0,46,0,64,0,82,0,0,19,54,55,51,22,31,1,51,21,39,38,7,6,31,1,22,63,1, +54,39,38,15,1,53,51,22,23,22,15,1,6,7,33,23,33,22,23,6,7,33,38,39,3,35,38,39,49,19,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,0,2,22,72,19,5,1,191,24,16,17,14,14,64,17,16,64,15,15,16,17,23,182,16,9,9,3,54,8,23,254, +195,9,1,52,22,2,2,22,254,183,18,5,60,52,22,2,224,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,168,22,2,1,19,12,102,23,14,14,17,16,64, +15,15,64,16,17,14,14,23,102,1,12,12,16,192,22,1,48,2,22,22,2,1,18,1,61,2,22,254,72,20,14,13, +1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0, +0,1,0,0,255,192,2,0,1,192,0,21,0,0,37,22,21,49,20,15,1,6,35,34,47,1,38,53,52,63,1,54, +51,50,31,1,1,244,12,12,216,12,16,16,12,216,12,12,216,12,16,16,12,216,220,12,16,16,12,216,12,12,216,12, +16,16,12,216,12,12,216,0,0,3,0,0,255,192,2,63,1,192,0,48,0,56,0,110,0,0,19,52,55,49,54,59, +1,50,23,22,29,1,51,22,23,22,23,21,23,22,23,22,15,1,6,7,38,39,38,35,34,7,6,7,38,47,1,38, +55,54,63,1,53,54,55,54,55,51,53,7,55,54,31,1,53,33,21,23,54,55,51,54,23,22,23,22,23,22,7,6, +7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49, +22,23,54,55,54,23,22,23,49,192,9,9,14,128,14,9,9,48,20,14,13,1,44,18,4,3,13,101,26,25,30,29, +17,20,20,17,26,33,25,26,101,13,3,4,18,44,1,13,14,20,48,32,108,20,20,108,255,0,224,42,35,1,20,19, +22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7, +7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,160,14,9,9,9,9,14,32,1,13,14,20,128,15,7,16,17, +14,92,15,1,1,20,12,12,19,2,1,15,92,14,17,16,7,16,128,20,14,13,1,31,187,36,7,7,36,91,91,229, +2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7, +7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,0,0,4,0,0,255,192,1,192,1,192,0,67, +0,72,0,77,0,103,0,0,37,55,54,39,38,43,1,54,53,52,39,52,53,54,55,52,39,38,39,38,39,38,39,6, +7,6,39,38,39,6,7,6,7,6,7,6,21,22,23,20,21,6,21,20,23,35,34,7,6,31,1,6,7,6,21,20, +23,22,51,33,50,55,54,53,52,39,38,39,7,39,31,1,7,51,39,63,1,7,19,20,7,49,6,43,1,38,39,38, +35,34,7,6,7,35,34,39,38,61,1,22,51,50,55,21,1,122,37,3,5,5,9,57,10,1,62,3,22,21,37,9, +15,14,21,15,12,26,26,12,15,21,14,15,8,37,22,22,3,62,1,10,58,9,4,5,3,37,32,19,19,10,10,15, +1,122,15,10,10,19,19,32,202,48,64,16,32,95,31,16,64,49,49,11,11,16,13,26,9,3,7,7,3,9,26,13, +16,11,11,42,54,54,42,109,93,8,7,7,22,26,4,4,2,2,14,22,12,10,10,7,34,27,27,1,1,10,17,17, +10,1,1,27,27,34,7,10,10,12,22,14,2,2,4,4,26,22,7,7,8,93,24,36,35,43,15,10,10,10,10,15, +43,35,36,24,140,191,32,32,127,127,32,32,191,1,37,16,11,11,2,23,7,7,23,2,11,11,16,16,6,6,16,0, +0,4,0,0,255,224,2,128,1,160,0,70,0,95,0,131,0,149,0,0,1,22,31,1,55,54,59,1,50,23,22,29, +1,20,7,6,43,1,23,54,51,22,23,22,23,6,7,6,7,38,39,38,39,54,55,39,6,7,6,21,20,23,35,54, +39,38,39,38,39,35,53,54,55,54,59,1,50,31,1,55,39,35,34,39,38,53,52,55,54,59,1,19,22,23,49,22, +23,54,55,54,55,38,39,38,39,34,35,23,22,7,6,47,1,6,21,49,7,6,7,49,6,7,38,39,38,39,54,55, +54,55,22,23,22,23,35,38,39,38,35,6,7,6,7,22,23,22,23,50,55,54,55,51,39,52,55,49,54,51,50,23, +22,21,20,7,6,35,34,39,38,53,1,87,23,12,14,47,9,12,20,14,9,9,9,9,14,62,55,19,20,54,37,36, +1,1,36,37,54,54,37,36,1,2,45,15,30,17,17,3,70,3,1,2,44,45,69,96,1,9,9,13,103,26,19,44, +99,16,59,10,7,7,7,7,10,64,105,1,18,18,27,27,18,18,1,1,18,18,27,4,3,28,9,19,20,12,28,15, +194,10,34,34,48,54,37,36,1,1,36,37,54,48,34,34,10,67,7,16,16,20,27,18,18,1,1,18,18,27,20,16, +16,7,67,158,9,9,14,14,9,9,9,9,14,14,9,9,1,160,1,20,26,40,7,9,9,14,32,14,9,9,101,5, +1,36,37,54,54,37,36,1,1,36,37,54,63,36,29,22,33,33,40,16,16,16,16,68,45,45,2,32,14,9,9,19, +45,82,30,7,7,10,10,7,7,254,192,27,18,18,1,1,18,18,27,27,18,18,1,53,20,12,9,19,52,17,24,24, +45,29,29,1,1,36,37,54,54,37,36,1,1,29,29,45,18,11,11,1,18,18,27,27,18,18,1,11,11,18,24,14, +9,9,9,9,14,14,9,9,9,9,14,0,0,3,0,0,255,192,2,0,1,192,0,17,0,47,0,105,0,0,1,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,22,23,49,22,23,21,20,7,6,43,1,7,6,7,35, +38,47,1,35,34,39,38,61,1,54,55,54,55,51,7,6,7,6,23,22,23,22,23,54,55,54,55,54,39,38,39,38, +39,38,55,54,23,22,23,22,23,22,23,6,7,6,7,6,7,6,7,38,39,38,39,38,39,38,39,54,55,54,55,54, +55,54,23,22,7,6,7,49,1,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,32,27,18,18,1,9, +9,14,2,11,5,27,38,27,5,11,2,14,9,9,1,18,18,27,64,225,4,4,5,5,14,29,62,96,96,62,29,14, +5,5,4,4,24,45,22,2,6,22,50,32,16,12,13,1,1,8,9,11,23,34,69,101,101,69,34,23,11,9,8,1, +1,13,12,16,32,50,22,6,1,21,45,24,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,1, +18,18,27,48,14,9,9,100,26,2,2,26,100,9,9,14,48,27,18,18,1,255,2,2,5,5,9,8,17,1,1,17, +8,9,5,5,2,2,13,8,6,22,21,2,9,16,8,11,13,20,16,11,11,7,14,9,19,1,1,19,9,14,7,11, +11,16,20,13,11,8,16,9,2,21,22,6,8,13,0,0,0,2,0,32,255,224,2,31,1,160,0,16,0,50,0,0, +37,7,6,35,34,47,1,7,35,23,22,51,50,63,1,35,39,55,38,7,49,6,15,1,39,38,39,38,7,6,7,6, +23,51,55,54,51,50,31,1,55,54,51,50,31,1,51,54,39,38,39,1,96,49,6,9,9,5,57,30,98,176,10,13, +13,10,176,112,23,143,43,52,53,39,20,20,39,53,52,43,43,5,5,32,105,36,5,10,9,6,58,49,5,9,9,6, +27,122,32,5,5,43,204,99,9,9,127,72,182,10,10,182,44,181,35,4,5,39,20,20,39,5,4,35,39,54,54,46, +86,10,9,130,98,9,9,55,46,54,54,39,0,2,0,16,255,193,1,112,1,192,0,40,0,58,0,0,1,38,39,49, +38,39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35, +53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,112,2,50,49,75,75,49,50, +2,1,40,40,63,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,63,40,40,1,176,41,27,27,1,1, +27,27,41,41,27,27,1,1,27,27,41,1,16,75,49,50,2,2,50,49,75,66,47,47,12,35,2,14,32,15,1,48, +15,1,1,15,48,1,15,32,14,2,35,12,47,47,66,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1, +0,2,255,255,255,224,1,192,1,161,0,32,0,49,0,0,1,35,6,7,6,31,1,7,38,35,34,7,6,23,22,23, +22,51,50,55,54,55,54,39,55,23,22,55,54,55,53,38,39,3,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +20,7,1,175,112,17,6,5,11,29,57,46,54,75,56,45,1,2,47,56,72,70,54,46,5,5,35,56,30,8,9,21, +3,1,16,187,30,38,39,30,28,28,30,39,38,30,28,28,1,161,1,14,14,12,30,56,31,59,53,68,67,52,54,52, +47,62,61,54,56,29,8,1,1,23,113,14,2,254,171,28,28,30,38,38,30,28,28,30,38,38,30,0,0,2,0,16, +255,192,1,112,1,193,0,62,0,80,0,0,37,52,39,49,38,39,54,55,54,39,38,39,35,34,7,6,7,38,39,38, +39,35,34,7,6,23,22,23,6,7,6,21,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51, +54,55,53,38,39,35,53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,112,18, +17,30,31,17,3,5,4,9,54,8,5,28,49,50,27,5,8,54,9,4,5,3,17,31,30,17,18,1,40,40,63,32, +15,1,1,15,32,1,15,32,15,1,32,15,1,1,15,32,63,40,40,1,176,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,27,41,225,42,35,35,25,26,38,8,7,7,1,7,40,1,2,39,5,1,7,7,9,37,27,25,35,35,41, +66,47,47,12,21,1,15,32,15,1,16,15,1,1,15,16,1,15,32,15,1,19,13,47,47,67,97,1,27,27,41,41, +26,27,1,1,27,27,40,41,27,27,1,0,0,2,0,96,255,193,1,240,1,192,0,55,0,73,0,0,1,35,6,7, +6,31,1,7,38,39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55, +53,38,39,35,53,54,55,54,55,38,39,55,23,22,55,54,55,53,38,39,3,38,39,49,38,39,54,55,54,55,22,23, +22,23,6,7,6,7,1,224,112,17,6,5,11,29,27,41,56,68,45,45,2,1,36,35,56,32,15,1,1,15,32,1, +15,32,15,1,32,15,1,1,15,32,56,35,36,1,1,20,30,30,12,14,14,1,1,15,224,34,23,22,1,1,22,23, +34,34,23,22,1,1,22,23,34,1,192,1,14,13,13,30,27,33,1,2,45,45,68,59,43,42,13,19,1,15,31,15, +1,32,15,1,1,15,32,1,15,31,15,1,19,12,43,43,59,43,35,30,29,11,5,6,17,112,15,1,254,208,1,22, +23,34,34,23,22,1,1,22,23,34,34,23,22,1,0,0,0,2,0,0,255,192,2,0,1,192,0,87,0,105,0,0, +1,35,6,7,6,31,1,7,38,39,6,7,39,55,54,47,1,38,15,1,39,55,54,39,38,39,35,6,7,21,22,23, +22,63,1,23,7,6,31,1,22,63,1,23,6,7,22,23,22,23,21,35,6,7,21,22,31,1,21,22,23,51,54,55, +53,51,54,55,53,38,47,1,53,54,55,54,55,38,39,55,23,22,55,54,55,53,38,39,3,38,39,49,38,39,54,55, +54,55,22,23,22,23,6,7,6,7,1,243,95,14,4,5,9,21,67,38,50,50,38,16,6,9,9,12,11,11,6,17, +21,9,5,4,14,95,12,1,1,11,12,10,22,16,6,9,9,12,11,11,6,17,26,1,1,36,35,56,16,15,1,1, +15,16,1,15,32,15,1,16,15,1,1,15,16,56,35,36,1,1,26,67,22,10,12,11,1,2,11,243,34,23,22,1, +1,22,23,34,34,23,22,1,1,22,23,34,1,192,1,11,12,10,22,67,26,1,1,26,17,6,11,11,12,9,9,6, +16,22,10,12,11,1,1,12,95,14,4,5,9,21,17,6,11,11,12,9,9,6,16,38,50,59,43,42,13,19,1,15, +15,15,1,1,16,15,1,1,15,16,1,15,15,15,1,1,19,13,42,43,59,50,38,67,21,9,5,4,14,95,12,1, +254,176,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,0,0,0,3,0,16,255,192,2,112,1,192,0,40, +0,58,0,111,0,0,1,38,39,49,38,39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51, +54,55,53,51,54,55,53,38,39,35,53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6, +7,37,38,39,49,38,39,6,7,22,23,54,55,22,23,22,23,6,7,6,7,38,39,6,7,22,23,21,35,6,7,21, +22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,54,55,54,55,1,112,2,50,49,75,75,49,50,2, +1,40,40,63,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,63,40,40,1,176,41,27,27,1,1,27, +27,41,41,27,27,1,1,27,27,41,1,176,2,50,49,75,59,45,28,15,25,36,41,27,27,1,1,27,27,41,36,26, +14,28,32,40,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,63,40,40,1,1,16,75,49,50,2,2, +50,49,75,66,47,47,12,35,2,14,32,15,1,48,15,1,1,15,48,1,15,32,14,2,35,12,47,47,66,96,1,27, +27,41,41,27,27,1,1,27,27,41,41,27,27,1,96,75,49,50,2,1,33,30,39,22,1,1,27,27,41,41,27,27, +1,1,22,38,30,24,7,36,1,15,32,15,1,48,15,1,1,15,48,1,15,32,15,1,35,13,47,47,66,0,0,0, +0,3,0,0,255,224,2,128,1,160,0,32,0,50,0,99,0,0,37,55,23,22,55,54,55,53,38,39,35,6,7,6, +31,1,7,38,7,6,7,6,23,22,23,22,51,50,55,54,55,54,39,7,6,35,49,34,39,38,53,52,55,54,51,50, +23,22,21,20,7,1,35,6,7,6,31,1,7,21,6,7,6,35,34,35,21,22,23,22,21,20,7,6,35,34,35,38, +35,6,7,6,7,22,51,50,55,54,55,54,39,55,23,22,55,54,55,53,38,39,1,65,56,30,12,14,14,1,1,15, +113,16,6,5,10,30,57,55,64,64,48,45,1,1,48,54,71,71,55,46,5,5,35,77,30,39,38,29,29,29,29,39, +38,30,28,28,1,123,113,16,6,5,10,30,43,1,15,16,24,4,4,10,10,28,28,30,38,3,2,1,1,15,23,9, +10,31,33,70,54,46,5,5,35,56,30,8,9,21,3,1,16,244,56,29,11,5,6,17,113,14,1,1,14,13,13,30, +56,37,7,7,50,54,67,68,52,53,52,47,62,61,54,168,28,28,30,38,38,30,28,28,30,38,38,30,1,84,1,14, +13,13,30,44,13,24,16,16,5,6,9,30,38,38,30,28,1,29,23,9,8,12,52,47,62,61,54,56,29,8,1,1, +23,112,15,1,0,3,0,0,255,193,2,128,1,192,0,39,0,57,0,104,0,0,37,35,53,54,55,54,55,38,39,38, +39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,47,1,38, +39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,35,6,7,6,31,1,7,38,35,34,7,22,23,54,51, +50,23,22,21,20,7,6,35,34,39,6,7,22,23,22,51,50,55,54,55,54,39,55,23,22,55,54,55,53,38,39,1, +0,48,63,40,40,1,2,50,49,75,75,49,50,2,1,40,40,63,48,15,1,1,15,48,1,15,32,15,1,48,15,1, +1,15,80,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,192,112,17,6,5,11,29,24,47,53,23,22, +20,7,9,9,38,30,28,28,30,38,37,28,24,33,18,6,45,53,70,55,45,5,5,35,25,29,8,9,21,3,1,15, +64,35,13,47,47,66,75,49,50,2,2,50,49,75,66,47,47,12,35,2,14,32,15,1,48,15,1,1,15,48,1,15, +32,13,2,112,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,1,16,1,14,13,13,30,24,31,6,35,41, +2,28,30,38,38,30,28,26,29,18,10,19,30,52,47,62,61,54,24,29,8,1,1,23,112,15,1,0,0,2,0,32, +255,224,2,0,1,192,0,48,0,66,0,0,1,35,6,7,6,31,1,7,39,38,15,1,6,31,1,7,38,7,6,7, +6,21,20,23,22,51,50,55,54,55,54,39,55,23,22,63,1,54,47,1,55,23,22,55,54,55,53,38,39,3,6,35, +49,34,39,38,53,52,55,54,51,50,23,22,21,20,7,1,240,112,17,6,5,11,29,24,34,11,12,22,10,10,34,19, +54,61,62,47,52,52,54,70,70,54,46,5,5,35,19,34,11,11,23,9,9,34,24,30,12,14,14,1,1,15,220,30, +38,38,30,28,28,30,38,38,30,28,28,1,192,1,14,13,13,30,24,34,9,9,23,11,11,34,19,35,5,5,46,54, +70,70,54,52,52,47,62,61,54,19,34,10,10,22,12,11,34,24,29,11,5,6,17,112,15,1,254,140,28,28,30,38, +38,30,28,28,30,38,38,30,0,2,0,15,255,196,1,112,1,192,0,48,0,66,0,0,19,53,51,54,55,53,38,43, +1,53,51,54,55,54,47,1,38,15,1,6,23,22,23,51,21,35,6,7,21,22,59,1,21,6,7,6,23,22,23,22, +23,22,55,54,55,38,39,38,39,3,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,224,24,7,1,1, +7,24,25,12,5,4,8,61,9,9,61,8,4,5,12,25,24,7,1,1,7,24,65,40,41,2,6,49,48,71,75,51, +50,2,1,40,40,63,32,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,29,19,1,6,17,7,17,1, +10,11,9,61,8,8,61,9,11,10,1,15,1,6,15,7,19,14,50,50,69,70,47,47,2,2,49,49,76,66,47,47, +13,254,244,1,27,27,40,40,27,27,1,1,27,27,40,40,27,27,1,0,0,2,0,32,0,16,2,112,1,112,0,48, +0,66,0,0,37,39,38,7,6,7,21,7,53,38,39,35,6,7,21,35,38,39,38,39,6,7,6,7,22,23,22,23, +54,55,54,55,51,21,22,23,51,54,55,53,23,21,22,23,22,63,1,54,39,5,38,39,49,38,39,54,55,54,55,22, +23,22,23,20,7,6,7,2,107,82,13,13,14,1,33,1,14,32,15,1,19,13,47,47,65,76,49,50,2,2,50,49, +75,66,47,47,12,19,2,14,32,14,1,34,1,14,13,13,82,10,10,254,101,41,27,27,1,1,27,27,41,41,26,27, +1,27,27,41,203,78,11,6,6,16,39,1,48,15,1,1,15,48,63,40,40,1,2,50,49,75,75,49,50,2,1,40, +40,63,48,15,1,1,15,49,1,40,16,6,6,11,78,11,11,107,1,27,27,41,41,27,27,1,1,27,27,41,41,27, +27,1,0,0,0,2,0,16,255,192,1,112,1,192,0,24,0,42,0,0,1,38,39,49,38,39,6,7,6,7,22,23, +22,23,21,22,23,51,54,55,53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1, +112,2,50,49,75,75,49,50,2,1,40,40,63,1,15,32,15,1,63,40,40,1,176,41,27,27,1,1,27,27,41,41, +27,27,1,1,27,27,41,1,16,75,49,50,2,2,50,49,75,66,47,47,12,148,15,1,1,15,147,13,47,47,66,96, +1,27,27,41,41,26,27,1,1,27,27,40,41,27,27,1,0,2,0,16,0,16,1,112,1,112,0,17,0,35,0,0, +19,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,17,38,39,49,38,39,54,55,54,55,22,23,22,23, +6,7,6,7,192,75,49,50,2,2,50,49,75,75,49,50,2,2,50,49,75,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,28,40,1,112,2,50,49,75,75,49,50,2,2,50,49,75,75,49,50,2,254,240,1,27,27,41,41,27,27, +1,1,27,27,41,41,27,27,1,0,0,0,0,6,0,0,255,224,2,0,1,160,0,20,0,29,0,38,0,59,0,68, +0,77,0,0,37,33,34,7,6,29,1,20,23,22,51,33,50,55,54,61,1,52,39,38,35,7,38,39,54,55,22,23, +6,7,51,38,39,54,55,22,23,6,7,19,33,34,7,6,29,1,20,23,22,51,33,50,55,54,61,1,52,39,38,35, +7,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,1,224,254,64,14,9,9,9,9,14,1,192,14,9, +9,9,9,14,128,22,2,2,22,22,2,2,22,64,22,2,2,22,22,2,2,22,64,254,64,14,9,9,9,9,14,1, +192,14,9,9,9,9,14,128,22,2,2,22,22,2,2,22,64,22,2,2,22,22,2,2,22,160,9,9,14,128,14,9, +9,9,9,14,128,14,9,9,120,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,1,120,9,9,14,128,14, +9,9,9,9,14,128,14,9,9,120,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,0,0,0,3,0,0, +255,192,2,128,1,192,0,17,0,36,0,61,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31, +1,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,37,35,53,38,39,6,7,21,35,6,7,22,23, +51,21,22,23,54,55,53,51,54,55,38,39,224,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,51,102,73, +49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,1,85,48,2,22,22,2,48,22,2,2,22,48,2,22,22,2, +48,22,2,2,22,192,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,48,2,49,49,73,15,10,10,10,10, +15,73,49,49,2,104,48,22,2,2,22,48,2,22,22,2,48,22,2,2,22,48,2,22,22,2,0,0,0,3,0,0, +255,192,2,120,1,192,0,18,0,36,0,61,0,0,37,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,55,54,39,38,15,1,39,38,7,6,31,1, +7,6,23,22,63,1,23,22,55,54,47,1,1,19,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,51, +54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,1,98,47,14,14,17,17,47,47,17,17,14,14,47,47,14, +14,17,17,47,47,17,17,14,14,47,144,2,49,49,73,15,10,10,10,10,15,73,49,49,2,48,1,36,37,54,54,37, +36,1,1,36,37,54,54,37,36,1,33,47,17,17,14,14,48,47,14,14,17,17,47,47,17,17,14,14,47,47,14,14, +17,17,48,0,0,2,0,0,255,224,2,128,1,160,0,42,0,60,0,0,19,50,23,49,22,21,17,51,53,52,55,54, +59,1,22,23,22,23,21,20,7,6,35,34,39,38,61,1,33,21,20,7,6,35,34,39,38,53,17,52,55,54,51,23, +54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,32,14,9,9,224,9,9,14,224,41,27,27,1,9,9, +14,14,9,9,254,0,9,9,14,14,9,9,9,9,14,64,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1, +1,160,9,9,14,255,0,160,14,9,9,1,27,27,41,224,14,9,9,9,9,14,32,32,14,9,9,9,9,14,1,128, +14,9,9,176,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,0,3,0,0,255,192,1,192,1,192,0,39, +0,61,0,79,0,0,1,22,23,49,22,23,17,6,7,6,7,23,22,7,6,7,35,34,47,1,35,7,6,43,1,38, +39,38,63,1,38,39,38,39,17,54,55,54,55,33,5,20,23,49,22,51,33,50,55,54,61,1,52,39,38,35,33,34, +7,6,29,1,23,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,96,41,27,27,1,1,22,23,35, +46,5,3,3,8,39,13,9,55,128,55,9,13,40,8,2,3,5,46,35,23,22,1,1,27,27,41,1,0,254,224,9, +9,14,1,0,14,9,9,9,9,14,255,0,14,9,9,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,192,1,27,27,41,255,0,36,26,27,6,46,6,6,6,1,9,55,55,9,1,6,6,6,46,6,27,26,36,1,0, +41,27,27,1,192,14,9,9,9,9,14,96,14,9,9,9,9,14,96,192,1,13,14,20,20,14,13,1,1,13,14,20, +20,14,13,1,0,5,0,0,255,192,1,192,1,192,0,39,0,61,0,83,0,101,0,119,0,0,1,22,23,49,22,23, +17,6,7,6,7,23,22,7,6,7,35,34,47,1,35,7,6,43,1,38,39,38,63,1,38,39,38,39,17,54,55,54, +55,33,5,20,23,49,22,59,1,50,55,54,61,1,52,39,38,43,1,34,7,6,29,1,55,34,7,49,6,29,1,20, +23,22,59,1,50,55,54,61,1,52,39,38,43,1,7,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35, +5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,96,41,27,27,1,1,22,23,35,46,5,3,3, +8,39,13,9,55,128,55,9,13,40,8,2,3,5,46,35,23,22,1,1,27,27,41,1,0,254,224,9,9,14,80,14, +9,9,9,9,14,80,14,9,9,208,14,9,9,9,9,14,80,14,9,9,9,9,14,80,176,14,9,9,9,9,14,14, +9,9,9,9,14,1,0,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,27,27,41,255,0,36,26,27,6,46, +6,6,6,1,9,55,55,9,1,6,6,6,46,6,27,26,36,1,0,41,27,27,1,224,14,9,9,9,9,14,96,14, +9,9,9,9,14,96,128,9,9,14,96,14,9,9,9,9,14,96,14,9,9,224,9,9,14,14,9,9,9,9,14,14, +9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49, +0,0,37,33,53,33,21,37,54,55,49,54,55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6, +7,33,38,39,38,39,53,55,6,7,21,22,23,33,54,55,53,38,39,33,1,192,254,160,1,96,254,64,1,22,23,34, +1,128,34,23,22,1,14,9,9,9,9,14,1,22,23,34,254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1, +15,254,128,128,128,128,144,34,23,22,1,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34, +160,16,1,15,160,15,1,1,15,160,15,1,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49,0,0,37,33, +53,33,21,37,54,55,49,54,55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6,7,33,38,39, +38,39,53,55,6,7,21,22,23,33,54,55,53,38,39,33,1,96,255,0,1,0,254,160,1,22,23,34,1,128,34,23, +22,1,14,9,9,9,9,14,1,22,23,34,254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1,15,254,128,128, +128,128,144,34,23,22,1,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,16,1,15, +160,15,1,1,15,160,15,1,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49,0,0,37,35,53,51,21,37, +54,55,49,54,55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6,7,33,38,39,38,39,53,55, +6,7,21,22,23,33,54,55,53,38,39,33,1,32,192,192,254,224,1,22,23,34,1,128,34,23,22,1,14,9,9,9, +9,14,1,22,23,34,254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1,15,254,128,128,128,128,144,34,23,22, +1,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,16,1,15,160,15,1,1,15,160, +15,1,0,0,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49,0,0,55,35,53,51,21,39,54,55,49,54, +55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6,7,33,38,39,38,39,53,55,6,7,21,22, +23,33,54,55,53,38,39,33,192,96,96,192,1,22,23,34,1,128,34,23,22,1,14,9,9,9,9,14,1,22,23,34, +254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1,15,254,128,128,128,128,144,34,23,22,1,1,22,23,34,16, +9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,16,1,15,160,15,1,1,15,160,15,1,0,2,0,0, +0,32,2,64,1,96,0,31,0,44,0,0,1,22,23,49,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6, +7,33,38,39,38,39,53,54,55,54,55,33,5,22,23,33,54,55,53,38,39,33,6,7,21,1,208,34,23,22,1,14, +9,9,9,9,14,1,22,23,34,254,128,34,23,22,1,1,22,23,34,1,128,254,112,1,15,1,128,15,1,1,15,254, +128,15,1,1,96,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,34,23,22,1,240, +15,1,1,15,160,15,1,1,15,160,0,0,0,1,0,0,255,225,1,64,1,160,0,27,0,0,19,50,23,5,22,21, +6,7,35,23,22,7,6,7,6,39,38,47,1,7,6,35,38,39,17,54,55,49,23,9,7,1,18,7,2,20,118,57, +5,4,4,12,12,12,12,7,58,82,7,10,20,2,2,21,1,160,6,243,7,10,20,2,114,12,12,12,7,5,4,4, +12,116,95,7,2,21,1,114,21,2,0,0,0,1,0,0,255,193,1,0,1,192,0,81,0,0,5,20,7,49,6,35, +38,39,6,7,34,39,38,53,52,55,54,51,54,55,54,55,53,35,34,39,38,53,52,55,54,59,1,53,38,39,38,39, +34,39,38,53,52,55,54,51,22,23,54,55,50,23,22,21,20,7,6,35,6,7,6,7,21,51,50,23,22,21,20,7, +6,43,1,21,22,23,22,23,50,23,22,21,1,0,9,9,14,59,37,37,59,14,9,9,9,9,14,27,18,18,1,32, +14,9,9,9,9,14,32,1,18,18,27,14,9,9,9,9,14,59,37,37,59,14,9,9,9,9,14,27,18,18,1,32, +14,9,9,9,9,14,32,1,18,18,27,14,9,9,32,14,8,9,2,42,42,2,9,9,13,13,9,10,1,18,18,27, +96,9,9,14,14,9,9,96,27,18,18,1,9,9,14,14,9,9,2,42,42,2,9,9,14,14,9,9,1,18,18,27, +96,9,9,14,14,9,9,96,27,18,18,1,9,9,14,0,0,4,0,0,255,192,2,64,1,192,0,21,0,45,0,82, +0,95,0,0,19,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,23,54,55,49,54,55, +53,51,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,51,37,38,39,54,55,54,55,22,23,33,54,55,22,23, +22,23,6,7,17,22,23,6,7,6,7,38,39,33,6,7,38,39,38,39,54,55,17,55,6,7,17,22,23,33,54,55, +17,38,39,33,128,9,9,14,128,14,9,9,9,9,14,128,14,9,9,160,27,18,18,1,64,14,9,9,9,9,14,128, +14,9,9,32,255,0,30,2,1,18,18,27,37,18,1,82,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18, +254,174,18,37,27,18,18,1,2,30,87,8,15,15,8,1,82,8,15,15,8,254,174,1,32,14,9,9,9,9,14,96, +14,9,9,9,9,14,96,160,1,18,18,27,32,9,9,14,96,14,9,9,9,9,14,32,201,18,37,27,18,18,1,2, +30,30,2,1,18,18,27,37,18,254,238,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,1,18,23,15,8, +254,238,8,15,15,8,1,18,8,15,0,0,0,3,0,0,255,192,2,128,1,192,0,36,0,50,0,93,0,0,19,38, +39,54,55,54,55,22,23,51,54,55,22,23,22,23,6,7,21,22,23,6,7,6,7,38,39,35,6,7,38,39,38,39, +54,55,53,51,21,22,23,51,54,55,53,38,39,35,6,7,49,19,6,7,38,39,38,39,54,55,53,51,21,22,23,51, +54,55,53,38,39,35,38,39,53,51,54,55,22,23,22,23,6,7,21,22,23,6,7,6,7,38,39,35,32,30,2,1, +18,18,27,37,18,210,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,18,37,27,18,18,1,2,30,64, +15,8,210,8,15,15,8,210,8,15,215,18,37,27,18,18,1,2,30,64,15,8,210,8,15,15,8,46,9,18,73,18, +37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,1,73,18,37,27,18,18,1,2,30,30,2,1,18,18,27, +37,18,114,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,114,114,8,15,15,8,114,8,15,15,8,254,151, +30,2,1,18,18,27,37,18,41,41,8,15,15,8,114,8,16,22,17,25,30,2,1,18,19,26,38,18,114,18,37,27, +18,18,1,2,30,0,0,0,0,2,0,0,255,224,1,192,1,160,0,21,0,32,0,0,1,33,6,7,6,7,17,22, +23,22,23,51,50,63,1,54,61,1,38,39,38,39,5,33,21,35,34,7,6,29,1,35,17,1,144,254,160,20,14,13, +1,1,13,14,20,246,26,19,90,19,1,13,14,20,254,176,1,64,64,14,9,9,224,1,160,1,13,14,20,254,160,20, +14,13,1,19,90,19,26,246,20,14,13,1,64,224,9,9,14,64,1,64,0,2,0,0,255,192,2,0,1,192,0,23, +0,45,0,0,55,54,55,49,54,55,51,21,22,23,22,23,51,21,6,7,6,7,35,38,39,38,39,53,23,38,39,49, +38,39,53,54,55,54,55,51,22,23,22,23,21,6,7,6,7,35,0,1,18,18,27,64,1,27,27,41,128,1,18,18, +27,224,27,18,18,1,224,27,18,18,1,1,18,18,27,224,27,18,18,1,1,18,18,27,224,224,27,18,18,1,128,41, +27,27,1,64,27,18,18,1,1,18,18,27,224,128,1,18,18,27,224,27,18,18,1,1,18,18,27,224,27,18,18,1, +0,5,0,0,255,192,2,128,1,192,0,29,0,33,0,65,0,69,0,115,0,0,1,38,35,49,34,7,6,7,6,7, +6,7,6,23,22,23,22,23,54,55,54,55,52,49,52,39,38,39,38,39,7,55,23,35,7,48,53,49,54,39,49,38, +39,49,38,39,38,35,34,7,6,7,6,7,6,7,6,23,22,23,22,23,54,55,54,55,39,23,35,55,1,35,17,54, +55,51,50,55,54,53,52,39,38,43,1,38,39,6,7,35,34,7,6,21,20,23,22,59,1,22,23,17,35,6,7,6, +7,22,23,33,54,55,52,39,38,39,2,43,15,28,28,15,19,13,27,11,11,2,2,1,1,36,37,54,54,36,36,1, +4,4,18,18,41,116,72,72,144,183,1,4,4,18,18,42,15,28,28,15,19,13,27,11,11,2,2,1,1,36,36,54, +54,36,37,1,128,72,144,72,1,111,143,37,9,114,14,8,9,9,9,13,128,24,40,41,23,128,14,9,9,9,9,13, +114,9,37,143,20,14,13,1,1,15,1,160,15,1,14,14,21,1,37,27,27,37,27,53,22,23,7,7,5,34,23,22, +1,1,22,23,34,1,6,10,10,36,36,82,165,144,144,16,1,6,10,10,35,36,83,27,27,37,27,53,22,23,7,7, +5,34,23,22,1,1,22,23,34,160,144,144,254,240,1,39,17,40,9,9,14,14,9,9,31,1,1,31,9,9,14,14, +9,9,40,17,254,217,1,13,14,20,15,1,1,15,20,14,13,1,0,0,0,2,0,0,255,192,1,128,1,192,0,51, +0,62,0,0,1,50,23,49,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23,22,21,20,7,6,35,33,34, +39,38,53,52,55,54,51,53,54,63,1,39,38,39,53,34,39,38,53,52,55,54,51,33,3,39,7,6,7,21,51,53, +38,39,49,1,96,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,254,192,14,9,9,9,9,14,1, +46,68,68,46,1,14,9,9,9,9,14,1,64,92,68,68,27,1,192,1,27,1,192,9,9,14,14,9,9,11,66,47, +68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,254, +143,68,68,29,39,11,11,39,29,0,0,0,0,3,0,0,255,192,1,128,1,192,0,51,0,60,0,71,0,0,1,50, +23,49,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54, +51,53,54,63,1,39,38,39,53,34,39,38,53,52,55,54,51,33,7,51,54,61,1,35,21,20,23,17,51,38,47,1, +7,6,7,6,7,49,1,96,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,254,192,14,9,9,9, +9,14,1,46,68,68,46,1,14,9,9,9,9,14,1,64,241,161,16,192,15,161,5,7,68,68,6,5,1,1,1,192, +9,9,14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47, +66,11,9,9,14,14,9,9,128,24,29,11,11,29,24,255,0,8,7,68,68,6,7,1,1,0,0,0,0,2,0,0, +255,192,1,128,1,192,0,51,0,61,0,0,1,50,23,49,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23, +22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,53,54,63,1,39,38,39,53,34,39,38,53,52,55,54,51,33, +7,23,55,54,55,53,35,21,22,23,1,96,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,254,192, +14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,1,64,228,68,68,27,1,192,1,27,1,192,9,9, +14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47,66,11, +9,9,14,14,9,9,143,68,68,28,40,11,11,40,28,0,0,3,0,0,255,192,1,128,1,192,0,51,0,61,0,71, +0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23,22,21,20,7,6, +35,33,34,39,38,53,52,55,54,51,53,54,63,1,39,38,39,53,34,39,38,53,23,21,22,31,1,55,54,55,53,35, +17,51,53,38,47,1,7,6,7,21,0,9,9,14,1,64,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9, +9,14,254,192,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,96,1,27,68,68,27,1,192,192,1,27,68,68, +27,1,1,160,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9, +9,11,66,47,68,68,47,66,11,9,9,14,32,11,40,28,68,68,28,40,11,254,128,11,39,29,68,68,29,39,11,0, +0,1,0,32,255,192,1,192,1,192,0,48,0,0,1,21,20,7,6,7,21,33,53,39,38,39,53,54,63,1,21,22, +23,54,55,53,54,55,54,55,50,23,22,23,54,51,22,23,22,23,21,54,55,50,23,22,23,54,51,22,23,22,23,1, +192,18,17,29,255,0,53,42,1,1,16,31,1,15,15,1,1,13,14,20,19,14,13,2,13,19,20,14,13,1,14,26, +18,13,13,3,11,14,20,14,13,1,1,48,120,38,31,31,20,128,128,39,32,52,69,23,14,24,45,15,1,1,15,128, +20,14,13,1,13,13,19,13,1,13,14,20,6,21,1,11,11,17,7,1,13,14,20,0,0,1,0,0,255,192,1,224, +1,192,0,69,0,0,1,21,6,7,6,7,35,38,47,1,38,53,52,55,54,55,50,31,1,17,52,55,54,51,50,23, +22,29,1,22,23,54,55,53,52,55,54,51,50,23,22,29,1,22,23,54,55,53,52,55,54,51,50,23,22,29,1,22, +23,54,55,53,52,55,54,51,50,23,22,21,1,224,2,50,49,75,38,82,59,113,12,11,12,17,16,12,60,9,9,14, +14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9, +9,1,64,208,75,49,50,2,1,58,113,12,16,16,12,11,1,12,59,1,23,14,9,9,9,9,14,176,15,1,1,15, +208,14,9,9,9,9,14,208,15,1,1,15,176,14,9,9,9,9,14,176,15,1,1,15,112,14,9,9,9,9,14,0, +0,1,0,0,0,0,2,0,1,128,0,58,0,0,1,21,6,7,6,7,35,38,39,38,39,52,55,38,39,38,53,54, +55,35,38,39,38,53,52,55,54,59,1,39,38,39,52,55,54,55,50,23,5,22,51,54,55,54,53,52,47,1,55,54, +55,51,50,31,1,22,23,22,21,2,0,2,40,41,61,80,20,14,13,1,7,17,11,11,1,21,190,17,11,12,12,11, +17,230,210,27,1,2,10,28,6,6,1,23,3,2,11,4,1,11,73,15,14,23,48,16,13,38,39,5,1,1,0,111, +62,41,40,2,1,13,14,20,14,11,4,13,12,18,26,13,1,11,11,17,17,11,11,68,10,28,6,6,27,1,2,87, +1,1,10,3,2,11,4,23,18,17,1,10,28,31,48,6,5,0,0,0,0,1,0,0,0,0,2,0,1,128,0,40, +0,0,37,21,6,7,35,38,39,53,39,35,34,39,38,39,54,55,54,55,51,54,63,1,54,39,38,39,35,38,39,38, +53,54,55,54,51,33,22,31,1,22,21,2,0,1,15,128,15,1,85,172,13,9,9,1,1,18,18,27,105,22,8,11, +5,9,9,16,181,27,18,18,1,9,9,12,1,15,42,24,129,15,119,103,15,1,1,15,16,64,9,8,13,28,19,18, +1,1,21,32,16,13,12,1,1,18,19,28,13,8,9,1,33,186,21,24,0,1,0,32,255,192,2,32,1,192,0,82, +0,0,1,52,39,49,38,39,6,15,1,6,35,38,39,52,53,55,54,53,52,39,38,39,6,15,1,6,7,38,47,1, +38,39,6,7,6,23,20,31,1,22,21,6,7,34,47,1,38,39,34,7,6,21,20,31,1,22,21,6,35,34,47,1, +38,39,6,7,6,21,20,31,1,22,23,51,22,55,54,55,54,55,19,54,53,2,32,7,6,19,23,8,34,4,10,13, +1,36,1,8,8,16,24,7,38,6,22,21,7,52,7,24,20,6,7,1,1,50,1,1,11,8,2,47,9,22,13,9, +10,1,70,1,1,7,3,3,60,14,17,18,10,11,12,122,50,69,51,13,26,27,27,26,13,74,2,1,63,8,12,12, +1,1,23,125,10,1,13,1,2,167,3,4,11,11,10,1,2,23,177,21,1,1,20,209,23,2,1,13,12,6,4,4, +202,1,2,10,1,8,144,23,1,9,8,15,5,5,216,1,1,8,2,61,12,1,1,12,11,16,16,12,123,48,1,1, +8,8,22,22,44,1,15,5,4,0,0,0,0,4,0,0,255,192,1,192,1,192,0,48,0,59,0,70,0,81,0,0, +37,34,7,38,39,38,35,6,7,38,39,38,35,34,7,53,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7, +20,31,1,22,23,22,59,1,54,55,54,55,53,38,39,38,39,7,6,7,38,39,53,54,55,22,23,21,51,6,7,38, +39,53,54,55,22,23,21,51,6,7,38,39,53,54,55,22,23,21,1,144,14,11,3,13,13,18,27,14,4,13,12,18, +19,13,12,11,16,18,11,12,56,13,19,16,12,11,1,8,91,20,28,29,32,96,61,41,40,2,1,13,14,20,160,1, +15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,224,7,17,11,11,1,22, +17,11,11,12,148,17,11,12,12,11,17,254,189,75,16,11,11,18,13,11,122,25,15,14,2,40,41,61,96,20,14,13, +1,176,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96, +0,5,0,32,255,192,1,192,1,192,0,12,0,29,0,49,0,69,0,115,0,0,37,53,52,39,38,35,34,7,6,29, +1,22,23,39,54,51,49,50,51,39,38,39,6,7,6,21,20,31,1,63,1,34,7,49,6,29,1,20,23,22,51,50, +55,54,61,1,52,39,38,35,7,50,55,49,54,61,1,52,39,38,35,34,7,6,29,1,20,23,22,51,23,6,7,34, +39,38,39,6,15,1,34,35,34,39,38,53,52,63,1,54,55,38,39,38,7,34,15,1,6,21,20,31,1,22,23,22, +23,51,54,55,54,55,6,35,38,39,1,0,9,9,14,14,9,9,43,21,85,2,3,1,1,85,9,20,16,8,8,3, +82,54,245,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,48,18,30,21, +16,16,7,11,36,48,2,2,11,4,1,11,46,28,2,2,15,16,7,6,6,104,28,2,18,15,35,34,45,75,63,46, +46,16,13,14,30,18,161,255,14,9,9,9,9,14,216,2,37,36,1,199,18,1,1,10,10,11,6,7,191,17,27,9, +9,14,64,14,9,9,9,9,14,64,14,9,9,128,9,9,14,96,14,9,9,9,9,14,96,14,9,9,10,21,1,12, +11,19,34,13,15,10,3,3,11,4,14,10,29,25,8,8,1,2,32,11,27,6,7,54,42,25,25,1,1,37,37,59, +6,1,21,0,0,2,0,0,0,32,2,128,1,96,0,36,0,66,0,0,1,38,15,1,39,38,7,6,7,17,20,23, +22,51,50,55,54,61,1,23,22,51,50,63,1,21,20,23,22,51,50,55,54,53,17,38,39,37,35,34,7,6,21,20, +23,22,59,1,21,20,23,22,51,50,55,54,61,1,51,50,55,54,53,52,39,38,35,2,106,21,15,118,118,15,21,21, +1,9,9,14,14,9,9,86,10,16,16,10,86,9,9,14,14,9,9,1,21,254,118,192,14,9,9,9,9,14,64,9, +9,14,14,9,9,64,14,9,9,9,9,14,1,94,6,17,158,158,17,6,8,22,255,0,14,9,9,9,9,14,160,115, +12,12,115,160,14,9,9,9,9,14,1,0,22,8,2,9,9,14,14,9,9,223,14,9,9,9,9,14,223,9,9,14, +14,9,9,0,0,3,0,0,255,192,2,0,1,192,0,26,0,51,0,63,0,0,1,6,7,49,6,7,49,6,7,22, +23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,22,7,6,35,34,47,1,35,21,6,7,38,39,53, +54,55,51,22,23,22,23,6,7,23,39,35,21,51,50,55,54,53,52,39,38,35,1,0,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,94,7,19,5,5,15,7,38,60,2,22,22,2,2,22,88, +34,23,22,1,2,35,35,78,64,64,14,9,9,9,9,14,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,254,162,21,11,2,14,82,72,22,2,2,22,208,22,2,1,22,23,34,44,23,75, +174,64,9,9,14,14,9,9,0,3,0,0,255,192,2,128,1,192,0,18,0,39,0,44,0,0,37,33,34,7,6,21, +20,23,22,51,33,50,55,54,53,52,39,38,35,19,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39, +38,39,3,33,17,33,17,2,0,254,127,13,9,9,9,9,13,1,128,14,10,9,9,9,14,80,253,224,20,14,13,1, +1,13,14,20,2,32,20,14,13,1,1,13,14,20,16,254,0,2,0,0,9,9,13,13,10,10,9,9,14,14,9,9, +1,192,1,13,14,20,254,192,20,14,13,1,1,13,14,20,1,64,20,14,13,1,254,160,1,32,254,224,0,3,0,0, +255,192,1,192,1,192,0,35,0,49,0,74,0,0,19,52,55,49,54,51,50,23,22,29,1,51,53,52,55,54,51,50, +23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,1,6,7,49,6,7,33,38,39,38,39,17,33,17, +39,21,35,6,7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,38,39,6,7,96,9,9,14,14,9,9, +128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,1,96,1,13,14,20,254,160,20,14,13,1,1, +192,248,56,22,2,2,22,56,2,22,22,2,56,22,2,2,22,56,2,22,22,2,1,160,14,9,9,9,9,14,32,32, +14,9,9,9,9,14,32,1,13,14,20,48,48,20,14,13,1,32,254,80,20,14,13,1,1,13,14,20,1,16,254,240, +192,56,2,22,22,2,56,22,2,2,22,56,2,22,22,2,56,22,2,2,22,0,0,0,0,3,0,0,255,192,1,192, +1,192,0,34,0,47,0,58,0,0,19,21,51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54, +55,54,55,51,53,52,55,54,51,50,23,22,21,7,33,17,6,7,6,7,33,38,39,38,39,17,5,54,55,38,39,35, +6,7,22,23,51,160,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9,9,160, +1,192,1,13,14,20,254,160,20,14,13,1,1,56,22,2,2,22,176,22,2,2,22,176,1,160,32,32,14,9,9,9, +9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1, +16,184,2,22,22,2,2,22,22,2,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,72,0,0,19,21, +51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22, +21,7,33,17,6,7,6,7,33,38,39,38,39,17,5,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1, +23,22,55,54,47,1,55,160,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9, +9,160,1,192,1,13,14,20,254,160,20,14,13,1,1,48,15,15,16,17,47,48,16,17,14,14,47,47,14,14,17,16, +48,47,17,16,15,15,46,46,1,160,32,32,14,9,9,9,9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9, +9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,112,16,17,14,14,47,47,14,14,17,16,48,47,17,16, +15,15,46,46,15,15,16,17,47,48,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,62,0,0,19,21, +51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22, +21,7,33,17,6,7,6,7,33,38,39,38,39,17,5,54,39,38,15,1,39,38,7,6,31,1,22,63,1,160,128,9, +9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160, +20,14,13,1,1,72,15,15,16,17,95,48,16,17,14,14,64,17,16,112,1,160,32,32,14,9,9,9,9,14,32,1, +13,14,20,48,48,20,14,13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,112,16,17, +14,14,95,47,14,14,17,16,64,15,15,112,0,1,0,32,255,224,2,32,1,160,0,33,0,0,19,50,23,49,22,29, +1,55,54,23,22,23,21,55,54,23,22,23,17,6,7,6,7,33,38,39,38,39,17,52,55,54,59,1,128,14,9,9, +157,12,11,11,1,157,12,11,11,1,1,13,14,20,254,96,20,14,13,1,9,9,14,64,1,160,9,9,14,151,84,6, +7,6,14,63,84,6,7,6,14,254,232,20,14,13,1,1,13,14,20,1,112,14,9,9,0,3,0,32,255,192,1,64, +1,192,0,17,0,34,0,49,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,38,39,6, +7,6,7,22,23,54,55,54,55,54,55,54,55,3,53,22,55,22,55,21,20,7,6,35,34,39,38,53,1,64,2,40, +41,61,61,41,40,2,2,40,41,61,61,41,40,2,128,1,15,41,27,27,1,1,15,15,1,1,18,18,27,15,1,48, +16,16,16,16,9,9,14,14,9,9,1,48,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,80,15,1,1, +27,27,41,15,1,1,15,27,18,18,1,1,15,254,96,163,3,1,1,3,163,14,9,9,9,9,14,0,0,3,0,6, +255,192,1,249,1,192,0,29,0,54,0,67,0,0,19,54,55,49,54,51,50,23,22,21,51,50,31,1,22,15,1,6, +35,33,34,39,38,39,53,54,55,54,59,1,1,20,7,49,6,35,33,34,47,1,38,63,1,54,55,51,53,51,21,51, +22,23,22,29,1,7,34,39,49,38,39,53,51,21,20,7,6,35,223,1,9,9,13,14,10,9,153,7,5,48,9,9, +48,5,7,254,134,13,9,9,1,1,9,9,13,160,1,1,9,9,14,254,135,7,5,48,9,9,48,5,7,152,65,160, +14,9,9,225,13,9,9,1,65,9,10,14,1,160,14,9,9,9,9,14,5,48,11,11,48,5,9,9,14,64,14,9, +9,254,224,14,9,9,5,48,11,11,48,5,1,32,32,1,9,9,13,65,192,9,9,14,96,96,14,9,9,0,0,0, +0,3,0,0,255,228,2,64,1,156,0,4,0,15,0,27,0,0,5,39,17,23,17,19,55,54,23,22,23,17,6,15, +1,17,5,55,17,7,6,39,38,39,17,54,55,49,1,128,192,192,32,127,13,9,10,1,1,14,145,254,111,145,127,12, +10,10,1,1,14,28,55,1,129,55,254,127,1,132,50,5,7,7,13,254,177,15,7,58,1,131,7,58,254,125,51,4, +7,7,13,1,79,15,7,0,0,1,255,255,255,195,1,255,1,192,0,27,0,0,1,17,6,7,6,43,1,7,6,39, +38,39,53,35,34,39,38,39,17,54,55,54,55,33,22,23,22,23,1,255,1,18,18,27,144,125,6,6,6,1,96,27, +18,18,1,1,18,18,27,1,128,28,18,17,1,1,129,254,225,27,18,18,94,4,3,3,8,84,18,18,27,1,31,27, +18,17,1,1,18,18,26,0,0,3,0,0,255,192,2,0,1,192,0,26,0,45,0,64,0,0,1,6,7,49,6,7, +49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,7,21,20,7,6,35,34,39,38,61,1, +52,55,54,51,50,23,22,21,51,21,20,7,6,35,34,39,38,61,1,52,55,54,51,50,23,22,21,1,0,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,32,9,9,14,14,9,9,9,9,13,13, +10,10,128,9,9,14,14,9,9,9,9,13,13,10,10,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,191,128,14,10,9,9,9,14,129,13,9,9,9,9,13,128,14,10,9,9,9,14,129, +13,9,9,9,9,13,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,39,0,0,1,6,7,49,6,7,49,6, +7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,6,7,35,38,39,53,54,55,51,22,23,21, +1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,96,2,22,144,22,2, +2,22,144,22,2,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254, +184,22,2,2,22,144,22,2,2,22,144,0,0,4,0,0,255,192,1,192,1,192,0,32,0,44,0,53,0,62,0,0, +19,54,55,49,54,55,22,23,22,23,21,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51, +53,23,51,53,38,39,38,39,6,7,6,7,21,7,54,55,38,39,6,7,22,23,55,6,7,22,23,54,55,38,39,112, +1,32,31,48,48,31,32,1,64,20,14,13,1,1,27,27,41,255,0,41,27,27,1,1,13,14,20,64,48,128,1,18, +18,27,27,18,18,1,24,22,2,2,22,22,2,2,22,176,22,2,2,22,22,2,2,22,1,80,48,31,32,1,1,32, +31,48,48,1,13,14,20,208,41,27,27,1,1,27,27,41,208,20,14,13,1,48,48,48,27,18,18,1,1,18,18,27, +48,96,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,0,0,4,0,0,255,192,2,64,1,191,0,42, +0,53,0,64,0,75,0,0,19,51,39,38,55,54,31,1,51,22,23,22,21,20,7,6,35,7,6,7,6,35,33,34, +39,38,47,1,34,39,38,53,52,55,54,55,51,55,54,23,22,15,1,23,38,39,6,7,21,22,23,54,55,53,51,21, +22,23,54,55,53,38,39,6,7,51,38,39,6,7,21,22,23,54,55,53,172,232,81,9,19,20,12,93,86,14,9,9, +9,9,14,52,6,17,17,22,254,227,22,17,16,6,52,14,9,9,9,9,14,86,93,12,20,19,9,81,19,1,15,14, +2,2,14,15,1,80,2,14,16,1,1,16,14,2,145,1,15,15,1,1,15,15,1,1,1,156,20,12,9,19,178,1, +9,9,13,14,9,9,209,21,13,14,14,13,21,209,9,9,14,13,9,9,1,178,19,9,12,20,156,112,14,2,2,14, +96,15,1,1,15,96,96,15,1,1,15,96,14,2,2,14,14,2,2,14,96,15,1,1,15,96,0,0,0,3,0,0, +255,192,2,0,1,192,0,26,0,44,0,89,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54, +55,54,55,38,39,38,39,38,39,21,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,23,7,6,7,34, +35,21,23,22,7,6,35,38,47,1,38,35,34,15,1,6,7,34,39,38,63,1,53,34,35,38,47,1,38,55,54,31, +1,22,63,1,54,23,22,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58, +57,72,17,11,12,12,11,17,17,11,12,12,11,17,119,60,3,4,2,2,31,5,20,4,4,16,7,25,3,5,5,3, +25,7,16,4,4,20,5,31,2,2,4,3,60,20,4,8,22,59,46,46,59,22,8,4,20,1,192,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,80,12,11,17,17,11,12,12,11,17,17,11,12, +135,17,1,1,63,87,21,10,1,1,15,71,5,5,71,15,1,1,10,21,87,63,1,1,17,8,22,20,4,17,13,13, +17,4,20,22,8,0,0,0,0,4,0,0,255,192,1,191,1,192,0,12,0,30,0,43,0,89,0,0,5,39,6,7, +6,7,23,22,51,50,55,54,39,1,50,55,49,54,53,52,39,38,39,6,7,6,7,22,23,22,51,15,1,6,23,22, +23,22,51,54,63,1,39,21,55,39,38,47,1,34,7,6,15,1,6,23,22,23,22,51,50,63,1,21,20,31,1,21, +20,23,22,51,50,55,54,61,1,52,47,1,53,23,22,23,22,55,54,55,54,39,1,189,117,5,6,7,8,117,5,8, +5,4,11,7,254,210,20,14,14,14,13,20,20,14,13,1,1,13,13,20,47,31,3,7,6,13,4,4,24,7,22,53, +218,77,30,47,24,28,23,23,12,47,5,4,4,12,7,7,19,10,35,9,87,9,9,14,14,9,9,19,45,70,9,12, +13,11,11,2,1,7,38,172,6,6,4,3,171,7,3,8,14,1,135,14,13,20,20,14,13,1,1,13,14,20,20,13, +14,253,124,14,11,10,4,1,1,23,88,53,1,79,103,37,1,1,14,14,25,94,12,12,12,7,3,18,70,56,13,10, +86,83,14,9,9,9,9,14,83,26,19,45,94,94,11,2,1,7,9,12,13,11,0,0,0,5,0,0,255,224,2,64, +1,160,0,3,0,24,0,44,0,60,0,72,0,0,55,51,39,7,37,33,6,7,6,7,17,22,23,22,23,33,54,55, +54,55,17,38,39,38,39,3,6,35,34,47,1,35,7,6,39,38,63,1,54,51,50,31,1,22,7,23,35,38,39,53, +54,55,51,22,23,22,23,6,7,6,7,53,35,21,51,54,55,54,55,38,39,38,39,171,42,21,21,1,85,254,64,27, +18,18,1,1,18,18,27,1,192,27,18,18,1,1,18,18,27,237,6,5,14,7,10,82,10,11,21,18,7,72,8,14, +14,7,72,8,18,109,56,22,2,2,22,56,41,27,27,1,1,27,27,41,32,32,20,14,13,1,1,13,14,20,168,42, +42,248,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,194,2,13,19,19,18,8,11,21, +144,12,12,144,21,12,2,2,22,144,22,2,1,27,27,41,41,27,27,1,144,96,1,13,14,20,20,14,13,1,0,0, +0,4,0,0,255,193,2,0,1,191,0,18,0,39,0,66,0,93,0,0,1,38,7,6,23,22,21,20,7,6,23,22, +51,50,55,54,55,38,39,55,38,7,6,23,22,23,6,7,6,23,22,51,50,55,54,55,54,53,38,39,55,38,7,6, +23,22,23,22,21,20,7,6,7,6,23,22,51,50,55,54,55,54,53,52,39,38,39,7,50,63,1,54,47,1,38,7, +6,7,6,23,22,23,22,63,1,54,47,1,38,15,1,38,55,23,1,29,19,15,13,16,18,18,16,13,7,11,9,7, +34,1,1,34,60,18,16,12,16,52,1,1,52,16,12,8,11,8,7,34,18,19,2,69,61,18,15,13,16,42,23,23, +23,23,42,16,13,7,11,8,7,51,27,28,28,27,51,255,17,8,34,5,15,67,16,14,69,23,22,22,23,69,14,16, +67,15,5,34,7,18,53,29,29,53,1,10,12,15,19,15,15,22,22,15,15,19,8,5,29,45,45,29,75,12,15,19, +15,44,67,67,44,16,18,9,6,27,39,38,44,89,59,74,12,15,19,15,35,48,48,54,54,49,48,35,15,19,8,5, +41,58,58,66,66,57,57,42,142,15,85,19,10,42,9,12,70,90,89,89,90,70,12,9,42,11,18,84,16,1,5,87, +87,6,0,0,0,20,0,0,255,224,2,128,1,160,0,17,0,35,0,44,0,62,0,71,0,89,0,98,0,116,0,134, +0,152,0,170,0,179,0,197,0,206,0,224,0,233,0,251,1,4,1,22,1,31,0,0,19,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,31,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38, +39,6,7,22,23,7,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55,38,39, +23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55,38,47,1,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,33, +6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,6,7,49,6,7,38,39,38,39,54,55,54,55,22, +23,22,23,39,6,7,22,23,54,55,38,39,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54, +55,38,39,6,7,22,31,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55, +38,47,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,31,1,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55,38,39,128,1,18,18,27,27,18,18, +1,1,18,18,27,27,18,18,1,32,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15, +1,1,15,96,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,224,1,18, +18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,224,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,64,1,18,18,27,27, +18,18,1,1,18,18,27,27,18,18,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1, +15,15,1,1,15,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,64, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,224,1,18,18,27,27,18, +18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,64,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,64,15,1,1,15,15,1,1,15,1,96,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,16,27,18,18,1,1,18,18,27,27,18,18,1, +1,18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,27, +18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27, +18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,176,27,18,18,1,1,18,18, +27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1, +18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15, +15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1, +0,6,0,0,255,192,2,0,1,191,0,17,0,37,0,55,0,104,0,130,0,156,0,0,55,34,7,49,6,21,20,23, +22,51,50,55,54,53,52,39,38,35,7,38,35,49,34,7,6,21,20,31,1,22,51,50,55,54,53,52,47,1,7,34, +7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,38,7,49,6,7,49,6,7,6,23,22,51,54,55,54, +55,54,23,22,23,22,7,6,15,1,21,20,7,6,7,6,7,6,21,22,23,22,55,54,55,54,55,54,55,54,39,38, +39,7,50,23,49,22,21,22,23,54,55,38,39,38,39,6,7,6,7,22,23,54,55,52,55,54,51,55,38,7,49,6, +7,6,23,22,23,22,23,22,21,20,23,22,51,50,55,54,53,38,39,38,39,160,13,10,9,9,10,13,14,9,9,9, +9,14,73,10,13,13,10,9,9,64,10,13,13,10,9,9,64,55,14,9,9,9,9,14,14,9,9,9,9,14,1,0, +56,49,48,32,32,6,2,10,10,15,26,5,6,32,33,46,55,28,29,10,10,33,17,15,15,23,11,8,8,1,10,11, +15,43,29,29,5,61,4,1,35,35,59,48,17,11,12,2,22,22,2,1,25,25,37,37,25,25,1,2,22,22,2,12, +11,17,158,13,12,12,6,5,4,4,12,36,21,21,9,9,14,14,9,9,1,30,31,52,128,9,9,13,13,9,9,9, +9,13,13,9,9,41,9,9,10,13,13,10,64,9,9,10,13,13,10,64,87,9,9,14,14,9,9,9,9,13,13,10, +10,1,122,14,17,17,40,39,52,15,9,10,2,27,44,28,28,1,5,44,43,55,45,34,18,13,24,17,17,5,2,9, +9,12,15,9,9,2,8,30,30,44,63,88,62,49,49,17,130,12,11,17,22,2,2,22,37,25,25,1,1,25,25,37, +22,2,2,22,17,11,12,197,5,4,4,12,13,12,12,6,18,34,35,44,14,9,9,9,9,14,62,51,50,26,0,0, +0,2,0,0,255,194,2,128,1,192,0,69,0,139,0,0,55,22,23,22,23,22,55,54,55,54,39,38,39,55,54,55, +54,39,38,39,38,15,1,55,54,55,54,39,38,39,38,15,1,55,54,39,38,39,38,7,6,15,1,6,21,22,23,22, +23,51,54,55,54,39,38,39,38,7,6,7,6,7,34,39,38,53,52,55,54,51,37,35,6,7,6,23,22,23,22,55, +54,55,54,55,22,23,22,21,20,7,6,35,38,39,38,39,38,7,6,7,6,23,22,23,7,6,7,6,23,22,23,22, +63,1,7,6,7,6,23,22,23,22,63,1,7,6,23,22,23,22,55,54,63,1,54,53,38,39,38,39,200,27,11,5, +11,12,13,12,6,5,4,18,47,80,13,6,6,3,4,11,12,13,99,81,10,1,1,9,9,13,12,11,100,22,6,5, +4,13,12,12,12,6,84,15,1,30,31,45,100,50,29,8,3,2,11,12,12,13,8,12,21,17,11,12,12,11,17,1, +77,100,50,29,8,3,2,11,12,12,13,8,12,21,17,11,12,12,11,17,27,11,5,11,12,13,12,6,5,4,18,47, +80,13,6,6,3,4,11,12,13,99,81,10,1,1,9,9,13,12,11,100,22,5,4,4,13,12,12,12,6,84,15,1, +30,31,45,208,1,26,12,6,5,4,5,11,12,13,47,16,23,4,11,12,13,13,6,6,3,29,70,9,13,12,11,10, +1,1,9,86,49,12,12,12,6,5,4,4,13,188,33,37,45,31,30,1,5,41,12,12,13,8,7,3,2,11,17,1, +12,11,17,17,11,12,112,5,41,12,12,13,8,7,3,2,11,18,1,1,11,11,17,17,11,11,1,25,13,6,5,4, +5,11,12,13,47,17,22,4,12,11,13,13,6,6,3,28,69,9,13,12,11,10,1,1,9,86,49,12,12,12,6,6, +5,4,12,188,32,37,45,31,30,1,0,0,0,4,0,0,255,193,1,255,1,193,0,18,0,44,0,63,0,122,0,0, +55,38,35,34,15,1,6,21,20,23,22,51,50,63,1,54,53,54,39,55,52,55,49,54,51,50,23,22,21,22,23,54, +55,38,39,38,39,6,7,6,7,22,23,54,55,37,52,39,38,35,34,15,1,6,21,20,23,22,51,50,63,1,54,39, +7,54,39,49,38,39,49,38,39,6,7,6,7,6,23,20,23,22,51,54,55,54,55,54,55,22,23,22,23,22,21,6, +7,6,15,1,21,20,7,6,7,6,7,6,21,20,23,22,23,50,55,54,55,54,55,54,55,54,39,192,10,13,12,10, +138,9,9,10,12,13,10,137,9,1,9,8,12,11,17,17,11,12,2,22,22,2,1,25,25,37,37,25,25,1,2,22, +22,2,1,55,9,10,13,13,10,40,9,9,10,13,12,10,42,9,1,96,1,17,16,39,38,66,76,38,38,12,12,1, +10,9,14,26,5,6,30,31,44,40,25,24,11,11,2,18,18,8,17,15,15,23,11,8,8,10,9,13,4,25,24,26, +25,7,44,11,11,2,129,8,8,138,10,13,14,8,9,9,138,10,12,12,11,79,17,11,12,12,11,17,22,2,2,22, +37,25,25,1,1,25,25,37,22,2,2,22,209,13,10,9,9,43,10,12,13,10,9,9,41,10,14,211,31,41,41,32, +31,2,3,36,37,39,38,7,14,9,9,2,28,42,28,27,1,1,20,20,28,28,23,43,28,28,7,17,13,24,17,17, +5,2,9,9,12,13,9,9,1,8,8,24,24,49,49,44,45,18,0,0,0,3,0,0,255,192,2,0,1,192,0,59, +0,73,0,122,0,0,37,39,38,7,6,31,1,35,6,7,6,23,22,59,1,22,23,6,7,35,6,7,6,23,22,59, +1,22,23,6,7,35,6,7,6,23,22,59,1,22,23,6,7,35,6,7,6,23,22,59,1,54,55,54,55,53,38,39, +38,47,1,54,51,50,31,1,39,38,7,6,7,6,31,1,37,6,15,1,39,38,35,6,7,6,31,1,22,7,6,47, +1,38,35,6,7,6,31,1,22,7,6,47,1,38,7,6,7,6,31,2,22,23,22,23,21,54,55,54,55,53,38,39, +1,75,108,22,8,4,20,47,199,19,6,1,7,7,11,128,7,1,1,7,159,19,6,1,7,7,11,160,7,1,1,7, +127,19,6,1,7,7,11,128,7,1,1,7,95,19,6,1,7,7,11,208,51,34,34,1,1,23,23,38,134,9,10,8, +9,16,21,7,19,12,6,5,3,15,1,34,22,2,2,60,7,19,11,6,6,3,39,1,7,7,3,47,7,19,12,6, +6,3,44,1,6,8,2,34,7,19,11,6,6,3,34,74,48,29,29,1,29,17,17,1,3,22,206,33,4,20,22,8, +17,1,18,12,8,9,1,7,7,1,1,18,12,8,9,1,7,7,1,1,18,12,8,9,1,7,7,1,1,18,12,8, +9,1,34,34,51,32,41,31,32,14,62,4,2,5,66,18,1,2,9,9,11,49,35,2,22,50,190,18,2,9,9,12, +122,7,3,1,7,151,18,2,9,9,11,138,7,3,2,7,106,19,1,2,9,9,11,108,23,17,40,40,51,28,16,28, +28,35,113,22,1,0,0,0,0,4,0,0,255,192,2,128,1,192,0,30,0,55,0,63,0,80,0,0,19,54,55,49, +54,55,22,23,22,23,22,23,22,23,22,7,6,7,6,7,23,22,7,6,39,1,38,55,54,31,3,54,53,38,39,50, +51,54,51,22,23,22,23,20,7,23,54,53,38,39,38,39,6,7,19,1,54,55,1,6,7,49,37,38,55,5,48,49, +34,35,38,39,38,39,38,39,38,39,49,151,33,42,43,51,61,48,48,36,35,23,23,12,4,4,11,20,20,29,105,16, +12,15,19,253,176,16,12,15,19,112,72,90,7,1,7,1,2,3,2,41,27,27,1,9,40,17,2,40,41,61,57,40, +171,254,173,12,16,1,107,24,28,254,152,4,3,1,40,5,4,61,48,48,36,35,23,23,12,1,99,27,17,16,1,1, +23,23,34,33,35,35,28,12,12,25,31,32,31,82,15,19,16,12,1,208,15,19,16,12,88,57,70,12,17,16,15,1, +1,27,27,41,22,18,30,31,39,60,41,41,2,2,37,254,193,1,9,21,21,254,226,13,8,201,10,10,232,1,23,23, +34,34,34,35,28,0,0,0,0,1,0,0,255,224,1,192,1,160,0,70,0,0,1,17,6,7,6,7,6,35,38,39, +38,39,6,7,53,54,55,22,23,22,23,50,55,53,6,35,38,39,38,39,34,7,6,7,6,7,17,20,7,6,35,34, +39,38,53,17,52,55,54,51,50,23,22,29,1,54,55,54,55,54,51,22,23,22,23,50,55,54,55,54,55,1,192,14, +12,31,20,20,22,45,30,30,45,30,21,21,30,45,30,30,45,28,27,27,28,45,30,30,45,23,18,17,16,19,22,9, +9,14,14,9,9,9,9,13,13,10,10,22,19,16,17,18,23,45,30,30,45,22,20,20,31,11,15,1,144,254,176,5, +4,12,6,5,2,14,14,2,1,7,64,7,1,2,14,14,2,9,208,9,2,14,14,2,5,5,6,8,5,254,205,14, +9,9,9,9,14,1,129,13,9,9,9,9,13,14,5,8,6,5,5,2,14,14,2,5,6,12,4,5,0,6,0,0, +0,0,2,128,1,129,0,8,0,17,0,52,0,92,0,101,0,110,0,0,55,51,50,55,54,61,1,35,17,55,22,23, +6,7,38,39,54,55,1,34,15,1,48,49,20,49,6,21,20,23,22,23,22,55,48,49,48,49,55,54,23,22,15,1, +23,22,23,53,38,39,38,35,15,2,6,39,38,39,38,55,54,63,1,35,34,7,6,7,21,51,23,22,55,54,55,23, +22,55,54,63,1,23,22,55,54,63,1,54,39,38,47,1,55,21,20,23,22,59,1,17,35,23,38,39,54,55,22,23, +6,7,0,64,14,9,9,96,48,15,1,1,15,15,1,1,15,1,45,13,9,98,13,11,10,16,16,14,80,12,11,8, +9,27,146,4,4,31,40,40,44,8,14,30,24,28,29,21,20,1,1,22,82,6,44,40,40,31,18,91,21,26,25,18, +18,12,15,15,10,32,5,11,12,13,9,10,8,1,2,10,149,209,9,9,13,65,96,48,15,1,1,15,15,1,1,15, +64,9,9,14,224,255,0,64,1,15,15,1,1,15,15,1,1,0,8,90,1,12,16,15,13,10,2,1,11,73,9,10, +12,11,24,118,3,4,194,31,16,17,1,153,28,20,1,2,21,24,28,29,21,75,17,16,31,224,82,16,2,3,21,16, +9,2,1,12,38,4,8,1,1,11,11,11,13,12,9,122,89,224,14,9,9,1,0,224,1,15,15,1,1,15,15,1, +0,2,0,0,255,192,2,0,1,192,0,44,0,71,0,0,1,38,39,49,38,39,49,38,39,38,39,38,39,38,39,49, +6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,21,17,22,23,22,23,33,54,55,54,55,17,52,39,7,6,35, +34,47,1,53,54,55,54,55,54,55,54,55,54,55,22,23,22,23,22,23,22,23,21,7,1,238,12,16,15,32,31,59, +4,5,14,17,18,15,15,18,17,14,5,4,8,7,52,28,29,15,15,11,18,1,13,14,20,1,160,20,14,13,1,18, +191,22,25,25,22,145,13,32,31,80,5,6,1,1,11,12,14,11,6,5,79,32,31,14,145,1,29,9,12,12,23,23, +43,3,4,11,11,11,1,1,11,11,11,4,3,6,5,38,21,20,12,11,9,15,23,254,249,20,14,13,1,1,13,13, +20,1,8,23,15,205,16,16,113,46,11,24,23,58,4,4,1,1,8,8,9,9,4,4,58,23,24,11,46,113,0,0, +0,6,0,32,255,192,2,0,1,192,0,20,0,38,0,53,0,62,0,71,0,80,0,0,1,33,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19, +35,38,39,54,55,54,55,51,22,23,22,23,6,7,19,35,21,51,54,55,53,38,39,21,35,21,51,54,55,53,38,39, +21,35,21,51,54,55,53,38,39,1,128,254,224,27,18,18,1,1,18,18,27,1,32,27,18,18,1,1,18,18,27,144, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22,1,1,15,160, +16,16,15,1,1,15,16,16,15,1,1,15,16,16,15,1,1,15,1,192,1,18,18,27,254,128,27,18,18,1,1,18, +18,27,1,128,27,18,18,1,128,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22, +1,1,22,23,34,15,1,1,64,96,1,15,64,15,1,128,96,1,15,64,15,1,128,96,1,15,64,15,1,0,0,0, +0,6,0,0,255,224,2,64,1,160,0,20,0,38,0,53,0,64,0,75,0,86,0,0,1,33,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,38,39,38,39,5,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19, +35,38,39,54,55,54,55,51,22,23,22,23,6,7,55,35,38,39,54,55,51,22,23,6,7,53,35,38,39,54,55,51, +22,23,6,7,53,35,38,39,54,55,51,22,23,6,7,2,0,254,64,27,18,18,1,1,18,18,27,1,192,27,18,18, +1,1,18,18,27,254,176,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64, +34,23,22,1,1,15,224,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15, +128,15,1,1,15,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,96,1,18,18,27, +27,18,18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23,34,15,1,64,1,15,15,1,1, +15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,0,0,0,0,3,0,0,255,192,2,0, +1,192,0,26,0,44,0,58,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,21,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,17,38,39,54,55,54,55,51,22, +23,22,23,6,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,31, +20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,81,55,13,27,28,36,64,36,28,27,13,55,81,1,192,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,128,1,20,20,31,31,20,20,1,1, +20,20,31,31,20,20,1,254,192,2,54,32,20,19,1,1,19,20,32,54,2,0,0,0,0,4,0,0,255,192,1,128, +1,192,0,20,0,38,0,53,0,64,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19,35,38,39,54,55,54,55,51,22,23,22,23, +6,7,3,35,38,39,54,55,51,22,23,6,7,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1, +13,14,20,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22, +1,1,15,48,96,15,1,1,15,96,15,1,1,15,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160, +20,14,13,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23, +34,15,1,1,64,1,15,15,1,1,15,15,1,0,0,0,0,7,0,0,255,224,2,64,1,160,0,12,0,26,0,37, +0,48,0,59,0,77,0,92,0,0,1,33,6,7,6,7,21,33,53,38,39,38,39,1,22,23,49,22,23,33,54,55, +54,55,17,33,17,37,51,22,23,6,7,35,38,39,54,55,21,51,22,23,6,7,35,38,39,54,55,21,51,22,23,6, +7,35,38,39,54,55,39,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,7,51,22,23,22,23,6,7, +35,38,39,54,55,54,55,2,16,254,32,20,14,13,1,2,64,1,13,14,20,253,240,1,13,14,20,1,224,20,14,13, +1,253,192,1,112,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15, +1,1,15,192,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,64,128,20,14,13,1,1,15,192,15,1,1, +13,14,20,1,160,1,13,14,20,16,16,20,14,13,1,254,112,20,14,13,1,1,13,14,20,1,48,254,208,240,1,15, +15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,128,1,18,18,27,27,18,18, +1,1,18,18,27,27,18,18,1,160,1,13,14,20,15,1,1,15,20,14,13,1,0,0,0,3,0,16,255,193,1,48, +1,192,0,18,0,41,0,65,0,0,55,53,38,39,6,7,21,6,7,22,23,22,51,50,55,54,55,38,39,55,53,38, +39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49,38,39,54,55,53,54,55,54, +51,50,23,22,23,21,22,23,6,7,6,7,176,1,15,15,1,30,2,1,13,14,20,20,14,13,1,2,30,96,1,32, +31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13, +1,31,1,1,22,23,34,125,211,15,1,1,15,211,12,33,20,14,14,14,14,20,33,12,44,167,48,31,32,1,1,32, +31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192,21,13,14,14,13,21,192,24,40, +33,23,22,1,0,3,0,16,255,193,1,48,1,192,0,18,0,41,0,65,0,0,55,53,38,39,6,7,21,6,7,22, +23,22,51,50,55,54,55,38,39,55,53,38,39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39, +7,38,39,49,38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,176,1,15,15,1,30,2,1, +13,14,20,20,14,13,1,2,30,96,1,32,31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34, +23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34,125,163,15,1,1,15,163,12,33,20,14,14,14, +14,20,33,12,44,167,48,31,32,1,1,32,31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33, +40,24,192,21,13,14,14,13,21,192,24,40,33,23,22,1,0,3,0,16,255,193,1,48,1,192,0,18,0,41,0,65, +0,0,55,53,38,39,6,15,1,6,7,22,23,22,51,50,55,54,55,38,39,55,53,38,39,38,39,6,7,6,7,21, +6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49,38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23, +6,7,6,7,176,1,15,14,1,1,30,2,1,13,14,20,20,14,13,1,2,30,96,1,32,31,47,47,32,33,1,31, +1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34, +125,115,15,1,1,15,115,12,33,20,14,14,14,14,20,33,12,44,167,48,31,32,1,1,32,31,48,167,37,52,61,40, +41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192,21,13,14,14,13,21,192,24,40,33,23,22,1,0,0,0, +0,3,0,16,255,193,1,48,1,192,0,18,0,41,0,65,0,0,55,53,38,39,6,15,1,6,7,22,23,22,51,50, +55,54,55,38,39,55,53,38,39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49, +38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,176,1,15,14,1,1,30,2,1,13,14,20, +20,14,13,1,2,30,96,1,32,31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1, +1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34,125,51,15,1,1,15,51,12,33,20,14,14,14,14,20,33, +12,44,167,48,31,32,1,1,32,31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192, +21,13,14,14,13,21,192,24,40,33,23,22,1,0,0,0,0,3,0,16,255,193,1,48,1,192,0,22,0,46,0,64, +0,0,37,53,38,39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49,38,39,54, +55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,53,6,7,49,6,7,22,23,22,23,54,55,54,55,38, +39,38,39,1,16,1,32,31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31, +1,13,14,20,20,14,13,1,31,1,1,22,23,34,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,169,167, +48,31,32,1,1,32,31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192,21,13,14, +14,13,21,192,24,40,33,23,22,1,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,8,0,0, +255,224,2,0,1,160,0,17,0,35,0,53,0,71,0,89,0,107,0,125,0,168,0,0,37,34,7,49,6,21,20,23, +22,51,50,55,54,53,52,39,38,35,55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,55,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,7,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,53, +55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,51,50,55,49,54,53,52,39,38,35,34,7,6,21, +20,23,22,51,7,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,47,1,38,15,1,38,39,38,7,39, +38,35,34,7,6,21,17,22,23,51,54,55,17,52,55,54,51,50,31,1,6,23,22,23,7,6,31,1,22,63,1,54, +39,1,32,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,64,14,9,9, +9,9,14,14,9,9,9,9,14,192,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9, +9,9,14,64,14,9,9,9,9,14,14,9,9,9,9,14,32,14,9,9,9,9,14,14,9,9,9,9,14,5,11,11, +12,6,27,32,32,29,16,31,42,43,33,22,1,15,32,15,1,11,10,15,15,10,17,15,2,2,20,7,9,9,11,12, +11,169,10,10,64,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,64,9, +9,14,14,9,9,9,9,14,14,9,9,128,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9,9,9, +9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,229,11, +9,9,7,20,2,2,15,17,29,39,30,37,254,186,15,1,1,15,1,76,15,10,11,11,16,29,32,32,27,6,12,11, +11,10,10,169,11,12,0,0,0,2,0,0,255,192,2,0,1,192,0,22,0,65,0,0,55,22,23,21,22,23,51,54, +55,53,33,21,22,23,51,54,55,53,54,55,53,33,21,37,33,53,54,55,54,31,1,6,23,6,31,1,22,63,1,54, +47,1,38,7,38,7,39,38,39,6,7,6,7,21,35,6,7,21,22,23,33,54,55,53,38,39,32,1,31,1,15,32, +15,1,1,0,1,15,32,15,1,31,1,254,64,1,208,254,112,1,7,8,7,13,11,23,9,9,11,12,11,105,10,10, +11,11,12,29,42,14,23,32,33,21,22,1,16,15,1,1,15,1,224,15,1,1,15,64,44,27,41,15,1,1,15,15, +15,15,1,1,15,41,27,44,32,32,128,179,8,3,4,6,14,42,29,12,11,11,10,10,105,11,12,11,9,9,23,11, +13,22,1,1,22,21,33,179,1,15,32,15,1,1,15,32,15,1,0,0,0,4,0,0,255,192,1,192,1,192,0,42, +0,68,0,86,0,122,0,0,19,6,7,49,6,7,49,6,7,22,23,22,23,38,39,38,39,38,53,54,55,54,55,22, +23,22,23,20,7,6,7,6,7,54,55,54,55,38,39,38,39,38,39,17,38,7,49,6,7,22,23,22,23,22,23,22, +51,50,55,54,55,54,55,54,55,38,39,38,7,53,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55, +38,39,49,38,39,6,7,6,7,22,23,54,55,48,51,38,39,54,55,54,55,22,23,22,23,6,7,50,49,48,49,22, +23,54,55,224,63,50,51,29,30,1,1,37,37,60,5,2,36,22,22,2,50,49,75,75,49,50,2,22,22,36,2,5, +60,37,37,1,1,30,29,51,50,63,26,18,19,1,1,6,7,7,4,12,12,15,15,12,12,4,7,7,6,1,1,19, +18,26,24,16,15,1,1,16,16,23,23,16,16,1,1,15,16,24,144,2,40,41,61,61,41,40,2,2,51,6,26,1, +36,2,1,27,27,41,41,27,27,1,2,36,1,26,6,51,2,1,192,1,30,29,51,50,63,70,55,54,27,33,25,25, +38,38,47,75,49,50,2,2,50,49,75,47,38,38,25,25,33,27,54,55,70,63,50,51,29,30,1,254,200,1,10,9, +26,27,41,41,24,14,4,5,5,4,14,24,41,41,27,26,9,10,1,32,1,15,16,24,24,16,15,1,1,15,16,24, +24,16,15,1,56,61,41,40,2,2,40,41,61,69,42,20,15,28,48,41,27,27,1,1,27,27,41,48,28,15,20,42, +69,0,0,0,0,2,0,0,255,224,2,0,1,160,0,21,0,41,0,0,1,22,23,49,22,23,17,6,7,6,7,33, +38,39,38,39,17,54,55,54,55,33,5,34,7,49,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,33,1,192, +27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,254,160,14,9,9,9,9,14,1,64,14,9, +9,9,9,14,254,192,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,1,0,0,255,224,2,0,0,32,0,19,0,0,55,52,55,49,54,51, +33,50,23,22,21,20,7,6,35,33,34,39,38,53,0,9,9,14,1,192,14,9,9,9,9,14,254,64,14,9,9,0, +14,9,9,9,9,14,14,9,9,9,9,14,0,3,0,0,255,192,2,0,1,192,0,28,0,50,0,69,0,0,1,35, +6,7,21,35,53,54,55,54,55,51,22,23,22,23,21,6,7,6,7,35,53,51,54,55,53,38,39,5,54,55,49,54, +55,33,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,23,51,50,55,54,53,52,39,38,43,1,34,7,6,21, +20,23,22,51,1,176,224,15,1,64,1,22,23,34,224,34,23,22,1,1,22,23,34,16,16,15,1,1,15,254,80,1, +18,18,27,1,0,27,18,18,1,1,18,18,27,255,0,27,18,18,1,96,192,14,9,9,9,9,14,192,14,9,9,9, +9,14,1,128,1,15,16,16,34,23,22,1,1,22,23,34,224,34,23,22,1,64,1,15,224,15,1,128,27,18,18,1, +1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,2,0,0,255,224,1,192,1,160,0,21,0,47,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39, +17,54,55,54,55,33,7,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49, +1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,241,47,47,14,14,17,16,47,48,17, +16,15,15,46,46,15,15,16,17,48,47,16,17,14,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,176,47,48,17,16,15,15,46,46,15,15,16,17,48,47,16,17,14,14,47,47,14,14,17,16,0,0, +0,3,0,0,255,192,2,0,1,192,0,4,0,109,0,122,0,0,55,51,53,35,21,37,51,54,55,38,39,35,53,38, +39,38,39,35,53,38,39,6,7,21,35,53,38,39,6,7,21,35,53,38,39,6,7,21,35,6,7,6,7,21,35,6, +7,22,23,51,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,22,23,22,23,51,21,22,23,54,55,53,51,21, +22,23,54,55,53,51,21,22,23,54,55,53,51,54,55,54,55,53,51,54,55,38,39,35,53,51,54,55,38,39,35,53, +7,6,7,35,38,39,53,54,55,51,22,23,21,160,192,192,1,32,48,15,1,1,15,48,1,18,18,27,16,1,15,15, +1,64,1,15,15,1,64,1,15,15,1,16,27,18,18,1,48,15,1,1,15,48,48,15,1,1,15,48,48,15,1,1, +15,48,1,18,18,27,16,1,15,15,1,64,1,15,15,1,64,1,15,15,1,16,27,18,18,1,48,15,1,1,15,48, +48,15,1,1,15,48,64,1,15,224,15,1,1,15,224,15,1,96,192,192,176,1,15,15,1,16,27,18,18,1,48,15, +1,1,15,48,48,15,1,1,15,48,48,15,1,1,15,48,1,18,18,27,16,1,15,15,1,64,1,15,15,1,64,1, +15,15,1,16,27,18,18,1,48,15,1,1,15,48,48,15,1,1,15,48,48,15,1,1,15,48,1,18,18,27,16,1, +15,15,1,64,1,15,15,1,64,192,15,1,1,15,224,15,1,1,15,224,0,1,0,31,255,192,1,224,1,192,0,154, +0,0,37,6,35,34,47,1,23,22,7,34,35,34,47,2,21,23,22,7,6,35,34,47,1,21,20,7,6,35,34,39, +38,61,1,7,6,39,38,63,1,39,15,1,6,35,34,35,38,63,1,7,6,35,34,39,38,55,54,63,1,39,38,55, +54,31,1,55,39,7,34,35,34,39,38,63,1,39,38,39,38,55,54,55,54,31,1,39,38,55,54,31,2,53,39,38, +55,54,31,1,39,52,55,54,51,50,23,22,29,1,55,54,23,22,15,1,23,63,1,54,23,22,15,1,55,54,23,22, +23,22,7,6,15,1,23,22,7,6,35,34,35,39,7,23,55,54,23,22,15,1,23,22,23,22,7,1,220,10,18,8, +8,25,5,4,21,3,3,18,5,18,60,48,14,14,7,10,9,8,14,9,9,14,14,9,9,14,17,17,14,14,48,1, +60,18,5,18,3,3,21,4,5,25,6,9,18,10,6,3,3,12,26,20,21,4,7,22,66,61,61,66,3,3,18,5, +4,21,20,26,12,3,3,6,8,12,12,12,25,5,3,19,22,8,18,59,47,14,14,17,17,14,1,9,10,13,14,9, +9,14,17,17,15,14,49,1,60,18,7,22,21,4,5,25,12,12,12,8,6,3,3,12,26,20,21,4,5,18,3,3, +67,59,60,66,22,7,4,20,21,26,12,3,3,6,64,16,4,15,20,22,8,17,67,35,70,49,17,17,7,7,14,29, +14,9,9,9,9,14,29,14,14,14,17,17,49,70,35,67,17,8,22,20,15,4,16,12,12,12,8,15,5,8,22,20, +3,18,35,35,18,17,22,8,5,15,8,12,12,12,12,3,3,6,15,20,22,8,3,20,67,35,70,49,17,17,14,14, +15,30,14,9,9,9,9,14,30,15,14,14,17,17,49,70,35,67,20,3,8,22,20,15,6,3,3,12,12,12,13,7, +15,5,8,22,17,18,35,35,18,3,20,22,8,5,15,8,12,12,12,0,0,1,0,0,255,192,2,0,1,192,0,30, +0,0,37,6,7,6,39,38,39,7,6,35,34,39,38,53,52,63,1,38,39,38,55,54,55,54,55,54,23,22,7,6, +7,1,194,20,30,27,32,23,18,232,12,16,16,12,12,12,231,14,4,2,11,12,24,53,60,60,40,37,10,9,51,206, +24,12,12,3,4,14,231,12,12,12,16,16,12,231,19,23,31,29,29,20,51,9,10,37,40,60,60,53,0,2,0,0, +255,192,1,192,1,192,0,58,0,93,0,0,19,22,7,6,7,6,7,21,20,7,6,35,34,39,38,39,53,38,39,38, +39,38,63,1,54,55,54,23,22,23,22,29,1,51,55,52,55,54,51,50,23,22,23,20,21,23,51,53,54,55,48,53, +54,55,54,23,22,31,1,19,20,7,6,35,34,39,38,61,1,35,34,39,38,39,38,39,38,61,1,54,55,54,55,54, +23,22,23,22,23,22,23,20,21,17,222,4,4,4,12,22,33,11,11,18,15,12,12,1,31,22,12,4,4,4,31,1, +5,5,6,6,4,4,18,17,4,4,4,6,4,3,1,18,16,1,3,5,6,5,6,5,2,30,226,12,12,16,16,12, +12,17,13,11,12,9,9,6,4,2,31,32,52,7,8,8,7,6,4,3,1,1,43,19,19,19,16,25,7,218,16,12, +12,12,12,16,218,6,26,15,19,20,19,137,5,4,4,1,1,4,5,6,144,148,5,4,3,3,3,4,1,1,148,144, +6,4,1,4,1,1,4,4,6,136,254,189,16,12,12,12,12,16,120,5,5,9,9,12,12,12,114,57,47,46,22,3, +1,1,5,4,7,6,6,2,1,254,72,0,0,1,0,16,255,224,1,224,1,160,0,52,0,0,37,6,7,49,6,7, +49,6,7,38,39,38,39,38,55,54,55,54,23,22,51,54,55,54,55,38,39,38,39,6,7,23,22,7,6,7,35,38, +39,53,54,55,54,31,1,54,55,22,23,22,23,22,23,1,224,1,30,30,50,50,63,74,60,11,2,1,8,8,13,12, +11,43,53,68,45,45,2,2,45,45,68,57,44,45,12,6,7,18,146,17,2,1,16,15,14,48,62,84,63,50,50,30, +30,1,192,62,51,50,30,30,1,1,44,8,13,13,11,10,2,2,8,32,2,45,45,68,68,45,45,2,1,36,45,14, +15,16,1,2,17,146,19,6,6,12,48,54,2,1,30,30,50,51,62,0,0,5,0,0,255,192,1,192,1,192,0,26, +0,39,0,50,0,61,0,72,0,0,19,54,55,51,22,31,1,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52, +55,54,59,1,55,7,33,17,6,7,6,7,33,38,39,38,39,17,23,21,22,23,54,55,53,38,39,6,7,51,21,22, +23,54,55,53,38,39,6,7,51,21,22,23,54,55,53,38,39,6,7,135,9,20,120,20,9,7,96,14,9,9,9,9, +14,254,128,14,9,9,9,9,14,96,7,104,1,129,1,18,18,27,254,255,27,18,18,1,80,2,14,15,1,1,15,14, +2,96,2,14,16,1,1,16,14,2,97,1,15,15,1,1,15,15,1,1,174,17,1,1,17,14,9,9,14,14,9,9, +9,9,14,14,9,9,14,110,254,192,27,18,18,1,1,18,18,27,1,64,80,224,15,1,1,15,224,15,1,1,15,224, +15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,0,0,2,0,16,255,224,1,240,1,160,0,34, +0,70,0,0,1,7,38,39,6,7,6,7,6,23,22,23,22,55,54,55,54,55,54,55,22,23,7,6,23,22,23,51, +54,55,53,38,39,38,15,1,38,7,49,6,7,6,7,6,7,38,39,55,54,39,38,39,35,6,7,21,22,23,22,63, +1,22,23,54,55,54,55,54,39,38,39,1,194,49,60,85,72,56,55,23,4,6,5,13,13,12,11,4,17,39,39,51, +58,42,45,11,6,6,18,147,17,2,1,16,15,14,8,13,12,11,4,17,39,39,51,58,42,44,12,6,6,18,147,17, +2,1,16,15,14,49,60,84,72,56,55,24,4,6,5,13,1,152,48,54,2,1,40,41,68,13,12,11,4,4,5,6, +13,48,29,28,1,1,37,44,14,15,15,2,2,17,146,19,6,6,12,250,4,6,5,13,48,29,28,1,1,37,44,14, +15,15,2,2,17,146,19,6,6,12,48,54,2,1,40,41,68,13,12,12,3,0,0,0,0,2,0,16,255,192,1,176, +1,192,0,48,0,59,0,0,1,50,23,49,22,21,20,7,6,43,1,21,22,23,55,54,51,50,23,22,21,20,15,1, +22,23,6,7,6,7,38,39,38,39,54,55,54,55,53,35,34,39,38,53,52,55,54,59,1,7,38,39,6,7,21,22, +23,54,55,53,1,16,14,9,9,9,9,14,16,57,43,21,10,13,13,10,9,9,24,32,1,2,59,59,88,88,59,59, +2,2,49,49,76,16,14,9,9,9,9,14,96,24,2,22,22,2,2,22,22,2,1,192,9,9,14,14,9,9,34,10, +35,22,9,9,10,13,13,10,24,49,64,88,59,59,2,2,59,59,88,80,56,56,14,34,9,9,14,14,9,9,192,22, +2,2,22,128,22,2,2,22,128,0,0,0,0,2,0,0,255,224,2,0,1,160,0,38,0,66,0,0,23,51,50,55, +54,53,52,39,38,43,1,34,39,38,53,17,52,55,54,59,1,50,55,54,53,52,39,38,43,1,6,7,6,7,17,22, +23,22,23,37,39,38,7,6,7,21,35,34,7,6,29,1,20,23,22,59,1,21,22,23,22,63,1,54,53,52,39,96, +64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41,1,153, +144,12,14,14,1,128,14,9,9,9,9,14,128,1,14,14,12,144,7,7,32,9,9,14,14,9,9,9,9,14,1,0, +14,9,9,9,9,14,14,9,9,1,27,27,41,255,0,41,27,27,1,241,136,11,6,7,15,72,9,9,14,64,14,9, +9,71,15,7,6,10,136,7,10,10,7,0,0,2,0,0,255,224,2,0,1,160,0,27,0,66,0,0,37,39,38,7, +6,7,21,35,34,7,6,29,1,20,23,22,59,1,21,22,23,22,63,1,54,53,52,39,55,35,34,7,6,21,20,23, +22,59,1,50,23,22,21,17,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,17,38,39,38,39,1, +89,144,12,14,14,1,128,14,9,9,9,9,14,128,1,14,14,12,144,7,7,71,64,14,9,9,9,9,14,64,14,9, +9,9,9,14,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41,209,136,11,6,7,15,72,9,9,14,64,14, +9,9,72,15,7,6,11,136,7,10,10,7,207,9,9,14,14,9,9,9,9,14,255,0,14,9,9,9,9,14,14,9, +9,1,27,27,41,1,0,41,27,27,1,0,0,1,0,32,255,224,1,240,1,160,0,57,0,0,1,50,23,49,22,29, +1,6,7,35,34,39,38,53,52,63,1,38,39,6,7,6,7,22,23,22,23,54,55,54,55,54,55,50,23,22,21,6, +7,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,55,54,51,1,213,11,8,8,2,17,146,12,7,8,8, +45,43,58,68,45,45,2,2,45,45,68,34,20,20,13,15,13,14,9,9,3,46,46,52,62,51,50,30,30,1,1,30, +30,50,51,62,84,62,48,9,10,1,160,8,7,12,146,18,1,8,8,11,10,9,45,36,1,2,45,45,68,68,45,45, +2,1,8,8,9,11,1,9,9,14,27,21,21,1,1,30,30,50,51,62,62,51,50,30,30,1,2,54,48,8,0,0, +0,4,0,0,255,192,2,0,1,193,0,59,0,77,0,92,0,110,0,0,37,54,55,38,39,38,39,35,54,55,38,39, +38,39,35,54,53,38,39,38,39,34,7,22,21,6,7,6,7,35,6,7,6,7,22,23,35,6,7,6,7,22,23,6, +7,6,7,22,23,22,23,33,54,55,54,55,38,39,38,39,37,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55, +54,51,23,6,7,49,6,7,38,39,38,39,38,55,51,22,7,39,34,39,49,38,53,52,55,54,51,50,23,22,21,20, +7,6,35,1,195,28,1,1,20,20,31,14,21,1,1,18,18,27,6,6,1,27,27,41,8,7,15,1,22,23,34,16, +27,18,18,1,1,21,14,31,20,20,1,1,28,27,17,16,1,1,20,20,31,1,112,31,20,20,1,1,16,17,27,254, +253,14,9,9,9,9,14,14,9,9,9,9,14,160,11,28,28,29,29,29,28,9,2,9,176,9,1,32,14,9,9,9, +9,14,14,9,9,9,9,14,79,21,36,31,20,20,1,18,31,27,18,17,1,15,18,41,27,27,1,2,21,25,34,23, +22,1,1,18,18,26,30,18,2,21,20,31,36,21,5,19,20,27,31,20,20,1,1,20,20,31,27,20,19,5,113,9, +9,14,14,9,9,9,9,14,14,9,9,139,22,15,15,1,1,15,15,22,9,2,2,9,75,9,9,14,14,9,9,9, +9,14,14,9,9,0,0,0,0,4,0,0,255,224,2,64,1,160,0,20,0,38,0,60,0,81,0,0,1,33,6,7, +6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,5,50,23,49,22,21,20,7,6,35,34,39,38,53,54, +55,54,51,5,6,35,33,34,39,38,63,1,54,51,50,31,1,55,54,51,50,31,1,22,15,1,33,38,39,38,39,53, +38,39,6,7,21,22,23,22,23,33,54,55,38,39,2,16,254,128,20,14,13,1,1,13,14,20,1,128,20,14,13,1, +1,13,14,20,254,207,14,9,9,9,9,14,13,10,9,1,9,9,13,1,15,5,9,254,224,10,4,4,5,70,5,8, +8,5,22,63,4,9,9,5,106,5,4,38,254,176,31,20,20,1,2,22,22,2,1,34,34,51,1,80,22,2,2,22, +1,160,1,13,14,20,255,0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,64,9,9,14,14,9,9,9,9,14, +14,9,9,216,8,9,8,8,96,7,7,30,94,7,7,160,8,9,120,1,20,20,31,240,22,2,2,22,240,51,34,34, +1,2,22,22,2,0,0,0,0,2,0,0,255,192,1,255,1,191,0,27,0,41,0,0,37,7,39,55,35,38,39,53, +7,6,15,1,55,54,55,23,6,15,1,6,39,38,63,1,54,63,1,23,55,22,21,49,20,15,1,39,55,54,51,50, +31,1,1,166,233,34,3,46,15,1,3,8,3,23,79,9,8,34,16,22,120,14,10,10,4,35,7,16,233,130,71,18, +18,49,130,49,19,26,26,19,40,228,233,33,4,1,15,46,3,8,9,79,23,3,7,33,16,7,35,4,11,9,14,120, +22,15,234,130,161,19,26,26,19,49,130,49,18,18,40,0,0,2,0,0,255,192,1,255,1,191,0,13,0,27,0,0, +1,54,51,49,50,31,1,22,21,20,15,1,39,55,23,7,6,15,1,6,39,38,63,1,54,63,1,23,1,107,19,26, +26,19,40,18,18,49,130,49,59,233,16,22,120,14,10,10,4,35,7,16,233,130,1,173,18,18,40,19,26,26,19,49, +130,49,201,233,16,7,35,4,11,9,14,120,22,15,234,130,0,2,0,0,255,192,1,255,1,191,0,13,0,40,0,0, +1,22,21,49,20,15,1,39,55,54,51,50,31,1,7,38,15,1,6,39,38,63,1,54,51,50,31,1,7,6,15,1, +6,39,38,63,1,54,63,1,39,1,237,18,18,52,130,52,19,26,26,19,40,253,16,17,103,16,17,14,14,102,22,29, +29,22,143,188,74,102,25,13,9,9,2,5,21,74,154,14,1,133,19,26,26,19,52,130,52,18,18,40,56,14,14,101, +15,15,16,17,102,21,21,143,189,73,21,5,2,10,8,13,25,102,73,155,13,0,0,0,0,1,0,31,255,192,1,32, +1,192,0,26,0,0,37,7,6,35,34,47,1,38,55,54,55,51,17,52,55,54,51,50,23,22,21,17,51,22,23,22, +7,1,26,104,8,10,10,8,104,10,6,7,14,73,9,9,14,14,9,9,72,15,7,6,10,56,112,8,8,112,11,15, +13,1,1,64,14,9,9,9,9,14,254,192,1,13,15,11,0,1,0,0,0,63,2,0,1,64,0,27,0,0,37,20, +7,49,6,35,33,21,6,7,6,47,1,38,53,52,63,1,54,23,22,23,21,33,50,23,22,21,2,0,9,9,14,254, +192,1,13,15,11,112,8,8,112,11,15,13,1,1,64,14,9,9,192,14,9,9,72,15,7,6,10,104,8,10,10,8, +104,10,6,7,14,73,9,9,14,0,0,0,0,1,0,0,0,63,2,0,1,64,0,24,0,0,37,7,6,39,38,61, +1,33,34,39,38,53,54,55,33,53,54,55,54,31,1,22,21,20,7,1,248,112,11,15,14,254,192,14,9,9,3,29, +1,64,1,13,15,11,112,8,8,174,104,10,6,7,14,73,9,10,14,29,2,72,15,7,6,10,104,8,10,10,8,0, +0,1,0,31,255,192,1,31,1,192,0,26,0,0,1,6,7,35,17,20,7,6,35,34,39,38,53,17,35,38,39,38, +63,1,54,51,50,31,1,22,7,1,29,7,14,72,9,9,14,14,9,9,73,15,7,5,10,104,7,10,10,8,104,11, +7,1,46,13,1,254,192,14,9,9,9,9,14,1,64,1,13,15,11,112,8,8,112,11,15,0,0,0,0,4,0,0, +255,192,2,64,1,192,0,25,0,29,0,43,0,58,0,0,19,54,55,49,54,55,51,21,20,23,22,59,1,21,7,6, +15,1,6,23,35,38,39,38,39,17,5,53,23,35,5,22,21,49,20,15,1,39,55,54,51,50,31,1,7,55,23,7, +6,15,1,6,39,38,63,1,54,55,49,0,1,18,18,27,160,9,9,14,128,95,12,4,16,3,5,195,27,18,18,1, +1,0,128,128,1,52,12,12,29,71,29,13,15,16,13,14,252,129,71,129,6,9,60,9,6,6,2,15,2,6,1,128, +27,18,18,1,128,14,9,9,140,94,13,17,60,15,13,1,18,18,27,1,128,64,128,128,122,12,16,16,13,29,71,29, +12,12,14,166,128,71,129,6,2,15,2,6,6,10,59,8,8,0,0,0,0,1,0,0,255,225,1,191,1,160,0,70, +0,0,37,21,6,7,35,38,39,38,63,1,39,7,23,22,7,6,43,1,38,39,53,54,55,54,51,50,31,1,55,39, +7,6,39,38,39,53,54,55,51,22,23,22,7,48,49,20,15,1,23,55,39,38,55,54,55,51,22,23,21,6,7,6, +47,1,7,23,55,54,23,22,21,1,191,2,21,135,21,9,7,14,30,72,71,30,14,7,9,21,136,21,2,1,19,5, +6,13,10,30,71,71,30,16,19,19,1,2,21,135,21,9,4,1,9,29,71,71,30,14,7,9,21,135,22,1,1,19, +18,16,30,72,72,30,15,19,21,129,135,22,1,1,18,19,16,30,69,71,30,16,19,19,2,21,135,21,9,3,9,30, +71,71,30,14,7,9,22,135,21,2,1,19,5,5,13,10,31,71,71,30,16,19,19,1,2,21,135,21,9,7,14,30, +71,72,30,14,7,11,19,0,0,3,0,0,255,192,1,128,1,192,0,29,0,47,0,58,0,0,1,35,38,39,38,39, +6,7,6,7,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,35,50,23,49,22,21,20,7, +6,35,34,39,38,53,52,55,54,51,23,35,38,39,54,55,51,22,23,6,7,1,80,54,10,24,24,32,32,24,24,10, +54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14,20,144,14,9,9,9,9,14,14,9,9,9,9,14, +80,160,15,1,1,15,160,15,1,1,15,1,128,28,18,17,1,1,17,18,28,1,13,14,20,254,160,20,14,13,1,1, +13,14,20,1,96,20,14,13,1,9,9,14,14,9,9,9,9,14,14,9,9,160,1,15,15,1,1,15,15,1,0,0, +0,1,255,255,0,63,1,255,1,64,0,34,0,0,37,7,6,39,38,61,1,35,21,6,7,6,47,1,38,53,52,63, +1,54,23,22,23,21,51,53,52,55,54,31,1,22,21,20,7,1,247,112,12,14,14,192,1,14,14,12,112,7,7,112, +12,14,15,1,192,14,14,12,112,7,8,174,104,10,6,7,15,56,56,15,7,6,10,104,8,10,10,8,104,10,6,7, +15,55,56,15,7,5,10,104,7,11,10,8,0,1,0,0,255,192,1,0,1,192,0,34,0,0,55,7,6,35,34,47, +1,38,55,54,55,51,53,35,38,39,38,63,1,54,51,50,31,1,22,7,6,7,35,21,51,22,23,22,7,250,104,8, +10,10,8,103,10,6,6,15,56,56,15,7,6,10,104,8,10,10,8,104,10,6,7,15,56,56,15,7,6,10,56,112, +8,8,112,11,15,13,1,192,1,13,15,11,112,8,8,112,11,15,13,1,192,1,13,15,11,0,0,0,0,2,0,0, +255,192,2,0,1,192,0,26,0,52,0,0,5,54,55,49,54,55,49,54,55,38,39,38,39,38,39,6,7,6,7,6, +7,22,23,22,23,22,23,39,54,59,1,53,52,55,54,59,1,50,23,22,29,1,51,50,23,22,15,1,6,47,1,38, +55,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,127,5,10,64,9, +9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7,3,64,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,246,10,96,14,9,9,9,9,14,96,10,10,7,112,10,10,112,7,10,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,55,22,23,49,22,23,49,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,6,7,6,7,6,7,55,22,29,1,51,50,23,22,29,1,20,7,6,43,1,21,20,7,6,47,1, +38,63,1,54,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246,10, +96,14,9,9,9,9,14,96,10,10,7,112,10,10,112,7,10,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,127,5,10,64,9,9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7,3, +0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,37,38,39,49,38,39,49,38,39,6,7,6,7,6,7,22, +23,22,23,22,23,54,55,54,55,54,55,7,38,61,1,35,34,39,38,61,1,52,55,54,59,1,53,52,55,54,31,1, +22,15,1,6,39,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246, +10,96,14,9,9,9,9,14,96,10,10,7,112,10,10,112,7,10,192,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,127,5,10,64,9,9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7, +3,0,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,1,6,7,49,6,7,49,6,7,22,23,22, +23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,23,6,43,1,21,20,7,6,43,1,34,39,38,61,1,35,34, +39,38,63,1,54,31,1,22,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,127,5,10,64,9,9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7,3,1,192,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246,10,96,14,9,9,9,9,14,96,10,10,7, +112,10,10,112,7,10,0,0,0,2,0,0,255,192,2,0,1,192,0,37,0,62,0,0,37,34,7,49,6,29,1,33, +17,51,50,55,54,53,52,39,38,43,1,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,52,39,38,35,19,35, +6,7,6,31,1,7,6,21,20,23,22,51,50,63,1,23,22,55,54,55,53,38,39,1,128,14,9,9,254,224,96,14, +9,9,9,9,14,96,27,18,18,1,1,18,18,27,1,32,27,18,18,1,9,9,14,104,136,21,9,7,14,42,202,9, +9,10,13,13,10,201,41,16,19,19,1,2,22,128,9,9,14,96,1,32,9,9,14,14,9,9,1,18,18,27,254,224, +27,18,18,1,1,18,18,27,96,14,9,9,1,64,1,19,19,16,41,201,10,13,13,10,9,9,202,42,14,7,9,21, +136,22,2,0,0,2,0,0,255,224,1,192,1,160,0,20,0,46,0,0,1,33,6,7,6,7,17,22,23,22,23,33, +54,55,54,55,17,38,39,38,39,3,6,7,6,47,1,7,6,35,34,47,1,38,53,52,63,1,39,38,55,54,59,1, +22,23,21,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,53,1,9,10,8,45,68, +10,13,12,10,23,9,9,68,45,7,3,5,10,158,15,1,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,27,18,18,1,254,220,10,5,3,7,45,68,9,9,23,10,13,12,11,68,44,8,10,9,1,14,159,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,53,0,0,19,33,21,22,23,22,63,1,54,53,52,47,1,38,7,6, +7,21,33,34,7,6,21,20,23,22,51,5,33,53,38,39,38,15,1,6,21,20,31,1,22,55,54,55,53,33,50,55, +54,53,52,39,38,35,32,1,64,1,13,15,11,112,8,8,112,11,15,13,1,254,192,14,9,9,9,9,14,1,192,254, +192,1,13,15,11,112,8,8,112,11,15,13,1,1,64,14,9,9,9,9,14,1,32,72,15,7,6,10,104,8,10,10, +8,104,10,6,7,15,72,9,9,13,13,10,10,192,73,15,7,4,9,104,8,10,10,8,104,10,6,7,15,72,9,9, +14,14,9,9,0,2,0,0,255,192,2,0,1,192,0,37,0,74,0,0,37,34,7,49,6,21,6,7,6,7,35,53, +38,39,38,15,1,6,21,20,31,1,22,51,50,55,54,55,53,51,54,55,54,55,52,39,38,35,37,51,23,22,23,22, +51,50,63,1,54,53,52,47,1,38,7,6,7,23,35,6,7,6,7,20,23,22,51,50,55,54,53,54,55,54,55,1, +224,14,9,9,1,27,27,41,160,1,13,14,12,80,8,8,80,7,9,5,5,13,1,160,68,45,45,2,9,9,14,254, +192,159,1,1,13,5,4,9,7,80,9,8,80,12,14,14,1,1,160,68,45,45,2,9,9,14,14,9,9,1,27,27, +41,192,9,9,14,41,27,27,1,40,15,7,5,9,72,7,11,11,7,72,6,2,7,15,40,2,45,45,68,14,9,9, +128,40,15,7,2,6,72,7,12,11,7,72,9,5,8,15,40,2,45,45,68,14,9,9,9,9,14,41,27,27,1,0, +0,2,0,0,0,32,2,128,1,96,0,37,0,55,0,0,37,6,7,49,6,7,38,39,38,39,35,34,39,38,53,52, +55,54,59,1,54,55,54,55,22,23,22,23,51,50,23,22,21,20,7,6,43,1,7,54,55,49,54,55,38,39,38,39, +6,7,6,7,22,23,22,23,1,221,13,42,43,59,59,43,43,12,131,14,9,9,9,9,14,131,12,43,43,59,59,43, +42,13,131,14,9,9,9,9,14,131,157,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,160,56,35,36,1, +1,36,35,56,9,9,14,14,9,9,56,36,35,1,1,35,36,56,9,9,14,14,9,9,48,1,22,23,34,34,23,22, +1,1,22,23,34,34,23,22,1,0,0,0,0,4,0,0,255,192,1,192,1,192,0,59,0,72,0,81,0,95,0,0, +55,51,54,55,54,55,22,23,22,23,6,7,6,7,34,39,38,39,35,34,39,21,22,23,22,21,6,7,6,7,38,39, +38,39,52,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,22,23,22,23,53,39,54,55,52, +39,38,35,34,7,6,21,22,23,17,54,55,38,39,6,7,22,23,37,34,7,49,6,21,22,23,54,55,52,39,38,35, +208,87,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,87,56,40,22,13,13,1,22,23,34,34,23,22,1, +13,13,22,22,13,13,1,22,23,34,34,23,22,1,13,13,22,5,26,27,38,128,22,2,7,7,10,10,7,7,2,22, +22,2,2,22,22,2,2,22,1,32,10,7,7,2,22,22,2,7,7,10,209,21,13,13,1,1,23,23,33,35,22,23, +1,13,14,22,31,87,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,206,10,19,19,25,34,23,22,1,1, +22,23,34,25,19,19,10,38,24,24,1,1,136,1,23,10,7,7,7,7,10,23,1,254,159,2,22,22,2,2,22,22, +2,209,7,7,10,23,1,1,23,10,7,7,0,2,0,0,255,192,2,64,1,192,0,34,0,39,0,0,1,33,6,7, +6,7,17,22,23,22,23,51,7,35,6,7,22,23,33,54,55,38,39,35,39,51,54,55,54,55,17,38,39,38,39,3, +33,53,33,21,2,16,254,32,20,14,13,1,1,13,14,20,192,16,72,22,2,2,22,1,16,22,2,2,22,72,16,192, +20,14,13,1,1,13,14,20,16,254,64,1,192,1,192,1,13,14,20,254,192,20,14,13,1,48,2,22,22,2,2,22, +22,2,48,1,13,14,20,1,64,20,14,13,1,254,224,224,224,0,0,0,0,4,0,0,255,224,2,0,1,160,0,3, +0,7,0,11,0,19,0,0,1,35,23,55,23,39,7,51,37,7,51,39,19,22,51,50,63,1,33,23,1,123,246,123, +123,133,107,115,222,254,107,107,222,115,137,5,7,7,5,243,254,2,243,1,160,151,151,160,141,141,141,141,141,254,88,5, +5,251,251,0,0,1,0,0,255,192,1,64,1,192,0,34,0,0,37,7,6,35,34,47,1,38,55,54,55,51,17,38, +39,35,34,39,38,53,52,55,54,59,1,22,23,22,23,17,51,22,23,22,7,1,58,104,8,10,10,8,104,10,6,7, +15,72,1,15,112,14,9,9,9,9,14,112,34,23,22,1,72,15,7,6,10,56,112,8,8,112,11,15,13,1,1,16, +15,1,9,9,14,14,9,9,1,22,23,34,254,240,1,13,15,11,0,0,0,1,0,0,255,192,1,64,1,192,0,34, +0,0,1,6,7,35,17,6,7,6,7,35,34,39,38,53,52,55,54,59,1,54,55,17,39,38,39,38,63,1,54,51, +50,31,1,22,7,1,62,7,15,72,1,22,23,34,112,14,9,9,9,9,14,112,15,1,72,15,7,6,10,104,8,10, +10,8,104,10,6,1,46,13,1,254,240,34,23,22,1,9,9,14,14,9,9,1,15,1,16,1,1,13,14,11,112,8, +8,112,11,15,0,1,0,0,255,192,2,64,1,192,0,49,0,0,1,51,22,23,22,23,21,6,7,6,7,33,38,39, +38,39,53,54,55,54,55,51,53,54,55,54,55,22,23,22,23,21,20,7,6,35,34,39,38,61,1,38,39,38,39,6, +7,6,7,21,1,96,32,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,224,2,40,41,61,61,41, +40,2,9,9,14,14,9,9,1,22,23,34,34,23,22,1,1,0,1,18,18,27,192,27,18,18,1,1,18,18,27,192, +27,18,18,1,48,61,41,40,2,2,40,41,61,48,14,9,9,9,9,14,48,34,23,22,1,1,22,23,34,48,0,0, +0,2,0,0,255,193,1,128,1,192,0,27,0,45,0,0,23,38,39,49,38,39,49,38,39,54,55,54,55,22,23,22, +23,6,7,6,7,6,7,6,35,34,39,49,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,168,27, +40,39,30,30,2,2,54,54,82,82,54,54,2,2,30,31,39,39,27,10,14,14,10,24,27,18,18,1,1,18,18,27, +27,18,18,1,1,18,18,27,51,33,56,55,59,59,45,82,54,54,2,2,54,54,82,45,59,59,55,56,33,12,12,243, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,2,0,16,255,192,1,112,1,192,0,38,0,84,0,0, +55,54,55,49,54,55,35,38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,23,38,39,38,39,6,7, +6,7,21,22,23,22,23,55,6,7,21,6,7,6,39,38,39,38,39,53,38,39,6,7,21,22,23,22,23,21,35,34, +7,6,21,22,23,51,54,55,52,39,38,43,1,53,54,55,54,55,53,38,39,192,41,27,27,1,80,15,1,1,15,80, +80,15,1,1,15,80,80,15,1,1,15,80,1,27,27,41,41,27,27,1,1,27,27,41,152,22,2,2,38,39,57,51, +34,34,1,2,22,22,2,1,42,42,67,40,14,9,9,2,14,160,14,2,9,9,14,40,66,42,43,1,2,22,96,1, +27,27,41,1,15,15,1,32,1,15,15,1,33,1,15,15,1,1,41,27,27,1,1,27,27,41,160,41,27,27,1,160, +2,21,41,57,36,37,2,5,38,39,51,36,21,2,2,21,32,69,51,51,11,35,10,9,15,13,1,1,13,15,9,10, +34,10,48,48,68,41,21,2,0,3,0,16,255,192,1,112,1,192,0,20,0,38,0,43,0,0,1,35,6,7,6,7, +17,22,23,22,23,51,54,55,54,55,17,38,39,38,39,3,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,19,17,35,17,51,1,48,224,27,18,18,1,1,18,18,27,224,27,18,18,1,1,18,18,27,112,14,9,9,9,9, +14,14,9,9,9,9,14,112,224,224,1,192,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1, +254,32,9,9,14,14,9,9,9,9,14,14,9,9,1,160,254,192,1,64,0,2,0,16,255,192,1,112,1,192,0,20, +0,31,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,35,38,39,54, +55,51,22,23,1,64,255,0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,1,13,14,20,80,1,15,65,13,2, +1,15,64,15,1,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,254,65,16,1,1, +15,15,1,2,13,0,0,0,0,3,0,16,255,192,1,112,1,192,0,20,0,31,0,36,0,0,1,33,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,35,38,39,54,55,51,22,23,55,35,17,51,17,1, +64,255,0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,1,13,14,20,80,1,15,65,13,2,1,15,64,15,1, +64,224,224,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,254,65,16,1,1,15,15, +1,2,13,63,1,64,254,192,0,7,0,0,0,0,2,64,1,128,0,20,0,42,0,50,0,58,0,65,0,72,0,90, +0,0,55,54,55,51,22,23,21,51,22,23,6,7,35,38,39,54,55,51,53,38,39,37,22,23,49,22,23,17,6,7, +6,7,33,38,39,38,39,17,54,55,54,55,33,1,38,39,49,38,39,21,51,39,54,55,49,54,55,35,21,5,53,6, +7,6,7,51,17,35,22,23,22,23,53,7,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,252,1,19, +16,18,2,4,18,2,2,18,48,19,1,1,19,4,15,1,1,4,27,18,18,1,1,18,18,27,254,64,27,18,18,1, +1,18,18,27,1,192,254,128,1,18,18,27,64,64,27,18,18,1,64,1,192,27,18,18,1,64,64,1,18,18,27,224, +48,31,32,1,1,32,31,48,48,31,32,1,1,32,31,48,240,19,1,1,19,68,1,19,18,2,2,18,19,1,48,4, +16,144,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,254,192,27,18,18,1,64,192,1,18, +18,27,64,192,64,1,18,18,27,1,0,27,18,18,1,64,16,1,32,31,48,48,31,32,1,1,32,31,48,48,31,32, +1,0,0,0,0,2,0,0,255,192,2,127,1,192,0,16,0,45,0,0,37,39,38,15,1,6,31,1,22,23,50,55, +54,55,39,6,7,5,39,54,55,54,55,38,47,1,38,15,1,6,31,1,6,7,1,38,35,34,7,6,23,1,22,55, +54,39,1,15,43,15,22,108,22,4,23,7,24,80,73,72,59,89,20,23,1,104,160,49,28,27,1,2,22,101,24,12, +46,8,17,53,18,27,254,165,7,8,11,8,12,16,2,79,19,15,13,16,80,54,17,8,46,12,24,101,23,1,27,26, +47,69,14,11,101,125,60,73,74,82,24,7,23,4,22,108,22,15,44,37,32,1,16,5,9,19,15,254,49,12,16,17, +16,0,0,0,0,3,0,0,255,192,1,128,1,192,0,20,0,38,0,53,0,0,1,33,6,7,6,7,17,22,23,22, +23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19,35,38, +39,54,55,54,55,51,22,23,22,23,6,7,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13, +14,20,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22,1, +1,15,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,128,1,18,18,27,27,18,18, +1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23,34,15,1,0,0,1,0,0,255,225,2,0, +1,159,0,34,0,0,19,55,54,23,22,23,21,50,23,22,23,22,23,6,7,6,7,6,39,38,55,54,39,38,35,21, +6,7,6,47,1,38,53,52,55,8,176,13,13,13,1,81,65,65,38,38,1,1,24,24,34,12,9,10,3,33,47,46, +117,1,13,13,13,176,8,8,1,2,151,10,6,6,16,80,15,15,40,40,75,47,41,42,24,7,6,7,12,107,40,39, +88,16,6,6,10,151,8,11,11,7,0,0,0,2,0,15,255,195,1,240,1,192,0,29,0,40,0,0,1,50,31,1, +22,23,22,21,22,7,6,7,6,7,6,39,38,39,38,39,38,53,54,55,54,63,1,54,51,49,17,54,55,49,54,55, +49,54,53,39,17,1,0,7,6,189,17,10,11,1,18,18,47,46,86,26,26,86,46,47,18,18,1,11,10,17,189,6, +7,68,38,39,15,16,176,1,192,3,80,7,15,15,19,52,69,68,66,66,43,12,12,43,66,66,68,69,52,19,15,15, +7,80,3,254,67,35,54,54,57,58,46,74,254,134,0,0,0,3,0,0,255,193,1,192,1,192,0,20,0,38,0,43, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,55,33,17,33,17,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1, +1,18,18,27,160,14,9,9,9,9,14,14,9,9,9,9,14,160,254,192,1,64,1,192,1,18,18,27,254,128,27,18, +17,1,1,18,17,27,1,128,27,18,18,1,254,32,9,9,14,14,9,9,9,9,14,14,9,9,96,1,64,254,192,0, +0,2,0,0,255,192,1,192,1,192,0,20,0,31,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,6,7,35,38,39,54,55,51,22,23,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18, +18,1,1,18,18,27,96,1,15,97,13,2,2,13,96,16,1,1,192,1,18,18,27,254,128,27,18,18,1,1,18,18, +27,1,128,27,18,18,1,254,65,16,1,1,15,15,1,2,13,0,0,0,0,1,0,0,0,0,2,64,1,128,0,39, +0,0,19,54,55,49,54,55,33,22,23,22,23,21,6,7,6,7,22,23,22,23,21,6,7,6,7,33,38,39,38,39, +53,54,55,54,55,38,39,38,39,53,0,1,18,18,27,1,192,27,18,18,1,20,14,13,1,1,13,14,20,1,18,18, +27,254,64,27,18,18,1,20,14,13,1,1,13,14,20,1,64,27,18,18,1,1,18,18,27,80,1,13,14,20,20,14, +13,1,80,27,18,18,1,1,18,18,27,80,1,13,14,20,20,14,13,1,80,0,0,0,0,2,0,0,255,192,1,255, +1,192,0,17,0,36,0,0,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,6,7,6,7, +20,23,22,51,33,50,55,54,53,38,39,38,39,1,0,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,95, +191,68,45,45,2,9,9,13,1,193,14,8,9,1,45,45,69,160,2,40,41,61,61,41,40,2,2,40,41,61,61,41, +40,2,32,2,45,45,68,14,9,9,9,9,14,68,45,45,2,0,0,0,0,2,0,0,255,224,2,0,1,160,0,21, +0,47,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,5,23,7,6,23,22, +63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49,1,192,27,18,18,1,1,18,18,27,254,128, +27,18,18,1,1,18,18,27,1,128,254,239,47,47,14,14,17,16,47,48,17,16,15,15,46,46,15,15,16,17,48,47, +16,17,14,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,176,47,48,17,16,15, +15,46,46,15,15,16,17,48,47,16,17,14,14,47,47,14,14,17,16,0,0,2,0,0,255,192,2,0,1,192,0,27, +0,53,0,0,55,35,6,7,6,31,1,7,6,21,20,31,1,22,51,50,63,1,23,22,51,50,55,54,55,53,38,39, +55,51,54,55,54,47,1,55,54,53,52,47,1,38,35,34,15,1,39,38,7,6,7,21,22,23,215,136,21,8,6,13, +30,78,9,9,23,10,13,12,10,78,30,10,13,6,6,19,1,2,23,81,136,21,9,7,14,30,78,9,9,23,10,13, +12,10,78,30,16,19,19,1,2,22,176,1,19,19,16,30,78,10,12,13,10,23,9,9,78,30,9,2,9,21,136,22, +2,32,1,19,19,16,30,78,10,12,13,10,23,9,9,78,30,14,7,9,21,135,23,2,0,2,0,0,255,192,2,0, +1,192,0,28,0,54,0,0,55,38,35,49,34,15,1,39,38,35,34,7,6,7,21,22,23,51,54,55,54,47,1,55, +54,53,52,47,1,1,35,6,7,6,31,1,7,6,21,20,31,1,22,51,50,63,1,23,22,55,54,55,53,38,39,208, +10,13,12,10,78,30,10,13,6,6,19,1,2,22,136,21,9,7,14,30,78,9,9,23,1,23,136,21,8,8,14,31, +79,9,9,23,10,13,12,10,78,30,16,19,20,1,2,23,167,9,9,78,30,9,2,9,21,135,23,2,1,19,19,16, +30,78,10,12,13,10,23,1,25,1,19,19,16,30,78,10,12,13,10,23,9,9,78,30,14,7,9,22,136,21,2,0, +0,3,0,0,255,192,2,128,1,192,0,18,0,36,0,57,0,0,55,38,35,6,7,6,21,20,31,1,22,51,54,55, +54,53,52,47,1,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,55,52,47,1,38,35,34,15,1, +6,7,6,7,23,54,55,54,63,1,54,53,58,10,16,17,8,7,6,47,10,16,17,7,8,7,46,1,182,34,22,23, +1,1,23,22,34,34,23,22,1,1,22,23,34,144,13,23,22,32,22,18,202,69,56,36,67,56,83,44,79,68,203,27, +51,13,1,11,11,9,10,9,64,13,1,11,11,9,10,9,64,45,1,22,23,34,34,23,22,1,1,22,23,34,34,23, +22,1,253,21,18,32,28,13,147,50,63,44,56,78,52,16,33,49,147,22,33,0,0,0,0,3,0,0,255,192,2,0, +1,192,0,101,0,124,0,145,0,0,37,52,55,49,54,59,1,50,23,52,53,52,53,38,39,38,39,38,39,34,35,34, +35,22,21,20,7,6,7,34,39,38,39,52,53,54,53,52,39,6,7,6,7,22,51,50,55,50,51,50,23,22,21,20, +7,6,39,35,34,39,48,21,20,21,22,23,22,23,22,23,50,51,50,51,38,53,52,55,54,51,22,23,20,7,20,21, +20,23,54,55,54,55,38,35,34,7,34,35,34,39,38,53,39,6,7,49,6,7,49,6,7,38,39,52,55,54,55,54, +55,54,55,22,23,22,21,23,6,7,6,7,6,7,6,7,38,39,38,53,54,55,54,55,54,55,22,23,1,174,9,10, +11,3,25,24,1,34,34,58,57,72,2,2,1,1,6,1,2,14,5,5,5,1,1,6,85,58,58,14,22,23,10,4, +2,1,5,6,5,9,10,10,4,24,24,1,34,34,58,57,72,2,1,2,1,6,1,2,14,13,3,1,6,85,58,58, +14,22,23,11,4,2,1,3,6,7,192,1,20,20,26,25,16,15,1,9,36,17,17,8,9,12,9,4,3,160,1,9, +35,17,17,8,10,12,9,3,4,2,20,20,25,25,17,14,2,175,12,3,2,6,2,1,2,1,72,57,58,34,34,1, +24,24,9,9,13,2,4,4,8,1,2,4,10,23,22,14,58,59,84,6,1,4,4,8,12,3,3,1,6,1,3,2, +72,57,58,34,34,1,24,24,8,9,14,1,14,2,1,4,9,23,22,14,58,58,85,6,1,3,3,10,144,15,25,26, +20,21,1,1,15,10,4,19,20,20,15,20,1,1,6,6,4,162,9,5,18,20,20,16,20,1,1,5,6,4,15,26, +25,21,21,1,1,15,0,0,0,8,0,0,255,192,2,0,1,192,0,7,0,18,0,26,0,37,0,50,0,58,0,71, +0,79,0,0,19,39,6,7,22,51,54,55,31,1,55,38,39,34,7,22,21,6,7,55,52,39,6,7,23,54,55,7, +6,7,34,39,6,21,22,23,55,39,23,39,7,22,23,22,51,50,55,38,53,54,55,31,1,54,55,38,35,6,7,55, +7,23,54,55,50,23,54,53,52,39,38,39,3,20,23,54,55,39,6,7,149,85,43,15,20,22,58,43,46,61,169,70, +99,11,12,7,2,43,13,6,67,48,84,36,1,36,52,72,24,23,1,2,62,169,61,146,62,169,33,44,43,49,11,11, +6,2,44,45,85,43,15,20,22,58,43,85,169,61,52,72,24,23,1,17,17,30,144,6,66,49,84,36,1,1,21,84, +49,66,6,1,36,1,61,169,62,2,1,23,24,72,52,124,22,20,15,43,85,43,58,147,43,2,6,11,11,99,70,169, +61,145,61,169,30,17,17,1,23,24,72,52,1,84,49,66,6,1,36,254,169,62,44,2,6,11,11,49,43,44,33,254, +135,22,20,15,43,85,43,58,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,80,0,0,1,6,7,49, +6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,7,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,55,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,21,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,112,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9, +14,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57, +72,72,57,58,34,34,1,208,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9, +9,160,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,5,0,0,255,192,2,0,1,192,0,53,0,86,0,94, +0,115,0,136,0,0,55,35,6,7,21,22,23,51,20,7,51,38,53,51,54,63,1,38,39,35,55,52,53,48,53,38, +39,35,53,51,54,55,38,39,35,53,38,39,6,7,21,35,6,7,22,23,51,21,35,6,7,20,31,1,5,7,51,39, +55,54,61,1,52,43,1,34,29,1,35,53,54,43,1,34,7,21,35,53,52,43,1,34,29,1,20,31,2,54,55,22, +23,21,35,53,7,39,53,38,39,35,6,7,21,7,6,29,1,22,23,51,54,55,53,52,39,33,39,53,38,39,35,6, +7,21,7,6,29,1,22,23,51,54,55,53,52,39,74,10,15,1,2,13,16,16,128,16,15,15,1,2,2,13,10,34, +2,14,57,16,15,1,1,15,16,1,15,15,1,16,15,1,1,15,16,57,14,2,1,34,1,10,3,126,3,25,11,7, +26,6,25,1,6,54,5,1,25,6,26,6,11,25,44,1,15,15,1,32,137,23,1,15,160,15,1,23,9,1,15,224, +15,1,9,1,0,23,1,15,128,15,1,23,9,1,15,192,15,1,9,240,1,15,16,15,1,65,63,63,65,1,15,16, +15,1,90,2,3,1,15,1,32,1,15,15,1,16,15,1,1,15,16,1,15,15,1,32,1,15,3,3,90,94,82,82, +21,10,14,59,6,6,26,26,6,6,26,26,6,6,59,14,10,21,2,15,1,1,15,32,32,156,12,16,15,1,1,15, +16,12,4,10,22,15,1,1,15,22,10,4,12,16,15,1,1,15,16,12,4,10,22,15,1,1,15,22,10,4,0,0, +0,2,0,0,255,192,1,64,1,192,0,14,0,61,0,0,37,35,6,7,6,7,22,23,33,54,55,38,39,38,39,37, +20,23,49,22,23,21,51,53,54,55,54,53,38,39,7,6,35,34,47,1,38,53,52,63,1,38,39,54,55,52,39,38, +43,1,34,7,6,21,22,23,6,7,6,7,6,7,1,16,224,20,14,13,1,1,15,1,32,15,1,1,13,14,20,254, +248,15,15,26,192,26,15,15,1,26,100,2,4,3,2,12,2,2,108,32,39,23,2,9,9,14,64,14,9,9,2,23, +27,26,26,17,16,1,0,1,13,14,20,15,1,1,15,20,14,13,1,160,38,20,19,8,43,43,8,19,20,38,48,55, +101,2,2,12,2,3,4,2,108,59,33,7,24,14,9,9,9,9,14,24,7,23,38,39,44,43,38,0,0,6,0,0, +255,224,1,192,1,160,0,4,0,25,0,62,0,67,0,72,0,77,0,0,55,35,21,51,53,55,33,6,7,6,7,17, +22,23,22,23,33,54,55,54,55,17,38,39,38,39,21,35,21,51,21,35,21,51,21,35,53,35,21,35,53,35,21,35, +53,51,53,35,53,51,53,35,53,51,21,51,53,51,21,51,53,51,21,7,21,51,53,35,55,53,35,21,51,21,51,53, +35,21,192,64,64,192,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,192,64,64,64,64,64,64,64,224,64,64,192,1,18,18,27,254,192,27,18, +18,1,1,18,18,27,1,64,27,18,18,1,128,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,128, +64,64,64,64,64,64,64,64,0,2,0,0,255,192,1,192,1,192,0,14,0,64,0,0,37,33,6,7,6,21,22,23, +33,54,55,52,39,38,39,19,35,53,51,50,55,54,53,38,39,38,43,1,53,52,39,38,35,34,7,6,7,21,35,34, +7,6,21,22,23,22,59,1,21,35,34,7,6,7,20,31,1,33,55,54,53,38,39,38,35,1,111,254,225,20,14,14, +1,15,1,96,15,1,14,14,21,49,160,16,14,9,9,1,9,9,13,16,10,9,14,13,9,9,1,16,13,10,9,1, +9,9,13,16,160,11,10,9,1,1,73,1,44,73,1,1,10,10,11,0,1,13,13,20,16,1,1,15,20,14,13,1, +1,32,48,9,9,14,14,9,9,16,14,9,9,9,9,14,16,9,9,14,14,9,9,48,8,9,15,5,5,214,214,5, +5,15,9,8,0,3,0,0,255,192,1,128,1,160,0,39,0,48,0,63,0,0,55,23,22,51,50,63,1,54,63,1, +54,63,1,21,6,15,1,6,7,6,29,1,33,53,38,39,38,39,35,6,7,20,31,1,7,6,29,1,22,23,55,22, +23,6,7,38,39,54,55,1,33,6,7,6,7,22,23,33,54,55,38,39,38,39,19,41,6,7,6,6,12,14,5,9, +3,10,22,1,26,57,20,12,12,1,64,2,54,54,82,148,11,1,2,14,9,7,1,18,33,18,2,2,18,18,2,2, +18,1,28,254,223,20,13,13,1,1,15,1,96,15,1,1,13,14,20,175,18,2,2,5,6,15,30,11,5,11,50,29, +14,29,10,19,19,24,14,192,81,54,55,2,1,11,4,4,28,9,7,10,137,21,9,145,2,18,18,2,2,18,18,2, +254,192,1,13,13,20,16,1,1,15,20,14,13,1,0,0,0,2,0,0,255,192,1,64,1,160,0,37,0,52,0,0, +55,35,6,7,21,22,31,1,21,22,7,51,38,55,53,51,54,55,53,38,39,35,54,55,54,53,38,39,38,39,6,7, +6,7,20,23,22,31,1,35,6,7,6,7,22,23,33,54,55,38,39,38,39,105,25,15,1,1,15,16,3,27,176,27, +3,16,15,1,1,15,25,22,13,14,1,30,29,45,45,28,29,1,14,13,22,167,225,20,13,13,1,1,15,1,32,15, +1,1,13,14,20,224,1,15,32,14,1,1,6,67,55,55,67,6,2,13,32,16,1,14,23,23,28,44,30,29,1,1, +29,30,44,28,23,23,14,224,1,13,13,20,16,1,1,15,20,14,13,1,0,3,0,0,255,192,1,255,1,192,0,17, +0,32,0,90,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,19,33,6,7,6,7,22,23, +33,54,55,38,39,38,39,55,52,47,1,38,35,6,7,6,7,6,35,38,39,38,53,38,39,35,6,7,6,7,6,35, +34,39,38,39,38,39,35,6,7,20,7,6,7,34,39,38,39,38,39,34,15,1,6,21,20,31,1,33,55,54,53,52, +53,1,0,24,16,15,1,1,15,16,24,24,16,16,1,1,16,16,24,143,254,224,20,14,13,1,3,14,1,96,15,1, +1,14,13,21,112,7,28,4,4,10,6,5,8,8,15,22,13,13,3,10,39,10,3,4,13,13,18,17,13,13,4,2, +10,39,13,1,11,11,26,15,8,8,5,6,10,4,4,29,6,2,102,1,48,102,1,1,80,1,15,16,24,24,16,15, +1,1,15,16,24,24,16,15,1,254,176,1,13,13,20,16,1,1,15,20,14,13,1,251,8,5,16,2,1,8,6,5, +6,1,15,15,20,12,1,1,9,17,10,11,11,10,17,9,1,1,12,16,17,17,1,5,6,6,8,1,2,16,5,8, +4,4,211,211,3,3,1,1,0,3,0,0,255,192,1,128,1,160,0,34,0,46,0,61,0,0,1,35,6,7,21,35, +53,38,39,35,6,7,21,35,53,38,39,35,6,7,21,23,20,7,6,7,33,38,39,38,53,55,53,38,39,3,35,53, +52,55,54,51,50,23,22,29,1,23,33,6,7,6,7,22,23,33,54,55,38,39,38,39,1,112,56,15,1,48,1,15, +80,15,1,48,1,15,56,15,1,64,2,3,8,1,26,8,3,2,64,1,15,144,64,9,9,14,14,9,9,112,254,223, +20,13,13,1,1,15,1,96,15,1,1,13,14,20,1,160,1,15,48,48,15,1,1,15,48,48,15,1,1,15,176,32, +36,38,38,48,48,38,39,35,32,176,15,1,254,224,64,14,9,9,9,9,14,64,128,1,13,13,20,16,1,1,15,20, +14,13,1,0,0,3,0,0,255,224,2,128,1,160,0,21,0,50,0,72,0,0,19,35,6,7,21,34,7,6,21,20, +23,22,51,23,22,23,51,54,55,17,38,39,37,35,6,7,21,35,53,38,39,35,6,7,17,22,23,51,54,55,53,51, +21,22,23,51,54,55,17,38,39,23,53,38,39,35,6,7,17,22,23,51,54,55,53,50,55,54,53,52,39,38,35,104, +48,22,2,14,9,9,9,9,13,1,2,22,48,22,2,2,22,1,96,48,22,2,128,2,22,48,22,2,2,22,48,22, +2,128,2,22,48,22,2,2,22,152,2,22,48,22,2,2,22,48,22,2,14,9,9,9,9,14,1,96,2,22,104,9, +9,14,14,9,9,104,22,2,2,22,1,16,22,2,64,2,22,168,168,22,2,2,22,254,112,22,2,2,22,168,168,22, +2,2,22,1,144,22,2,192,104,22,2,2,22,254,240,22,2,2,22,104,9,9,14,14,9,9,0,0,0,6,0,16, +255,208,1,240,1,176,0,13,0,29,0,44,0,59,0,74,0,89,0,0,55,22,23,22,23,22,23,22,51,50,55,39, +6,21,37,38,39,38,39,34,53,38,39,38,39,34,7,23,54,53,5,23,54,55,54,55,54,55,39,6,7,6,7,6, +7,23,6,7,34,47,1,38,53,54,55,50,31,1,22,21,55,6,7,34,47,1,38,53,54,55,50,31,1,22,21,39, +54,55,50,31,1,22,21,6,7,34,47,1,38,53,16,2,12,2,10,11,30,31,61,14,16,188,1,1,224,2,12,8, +28,1,10,28,29,41,14,16,188,1,254,43,236,71,46,46,25,25,9,236,71,46,46,25,25,9,229,2,14,6,5,64, +5,1,15,6,5,64,5,48,2,14,6,5,64,5,2,14,6,5,64,5,48,2,14,6,5,64,5,2,14,6,5,64, +5,110,69,38,10,12,12,8,9,1,188,16,15,163,70,38,28,8,1,3,5,5,1,1,188,16,14,74,236,19,39,38, +44,45,36,237,19,39,38,44,45,37,86,15,1,5,63,4,8,14,2,5,64,6,5,48,15,1,5,63,4,8,15,1, +5,64,6,5,112,15,1,5,64,5,6,15,1,5,64,3,8,0,0,0,0,5,0,0,255,195,1,128,1,192,0,23, +0,42,0,59,0,76,0,93,0,0,55,20,23,49,22,51,22,23,22,29,1,51,53,52,55,54,51,50,55,54,61,1, +35,21,19,6,7,49,6,7,20,23,22,23,51,54,55,54,53,38,39,38,39,7,22,51,50,55,54,55,52,39,22,23, +6,7,6,35,38,39,23,38,39,22,51,50,55,54,55,38,39,22,23,20,7,6,35,55,38,39,22,51,50,55,54,53, +52,39,22,23,20,7,6,35,96,9,9,14,14,9,9,64,9,9,14,14,9,9,192,96,82,54,54,2,23,22,38,218, +38,22,23,2,54,54,82,13,6,7,13,9,9,1,3,17,2,1,9,9,13,21,8,45,21,8,6,7,13,9,9,1, +1,2,17,1,9,9,13,63,20,9,6,7,14,9,9,3,18,1,9,9,14,49,14,8,9,1,8,9,13,48,48,13, +9,9,9,9,13,16,16,1,143,2,55,54,83,49,41,41,27,27,41,41,49,83,54,55,2,205,3,9,9,13,7,6, +8,21,13,9,9,1,18,98,1,18,3,9,9,13,7,6,8,21,14,8,9,63,1,18,3,9,9,13,7,6,7,21, +14,9,9,0,0,2,0,0,0,0,2,0,1,128,0,17,0,37,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,23,34,39,49,38,39,21,22,23,22,23,54,55,54,55,53,6,7,6,35,0,3,72,72,109,109, +72,72,3,3,72,72,109,109,72,72,3,255,75,68,68,44,3,72,72,109,109,72,72,3,44,68,68,77,1,32,41,27, +27,1,1,27,27,41,41,27,27,1,1,27,27,41,143,15,15,31,110,41,27,27,1,1,27,27,41,110,31,15,15,0, +0,3,0,0,255,192,2,128,1,192,0,17,0,56,0,80,0,0,37,6,7,49,6,7,22,23,22,23,54,55,54,55, +52,39,38,47,1,38,7,49,6,7,6,7,6,7,55,50,51,50,21,20,15,1,6,7,6,49,50,23,22,51,22,55, +54,55,54,55,54,55,54,47,1,34,39,37,34,15,1,39,38,35,34,15,1,23,55,54,53,52,47,1,55,54,53,52, +39,38,35,1,239,34,22,22,1,1,22,23,33,33,23,22,1,22,22,35,252,25,44,44,37,16,14,14,10,60,1,1, +6,1,95,5,3,3,1,17,18,28,53,59,59,32,29,17,17,7,7,1,86,1,13,1,108,10,10,224,30,5,8,9, +5,22,87,50,13,3,28,225,12,9,9,15,97,1,22,23,34,34,23,22,1,1,22,23,34,33,23,23,1,135,1,8, +8,27,13,26,26,32,22,6,2,2,112,24,16,15,1,1,1,8,7,22,25,35,35,27,27,1,109,1,216,7,175,37, +6,9,47,109,11,3,12,5,5,36,175,10,15,13,9,10,0,1,0,0,255,192,2,0,1,192,0,4,0,0,19,33, +17,33,17,0,2,0,254,0,1,192,254,0,2,0,0,0,0,3,0,0,255,192,2,0,1,193,0,24,0,51,0,69, +0,0,37,22,23,54,53,52,39,38,39,38,39,34,7,6,15,1,6,7,6,7,23,54,55,54,55,7,39,6,21,22, +31,1,7,6,21,20,31,1,22,51,50,63,1,23,22,51,50,55,38,39,38,63,1,6,7,49,6,7,22,23,22,23, +54,55,54,55,38,39,38,39,1,160,43,32,21,26,25,49,48,69,45,43,43,34,55,1,1,1,1,231,16,30,30,38, +126,238,20,1,34,36,92,11,9,34,10,12,14,10,81,36,37,48,7,7,16,1,1,3,125,41,27,27,1,1,27,27, +41,40,28,27,1,1,27,27,41,161,1,24,46,49,53,49,50,32,33,1,18,17,34,55,2,1,1,2,230,32,20,19, +1,105,238,34,34,47,35,37,82,10,13,13,10,34,9,11,93,36,36,1,28,35,12,12,72,1,27,26,41,40,28,27, +1,1,27,27,41,40,27,27,1,0,0,0,0,6,0,0,255,192,2,0,1,192,0,14,0,37,0,60,0,79,0,99, +0,114,0,0,19,38,39,6,7,6,7,20,23,54,55,54,55,54,55,23,54,53,54,39,38,39,34,35,38,35,34,7, +22,23,22,23,22,7,22,23,22,23,39,52,57,1,52,39,49,38,39,6,7,6,7,6,7,22,23,54,55,54,55,54, +63,1,22,23,49,22,7,20,7,49,50,55,54,53,52,53,38,39,38,39,3,6,7,49,6,7,22,23,22,23,50,55, +54,55,6,35,38,39,38,39,7,6,7,22,23,50,55,54,55,6,35,38,39,38,39,200,21,42,62,37,37,1,8,24, +36,36,36,37,23,182,2,2,22,22,69,2,2,6,7,46,41,47,22,22,6,7,1,12,28,29,41,142,5,4,16,22, +38,37,37,36,18,24,40,17,29,30,29,29,15,87,54,18,18,1,2,45,52,1,2,51,51,81,71,13,23,24,25,21, +48,49,72,49,59,29,10,50,44,60,41,41,16,103,23,12,62,76,52,45,46,35,39,34,77,53,53,25,1,86,39,38, +33,60,59,75,32,30,68,43,44,24,24,9,175,14,24,45,66,65,66,1,15,46,47,47,37,38,17,7,11,11,5,34, +1,15,29,30,37,8,25,25,49,49,78,48,34,63,42,43,24,24,8,237,65,62,62,45,23,16,16,2,2,4,3,89, +66,66,25,254,247,6,19,19,33,18,22,22,2,18,43,54,14,1,15,14,10,104,39,54,39,1,19,19,34,8,2,24, +23,20,0,0,0,7,0,0,255,192,1,224,1,192,0,70,0,79,0,88,0,97,0,106,0,115,0,124,0,0,1,34, +7,49,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,29, +1,6,7,38,39,53,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,20,31,1,22,23,51,54,55,54,55, +53,52,39,38,35,1,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7, +23,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23,6,7,55,38,39,54,55,22,23,6,7,1,192,14,9,9, +1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,60,12, +16,16,12,11,1,12,113,59,82,38,75,49,50,2,9,9,14,255,0,15,1,1,15,15,1,1,15,64,15,1,1,15, +15,1,1,15,15,1,1,15,15,1,1,15,64,15,1,1,15,15,1,1,15,32,15,1,1,15,15,1,1,15,32,15, +1,1,15,15,1,1,15,1,96,9,9,14,112,15,1,1,15,176,14,9,9,9,9,14,176,15,1,1,15,208,14,9, +9,9,9,14,208,15,1,1,15,176,14,9,9,9,9,14,254,233,59,12,11,12,17,16,12,113,58,1,2,50,49,75, +208,14,9,9,254,192,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1, +32,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,0,0,7,0,0, +0,32,2,128,1,96,0,12,0,17,0,26,0,35,0,44,0,53,0,66,0,0,1,51,22,23,22,23,21,6,7,6, +7,35,17,3,33,17,33,17,39,6,7,22,23,54,55,38,39,23,54,55,38,39,6,7,22,23,7,6,7,22,23,54, +55,38,39,23,54,55,38,39,6,7,22,23,37,51,17,35,38,39,38,39,53,54,55,54,55,1,224,96,27,18,18,1, +1,18,18,27,96,32,255,0,1,0,176,22,2,2,22,22,2,2,22,96,22,2,2,22,22,2,2,22,96,22,2,2, +22,22,2,2,22,96,22,2,2,22,22,2,2,22,254,208,96,96,27,18,18,1,1,18,18,27,1,96,1,18,18,27, +192,27,18,18,1,1,64,254,192,1,64,254,192,232,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,48, +2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,232,254,192,1,18,18,27,192,27,18,18,1,0,0,0, +0,3,0,0,255,224,1,192,1,160,0,6,0,13,0,27,0,0,19,54,55,51,21,35,55,23,53,51,22,31,1,35, +19,6,7,49,6,7,33,38,39,38,39,53,33,21,51,14,29,114,208,51,189,114,29,14,51,208,208,1,18,18,27,254, +192,27,18,18,1,1,192,1,133,26,1,128,101,101,128,1,26,101,255,0,27,18,18,1,1,18,18,27,224,224,0,0, +0,3,0,0,255,192,2,64,1,192,0,29,0,58,0,87,0,0,19,54,55,49,54,55,51,21,22,23,51,54,55,53, +51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,7,21,22,23,51,54,55,53,51,22,23,22,23,21,6,7, +6,7,35,38,39,38,39,53,54,55,54,55,51,33,21,22,23,51,54,55,53,51,22,23,22,23,21,6,7,6,7,35, +38,39,38,39,53,54,55,54,55,51,160,1,13,14,20,48,1,15,32,15,1,48,20,14,13,1,1,13,14,20,160,20, +14,13,1,64,1,15,32,15,1,48,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,48,1,64,1,15, +32,15,1,48,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,48,1,144,20,14,13,1,80,15,1,1, +15,80,1,13,14,20,128,20,14,13,1,1,13,14,20,128,240,80,15,1,1,15,80,1,13,14,20,128,20,14,13,1, +1,13,14,20,128,20,14,13,1,80,15,1,1,15,80,1,13,14,20,128,20,14,13,1,1,13,14,20,128,20,14,13, +1,0,0,0,0,3,0,0,255,224,2,0,1,192,0,32,0,37,0,66,0,0,1,35,53,38,39,38,39,35,6,7, +6,7,21,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,37,51,21,35,53,19,6,7,35, +21,6,7,35,38,39,53,35,38,39,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,1,208,80,1,13,14,20, +160,20,14,13,1,80,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,254,224,160,160,192,1,15,54, +2,13,52,15,1,55,15,1,1,15,53,1,15,52,14,1,56,15,1,1,96,48,20,14,13,1,1,13,14,20,48,1, +13,14,20,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,48,48,48,254,246,15,1,54,15,1,1,15,53, +1,15,52,15,1,55,15,1,1,15,54,1,15,52,0,0,0,2,0,0,255,192,1,128,1,192,0,18,0,38,0,0, +19,38,7,6,7,6,7,22,23,22,23,54,55,54,55,38,39,38,39,3,38,39,49,38,39,38,55,54,55,54,23,22, +23,22,7,6,7,6,7,203,11,11,81,49,50,1,1,53,52,86,86,52,53,1,1,50,49,81,11,43,26,26,1,2, +14,14,58,12,12,58,14,14,2,1,26,26,43,1,188,8,8,78,85,84,61,95,52,52,1,1,52,52,95,61,85,84, +78,254,84,1,25,25,41,9,34,34,66,10,10,66,34,34,9,41,25,25,1,0,0,0,0,3,0,0,255,224,2,63, +1,160,0,38,0,50,0,62,0,0,37,39,38,39,34,7,6,7,38,39,38,39,6,7,6,7,21,22,23,22,23,54, +55,54,55,39,48,21,22,31,1,22,23,50,55,54,55,54,39,37,35,53,54,55,54,55,22,23,22,23,21,23,39,38, +55,54,55,54,51,22,31,1,7,2,43,131,36,58,34,31,30,12,3,31,32,46,47,32,31,1,1,32,31,48,48,31, +32,1,1,6,8,131,37,57,35,30,39,8,8,27,254,116,95,1,13,14,20,20,14,13,1,195,66,11,3,4,17,13, +15,26,16,65,82,148,187,48,1,21,21,33,46,30,30,1,1,32,31,47,225,48,31,32,1,1,32,31,48,149,1,12, +12,187,48,1,21,29,44,45,41,44,112,20,14,13,1,1,13,14,20,112,45,94,17,20,21,12,9,1,21,93,58,0, +0,3,0,0,255,192,1,128,1,192,0,29,0,47,0,68,0,0,1,35,38,39,38,39,6,7,6,7,35,6,7,6, +7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,35,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55, +54,51,23,7,6,7,52,7,34,49,34,47,1,38,55,54,31,1,55,54,23,22,7,1,80,54,10,24,24,32,32,24, +24,10,54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14,20,144,14,9,9,9,9,14,14,9,9,9, +9,14,91,88,7,10,1,1,9,7,56,15,13,16,18,37,72,15,19,16,12,1,128,28,18,17,1,1,17,18,28,1, +13,14,20,254,160,20,14,13,1,1,13,14,20,1,96,20,14,13,1,9,9,14,14,9,9,9,9,14,14,9,9,199, +112,8,1,1,1,6,48,16,18,15,13,31,92,16,12,15,19,0,0,0,0,6,0,0,255,192,1,128,1,192,0,29, +0,38,0,47,0,65,0,76,0,87,0,0,1,35,38,39,38,39,6,7,6,7,35,6,7,6,7,17,22,23,22,23, +33,54,55,54,55,17,38,39,38,39,3,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,55,50,23,49, +22,21,20,7,6,35,34,39,38,53,52,55,54,51,19,35,38,39,54,55,51,22,23,6,7,53,35,38,39,54,55,51, +22,23,6,7,1,80,54,10,24,24,32,32,24,24,10,54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13, +14,20,240,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,96,14,9,9,9,9,14,14,9,9,9,9,14, +112,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,1,128,28,18,17,1,1,17,18,28,1, +13,14,20,254,160,20,14,13,1,1,13,14,20,1,96,20,14,13,1,254,184,2,22,22,2,2,22,22,2,96,2,22, +22,2,2,22,22,2,232,9,9,14,14,9,9,9,9,14,14,9,9,254,192,1,15,15,1,1,15,15,1,96,1,15, +15,1,1,15,15,1,0,0,0,7,0,0,255,192,2,63,1,192,0,8,0,26,0,35,0,88,0,97,0,106,0,119, +0,0,37,54,55,52,39,6,7,22,23,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,54,55, +38,39,6,7,22,23,7,54,55,49,54,55,21,51,53,22,23,22,23,22,51,50,55,54,39,38,39,38,39,6,7,38, +39,38,53,52,55,38,39,34,7,6,7,6,7,6,7,34,39,6,7,6,7,6,23,22,23,22,55,37,22,23,6,7, +38,39,54,55,39,22,23,6,7,38,39,54,55,5,33,6,7,21,22,23,33,54,63,1,38,39,1,207,14,1,15,14, +1,2,13,176,37,25,24,1,1,24,24,38,38,24,24,1,1,25,24,37,207,14,1,1,14,15,1,1,15,4,1,27, +27,45,223,45,27,27,1,14,15,24,15,11,3,3,16,4,48,14,27,20,13,14,1,59,70,45,40,40,35,1,13,14, +20,17,12,28,3,16,3,3,11,12,19,19,17,1,3,22,1,2,21,21,2,2,21,95,21,2,1,22,21,2,2,21, +1,63,253,225,14,1,2,13,2,31,14,1,1,1,15,192,1,15,15,1,1,15,15,1,80,1,25,25,37,37,25,25, +1,1,25,25,37,37,25,25,1,80,1,15,15,1,1,15,15,1,119,1,16,16,17,107,107,17,16,16,1,9,20,17, +19,19,12,5,26,21,1,1,13,14,20,5,5,21,1,10,9,14,20,13,13,1,10,16,3,12,19,19,17,16,3,3, +11,31,2,22,22,2,2,22,22,2,96,2,22,22,2,2,22,22,2,216,1,15,16,15,1,1,15,16,15,1,0,0, +0,4,0,0,255,192,1,192,1,192,0,61,0,67,0,74,0,81,0,0,23,20,23,51,54,55,54,55,33,22,23,22, +23,51,54,53,38,39,38,39,6,7,22,23,22,23,35,54,55,54,55,54,55,54,55,52,39,35,6,7,6,7,33,38, +39,38,39,35,6,21,22,23,22,23,22,23,6,7,6,7,6,7,19,38,39,51,6,7,55,6,7,35,38,39,5,1, +54,55,51,22,23,33,0,16,32,14,2,1,3,1,56,2,1,3,13,33,16,2,25,24,68,27,32,8,6,2,1,127, +31,47,85,45,44,17,17,2,16,32,14,2,1,3,254,200,3,1,2,14,32,16,2,13,14,34,33,64,63,34,34,14, +13,2,224,38,26,128,26,38,131,9,12,221,12,9,1,7,254,250,9,12,219,13,9,254,250,46,16,2,1,13,7,11, +11,7,13,1,2,16,30,58,58,62,19,17,6,6,1,1,27,24,44,53,52,47,46,25,16,2,1,13,7,11,11,7, +13,1,2,16,22,40,40,46,47,43,43,47,46,40,40,22,1,18,21,23,23,21,124,16,15,16,16,1,254,193,16,16, +16,16,0,0,0,3,0,0,255,192,2,63,1,192,0,16,0,56,0,74,0,0,37,22,23,55,54,47,1,38,15,1, +23,7,39,7,6,31,1,5,38,39,49,38,15,1,38,39,3,38,39,38,43,1,34,7,6,21,20,23,22,59,1,19, +6,7,22,23,22,23,54,55,54,63,1,54,55,54,39,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,1,38,27,23,161,14,4,60,6,14,61,33,61,33,62,13,3,53,1,24,4,12,11,13,203,27,46,92,7,17,16, +21,73,14,9,9,9,9,14,73,92,35,2,1,27,27,41,40,27,27,2,202,13,5,6,4,254,194,14,9,9,9,9, +14,14,9,9,9,9,14,170,7,17,53,6,15,181,13,3,21,99,20,99,20,6,14,160,32,13,6,5,4,67,34,3, +1,20,20,12,12,9,9,14,14,9,9,254,235,27,48,41,27,27,1,1,27,26,40,68,4,12,11,13,138,9,9,14, +14,8,9,9,8,14,14,9,9,0,0,0,0,2,0,0,255,192,2,128,1,192,0,25,0,84,0,0,55,33,54,55, +54,55,53,38,39,38,39,35,21,39,7,53,35,6,7,6,7,21,22,23,22,23,5,33,17,38,39,38,39,35,34,7, +6,21,20,23,22,59,1,22,23,17,20,23,22,59,1,6,21,22,23,22,23,54,55,54,55,52,39,51,6,21,22,23, +22,23,54,55,54,55,52,39,51,54,55,54,53,52,39,38,35,240,1,64,20,14,13,1,1,13,14,20,112,48,48,112, +20,14,13,1,1,13,14,20,1,112,254,32,1,18,18,27,33,13,9,9,9,9,13,17,15,1,9,9,14,67,3,1, +13,14,20,20,14,13,1,3,198,3,1,13,14,20,20,14,13,1,3,67,14,9,9,9,9,14,128,1,13,14,20,192, +20,14,13,1,128,32,32,128,1,13,14,20,192,20,14,13,1,64,1,64,27,18,18,1,9,9,14,14,9,9,1,15, +254,177,14,9,9,9,8,20,14,13,1,1,13,14,20,8,8,8,8,20,14,13,1,1,13,13,20,9,7,1,9,10, +14,13,9,9,0,3,0,0,255,192,1,128,1,192,0,3,0,26,0,55,0,0,1,21,51,39,7,53,35,6,7,6, +7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,23,21,6,7,39,21,6,7,35,38,39,53,7,38,39, +53,54,55,51,53,54,55,51,22,23,21,51,22,23,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32,20,14, +13,1,127,14,10,9,64,1,13,50,1,13,36,13,1,50,13,1,1,13,50,1,13,36,13,1,50,13,1,1,192,128, +128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,174,36,13,1,1,50,14,1,1,13, +51,1,1,13,36,13,1,50,13,1,1,13,50,1,13,0,0,2,0,0,255,192,1,192,1,192,0,3,0,59,0,0, +1,21,51,39,7,53,35,6,7,6,7,21,35,6,7,21,22,23,51,50,31,1,55,54,51,50,31,1,51,22,23,6, +7,35,34,47,1,7,6,35,34,47,1,35,21,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,1,64,128,128, +32,176,20,14,13,1,48,15,1,1,15,128,10,4,18,50,5,9,9,5,28,70,15,1,1,15,80,10,4,18,50,4, +10,10,4,28,70,1,13,14,20,1,32,20,14,13,1,127,14,10,9,1,192,128,128,128,128,1,13,14,20,176,1,15, +32,15,1,9,35,99,8,8,55,1,15,15,1,9,35,99,9,9,55,144,20,14,13,1,1,13,14,20,1,48,9,9, +14,0,0,0,0,4,0,0,255,224,2,64,1,160,0,12,0,17,0,46,0,59,0,0,19,51,17,35,38,39,38,39, +17,54,55,54,55,51,33,17,33,17,23,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35, +6,7,21,35,6,7,21,37,35,17,51,54,55,54,55,17,38,39,38,39,64,32,32,27,18,18,1,1,18,18,27,64, +1,64,254,192,48,1,15,53,1,15,52,15,1,55,15,1,1,15,54,1,15,52,15,1,54,15,1,1,80,32,32,27, +18,18,1,1,18,18,27,1,160,254,64,1,18,18,27,1,64,27,18,18,1,254,64,1,192,250,15,1,54,15,1,1, +15,54,1,15,52,15,1,54,15,1,1,15,54,1,15,52,250,254,64,1,18,18,27,1,64,27,18,18,1,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54, +55,54,55,54,55,38,39,38,39,38,39,19,6,7,38,39,53,35,21,6,7,38,39,53,54,55,22,23,21,51,53,54, +55,22,23,21,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,112,2, +22,22,2,128,2,22,22,2,2,22,22,2,128,2,22,22,2,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,254,152,22,2,2,22,80,80,22,2,2,22,208,22,2,2,22,80,80,22,2, +2,22,208,0,0,4,0,0,255,192,2,64,1,192,0,20,0,53,0,71,0,86,0,0,1,51,50,55,54,61,1,52, +39,38,43,1,34,7,6,29,1,20,23,22,51,37,35,21,6,7,6,7,35,38,39,38,39,53,35,6,7,6,7,17, +22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55, +23,35,38,39,54,55,54,55,51,22,23,22,23,6,7,1,0,64,14,9,9,9,9,14,64,14,9,9,9,9,14,1, +16,144,1,13,14,20,96,20,14,13,1,144,20,14,13,1,1,13,14,20,1,224,20,14,13,1,1,13,14,20,240,27, +18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,13,14,20,128,20,14,13,1,1,15,1,64, +9,9,14,64,14,9,9,9,9,14,64,14,9,9,64,48,20,14,13,1,1,13,14,20,48,1,13,14,20,254,160,20, +14,13,1,1,13,14,20,1,96,20,14,13,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,224,1, +15,20,14,13,1,1,13,14,20,15,1,0,0,3,0,0,255,224,1,224,1,192,0,17,0,46,0,67,0,0,1,21, +7,35,38,39,38,39,17,54,55,54,55,33,22,23,22,23,7,38,39,35,53,38,39,35,6,7,21,35,6,7,21,22, +23,51,21,22,23,51,54,55,53,51,54,55,53,5,53,54,55,54,55,51,22,23,6,7,35,6,7,6,7,21,6,7, +38,39,1,224,96,240,20,14,13,1,1,13,14,20,1,32,20,14,13,1,96,1,7,56,1,7,48,7,1,56,7,1, +1,7,56,1,7,48,7,1,56,7,1,254,128,1,34,34,51,240,22,2,2,22,240,31,20,20,1,2,22,22,2,1, +48,240,96,1,13,14,20,1,32,20,14,13,1,1,13,14,20,120,7,1,56,7,1,1,7,56,1,7,48,7,1,56, +7,1,1,7,56,1,7,48,96,240,51,34,34,1,2,22,22,2,1,20,20,31,240,22,2,2,22,0,0,3,0,0, +255,192,2,128,0,128,0,28,0,33,0,38,0,0,37,54,55,53,38,39,33,6,7,21,22,23,51,21,35,6,7,21, +22,23,33,54,55,53,38,39,35,53,51,5,35,53,51,21,51,35,53,51,21,2,112,15,1,1,15,253,160,15,1,1, +15,48,48,15,1,1,15,2,96,15,1,1,15,48,48,254,176,160,160,224,160,160,64,1,15,32,15,1,1,15,32,15, +1,64,1,15,32,15,1,1,15,32,15,1,64,64,64,64,64,64,0,0,0,4,0,0,255,224,2,64,1,160,0,19, +0,31,0,45,0,60,0,0,19,6,7,49,6,7,21,22,23,22,23,54,55,54,55,53,38,39,38,39,23,35,53,54, +55,54,55,22,23,22,23,21,55,38,7,6,23,22,23,22,23,22,55,54,47,1,55,38,39,49,38,7,6,31,1,22, +55,54,39,38,39,112,48,31,32,1,1,32,31,48,48,31,32,1,1,32,31,48,48,96,1,13,14,20,20,14,13,1, +140,7,6,34,4,4,42,44,57,57,49,6,5,211,230,44,57,57,49,6,5,211,7,5,34,3,4,42,1,160,1,32, +31,47,223,48,31,31,1,1,31,32,47,223,47,31,32,1,224,112,20,14,13,1,1,13,14,20,112,30,5,6,49,57, +56,44,43,4,3,34,5,7,211,19,42,4,4,34,6,7,210,6,6,49,57,57,44,0,0,2,0,0,255,192,1,128, +1,192,0,33,0,46,0,0,19,51,22,23,6,7,35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,21,22,23, +22,23,51,54,55,54,55,17,33,21,37,33,6,7,21,22,23,33,54,55,53,38,39,32,112,15,1,1,15,112,112,15, +1,1,15,112,112,15,1,1,15,112,1,18,18,27,192,27,18,18,1,254,192,1,72,254,176,22,2,2,22,1,80,22, +2,2,22,1,0,1,15,15,1,64,1,15,15,1,64,1,15,15,1,32,27,18,18,1,1,18,18,27,1,64,64,192, +2,22,48,22,2,2,22,48,22,2,0,0,0,3,0,0,255,192,1,128,1,192,0,13,0,42,0,55,0,0,55,22, +23,49,22,23,51,54,55,54,55,17,33,17,55,54,55,51,53,54,55,51,22,23,21,51,22,23,21,6,7,35,21,6, +7,35,38,39,53,35,38,39,53,1,33,6,7,21,22,23,33,54,55,53,38,39,32,1,18,18,27,192,27,18,18,1, +254,192,64,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,8,254,176,22,2,2, +22,1,80,22,2,2,22,0,27,18,18,1,1,18,18,27,1,64,254,192,144,15,1,48,15,1,1,15,48,1,15,32, +15,1,48,15,1,1,15,48,1,15,32,1,48,2,22,48,22,2,2,22,48,22,2,0,0,3,0,0,255,192,2,128, +1,192,0,30,0,79,0,97,0,0,1,51,22,23,6,7,35,34,47,1,7,6,7,6,47,1,35,38,39,54,55,51, +50,31,1,55,54,55,54,31,1,7,51,23,22,55,54,63,1,51,22,23,22,23,21,20,7,6,35,34,39,38,61,1, +33,21,20,7,6,35,34,39,38,53,17,52,55,54,51,50,23,22,21,17,51,53,52,55,54,51,7,54,55,49,54,55, +22,23,22,23,6,7,6,7,38,39,38,39,2,12,92,22,2,2,22,104,12,7,24,47,7,13,14,8,41,123,22,2, +2,22,136,13,6,25,46,6,14,13,8,41,204,13,20,19,32,32,15,11,82,41,27,27,1,9,9,14,14,9,9,254, +0,9,9,14,14,9,9,9,9,14,14,9,9,224,9,9,14,224,1,22,23,34,34,23,22,1,1,22,23,34,34,23, +22,1,1,128,2,22,22,2,10,32,100,13,1,1,12,61,2,22,22,2,11,36,97,12,2,1,11,54,96,31,26,1, +4,28,24,1,27,27,41,224,14,9,9,9,9,14,32,32,14,9,9,9,9,14,1,128,14,9,9,9,9,14,255,0, +160,14,9,9,80,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,0,0,0,0,4,0,0,255,192,2,128, +1,192,0,77,0,83,0,101,0,119,0,0,19,6,7,49,6,7,21,35,6,7,22,23,33,22,23,6,7,35,6,7, +22,23,51,22,23,6,7,35,6,7,22,23,51,22,23,6,7,35,21,22,23,22,23,54,55,54,55,51,22,23,22,23, +54,55,54,55,51,50,55,54,53,52,39,38,35,53,52,47,1,38,43,1,53,38,39,38,39,33,5,21,35,53,51,23, +5,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,37,6,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,23,112,20,14,13,1,48,15,1,1,15,1,0,15,1,1,15,224,15,1,1,15,192,15,1,1,15,224,15, +1,1,15,192,15,1,1,15,144,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,32,14,9,9,9,9, +14,19,77,20,25,51,1,13,14,20,255,0,1,176,128,51,77,254,128,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,1,112,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,1,13,14,20,48,1,15,15,1, +1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,128,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,27,41,9,9,14,14,9,9,115,26,19,77,19,48,20,14,13,1,237,19,96,77,227,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,48,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,6,0,0, +255,192,2,128,1,192,0,16,0,21,0,34,0,47,0,74,0,101,0,0,37,33,6,7,6,7,21,22,23,22,23,33, +54,55,53,38,39,7,35,53,51,21,55,35,6,7,21,22,23,51,54,55,53,38,39,51,35,6,7,21,22,23,51,54, +55,53,38,39,3,38,61,1,38,39,35,6,7,21,22,23,22,23,22,29,1,22,23,51,54,55,53,52,39,38,39,7, +38,39,53,38,39,35,6,7,21,20,23,22,23,22,23,21,22,23,51,54,55,53,52,39,38,39,1,176,254,128,20,14, +13,1,1,13,14,20,1,128,15,1,1,15,32,176,176,136,48,7,1,1,7,48,7,1,1,7,96,48,7,1,1,7, +48,7,1,1,7,79,9,1,7,48,7,1,1,28,32,17,18,1,7,48,7,1,23,23,41,65,38,2,1,7,48,7, +1,17,16,27,35,1,1,7,48,7,1,15,15,26,96,1,13,14,20,64,20,14,13,1,1,15,128,15,1,112,64,64, +112,1,7,144,7,1,1,7,144,7,1,1,7,144,7,1,1,7,144,7,1,1,9,6,11,62,7,1,1,7,62,36, +20,21,32,33,38,30,7,1,1,7,30,50,42,43,28,55,27,45,62,7,1,1,7,66,33,28,27,19,26,43,30,7, +1,1,7,30,33,28,28,19,0,2,0,0,255,192,1,255,1,192,0,28,0,64,0,0,1,39,38,7,6,31,1,7, +39,38,7,6,31,1,22,51,50,55,54,47,1,55,23,22,51,50,55,54,39,5,23,22,7,6,35,34,47,1,7,23, +22,7,6,35,34,47,1,7,6,29,1,7,6,23,22,51,50,63,1,51,50,63,1,39,7,1,248,64,17,17,14,14, +16,38,55,17,17,12,10,149,7,7,10,7,14,14,55,38,15,7,10,10,7,14,15,254,217,58,10,10,5,6,6,5, +59,41,58,10,10,5,6,6,5,59,39,19,57,14,14,7,10,10,7,57,89,26,19,187,149,61,1,121,64,14,14,17, +17,15,38,55,14,14,15,16,149,5,7,17,17,55,38,15,7,7,17,17,83,59,11,11,5,5,58,41,59,11,11,5, +5,58,39,19,26,89,57,17,17,7,7,57,19,187,149,61,0,4,255,255,255,192,2,128,1,192,0,14,0,28,0,42, +0,57,0,0,19,6,7,49,6,7,22,23,33,54,53,38,39,38,39,23,33,6,21,22,23,22,23,54,55,54,55,54, +39,19,38,7,6,23,22,23,22,23,22,55,54,47,1,55,38,39,49,38,7,6,31,1,22,55,54,39,38,39,159,62, +44,43,11,1,8,1,48,8,11,43,44,63,153,254,208,8,11,43,44,61,62,43,44,11,1,8,51,7,5,35,4,4, +43,44,57,56,49,6,6,210,230,44,57,56,49,6,6,211,7,5,34,4,4,43,1,1,1,38,37,59,9,1,1,8, +59,38,38,1,177,1,8,59,37,38,1,1,38,37,59,8,1,1,46,6,6,49,57,57,44,43,4,3,34,5,7,211, +19,43,4,3,34,5,7,211,6,6,49,57,57,44,0,0,0,1,0,0,255,192,2,0,1,192,0,45,0,0,1,7, +35,7,6,39,38,63,1,53,55,23,22,51,50,55,54,47,1,55,23,22,51,50,55,54,47,1,55,23,22,51,50,55, +54,47,1,55,54,55,54,23,22,7,6,7,1,227,253,100,89,17,17,14,14,89,49,52,5,6,6,5,10,10,51,41, +52,5,6,6,5,10,10,52,42,52,5,6,6,5,10,10,52,50,28,37,37,30,36,1,1,28,1,29,253,89,14,14, +17,17,89,101,49,51,5,5,11,11,52,41,51,5,5,11,11,52,42,52,5,5,11,11,52,50,28,3,3,23,33,41, +41,28,0,0,0,2,0,0,255,192,2,0,1,192,0,30,0,35,0,0,1,39,38,35,34,7,6,21,20,31,1,1, +6,7,6,23,22,51,49,22,55,1,23,22,51,50,55,54,53,52,39,7,35,55,23,7,1,247,160,10,13,13,10,9, +9,7,254,241,29,4,3,27,32,46,41,32,1,19,7,10,13,13,10,9,9,192,111,150,55,94,1,23,160,9,9,10, +13,13,10,7,254,241,30,40,41,32,36,1,31,1,19,8,9,9,10,13,13,10,87,149,55,94,0,0,0,4,0,0, +255,224,2,0,1,160,0,21,0,26,0,48,0,53,0,0,19,35,6,7,22,23,51,17,22,23,22,23,54,55,54,55, +17,51,54,55,38,39,7,35,53,51,21,37,35,6,7,22,23,51,17,22,23,22,23,54,55,54,55,17,51,54,55,38, +39,7,35,53,51,21,200,176,22,2,2,22,8,1,22,23,34,34,23,22,1,8,22,2,2,22,56,64,64,1,88,176, +22,2,2,22,8,1,22,23,34,34,23,22,1,8,22,2,2,22,56,64,64,1,160,2,22,22,2,254,192,34,23,22, +1,1,22,23,34,1,64,2,22,22,2,224,176,176,224,2,22,22,2,254,192,34,23,22,1,1,22,23,34,1,64,2, +22,22,2,224,176,176,0,0,0,4,0,0,255,192,2,128,1,189,0,35,0,44,0,49,0,54,0,0,23,17,52,55, +54,55,37,54,23,5,22,23,22,21,17,6,7,35,38,39,17,52,39,38,39,33,6,7,6,21,17,6,7,35,38,39, +23,38,39,53,33,21,6,7,33,39,33,21,33,61,1,33,21,33,53,0,11,11,18,1,12,12,12,1,12,18,11,11, +2,22,48,22,2,9,9,14,254,128,14,9,9,2,22,48,22,2,152,22,2,1,128,2,22,254,176,24,1,128,254,128, +1,128,254,128,40,1,61,20,16,15,8,107,5,5,107,8,15,16,20,254,195,22,2,2,22,1,9,13,9,9,1,1, +9,9,13,254,247,22,2,2,22,24,2,22,56,56,22,2,176,64,64,112,80,80,0,0,0,3,0,0,255,192,2,0, +1,192,0,20,0,50,0,68,0,0,1,38,15,1,6,7,6,21,20,23,22,51,50,55,54,53,52,39,55,54,39,55, +35,38,39,38,35,34,7,6,7,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,38,39, +49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,54,14,7,33,17,11,12,12,11,17,17,11,12,11,34,4, +13,138,56,25,35,35,41,41,35,35,25,56,27,18,18,1,1,18,18,27,1,128,27,18,18,1,1,18,18,27,192,54, +36,37,1,1,37,36,54,54,36,37,1,1,37,36,54,1,95,4,13,78,1,11,11,17,17,11,12,12,11,17,16,11, +79,14,7,33,30,17,17,17,17,30,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,240,1, +37,36,54,54,36,37,1,1,37,36,54,54,36,37,1,0,0,4,0,0,255,224,2,0,1,160,0,8,0,17,0,46, +0,119,0,0,55,6,7,22,23,54,55,38,39,23,54,55,38,39,6,7,22,23,19,54,55,53,38,39,33,6,7,21, +22,23,51,17,35,6,7,21,22,23,33,54,55,53,38,39,35,17,51,7,6,7,35,21,51,22,23,21,6,7,35,21, +51,22,23,22,15,1,6,43,1,34,47,1,38,55,54,55,51,53,35,38,39,53,54,55,51,53,35,38,39,53,54,55, +51,53,35,38,39,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,6,7,35,21,51,22,23,21,208,15,1,1, +15,15,1,1,15,96,15,1,1,15,15,1,1,15,192,15,1,1,15,254,32,15,1,1,15,16,16,15,1,1,15,1, +224,15,1,1,15,16,16,80,1,7,136,104,7,1,1,7,104,69,20,9,8,10,21,10,18,127,17,10,21,10,8,9, +20,69,104,7,1,1,7,104,136,7,1,1,7,136,104,7,1,1,7,104,1,7,16,7,1,104,7,1,1,7,104,136, +7,1,96,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,1,32,1,15,32,15,1,1,15,32,15,1, +254,192,1,15,32,15,1,1,15,32,15,1,1,64,120,7,1,32,1,7,16,7,1,32,1,16,16,17,32,14,14,32, +17,16,16,1,32,1,7,16,7,1,32,1,7,16,7,1,32,1,7,16,7,1,24,7,1,1,7,24,1,7,16,7, +1,32,1,7,16,0,0,0,0,2,0,14,255,226,2,114,1,159,0,25,0,53,0,0,19,23,55,50,31,1,22,7, +6,15,1,6,47,1,7,6,47,1,38,39,38,63,1,54,51,49,31,1,22,23,22,63,1,21,20,7,6,15,1,6, +47,1,38,39,38,61,1,23,22,55,54,63,1,51,75,245,245,11,5,42,6,6,5,15,163,23,14,83,83,14,23,163, +15,5,6,6,42,5,11,246,55,12,19,20,21,128,10,10,16,204,16,15,205,16,10,10,128,21,20,19,12,55,2,1, +159,30,30,9,84,14,13,13,5,46,6,21,139,139,21,6,46,5,13,13,14,84,9,95,91,19,8,7,5,36,167,16, +13,13,4,51,4,4,51,4,13,13,16,167,36,5,7,8,19,91,0,0,0,4,0,1,255,225,2,0,1,161,0,36, +0,52,0,68,0,84,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22, +51,54,55,54,55,54,55,38,39,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,6,7,51,34,39, +49,38,53,52,55,54,51,50,23,22,21,6,7,51,34,39,49,38,53,52,55,54,51,50,23,22,21,6,7,1,0,71, +58,57,34,34,1,2,55,12,20,20,3,3,2,2,5,50,35,36,19,50,58,71,58,57,34,34,1,1,34,34,58,57, +72,129,14,9,9,9,9,14,14,9,9,2,30,129,14,8,9,9,9,13,13,9,9,2,29,127,14,9,9,9,9,14, +14,9,9,2,30,1,161,1,27,28,47,47,58,76,55,39,27,28,2,3,5,5,1,17,17,16,19,1,27,28,47,46, +58,58,47,47,28,28,1,240,9,9,13,13,9,10,9,9,14,29,2,9,9,13,13,9,10,9,9,14,29,2,9,9, +13,13,9,10,9,9,14,29,2,0,0,0,0,2,0,0,255,193,2,127,1,192,0,21,0,45,0,0,55,22,23,6, +7,6,7,6,23,22,51,54,55,54,55,22,51,50,55,1,6,21,5,39,54,55,54,53,38,39,38,39,38,39,6,7, +39,38,7,6,23,1,22,55,54,39,64,2,55,12,20,20,3,3,2,2,5,50,36,36,19,49,58,56,49,254,170,19, +2,55,118,29,17,17,1,34,34,58,57,71,104,71,107,19,15,12,16,2,79,19,15,13,16,209,75,56,39,27,28,2, +3,5,5,1,17,17,16,19,18,1,11,36,41,230,92,28,35,35,39,58,47,46,28,27,1,2,54,84,12,16,19,15, +254,49,12,16,17,16,0,0,0,2,0,0,255,224,2,128,1,160,0,35,0,58,0,0,37,6,7,49,6,7,21,33, +53,38,39,38,39,6,7,6,7,21,22,23,51,54,63,1,33,21,22,23,51,54,55,53,38,39,38,39,5,21,33,53, +54,55,54,55,53,38,39,38,39,33,6,7,6,7,23,22,23,22,23,2,80,20,14,13,1,254,64,1,13,14,20,20, +14,13,1,1,15,64,14,1,1,1,192,1,15,64,15,1,1,13,14,20,254,48,1,128,1,17,18,28,1,36,37,54, +254,255,54,36,37,1,1,28,18,17,1,224,1,13,14,20,80,80,20,14,13,1,1,13,14,20,192,15,1,1,15,16, +16,15,1,1,15,192,20,14,13,1,48,48,48,30,21,21,6,34,54,37,36,1,1,36,37,54,34,6,21,21,30,0, +0,3,0,0,255,192,2,0,1,192,0,31,0,121,0,153,0,0,37,6,35,34,39,34,55,48,49,38,39,38,39,54, +55,54,55,22,23,22,23,20,7,6,7,6,21,34,7,6,7,49,3,21,6,7,6,7,6,23,22,23,22,31,1,22, +23,22,21,22,21,6,7,6,39,38,39,38,35,38,35,38,7,6,23,22,51,48,21,22,23,21,22,23,54,55,53,54, +55,54,55,54,55,54,39,38,39,38,39,34,49,35,38,35,38,39,38,51,48,49,38,53,52,55,54,23,22,23,22,51, +22,55,54,39,38,39,53,38,39,6,7,53,7,51,22,23,35,21,33,53,35,54,55,51,22,23,22,23,21,6,7,6, +7,33,38,39,38,39,53,54,55,54,55,49,1,71,34,37,37,34,1,1,46,33,56,2,2,59,59,88,88,59,59,2, +16,15,27,1,1,1,32,44,91,9,7,24,7,3,6,7,11,19,19,2,21,9,3,1,1,7,10,19,11,15,2,2, +1,2,18,7,4,17,1,3,13,17,2,17,20,1,5,4,3,3,26,6,3,6,6,11,19,20,1,2,1,1,18,9, +4,1,1,9,9,19,6,10,4,2,18,6,3,17,9,12,2,18,18,2,188,16,30,42,72,1,128,72,42,30,16,20, +14,13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,44,12,12,1,17,34,58,86,88,59,59,2,2,59,59, +88,42,37,37,28,1,1,1,32,17,1,37,7,2,3,10,28,15,14,13,6,12,4,1,6,6,2,2,1,5,6,3, +5,3,2,6,1,1,4,17,18,6,2,1,4,5,6,18,2,2,18,5,1,2,1,1,10,29,16,13,14,7,12,5, +1,5,6,3,1,4,4,4,5,1,2,2,1,3,17,18,6,2,3,6,18,2,2,18,1,241,39,25,32,32,25,39, +1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,0,0,0,3,0,0,255,192,1,255,1,191,0,11, +0,54,0,63,0,0,1,53,38,39,38,39,38,7,6,7,22,23,55,6,7,49,6,7,21,38,39,38,39,38,35,34, +7,6,7,22,23,22,23,22,23,7,6,7,6,23,22,23,22,23,50,63,1,51,54,55,54,55,53,55,35,21,38,39, +54,55,22,23,6,7,1,32,43,11,2,10,9,7,32,17,53,78,112,34,22,22,1,79,62,61,31,6,9,10,5,25, +1,1,22,23,39,20,19,144,8,3,3,5,12,36,36,69,12,10,65,77,68,45,45,2,31,111,15,1,1,15,15,1, +1,15,1,25,28,55,70,10,3,3,7,38,49,58,17,103,1,22,23,34,59,5,43,44,69,10,9,53,63,53,48,47, +38,18,14,36,3,7,7,8,22,24,25,5,8,56,2,45,45,68,160,64,96,1,15,15,1,1,15,15,1,0,0,0, +0,1,0,0,255,192,2,63,0,129,0,35,0,0,37,7,6,35,33,38,39,53,54,55,51,55,54,55,51,50,23,22, +7,6,7,35,6,7,22,23,51,55,54,23,22,23,22,7,6,7,2,48,135,28,35,254,165,14,1,2,13,55,47,32, +42,159,15,10,9,2,7,27,77,14,1,2,13,121,119,14,16,16,10,11,3,2,13,56,100,20,1,15,96,15,1,38, +25,1,11,11,15,26,1,2,13,14,1,88,10,3,2,14,15,16,16,10,0,2,0,0,255,192,2,63,1,192,0,22, +0,61,0,0,37,22,63,1,54,39,38,39,38,7,6,15,1,39,38,39,38,7,6,7,6,31,1,5,38,39,49,38, +15,1,35,38,39,54,55,51,50,55,54,55,54,39,38,43,1,34,15,1,35,6,7,21,22,23,33,50,63,1,54,55, +54,39,1,19,13,13,108,23,1,1,27,24,29,30,22,11,10,22,30,29,25,26,1,1,23,109,1,37,10,16,16,14, +119,121,14,1,2,13,78,12,10,9,3,2,10,9,15,161,41,33,47,55,14,1,2,13,1,90,34,28,135,15,2,3, +10,197,11,11,115,26,34,34,24,20,2,3,22,12,12,22,3,2,20,24,34,34,26,115,85,13,3,2,10,88,2,13, +14,1,8,7,12,15,11,11,26,38,1,15,94,15,1,20,100,10,16,16,14,0,0,0,0,2,0,0,255,192,2,63, +1,192,0,38,0,105,0,0,37,38,39,49,38,15,1,35,38,39,54,55,51,50,55,54,55,54,39,38,43,1,34,15, +1,39,6,7,21,22,23,33,50,63,1,54,55,54,39,37,38,47,1,38,7,6,7,6,23,22,31,1,22,23,21,22, +23,54,55,53,54,55,54,39,38,47,1,38,39,38,55,48,53,54,23,22,23,22,55,54,39,38,39,53,38,39,6,7, +21,6,7,6,23,22,23,48,49,23,22,23,22,7,48,49,6,39,2,56,10,16,16,14,119,121,14,1,2,13,78,12, +10,9,3,2,10,9,15,161,41,33,47,55,13,2,2,13,1,90,34,28,135,15,2,3,10,254,223,12,14,5,10,8, +9,4,3,4,4,10,5,13,14,2,22,22,2,40,6,4,23,24,21,6,18,3,4,1,5,28,7,12,22,9,5,20, +11,9,2,22,22,2,39,9,3,23,22,17,6,23,5,4,1,4,29,112,13,3,2,10,88,1,15,15,1,7,8,12, +15,11,11,26,38,1,2,15,96,15,1,20,100,10,16,16,14,161,2,6,2,3,4,4,9,9,9,9,4,1,5,4, +12,22,2,2,22,10,10,36,37,15,15,4,2,5,3,3,3,1,10,3,1,4,6,20,22,9,4,2,11,22,2,2, +22,11,9,36,36,15,15,3,2,7,3,3,4,11,4,0,0,2,0,0,255,192,2,63,1,191,0,25,0,64,0,0, +37,54,55,49,54,55,38,39,38,39,38,39,38,7,48,21,6,7,6,7,6,7,22,23,22,23,5,38,39,49,38,15, +1,35,38,39,54,55,51,50,55,54,55,54,39,38,43,1,34,15,1,39,6,7,21,22,23,33,50,63,1,54,55,54, +39,1,31,41,27,26,1,1,15,15,19,19,14,13,13,13,19,19,15,15,1,1,27,27,41,1,25,10,16,16,14,119, +121,14,1,2,13,78,12,10,9,3,2,10,9,15,161,41,33,47,55,14,1,2,13,1,90,34,28,135,15,2,3,10, +192,1,26,27,39,21,29,30,29,28,19,12,12,1,17,29,28,30,29,21,40,26,27,1,80,13,3,2,10,88,1,15, +15,1,7,8,12,15,11,11,26,38,1,2,14,97,15,1,20,100,10,16,16,14,0,0,0,2,0,0,255,192,2,128, +1,128,0,42,0,86,0,0,55,22,31,1,22,55,54,55,54,47,1,38,53,52,55,54,51,50,31,1,22,23,21,6, +7,6,7,35,34,47,1,38,39,53,52,55,54,51,50,23,22,21,7,37,52,55,49,54,51,50,23,22,29,1,6,15, +1,6,43,1,38,39,38,39,53,54,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,22,63,1,54,61,1,79, +1,19,51,14,17,10,1,1,8,48,9,9,10,13,13,10,72,32,1,1,13,14,20,67,26,19,100,27,1,12,11,17, +17,11,12,1,1,225,12,11,17,17,11,12,1,27,100,20,25,67,20,14,13,1,1,32,72,10,13,13,10,9,9,48, +8,1,1,10,17,14,51,19,184,27,19,51,12,9,7,11,11,9,47,10,13,13,10,9,9,73,33,46,79,20,14,13, +1,19,100,29,38,222,17,11,12,12,11,17,160,160,17,11,12,12,11,17,222,38,29,100,19,1,13,14,20,79,46,33, +73,9,9,10,13,13,10,47,9,11,11,7,9,12,51,19,27,160,0,0,0,2,0,0,255,193,2,128,1,191,0,43, +0,76,0,0,1,35,21,6,7,6,7,6,39,38,39,53,7,6,7,6,21,7,6,7,6,31,1,22,23,22,63,1, +51,54,55,54,55,50,55,54,61,1,51,54,55,53,38,39,55,39,38,39,38,15,1,35,34,7,6,7,21,20,23,22, +51,50,55,54,61,1,51,22,23,22,23,21,55,54,55,54,39,1,232,152,1,17,18,29,33,22,23,1,25,33,19,19, +80,12,3,3,6,80,7,13,12,12,103,137,27,18,18,1,20,14,14,8,22,2,2,22,148,80,7,13,12,12,103,63, +58,49,14,1,12,11,17,17,11,12,184,24,16,15,1,80,12,3,3,6,1,1,52,29,22,21,4,2,21,20,33,121, +15,21,33,33,40,46,7,12,13,11,139,12,3,3,6,60,1,18,18,27,14,14,20,48,2,22,48,22,3,36,139,12, +3,3,6,60,31,9,18,126,17,11,12,12,11,17,89,1,16,15,24,29,47,6,12,13,11,0,0,0,0,2,0,0, +0,0,2,128,1,128,0,48,0,91,0,0,37,7,6,39,38,39,38,55,54,63,1,35,34,7,6,7,35,34,7,6, +29,1,20,23,22,59,1,23,22,55,54,55,23,22,55,54,63,1,23,22,55,54,63,1,54,39,38,47,1,37,35,38, +39,38,43,1,34,15,1,20,49,6,21,20,23,22,23,22,55,48,49,48,49,55,54,23,22,15,1,23,22,23,51,54, +55,54,61,1,52,39,38,35,1,79,30,32,29,29,12,20,1,1,22,82,6,44,40,40,31,96,14,9,9,9,9,13, +114,91,21,26,25,18,18,12,15,15,10,32,5,11,13,12,9,10,8,1,2,10,148,1,17,96,31,40,40,43,9,12, +10,98,13,11,7,16,16,17,80,12,11,9,10,26,145,18,4,82,14,9,9,9,9,14,231,28,26,8,8,14,24,28, +29,21,75,17,16,31,9,10,13,160,13,9,10,82,16,2,3,21,16,9,2,1,12,38,4,8,1,1,11,11,11,13, +12,9,122,89,31,16,17,9,89,1,12,16,16,12,9,3,4,14,73,9,10,12,11,24,118,15,23,1,9,9,13,160, +14,9,9,0,0,1,0,3,255,192,1,252,1,192,0,73,0,0,1,21,51,50,23,55,35,52,53,52,39,38,39,22, +23,22,23,22,7,6,43,1,7,22,29,1,6,7,6,7,35,38,39,38,39,53,54,55,39,35,38,55,54,55,54,55, +6,7,6,21,20,21,35,23,54,59,1,53,35,38,53,38,53,54,55,54,55,22,23,22,23,20,21,35,1,16,32,11, +9,120,28,15,16,26,68,35,36,10,1,4,5,7,6,140,5,1,13,14,20,97,20,13,14,1,1,5,140,6,17,2, +10,36,35,68,26,16,15,28,120,9,10,32,110,1,1,2,39,38,49,51,38,38,2,112,1,0,128,4,132,8,8,48, +41,41,29,26,45,45,41,7,5,6,154,10,12,96,20,14,13,1,1,13,14,20,96,12,10,154,2,16,41,45,45,26, +29,41,41,48,8,8,132,4,128,3,4,4,5,78,50,47,1,1,47,50,78,8,8,0,0,5,0,0,255,192,2,127, +1,192,0,17,0,35,0,112,0,125,0,138,0,0,19,50,55,49,54,53,52,39,38,39,6,7,6,7,22,23,22,23, +33,50,55,49,54,53,52,39,38,39,6,7,6,7,22,23,22,31,1,39,38,39,38,7,6,15,2,39,38,39,35,6, +7,21,47,1,38,39,38,7,6,15,1,6,31,2,22,23,50,51,48,51,54,55,54,47,1,38,47,1,55,23,22,31, +1,22,23,51,54,63,1,54,63,1,23,7,6,15,1,6,23,22,23,50,51,50,49,54,63,2,54,39,5,7,6,23, +22,23,22,55,54,63,1,47,1,5,39,15,1,23,22,23,50,55,54,55,54,39,128,20,13,14,14,13,20,20,14,13, +1,1,13,14,20,1,127,20,14,13,13,13,21,20,14,13,1,1,14,13,20,93,19,8,29,29,28,34,14,11,15,2, +1,15,159,15,1,16,11,14,34,28,29,29,8,18,7,21,67,10,5,27,2,1,1,13,8,8,1,10,3,13,43,17, +7,6,19,51,8,9,159,9,8,51,19,6,7,17,43,13,3,10,1,8,8,14,1,1,1,26,6,10,68,21,6,253, +210,44,4,5,5,12,13,12,11,6,27,2,41,2,80,43,42,2,28,8,20,6,6,13,5,5,4,1,97,14,13,20, +20,14,13,1,1,13,13,20,20,14,13,1,14,13,20,20,14,13,1,1,13,13,20,20,14,13,1,163,80,31,14,12, +16,21,38,34,10,96,15,1,1,15,95,10,34,38,21,16,12,14,31,80,32,25,76,93,27,2,2,10,10,13,93,20, +15,49,71,21,19,13,33,4,1,1,4,33,13,19,21,71,49,15,20,93,13,10,10,2,2,26,93,76,25,32,100,110, +13,12,11,6,4,5,5,12,69,19,46,110,110,46,19,69,19,1,2,6,11,12,13,0,0,3,0,0,255,192,2,64, +1,192,0,18,0,94,0,103,0,0,1,7,38,43,1,34,7,48,49,52,53,54,55,54,55,22,23,22,23,7,50,51, +22,23,54,55,51,7,22,23,51,50,23,22,29,1,20,7,6,43,1,6,7,21,20,7,6,43,1,34,39,38,61,1, +35,21,20,7,6,43,1,34,39,38,61,1,38,39,35,38,39,38,39,54,55,54,55,51,22,23,6,7,35,6,7,22, +23,51,54,55,54,55,54,59,1,23,6,7,22,23,54,55,38,39,1,144,1,7,8,128,25,23,1,27,27,41,41,27, +27,1,16,5,5,7,6,28,45,32,19,24,14,13,14,9,9,9,9,14,32,14,18,9,9,14,32,14,9,9,128,9, +9,14,32,14,9,9,54,9,29,29,19,19,1,1,19,19,29,4,22,2,2,22,4,18,2,2,18,31,10,31,31,45, +18,22,128,40,22,2,2,22,22,2,2,22,1,96,1,1,6,3,3,41,27,27,1,1,27,27,41,32,1,1,33,1, +75,23,30,9,9,14,96,14,9,9,18,14,64,14,9,9,9,9,14,32,32,14,9,9,9,9,14,64,41,71,1,19, +19,29,29,19,19,1,2,22,22,2,1,19,18,2,45,33,33,12,5,112,2,22,22,2,2,22,22,2,0,2,0,0, +255,192,1,192,1,191,0,11,0,66,0,0,55,6,23,49,22,31,1,22,63,1,39,7,33,38,39,49,38,39,49,38, +39,49,38,39,49,38,39,54,55,22,23,6,7,6,7,6,7,23,55,54,55,54,47,1,38,39,38,39,38,7,6,15, +1,6,7,6,23,22,23,19,22,63,1,54,55,54,39,6,7,1,1,10,68,17,15,91,79,117,1,180,1,30,29,43, +44,43,44,30,29,3,23,55,55,22,2,14,13,13,13,1,80,34,21,3,4,17,43,7,10,34,51,51,36,10,7,43, +2,7,6,1,2,23,248,15,17,69,9,1,1,7,4,9,10,10,7,28,9,13,102,88,130,1,32,33,48,48,49,48, +34,33,3,15,2,3,14,4,15,16,14,15,1,87,37,24,32,31,28,75,12,6,20,1,1,22,6,12,73,2,17,17, +26,26,28,254,237,14,10,28,7,10,10,9,0,4,0,0,255,192,2,0,1,192,0,61,0,79,0,114,0,132,0,0, +37,34,7,49,6,21,20,23,22,59,1,22,23,22,23,6,7,6,7,33,54,55,54,55,51,50,55,54,53,52,39,38, +43,1,38,39,38,39,54,55,54,55,51,38,39,38,39,54,55,54,55,22,23,22,23,6,7,6,7,6,7,35,55,50, +55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,48,57,1,48,49,6,7,20,35,6,49,38,39,38,39, +38,39,54,55,54,55,22,23,22,23,6,7,6,7,6,7,6,7,49,39,50,55,49,54,53,52,39,38,35,34,7,6, +7,22,23,22,51,1,64,14,9,9,9,9,14,96,41,27,27,1,1,27,27,41,254,236,13,17,9,10,227,14,9,9, +9,9,14,96,41,28,27,1,1,27,28,41,42,17,12,12,1,1,27,27,41,41,27,27,1,2,23,23,23,23,2,96, +96,14,9,9,9,9,14,14,9,9,9,9,14,254,214,7,5,1,9,2,23,23,23,23,2,1,27,27,41,41,27,27, +1,1,12,12,17,3,3,14,12,23,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,9,9,14,14,9,9,1, +27,27,41,41,27,27,1,15,22,13,14,9,9,14,14,9,9,1,27,27,41,41,27,27,1,23,25,26,22,41,27,27, +1,1,27,27,41,33,37,37,26,26,1,128,9,9,14,14,9,9,9,9,14,14,9,9,254,152,8,5,1,10,1,26, +26,37,37,33,41,28,27,1,1,27,28,41,22,26,25,23,4,4,18,14,104,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,2,0,0,255,224,2,0,1,160,0,23,0,36,0,0,19,35,22,23,22,23,22,23,21,20,23,22, +51,50,55,54,61,1,38,39,38,39,38,39,37,6,7,49,6,7,22,23,54,55,54,55,35,64,64,1,30,29,51,50, +63,9,9,13,13,10,10,1,30,29,51,50,63,1,128,64,51,51,30,42,17,87,56,56,2,64,1,97,63,50,51,30, +29,1,128,14,9,10,9,9,14,128,63,50,51,30,30,1,63,1,31,31,52,46,62,11,62,61,89,0,0,2,0,0, +255,192,2,0,1,192,0,41,0,63,0,0,19,50,23,49,22,29,1,33,50,23,22,21,20,7,6,35,33,17,20,7, +6,35,34,39,38,53,17,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51,5,50,23,49,22,29,1,20,7,6, +35,33,34,39,38,61,1,52,55,54,51,33,96,14,9,9,1,96,14,9,9,9,9,14,254,160,9,9,14,14,9,9, +32,14,9,9,9,9,14,32,9,9,14,1,96,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1,0,1,192,9, +9,14,32,9,9,14,14,9,9,254,160,14,9,9,9,9,14,1,96,9,9,14,14,9,9,32,14,9,9,160,9,9, +14,160,14,9,9,9,9,14,160,14,9,9,0,4,0,0,255,192,2,0,1,192,0,26,0,52,0,70,0,88,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,38,7,6,23, +22,23,22,23,54,55,54,55,54,39,38,7,6,7,6,7,38,39,38,39,49,55,34,7,49,6,7,22,23,22,51,50, +55,54,53,52,39,38,35,23,54,51,49,50,23,22,55,54,39,38,35,34,7,6,23,22,55,0,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,164,11,11,11,9,17,28,29,41,42,29,29,17,9, +10,12,11,14,23,23,33,32,23,22,14,12,13,9,9,1,1,9,9,13,14,9,9,9,9,14,125,14,21,21,14,10, +13,11,8,25,36,36,25,8,11,13,10,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,70,11,9,11,12,20,16,16,1,1,16,16,20,12,11,9,11,16,13,12,1,1,12,13,16,150,9,9, +14,14,9,9,9,9,14,14,9,9,58,18,18,11,8,10,13,30,30,13,10,7,10,0,0,3,0,0,255,224,2,64, +1,160,0,17,0,51,0,69,0,0,37,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,50,23,49, +22,21,20,7,6,35,33,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,20,7,6,7,51,37,54, +55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,32,1,18,18,27,27,18,18,1,1,18,18,27,27,18, +18,1,1,0,14,9,9,9,9,14,254,192,63,50,51,29,30,1,1,30,29,51,50,63,63,50,51,29,30,1,18,18, +31,163,254,192,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,192,27,18,18,1,1,18,18,27,27,18,18, +1,1,18,18,27,160,9,9,14,14,9,9,1,30,29,51,50,63,63,50,51,29,30,1,1,30,29,51,50,63,47,41, +41,31,64,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,3,0,7,255,192,2,128,1,192,0,25, +0,43,0,73,0,0,1,17,6,7,6,7,38,39,38,39,5,6,39,38,39,38,55,54,55,37,17,54,55,54,55,51, +3,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,37,38,55,49,54,63,1,23,22,63,1,54,47,1, +55,54,23,22,31,1,22,7,6,15,1,6,39,38,47,1,2,128,1,32,31,48,47,31,32,2,254,144,13,11,11,4, +3,6,7,13,1,64,1,18,18,27,224,112,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,7,3,6, +7,13,46,21,5,14,31,14,2,21,46,14,11,11,4,41,3,6,7,13,154,14,11,11,3,42,1,192,254,112,48,31, +32,1,1,31,31,46,100,3,6,7,13,13,11,11,4,87,1,34,27,18,18,1,254,160,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,144,14,11,11,3,13,77,13,1,9,5,14,77,13,3,6,7,13,154,14,11,11,4,41, +3,6,7,13,154,0,0,0,0,5,0,0,255,224,2,128,1,160,0,51,0,58,0,76,0,94,0,112,0,0,1,22, +23,49,22,23,21,51,22,31,1,22,29,1,20,7,6,43,1,22,21,6,7,6,7,38,39,38,39,52,55,35,22,21, +6,7,6,7,38,39,6,7,38,39,38,39,17,54,55,54,55,33,23,38,43,1,21,51,39,7,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,7,50,55, +49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,160,27,18,18,1,49,26,17,58,10,9,9,14,2,2,1, +22,23,34,34,23,22,1,2,164,2,1,22,23,34,41,23,23,41,34,23,22,1,1,18,18,27,1,96,119,2,4,49, +104,49,7,14,9,9,9,9,14,14,9,9,9,9,14,254,192,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9, +9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,48,1,20,71,11,15,90,14,9,9,8,8,34,23,22,1, +1,22,23,34,8,8,8,8,34,23,22,1,1,31,31,1,1,22,23,34,1,48,27,18,18,1,163,3,64,61,237,9, +9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9, +9,14,14,9,9,0,0,0,0,2,0,0,255,193,2,127,1,192,0,10,0,43,0,0,55,22,23,49,22,51,33,54, +55,1,17,5,39,23,22,55,54,55,17,38,39,38,15,1,21,39,53,38,39,38,43,1,39,38,35,34,7,6,23,1, +22,55,54,39,32,1,13,13,20,1,31,31,13,254,134,2,87,89,16,17,16,16,1,1,16,16,17,110,32,1,13,13, +20,255,75,7,8,11,8,12,16,2,79,19,15,13,16,49,20,14,13,1,27,1,40,254,235,70,70,11,11,9,8,20, +1,0,20,8,9,11,75,149,25,189,20,13,14,60,5,9,19,15,254,49,12,16,17,16,0,2,0,16,255,192,1,47, +1,192,0,32,0,37,0,0,23,35,53,54,55,54,47,1,38,39,35,6,15,1,6,23,22,23,21,35,34,7,6,21, +22,23,51,54,55,52,39,38,35,3,51,23,35,55,232,40,53,31,31,4,15,3,13,224,13,3,15,4,31,31,53,40, +17,11,12,1,7,208,7,1,12,11,17,154,164,7,178,7,16,117,13,42,43,56,178,14,1,1,14,178,56,43,42,13, +117,12,11,17,7,1,1,7,17,11,12,1,160,80,80,0,0,2,0,0,255,192,2,128,1,192,0,16,0,42,0,0, +37,35,6,7,6,7,20,23,22,51,33,48,49,48,49,35,39,5,39,54,55,54,55,38,39,38,39,6,7,6,7,39, +38,35,34,7,6,23,1,22,55,54,39,1,29,61,68,45,45,2,9,9,13,1,192,14,244,1,90,250,37,23,22,1, +2,40,41,60,53,39,38,11,141,7,8,11,8,12,16,2,80,19,15,12,16,128,2,45,45,67,14,10,9,192,149,195, +18,34,34,44,61,40,41,1,1,32,32,50,111,5,9,19,15,254,48,12,16,19,15,0,0,6,0,0,255,192,1,192, +1,192,0,7,0,16,0,33,0,67,0,98,0,120,0,0,55,6,7,21,51,53,38,39,51,6,7,22,23,54,55,38, +39,3,23,22,63,2,54,47,2,38,15,2,6,31,2,6,7,38,39,6,7,6,7,20,23,22,59,1,53,52,55,54, +59,1,50,23,22,29,1,51,50,55,54,53,38,39,38,39,37,51,22,23,22,23,54,55,54,55,51,54,55,53,38,39, +35,38,39,38,39,6,7,6,7,35,6,7,21,22,23,55,54,55,49,54,59,1,50,23,22,23,21,6,7,6,7,35, +38,39,38,39,53,176,15,1,32,1,15,96,15,1,1,15,15,1,1,15,108,8,4,4,8,25,5,5,25,8,4,4, +8,25,5,5,25,172,49,63,63,49,50,31,30,1,10,10,15,93,9,9,14,128,14,9,9,93,15,10,10,1,30,31, +50,254,240,14,19,38,39,50,50,39,38,20,13,15,1,1,15,13,20,38,39,50,50,39,38,19,14,15,1,1,15,40, +1,13,14,20,144,20,14,13,1,1,27,27,41,48,41,27,27,1,0,1,15,48,48,15,1,1,15,15,1,1,15,15, +1,1,20,25,5,5,25,8,4,4,8,25,5,5,25,8,4,4,8,143,36,1,1,36,20,43,43,56,15,10,10,64, +14,9,9,9,9,14,64,10,10,15,56,43,43,20,91,43,26,26,1,1,26,26,43,1,15,96,15,1,43,26,26,1, +1,26,26,43,1,15,96,15,1,88,17,11,12,12,11,17,24,41,27,27,1,1,27,27,41,24,0,0,0,3,0,0, +255,192,2,128,1,192,0,18,0,36,0,54,0,0,37,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,38,15,1,39,38,7,6,31,1,22,51,49, +50,63,1,54,39,1,19,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,51,54,37,36,1,1,36,37, +54,54,37,36,1,1,36,37,54,1,152,17,17,87,38,17,17,14,14,56,7,10,11,7,104,13,15,144,2,49,49,73, +15,10,10,10,10,15,73,49,49,2,48,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,122,13,15,93,38, +14,14,17,17,56,7,8,112,17,17,0,0,0,4,0,0,255,192,2,128,1,192,0,17,0,32,0,50,0,69,0,0, +37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,35,38,39,53,54,55,22,23,21,51,22,23,6, +7,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,52,55,38,43,1,6,7,6,7,20,23,22, +51,33,38,39,38,53,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,48,54,9,1,1,15,15,1, +32,15,1,1,15,254,192,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,96,9,26,28,102,73,49,49,2, +10,10,15,1,104,34,20,21,224,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,9,70,15,1,1, +15,48,2,13,15,2,128,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,112,29,26,9,2,49,49,73,15, +10,10,24,38,37,45,0,0,0,4,0,0,255,192,2,128,1,192,0,34,0,52,0,113,0,131,0,0,5,38,39,7, +6,7,38,39,38,39,38,63,1,52,53,39,38,39,38,43,1,6,7,6,7,20,23,22,51,33,50,55,38,61,1,39, +54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,54,39,55,54,39,38,39,38,15,1,38,39,53,38, +39,38,7,6,29,1,6,7,39,38,7,6,7,6,31,1,6,23,7,6,23,22,23,22,63,1,22,23,21,22,23,22, +55,54,55,53,54,55,23,22,55,54,55,54,47,1,7,38,39,49,38,53,52,55,54,51,50,23,22,23,6,7,6,7, +1,169,3,4,8,9,10,17,12,28,12,7,24,8,7,19,1,22,23,102,73,49,49,2,10,10,15,1,122,9,7,4, +201,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,1,131,3,3,25,5,1,11,23,4,5,25,17,20,1, +5,34,32,6,20,17,26,4,5,22,11,1,5,25,3,3,25,5,1,11,22,4,5,26,17,20,1,5,34,32,5,1, +20,17,25,5,4,23,11,1,5,25,115,21,13,14,14,13,21,21,13,14,1,1,14,13,21,35,2,2,4,5,1,1, +12,31,39,30,15,5,4,4,4,12,22,6,2,49,49,73,15,10,10,4,8,8,9,227,1,36,37,54,54,37,36,1, +1,36,37,54,54,37,36,1,117,21,21,15,3,6,32,25,4,3,14,14,7,30,5,2,7,7,2,5,30,7,14,14, +3,4,25,32,6,3,15,21,21,15,3,6,32,25,4,2,15,14,7,30,5,2,7,7,2,5,30,7,14,15,2,4, +25,32,6,3,15,28,1,14,13,21,21,13,14,14,13,21,21,13,14,1,0,4,0,0,255,192,2,128,1,192,0,17, +0,36,0,48,0,61,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,6,7,6,7, +20,23,22,51,33,38,63,1,54,63,1,38,39,23,6,15,1,20,51,55,54,63,1,39,7,37,39,38,35,34,15,1, +23,55,54,53,52,39,223,54,37,36,1,1,36,37,54,54,36,36,1,1,36,36,54,52,102,73,49,49,2,10,10,15, +1,30,2,2,14,3,11,45,48,71,96,3,2,14,11,71,6,3,126,72,126,1,3,22,11,14,14,12,38,72,39,10, +10,192,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,48,2,49,49,73,15,10,10,8,9,71,15,11,46, +46,2,117,3,6,71,11,14,2,3,126,72,126,165,21,11,11,38,72,38,12,14,14,11,0,4,0,0,255,192,2,128, +1,192,0,17,0,36,0,53,0,71,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35, +6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,23,35,22,23,22,21,20,7,51,50,55,54,53,38,39, +38,47,1,54,55,49,54,55,38,39,38,39,6,7,22,23,6,7,22,23,224,54,37,36,1,1,36,37,54,54,37,36, +1,1,36,37,54,51,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,204,74,35,20,20,10,138,14,9, +9,2,45,45,69,47,48,31,32,1,1,32,31,48,38,29,18,1,1,31,32,48,192,1,36,37,54,54,37,36,1,1, +36,37,54,54,37,36,1,48,2,49,49,73,15,10,10,10,10,15,73,49,49,2,16,29,40,41,47,20,15,10,9,14, +67,45,45,2,64,1,32,31,48,48,31,32,1,1,22,33,40,54,41,32,1,0,0,0,0,2,0,32,255,192,1,224, +1,192,0,42,0,62,0,0,19,23,21,6,7,22,23,7,6,23,51,54,47,1,54,55,38,39,53,23,21,22,23,22, +23,54,55,54,63,2,54,53,52,47,1,38,15,1,6,21,20,23,5,7,39,6,7,6,7,20,23,22,51,33,50,55, +54,53,38,39,38,39,46,6,11,1,1,10,15,2,9,42,9,1,16,10,1,1,11,52,1,36,37,54,54,36,36,1, +1,82,14,14,190,20,20,190,14,14,1,57,103,103,54,33,33,1,10,10,15,1,122,15,10,10,1,33,33,54,1,112, +1,59,6,14,13,7,62,12,2,2,11,63,7,13,14,6,53,13,60,54,37,36,1,1,36,37,54,60,20,5,11,11, +5,46,4,4,46,5,11,11,5,233,103,103,17,44,44,59,15,10,10,10,10,15,59,44,44,17,0,0,0,5,0,0, +255,192,2,128,1,192,0,31,0,49,0,61,0,79,0,97,0,0,37,35,53,38,39,38,39,38,7,6,7,21,35,6, +7,6,7,21,22,23,22,23,51,54,55,54,55,53,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21, +20,7,6,35,55,35,53,52,55,54,51,50,23,22,29,1,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23, +22,31,1,52,55,38,43,1,6,7,6,7,20,23,22,51,33,38,39,53,2,80,16,1,19,20,32,37,25,25,1,16, +20,14,13,1,1,13,14,20,192,20,14,13,1,1,13,14,20,96,14,9,9,9,9,14,14,9,9,9,9,14,32,64, +9,9,14,14,9,9,254,208,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,96,4,23,26,102,73,49,49, +2,10,10,15,1,45,15,1,160,75,33,24,23,5,2,23,23,36,80,1,13,14,20,128,20,14,13,1,1,13,14,20, +128,20,14,13,1,144,9,9,14,14,9,9,9,9,14,14,9,9,144,80,14,9,9,9,9,14,80,32,1,36,37,54, +54,37,36,1,1,36,37,54,54,37,36,1,80,13,12,7,2,49,49,73,15,10,10,20,28,128,0,0,0,3,0,0, +255,192,2,128,1,192,0,18,0,36,0,47,0,0,37,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,35,6,7,22,23,51,54,55,38,39,1,19, +102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,51,54,37,36,1,1,36,37,54,54,37,36,1,1,36, +37,54,1,136,144,22,2,2,22,144,22,2,2,22,144,2,49,49,73,15,10,10,10,10,15,73,49,49,2,48,1,36, +37,54,54,37,36,1,1,36,37,54,54,37,36,1,56,2,22,22,2,2,22,22,2,0,0,3,0,32,255,192,1,224, +1,192,0,24,0,35,0,55,0,0,19,54,55,22,23,22,23,54,55,54,55,38,39,38,39,6,7,6,7,38,39,22, +23,6,7,55,51,50,23,22,21,35,52,55,54,51,23,7,39,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39, +38,39,64,42,27,12,33,33,45,54,36,36,1,1,36,36,54,38,30,30,16,28,50,2,41,41,2,144,95,14,10,9, +160,9,9,14,130,82,82,62,39,40,1,10,10,15,1,122,15,10,10,1,40,39,62,1,0,1,29,42,25,26,1,1, +36,37,54,54,37,36,1,1,19,19,33,38,2,52,28,28,52,96,9,9,14,14,9,9,211,109,109,12,47,46,65,15, +10,10,10,10,15,65,46,47,12,0,0,0,0,4,0,0,255,192,2,128,1,192,0,20,0,27,0,45,0,66,0,0, +37,39,38,15,1,6,7,22,23,22,23,22,55,54,55,54,55,54,55,38,39,7,53,23,6,7,6,7,37,54,55,49, +54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,38,43,1,6,7,6,7,20,23,22,51,33,50,55,52,51,38, +39,38,39,2,110,115,7,15,115,17,1,2,40,40,51,15,7,27,30,31,22,22,1,1,17,126,96,7,30,31,28,254, +240,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,97,22,24,102,73,49,49,2,10,10,15,1,122,4,4, +1,40,29,29,3,177,45,4,4,45,8,16,84,55,56,19,4,4,9,27,27,44,44,63,16,8,191,189,38,65,37,37, +12,206,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,54,6,2,49,49,73,15,10,10,1,1,30,51,51, +68,0,0,0,0,2,0,0,255,192,2,128,1,192,0,13,0,39,0,0,23,20,23,49,22,51,33,50,55,37,6,7, +6,7,45,1,54,55,54,55,38,39,38,39,6,7,6,7,39,38,35,34,7,6,23,1,22,55,54,39,95,10,10,15, +1,122,9,7,254,253,72,48,48,2,2,24,254,235,42,26,26,1,3,36,36,55,53,36,35,3,153,7,8,11,8,12, +16,2,80,19,15,12,16,29,15,10,10,4,204,4,48,49,72,8,218,12,33,33,45,54,37,36,1,1,36,35,53,120, +5,9,19,15,254,48,12,16,19,15,0,0,0,4,0,0,255,192,2,128,1,192,0,18,0,36,0,58,0,67,0,0, +37,53,38,43,1,6,7,6,7,20,23,22,51,33,54,55,39,38,53,39,54,55,49,54,55,38,39,38,39,6,7,6, +7,22,23,22,23,5,39,38,43,1,34,7,6,29,1,20,31,1,22,51,50,63,1,54,53,52,47,1,38,39,54,55, +22,23,6,7,1,96,35,42,102,73,49,49,2,10,10,15,1,122,19,9,61,28,128,54,37,36,1,1,36,37,54,54, +37,36,1,1,36,37,54,1,151,91,19,26,79,14,9,9,18,91,10,12,13,10,92,10,9,183,22,2,2,22,22,2, +2,22,81,44,19,2,49,49,73,15,10,10,1,14,62,28,40,111,1,36,37,54,54,37,36,1,1,36,37,54,54,37, +36,1,109,90,19,9,9,14,79,27,18,91,9,9,93,10,13,12,10,21,2,22,22,2,2,22,22,2,0,2,0,0, +255,192,1,192,1,192,0,17,0,42,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,39, +51,7,23,55,22,23,22,23,20,7,6,35,33,34,39,38,53,54,55,54,55,23,55,1,96,1,36,37,54,54,37,36, +1,1,36,37,54,54,37,36,1,143,33,96,33,33,40,59,38,38,1,9,9,13,254,126,13,9,9,1,38,38,59,40, +33,1,64,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,231,55,55,124,161,10,44,44,61,13,9,9,9, +9,13,61,44,44,10,161,124,0,8,0,0,255,192,2,128,1,192,0,17,0,35,0,53,0,74,0,92,0,113,0,174, +0,192,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,33,54,55,49,54,55,38,39,38,39, +6,7,6,7,22,23,22,31,1,54,55,49,54,55,38,39,38,39,6,7,6,7,20,23,22,31,1,52,55,34,39,34, +43,1,6,7,6,7,20,23,22,51,33,38,39,38,53,39,52,55,49,52,55,38,43,1,6,7,6,7,22,23,51,38, +39,37,35,34,7,20,23,22,21,6,7,54,55,22,23,51,54,55,38,39,38,39,23,38,39,38,15,1,38,39,53,52, +39,38,7,6,7,21,6,7,39,38,7,6,7,6,31,1,6,23,7,6,23,22,23,22,63,1,22,23,21,20,23,22, +55,54,61,1,54,55,23,22,55,54,55,54,47,1,54,39,55,54,39,7,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,2,0,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,128,34,23,22,1,1,22,23, +34,34,23,22,1,1,22,23,34,192,44,29,29,1,1,29,30,43,44,29,29,1,29,30,44,48,9,2,1,2,2,100, +60,40,40,2,8,8,12,1,11,26,14,15,184,1,1,17,19,62,37,25,25,1,2,16,199,32,1,1,112,62,19,17, +1,1,1,14,32,39,65,42,3,16,2,1,25,25,37,66,8,17,3,3,20,12,15,4,25,25,2,1,15,12,20,3, +3,17,8,1,3,20,3,3,20,3,1,8,17,3,3,20,12,15,4,26,24,4,15,12,20,3,3,17,8,1,4,19, +3,3,19,4,2,106,14,9,9,9,9,14,14,9,9,9,9,14,1,32,1,22,23,34,34,23,22,1,1,22,23,34, +34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,160,1,29,30,44,44,30,29,1,1,29,30, +44,44,30,29,1,80,25,22,1,1,38,38,56,12,7,8,20,29,29,34,184,6,6,2,2,8,1,26,27,39,17,2, +37,51,24,8,3,2,5,6,32,27,18,1,2,46,2,17,39,27,26,1,175,25,18,3,2,11,10,6,23,4,1,6, +6,2,3,22,6,10,11,2,3,19,24,4,2,11,16,16,11,2,4,25,18,3,2,11,11,5,22,4,1,6,6,1, +4,22,5,11,11,2,3,18,25,4,2,11,16,16,11,1,4,65,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,5,0,0,255,192,2,127,1,192,0,31,0,35,0,65,0,69,0,116,0,0,55,6,7,49,6,7,49,6,7,49, +6,23,22,23,22,23,54,55,54,55,48,53,54,39,38,39,38,39,38,35,34,15,1,55,23,35,1,38,35,49,34,7, +6,7,6,7,6,7,6,21,22,23,22,23,54,55,54,55,52,49,54,39,38,39,38,39,7,55,23,35,23,35,17,54, +63,1,54,55,54,39,38,39,38,15,1,38,39,6,7,6,7,20,21,22,21,7,6,7,6,23,22,23,50,63,1,22, +23,17,22,23,51,54,55,52,39,38,35,85,18,13,27,11,12,2,2,1,1,36,36,54,54,37,36,1,1,4,4,18, +18,42,15,28,28,15,29,72,72,144,1,243,15,28,28,15,28,17,20,9,8,2,1,1,36,37,54,54,36,36,1,1, +4,4,18,18,41,116,72,72,144,56,143,32,12,126,13,6,5,4,4,12,11,13,113,23,46,34,22,22,1,1,124,13, +6,5,4,8,22,5,5,136,6,8,1,15,223,15,1,14,13,21,197,36,26,54,23,23,7,7,5,34,23,22,1,1, +22,23,33,1,6,10,10,36,35,84,27,27,165,143,143,1,37,27,27,56,34,40,17,17,6,6,5,34,22,22,1,1, +22,23,33,1,6,10,10,36,36,82,165,143,143,160,1,39,15,33,43,4,12,11,13,13,6,5,4,37,37,2,1,22, +23,34,3,3,1,2,41,4,12,11,13,21,1,2,45,5,3,254,169,15,1,2,13,21,14,14,0,0,0,5,0,0, +255,192,2,127,1,191,0,27,0,31,0,78,0,108,0,112,0,0,37,38,35,49,34,7,6,7,6,7,6,23,22,23, +22,23,54,55,54,55,52,53,54,39,38,39,38,39,7,55,23,35,55,54,55,54,39,38,47,1,52,53,54,53,38,39, +38,39,6,7,39,38,7,6,7,6,23,22,31,1,22,23,17,35,6,7,6,21,20,23,51,54,55,17,54,55,23,22, +51,5,48,53,49,54,39,49,38,39,49,38,39,38,35,34,7,6,7,6,7,6,23,22,23,22,23,54,55,54,55,39, +23,35,55,2,43,15,28,28,15,29,17,29,5,6,1,1,36,37,54,54,36,36,1,1,4,4,18,18,41,115,72,72, +144,72,22,8,4,5,6,13,122,1,1,22,23,33,46,23,113,14,12,12,4,4,5,6,13,126,12,32,144,20,13,14, +15,223,14,1,8,6,136,7,5,255,0,1,4,4,18,18,42,15,28,28,15,29,17,28,6,6,1,1,36,36,54,54, +37,36,2,128,72,144,72,197,27,27,57,34,56,14,14,6,34,23,22,1,1,22,23,33,1,1,5,11,10,36,36,82, +165,143,143,224,1,21,13,11,12,4,40,2,1,3,3,34,23,22,1,2,37,37,5,6,5,13,13,11,12,4,42,34, +15,254,217,1,13,13,20,16,1,2,13,1,88,3,5,45,2,112,1,5,10,10,35,36,84,27,27,57,34,56,14,14, +6,34,22,22,1,1,22,22,34,160,143,143,0,4,0,0,255,192,2,0,1,192,0,35,0,40,0,61,0,79,0,0, +1,51,55,33,6,7,6,7,21,22,23,22,23,51,23,33,55,35,38,39,54,55,51,55,35,38,39,54,55,51,55,35, +38,39,54,55,5,53,51,23,35,5,33,6,7,6,7,21,20,23,22,51,33,50,55,54,61,1,38,39,38,39,7,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,80,159,17,254,48,20,14,13,1,1,13,14,20,103,9, +1,0,17,97,15,1,1,15,106,18,124,15,1,1,15,132,18,150,15,1,1,15,254,240,70,12,82,1,96,255,0,27, +18,18,1,9,9,14,1,64,14,9,9,1,18,18,27,128,14,9,9,9,9,14,14,9,9,9,9,14,1,128,64,1, +13,14,20,160,20,14,13,1,96,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,128,128,128,192,1,18,18,27, +32,14,9,9,9,9,14,32,27,18,18,1,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,2,0,0, +255,224,2,64,1,160,0,28,0,59,0,0,19,38,7,6,7,17,20,23,22,55,54,23,22,23,22,23,22,51,54,55, +54,53,17,52,39,38,39,38,39,5,38,35,6,7,6,7,6,49,6,21,17,20,23,22,23,50,55,54,55,54,55,54, +23,22,55,54,53,17,38,39,144,57,68,18,1,7,7,8,64,50,49,30,29,2,5,5,9,4,3,7,2,32,32,55, +1,157,68,57,50,31,31,8,1,7,3,4,9,5,5,2,29,30,49,50,64,8,7,7,1,18,1,160,1,30,9,20, +254,154,9,5,4,3,28,4,5,15,14,4,3,1,5,6,4,1,128,8,5,3,15,14,3,29,29,2,13,13,6,1, +5,8,254,129,5,6,5,1,3,4,14,15,5,4,28,3,4,5,9,1,102,20,9,0,0,5,0,0,255,192,2,64, +1,191,0,20,0,46,0,72,0,91,0,117,0,0,19,38,7,6,21,20,23,22,51,50,55,54,55,54,39,38,53,52, +55,54,47,1,38,7,49,6,7,6,21,20,23,22,23,50,55,54,55,54,39,38,53,52,55,54,39,38,39,5,38,39, +49,38,7,6,7,6,23,22,21,20,7,6,23,22,23,22,51,54,55,54,55,38,39,7,6,23,22,21,20,7,6,23, +22,51,50,55,54,53,52,39,38,15,1,38,7,49,6,7,22,23,17,20,23,22,51,50,55,54,53,17,54,55,54,39, +38,39,38,39,161,20,13,16,12,7,15,5,5,9,3,4,4,8,10,9,18,98,13,12,12,5,21,21,9,21,6,6, +12,5,5,5,16,16,5,5,5,12,1,236,5,12,12,13,12,5,5,5,16,16,5,5,5,12,6,6,21,9,20,1, +1,20,135,19,7,8,10,9,18,6,6,13,8,16,12,11,21,118,32,23,22,1,2,30,9,9,14,14,9,9,18,9, +8,5,5,12,13,18,1,133,9,18,30,33,29,26,14,2,5,9,9,9,16,19,21,18,21,12,57,4,5,5,12,52, +55,57,52,19,1,2,6,12,11,13,40,44,44,40,13,11,12,6,18,12,5,5,4,6,12,11,13,40,44,44,39,13, +12,12,6,2,1,19,52,57,55,52,38,11,21,16,19,21,18,21,12,3,12,30,33,29,26,19,7,7,5,19,18,31, +37,18,254,215,14,9,9,9,9,14,1,41,10,19,19,23,18,12,13,4,0,2,0,0,255,192,2,128,1,192,0,38, +0,59,0,0,55,6,7,49,6,7,55,54,23,22,15,1,6,7,6,49,50,23,22,55,54,55,54,55,54,55,54,55, +54,53,48,49,39,38,7,34,7,6,7,37,38,39,49,38,15,1,39,38,15,1,23,55,54,47,1,55,54,55,54,39, +93,16,14,14,10,60,5,2,2,2,95,5,3,3,1,32,32,46,46,43,43,24,29,17,17,7,6,86,2,28,27,38, +38,31,2,28,8,13,13,11,225,35,11,8,25,87,58,13,6,34,226,10,2,1,8,190,13,26,26,32,22,1,3,4, +4,112,24,15,16,2,1,2,2,7,8,18,25,35,35,27,27,1,109,1,1,8,9,24,246,10,2,1,8,175,44,9, +12,53,109,12,5,13,41,176,8,12,13,11,0,2,0,0,255,224,2,64,1,160,0,16,0,37,0,0,19,33,17,51, +17,38,39,38,35,33,34,7,6,21,17,51,17,1,35,53,38,39,35,6,7,21,35,6,7,21,22,23,33,54,55,53, +38,39,96,1,128,64,1,11,12,16,254,80,18,11,11,64,1,208,144,1,15,160,15,1,208,15,1,1,15,2,32,15, +1,1,15,1,96,254,224,1,56,17,11,12,12,11,17,254,200,1,32,254,192,48,15,1,1,15,48,1,15,32,15,1, +1,15,32,15,1,0,0,0,0,3,0,0,255,192,2,128,1,192,0,32,0,50,0,69,0,0,1,33,6,7,6,7, +21,22,23,53,33,17,35,53,38,39,35,6,7,21,35,22,23,51,54,55,54,55,17,38,39,38,39,1,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39, +2,80,254,128,20,14,13,1,36,27,1,96,64,1,15,96,15,1,96,34,17,254,20,14,13,1,1,13,14,20,254,80, +41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,32,64,54,37,36,1,9,9,14,1,0,14,9,9,1,36, +37,54,1,192,1,14,14,21,46,1,17,50,254,224,48,15,1,1,15,48,25,39,1,14,14,21,1,60,21,14,14,1, +254,192,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,32,1,36,37,54,14,9,9,9,9,14,54,37,36, +1,0,0,0,0,3,0,0,255,192,2,128,1,192,0,40,0,52,0,64,0,0,1,51,22,23,6,7,35,21,23,22, +23,17,35,53,38,39,38,39,6,7,6,7,21,35,17,54,63,1,53,35,38,39,54,55,51,53,54,55,22,23,21,1, +55,21,35,38,39,38,39,53,54,55,49,5,35,53,23,22,23,21,6,7,6,7,49,1,88,32,22,2,2,22,32,113, +22,1,96,1,18,18,27,27,18,18,1,96,1,22,113,32,22,2,2,22,32,2,22,22,2,254,193,103,80,20,14,13, +1,1,24,2,55,80,103,24,1,1,13,14,20,1,144,2,22,22,2,46,68,14,27,254,251,96,27,18,18,1,1,18, +18,27,96,1,5,27,14,68,46,2,22,22,2,24,22,2,2,22,24,254,230,56,238,1,13,14,20,92,27,15,182,238, +56,15,27,92,20,14,13,1,0,6,0,0,255,192,2,0,1,192,0,22,0,65,0,80,0,111,0,127,0,146,0,0, +1,6,7,6,7,38,39,38,39,34,7,39,38,39,54,55,54,55,22,23,22,23,49,5,54,51,50,23,22,23,22,23, +20,7,6,7,48,49,48,49,48,21,49,34,49,48,49,6,7,6,35,38,39,38,35,38,35,38,39,54,55,54,55,54, +55,49,23,54,55,54,55,21,6,7,6,7,52,53,38,39,49,7,6,7,34,7,34,7,6,7,34,39,38,39,38,39, +53,22,23,22,23,54,55,54,55,54,55,54,55,52,51,21,55,54,55,49,54,55,54,55,21,20,7,6,7,52,61,1, +7,54,55,54,55,21,6,7,6,7,38,39,38,39,53,22,23,22,23,2,0,1,37,46,77,5,6,61,87,12,12,2, +37,1,2,54,54,82,82,54,54,2,254,161,15,16,47,39,40,27,38,1,2,8,27,1,27,40,39,48,92,56,1,1, +2,2,37,1,1,35,35,57,16,17,231,43,33,25,19,1,43,22,30,2,22,8,1,37,2,2,1,1,56,92,48,39, +40,27,37,1,19,25,61,87,87,61,12,11,9,8,1,2,1,32,5,4,23,20,25,19,15,26,55,224,87,61,25,19, +2,54,54,82,82,54,54,2,19,25,61,87,1,112,27,21,25,6,3,2,25,1,1,1,21,27,34,23,22,1,1,22, +23,34,81,1,9,8,14,21,28,5,7,20,15,1,15,8,9,1,28,1,2,21,27,27,20,20,8,3,1,26,7,14, +10,15,35,30,21,11,7,2,3,33,20,149,27,21,2,1,28,1,9,8,15,21,27,35,15,10,25,1,1,25,5,6, +5,6,1,1,1,35,58,1,1,6,8,10,15,35,16,15,25,13,2,3,58,170,1,25,10,15,35,34,23,22,1,1, +22,23,34,35,15,10,25,1,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,80,0,0,1,6,7,49, +6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,3,35,38,53,54,55,54,55,50, +23,6,7,6,7,6,7,6,7,23,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,53,34,7,49,6, +21,20,23,22,51,50,55,54,53,52,39,38,35,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,175,1,16,8,48,48,71,15,2,1,13,59,40,40,7,2,13,175,41,27,27,1,1,27,27, +41,41,27,27,1,1,27,27,41,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,255,0,2,15,71,48,48,8,16,14,2,6,40,40,59,14,1, +95,1,27,27,40,40,28,27,1,1,27,27,41,41,26,27,1,127,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,2,0,0,255,193,2,128,1,192,0,48,0,61,0,0,1,51,22,23,22,31,1,7,21,6,7,6,7,23,22,7, +6,47,1,34,21,34,43,1,23,22,7,6,47,1,35,7,6,39,38,39,38,55,54,55,1,53,54,55,54,55,22,23, +53,7,54,55,52,39,38,35,34,7,6,21,22,23,2,12,50,22,17,17,6,4,96,1,39,38,62,42,7,20,21,10, +47,1,1,1,41,39,7,20,21,10,47,133,74,11,13,13,8,8,1,2,10,1,100,1,25,25,37,42,26,68,22,2, +7,7,10,10,7,7,2,22,1,161,1,13,14,21,15,24,72,67,50,51,18,102,21,10,7,20,114,1,95,21,10,7, +20,113,57,8,1,2,10,11,13,13,8,1,18,29,37,25,25,1,1,31,1,80,1,23,10,7,7,7,7,10,23,1, +0,1,255,255,255,224,2,64,1,160,0,68,0,0,1,20,7,49,6,35,48,49,34,49,3,6,7,33,38,39,3,48, +35,48,35,34,39,38,39,54,55,54,51,50,23,22,21,20,7,23,22,55,54,63,1,38,39,54,55,54,51,50,23,22, +21,6,7,23,22,23,22,63,1,38,39,52,55,54,51,50,23,22,21,2,64,12,11,17,1,50,6,26,254,182,26,6, +50,1,1,17,11,11,1,1,11,12,16,17,11,12,8,89,13,14,14,8,57,18,1,1,11,12,17,17,11,11,1,18, +57,8,14,14,13,90,7,1,12,11,17,17,11,12,1,56,17,11,12,254,234,24,2,2,24,1,22,12,11,17,17,11, +12,12,11,17,14,10,71,10,3,4,13,116,11,22,17,11,12,12,11,17,22,11,116,13,4,3,10,71,11,13,17,11, +12,12,11,17,0,8,0,0,255,192,2,126,1,192,0,20,0,29,0,38,0,47,0,56,0,65,0,87,0,96,0,0, +37,52,47,1,38,35,34,15,1,6,21,20,31,1,22,51,50,63,1,54,39,5,38,39,54,55,22,23,6,7,23,38, +39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23, +6,7,55,35,22,21,20,15,1,21,22,23,22,23,51,54,55,54,61,1,52,39,38,39,7,38,39,54,55,22,23,6, +7,1,191,14,175,14,21,18,16,175,14,14,175,15,20,20,15,175,14,1,254,161,21,2,2,21,21,3,2,22,128,21, +2,2,21,21,2,1,22,21,2,2,21,21,3,2,22,21,2,2,21,21,2,1,22,128,21,2,2,21,21,2,1,22, +239,119,7,24,136,1,14,14,20,223,20,14,13,13,13,21,112,21,2,2,21,21,2,1,22,224,20,15,175,14,14,175, +16,18,20,15,175,14,14,175,14,20,24,2,21,21,2,1,21,22,2,128,2,21,21,2,2,21,21,2,128,2,21,21, +2,1,21,22,2,128,2,21,21,2,2,21,21,2,128,2,21,21,2,2,21,21,2,56,16,16,33,24,137,46,20,14, +13,1,1,13,13,20,225,20,14,13,1,184,2,21,21,2,2,21,21,2,0,6,0,0,255,224,1,192,1,160,0,20, +0,38,0,56,0,74,0,92,0,110,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27, +18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18, +27,1,64,27,18,18,1,254,160,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14, +9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,5,0,0,255,224,1,192,1,160,0,20,0,38,0,56,0,74,0,92, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,1,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1, +128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9, +9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9, +9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,160, +9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9, +9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,0,0,2,0,0,255,224,1,192,1,160,0,20, +0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,34,39,49,38,53,52, +55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18, +27,160,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +27,18,18,1,255,0,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,7,0,0,255,224,1,192,1,160,0,20, +0,38,0,56,0,74,0,92,0,110,0,128,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38, +39,38,39,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50, +23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52, +55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18, +1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,27,18,18,1,254,160,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9, +9,96,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14, +9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,224,1,192, +1,160,0,20,0,38,0,56,0,74,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1, +18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9, +9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18, +1,1,18,18,27,1,64,27,18,18,1,160,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9, +9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,3,0,0,255,224,1,192,1,160,0,20, +0,38,0,56,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,5,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1, +128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9, +9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,27,18,18,1,160,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9, +0,3,0,16,255,240,1,176,1,144,0,18,0,36,0,54,0,0,37,33,34,7,6,21,20,23,22,51,33,50,55,54, +53,52,39,38,35,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,21,6,7,49,6,7,22,23,22, +23,54,55,54,55,38,39,38,39,1,144,254,160,14,9,9,9,9,14,1,96,14,9,9,9,9,14,176,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,224,9,9,13, +13,9,10,9,9,14,13,9,9,80,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,224,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,0,0,2,0,0,255,192,2,64,1,192,0,24,0,42,0,0,37,35,17,38, +39,38,39,33,6,7,6,7,17,35,6,7,21,22,23,33,54,55,53,38,47,1,34,39,49,38,53,52,55,54,51,50, +23,22,21,20,7,6,35,2,48,80,1,13,14,20,254,224,20,14,13,1,80,15,1,1,15,2,32,15,1,1,15,176, +14,9,9,9,9,14,14,9,9,9,9,14,0,1,141,22,14,14,1,1,14,14,22,254,115,1,15,32,15,1,1,15, +32,15,1,160,9,9,14,14,9,9,9,9,14,14,9,9,0,3,0,0,255,192,2,64,1,191,0,16,0,33,0,47, +0,0,37,35,17,38,39,38,39,35,21,51,17,51,54,55,53,38,39,1,7,6,7,17,35,6,7,21,22,23,33,17, +38,39,38,7,3,34,39,49,38,53,54,55,22,23,20,7,6,35,2,48,48,1,13,14,20,112,96,112,15,1,1,15, +254,232,192,23,1,48,15,1,1,15,1,48,1,11,12,16,48,10,7,7,2,22,22,2,7,7,10,0,1,78,21,14, +14,1,64,254,128,2,13,31,17,1,1,191,50,7,25,254,147,2,13,31,17,1,1,223,16,10,9,3,254,225,9,9, +13,29,2,2,28,14,9,9,0,1,0,0,255,194,1,255,1,192,0,40,0,0,37,7,51,6,7,6,7,6,15,1, +51,6,7,6,35,38,39,7,6,39,38,55,1,54,39,38,15,1,38,55,54,63,1,54,55,54,23,22,23,22,7,1, +227,131,98,3,1,1,7,6,29,147,98,38,48,47,43,44,27,66,17,17,14,14,1,4,9,9,12,11,178,7,13,13, +44,86,69,68,67,48,39,5,6,34,204,43,3,1,1,7,6,29,49,36,14,14,1,9,66,14,14,17,17,1,3,11, +12,9,9,179,47,58,58,47,85,67,4,3,48,38,53,52,56,0,0,0,0,2,0,0,255,224,2,64,1,160,0,66, +0,75,0,0,37,35,39,55,54,55,38,39,38,39,38,39,38,39,38,39,6,7,6,7,6,7,6,7,6,7,22,23, +22,23,33,54,55,38,39,38,39,35,55,54,39,38,39,38,15,1,6,39,38,63,1,54,51,50,23,22,23,22,7,23, +51,54,55,38,39,38,39,3,54,55,22,23,6,7,38,39,2,16,32,90,140,29,1,1,30,32,32,32,3,5,22,21, +30,30,21,22,6,82,65,65,38,38,1,1,18,18,27,1,48,15,1,1,13,13,20,53,24,18,9,9,33,39,34,32, +13,10,8,11,35,29,34,34,28,10,17,16,2,119,90,15,1,1,13,14,20,184,2,22,22,2,2,22,22,2,32,96, +79,18,33,34,17,17,12,12,1,28,18,18,1,1,18,18,29,8,44,44,69,70,84,27,18,17,1,1,15,20,14,13, +1,32,29,31,32,15,14,25,25,7,11,12,10,26,21,21,6,23,23,41,126,1,15,20,14,13,1,1,48,22,2,2, +22,22,2,2,22,0,0,0,0,2,0,0,255,192,2,0,1,192,0,69,0,82,0,0,19,54,55,49,54,55,51,22, +23,22,23,21,51,22,23,22,23,21,22,23,54,55,53,38,39,38,61,1,39,38,55,54,31,1,22,29,1,6,7,6, +7,38,39,38,39,53,52,39,38,39,35,21,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,17,23,22, +23,51,54,55,53,38,39,35,6,7,21,32,1,18,18,27,160,27,18,18,1,8,37,25,25,1,2,22,22,2,21,13, +14,32,13,13,16,16,77,19,1,20,20,31,31,20,20,1,12,11,17,8,14,9,9,9,9,14,254,224,14,9,9,9, +9,14,64,1,15,128,15,1,1,15,128,15,1,1,128,27,18,18,1,1,18,18,27,192,1,25,25,37,32,22,2,2, +22,155,5,17,16,23,64,32,16,16,13,13,77,19,27,221,31,20,20,1,1,20,20,31,32,17,12,11,1,145,9,9, +14,14,9,9,9,9,14,14,9,9,1,128,112,15,1,1,15,96,15,1,1,15,96,0,0,3,0,0,255,224,2,64, +1,160,0,70,0,87,0,104,0,0,37,39,38,39,38,15,1,6,31,1,22,63,1,54,23,22,31,1,38,39,38,7, +35,38,7,6,7,55,54,55,54,31,1,22,63,1,54,47,1,38,7,6,15,1,6,29,1,22,23,22,23,51,54,55, +54,63,1,51,23,22,23,22,23,51,54,55,54,55,53,52,39,5,6,7,49,6,7,35,38,39,38,39,53,54,55,50, +23,7,37,6,7,49,6,7,35,34,39,38,47,1,54,51,22,23,21,2,62,45,10,33,33,38,15,13,3,5,6,14, +14,17,16,16,4,39,34,48,52,62,74,62,52,48,34,39,4,16,16,17,14,14,6,5,3,13,16,36,34,33,10,45, +2,1,33,32,49,37,47,32,32,4,3,36,3,4,32,32,47,37,49,32,33,1,2,254,141,2,14,14,21,37,22,14, +14,1,28,45,35,35,4,1,53,1,14,15,21,37,21,14,14,2,4,35,35,45,28,168,181,37,19,18,11,6,6,14, +15,13,3,4,6,7,9,17,154,11,1,2,28,28,2,1,11,154,17,9,7,6,4,3,13,15,14,6,6,11,18,19, +37,181,8,8,70,48,32,33,1,1,29,30,45,39,39,45,29,30,1,1,32,33,48,70,8,8,90,20,13,12,1,1, +14,14,21,37,12,1,13,41,4,21,14,14,1,13,13,20,41,13,1,12,37,0,0,0,0,2,0,0,255,224,1,192, +1,159,0,24,0,43,0,0,55,22,23,50,55,37,54,55,38,39,37,38,7,6,7,6,23,22,31,1,7,6,7,6, +23,5,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,34,9,21,6,6,1,64,19,1,1,19,254, +192,13,12,11,6,4,5,5,12,246,246,12,5,5,4,1,126,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9, +14,116,19,1,2,127,10,21,21,9,128,4,5,5,12,13,12,11,6,98,98,6,11,12,13,84,9,9,14,14,9,9, +9,9,14,14,9,9,0,0,0,3,0,4,255,192,2,128,1,192,0,48,0,57,0,83,0,0,19,54,55,49,54,51, +33,50,23,22,21,20,7,6,43,1,21,51,22,23,22,23,21,20,7,6,43,1,34,47,2,38,47,1,38,55,51,50, +31,1,51,53,35,34,39,38,39,49,1,51,53,38,39,38,39,35,21,23,7,6,7,33,34,39,38,39,54,55,54,51, +33,50,63,1,54,51,50,23,22,21,20,7,49,127,1,9,9,13,1,129,14,9,9,9,9,14,160,32,68,45,45,2, +9,9,14,241,15,10,87,144,15,4,23,2,17,27,17,10,37,208,160,13,9,9,1,1,1,128,1,27,27,41,32,247, +4,38,53,254,231,13,9,9,1,1,9,9,13,1,25,27,19,3,10,13,13,10,9,9,1,160,14,9,9,9,9,14, +14,9,9,64,2,45,45,68,64,14,9,9,13,115,58,6,16,92,18,2,13,51,64,9,9,14,254,224,32,41,27,27, +1,128,151,4,36,1,9,9,14,14,9,9,19,4,9,9,10,13,13,10,0,3,0,0,0,32,2,128,1,96,0,30, +0,46,0,63,0,0,1,6,15,1,39,38,39,6,7,6,7,21,22,23,22,23,54,63,1,23,22,23,54,55,54,55, +53,38,39,38,39,5,6,35,38,39,38,39,53,54,55,54,55,50,31,1,7,37,6,7,49,6,7,34,47,1,55,54, +51,22,23,22,23,21,1,239,60,43,72,72,43,60,61,41,41,2,2,41,41,61,60,43,72,72,43,60,61,41,41,2, +2,41,41,61,254,220,24,34,34,23,23,1,1,23,23,34,34,24,72,72,1,117,1,23,23,34,34,24,72,72,24,34, +34,23,23,1,1,96,1,42,72,72,42,1,2,41,41,61,30,61,41,41,2,1,42,72,73,41,1,2,41,41,61,30, +61,41,41,2,232,24,1,23,23,34,30,34,23,23,1,24,72,72,57,34,23,23,1,24,72,72,24,1,23,23,34,30, +0,2,0,0,255,224,2,64,1,160,0,50,0,59,0,0,37,21,6,7,38,39,53,6,35,34,39,21,6,7,38,39, +53,38,39,38,39,54,55,54,55,22,23,22,23,22,23,51,22,23,22,23,21,6,7,6,47,1,6,43,1,6,7,6, +7,6,7,55,54,55,38,39,6,7,22,23,1,0,2,22,22,2,8,8,25,23,2,22,22,2,44,26,25,1,2,54, +54,82,55,44,24,25,25,27,56,54,37,36,1,1,10,11,7,85,7,7,56,27,25,25,24,16,19,192,22,2,2,22, +22,2,2,22,43,51,22,2,2,22,41,1,7,47,22,2,2,22,66,25,44,43,54,82,54,54,2,1,27,14,11,10, +1,1,36,37,54,240,11,4,3,9,122,1,1,10,11,14,10,7,157,2,22,22,2,2,22,22,2,0,0,2,0,0, +255,224,1,192,1,159,0,24,0,43,0,0,55,5,22,51,54,55,54,39,38,47,1,55,54,55,54,39,38,39,38,7, +5,6,7,22,23,5,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,52,1,64,6,5,21,9,5, +5,6,12,245,246,12,5,5,4,6,11,12,13,254,192,19,1,1,19,1,108,254,128,14,9,9,9,9,14,1,128,14, +9,9,9,9,14,226,128,2,1,19,13,12,11,6,98,98,6,11,12,13,12,5,5,4,128,9,21,21,9,194,9,9, +13,13,10,10,9,9,14,14,9,9,0,0,0,5,0,0,0,0,2,64,1,128,0,32,0,55,0,68,0,81,0,94, +0,0,55,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51, +53,33,21,1,53,38,39,38,39,33,6,7,6,7,21,22,23,6,7,21,33,53,38,39,54,55,5,6,7,35,38,39, +53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51,22,23, +21,0,80,1,15,15,1,96,1,15,15,1,96,1,15,15,1,96,1,15,15,1,80,253,192,2,64,1,13,14,20,254, +32,20,14,13,1,30,2,2,30,2,64,30,2,2,30,254,128,1,15,32,15,1,1,15,32,15,1,128,1,15,32,15, +1,1,15,32,15,1,128,1,15,32,15,1,1,15,32,15,1,0,32,15,1,1,15,32,32,15,1,1,15,32,32,15, +1,1,15,32,32,15,1,1,15,32,96,96,1,45,35,20,14,13,1,1,13,14,20,35,12,33,33,12,83,83,12,33, +33,12,93,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15, +96,0,0,0,0,2,0,0,255,192,2,127,1,192,0,33,0,88,0,0,5,35,53,54,55,39,6,39,38,39,38,39, +53,39,21,22,23,22,23,21,35,34,7,6,21,22,23,51,54,55,54,39,38,35,23,39,54,55,53,38,39,6,7,21, +6,7,39,54,53,35,39,54,59,1,53,35,38,39,54,55,51,53,35,38,39,54,55,51,38,39,38,35,6,7,6,7, +21,39,38,35,34,7,6,23,1,22,55,54,39,1,127,39,31,27,44,22,24,51,34,35,1,48,1,42,42,66,40,13, +9,9,2,14,159,14,1,1,8,9,14,248,159,23,1,2,21,22,2,1,14,26,9,57,35,5,7,79,81,14,1,2, +13,79,79,14,1,2,13,80,1,28,28,42,40,26,26,1,184,7,8,11,8,12,16,2,79,19,15,13,16,16,34,4, +14,34,7,1,5,38,39,51,4,37,38,69,51,51,11,34,9,9,13,16,1,2,13,14,10,9,5,125,39,49,40,22, +2,2,22,39,32,26,20,17,21,27,5,31,2,13,14,2,33,2,13,14,1,42,27,27,1,28,28,41,50,145,5,9, +19,15,254,49,12,16,17,16,0,6,0,0,255,224,2,64,1,160,0,34,0,52,0,59,0,66,0,74,0,82,0,0, +19,22,55,49,54,55,54,55,54,23,22,23,17,6,7,6,39,38,7,6,7,34,49,6,7,6,39,38,39,17,54,55, +54,23,49,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,51,38,39,38,39,21,17,21,54,55, +54,55,35,5,6,7,49,6,7,51,53,39,22,23,49,22,23,53,35,49,59,60,60,60,65,66,65,65,26,1,1,15, +14,19,59,60,60,60,1,66,65,65,64,26,1,1,15,14,19,238,35,22,23,1,1,23,22,35,33,23,23,1,1,23, +23,33,224,64,1,17,18,28,28,18,17,1,64,1,193,27,18,18,1,64,64,1,18,18,27,64,1,113,15,9,8,17, +18,8,8,22,12,30,254,202,18,10,9,4,15,9,8,17,18,8,8,22,12,30,1,53,19,10,9,4,254,239,1,27, +27,42,41,27,27,1,1,27,27,41,42,27,27,1,64,27,18,18,1,64,1,17,64,1,17,18,28,160,1,18,19,27, +65,208,28,18,17,1,64,0,0,7,0,0,255,224,2,64,1,160,0,20,0,55,0,63,0,71,0,78,0,85,0,103, +0,0,55,54,55,51,22,23,21,51,22,23,6,7,35,38,39,54,55,51,53,38,47,1,22,55,49,54,55,54,55,54, +23,22,23,17,6,7,6,39,38,7,6,7,34,49,6,7,6,39,38,39,17,54,55,54,23,49,19,38,39,49,38,39, +21,51,39,54,55,49,54,55,35,21,5,53,6,7,6,7,51,17,35,22,23,22,23,53,7,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,39,251,2,18,16,19,2,4,18,2,2,18,49,18,2,2,18,4,14,2,202,59,60, +60,60,65,66,65,65,26,1,1,15,14,19,59,60,60,60,1,66,65,65,64,26,1,1,15,14,19,78,1,17,18,28, +64,64,28,18,17,1,64,1,193,27,18,18,1,64,64,1,18,18,27,225,41,27,27,1,1,27,27,41,42,27,27,1, +1,27,27,42,241,18,2,2,18,68,2,18,19,1,1,19,18,2,47,4,17,128,15,9,8,17,18,8,8,22,12,30, +254,202,18,10,9,4,15,9,8,17,18,8,8,22,12,30,1,53,19,10,9,4,254,175,27,18,18,1,64,193,1,17, +18,28,64,129,65,1,18,19,27,1,1,28,18,17,1,64,48,1,32,32,47,48,32,32,1,1,32,32,48,47,32,32, +1,0,0,0,0,4,0,0,0,0,2,64,1,128,0,21,0,32,0,43,0,56,0,0,1,22,23,49,22,23,17,6, +7,6,7,33,38,39,38,39,17,54,55,54,55,33,5,6,7,22,23,51,54,55,38,39,35,21,33,54,55,38,39,33, +6,7,22,23,37,6,7,21,22,23,51,54,55,53,38,39,35,2,0,27,18,18,1,1,18,18,27,254,64,27,18,18, +1,1,18,18,27,1,192,254,112,15,1,1,15,160,15,1,1,15,160,1,96,15,1,1,15,254,160,15,1,1,15,1, +8,22,2,2,22,80,22,2,2,22,80,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18, +1,160,1,15,15,1,1,15,15,1,128,1,15,15,1,1,15,15,1,192,2,22,48,22,2,2,22,48,22,2,0,0, +0,4,0,0,0,0,2,64,1,128,0,21,0,32,0,43,0,132,0,0,1,22,23,49,22,23,17,6,7,6,7,33, +38,39,38,39,17,54,55,54,55,33,7,6,7,22,23,51,54,55,38,39,35,21,51,54,55,38,39,35,6,7,22,23, +39,38,39,6,7,21,6,7,6,7,6,23,22,23,22,31,1,22,23,22,21,22,21,6,7,6,39,38,39,38,35,38, +35,38,7,6,23,22,51,48,21,22,23,21,22,23,54,55,53,54,55,54,55,54,55,54,39,38,39,38,39,34,49,35, +38,35,38,39,38,51,48,49,38,53,52,55,54,23,22,23,22,51,22,55,54,39,38,39,53,2,0,27,18,18,1,1, +18,18,27,254,64,27,18,18,1,1,18,18,27,1,192,240,15,1,1,15,224,15,1,1,15,224,224,15,1,1,15,224, +15,1,1,15,108,1,20,17,2,9,7,24,7,3,6,7,11,19,19,2,21,9,3,1,1,7,10,19,11,15,2,2, +1,2,18,7,4,17,1,3,13,17,2,17,20,1,5,4,3,3,26,6,3,6,6,11,19,20,1,2,1,1,18,9, +4,1,1,9,9,19,6,10,4,2,18,6,3,17,9,12,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27, +1,0,27,18,18,1,128,1,15,15,1,1,15,15,1,128,1,15,15,1,1,15,15,1,160,18,2,2,18,6,2,3, +10,28,15,14,13,6,12,4,1,6,6,2,2,1,5,6,3,5,3,2,6,1,1,4,17,18,6,2,1,4,5,6, +18,2,2,18,5,1,2,1,1,10,29,16,13,14,7,12,5,1,5,6,3,1,4,4,4,5,1,2,2,1,3,17, +18,6,2,3,6,0,0,0,0,1,0,16,255,224,1,176,1,159,0,63,0,0,37,20,7,49,6,43,1,7,6,7, +34,39,38,39,38,63,1,35,34,39,38,53,52,55,54,59,1,55,35,34,39,38,53,52,55,54,59,1,55,54,55,54, +23,22,23,22,15,1,51,50,23,22,21,20,7,6,43,1,7,51,50,23,22,21,1,176,9,9,14,212,65,11,16,9, +9,11,2,3,7,42,63,14,9,9,9,9,14,106,63,169,14,9,9,9,9,14,212,65,8,13,12,12,11,2,3,7, +42,63,14,9,9,9,9,14,106,63,169,14,9,9,112,14,9,9,98,13,1,5,8,13,12,12,62,9,9,14,14,9, +9,96,9,9,14,14,9,9,98,11,2,3,7,8,13,12,12,62,9,9,14,14,9,9,96,9,9,14,0,5,0,0, +255,192,2,0,1,192,0,49,0,67,0,85,0,103,0,121,0,0,37,20,7,49,48,21,20,7,6,43,1,6,7,6, +7,20,23,22,23,22,23,48,21,22,23,20,7,6,7,34,35,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22, +23,22,23,53,33,6,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,39,55,50,55,49,54,53,52,39,38,39, +6,7,6,21,20,23,22,51,55,6,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,39,23,50,55,49,54,53, +52,39,38,39,6,7,6,21,20,23,22,51,2,0,1,21,20,28,98,20,14,13,1,1,3,5,2,1,11,1,15,14, +24,6,5,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,96,14,9,9,9,9,14,14,9,9, +9,9,14,32,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9, +9,9,9,14,14,9,9,9,9,14,193,2,1,1,27,17,16,1,14,14,20,5,5,12,12,3,3,1,20,21,24,18, +18,2,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,1,1,9,9,13,14,9,9,9,9,14,13, +9,9,1,64,9,9,14,13,9,9,1,1,9,9,13,14,9,9,128,1,9,9,13,14,9,9,9,9,14,13,9,9, +1,128,9,9,14,13,9,9,1,1,9,9,13,14,9,9,0,3,0,0,255,224,1,192,1,160,0,11,0,33,0,59, +0,0,55,53,51,50,23,22,21,20,7,6,43,1,55,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54, +55,54,55,33,7,38,39,49,38,39,35,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,54,55,54,55,192,48, +14,9,9,9,9,14,48,192,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,48,1,27,27, +41,72,17,11,12,9,9,14,14,9,9,48,41,27,27,1,192,64,9,9,14,14,9,9,224,1,18,18,27,254,192,27, +18,18,1,1,18,18,27,1,64,27,18,18,1,192,41,27,27,1,12,11,17,184,14,9,9,9,9,14,32,1,27,27, +41,0,0,0,0,1,0,0,255,224,2,64,1,160,0,63,0,0,19,54,55,49,54,55,51,22,23,22,23,21,51,53, +54,55,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,35,21,20,21,23,51,22,23,22,23,21,6, +7,6,7,35,38,39,38,39,53,52,53,39,35,38,39,38,39,53,0,1,13,14,20,96,20,14,13,1,192,1,13,14, +20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,192,80,96,20,14,13,1,1,13,14,20,96,20,14,13,1,80, +96,20,14,13,1,1,112,20,14,13,1,1,13,14,20,16,16,20,14,13,1,1,13,14,20,96,20,14,13,1,1,13, +14,20,16,16,3,1,108,1,13,14,20,96,20,14,13,1,1,13,14,20,96,3,2,107,1,13,14,20,96,0,0,0, +0,4,0,0,255,192,1,128,1,192,0,39,0,50,0,61,0,72,0,0,19,54,31,1,55,54,31,1,55,54,31,1, +55,54,23,22,23,17,6,7,6,47,1,7,6,47,1,7,6,47,1,7,6,39,38,39,17,54,55,49,23,6,7,22, +23,51,54,55,38,39,35,21,51,54,55,38,39,35,6,7,22,23,53,6,7,22,23,51,54,55,38,39,35,14,14,12, +40,40,16,16,40,40,16,16,40,40,12,14,13,1,1,13,14,12,40,40,16,16,40,40,16,16,40,40,12,14,13,1, +1,13,82,15,1,1,15,192,15,1,1,15,192,192,15,1,1,15,192,15,1,1,15,15,1,1,15,192,15,1,1,15, +192,1,190,6,10,34,34,12,12,34,34,12,12,34,34,10,6,7,15,254,48,15,7,6,10,34,34,12,12,34,34,12, +12,34,34,10,6,7,15,1,208,15,7,142,1,15,15,1,1,15,15,1,224,1,15,15,1,1,15,15,1,128,1,15, +15,1,1,15,15,1,0,0,0,8,0,0,255,192,2,128,1,192,0,12,0,44,0,49,0,67,0,72,0,77,0,95, +0,108,0,0,55,6,29,1,20,23,22,59,1,53,35,34,7,37,35,53,52,39,38,35,34,7,6,29,1,35,6,7, +6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,35,53,51,21,39,34,39,49,38,53,52,55,54,51, +50,23,22,21,20,7,6,35,23,35,53,51,21,51,35,53,51,21,39,34,39,49,38,53,52,55,54,51,50,23,22,21, +20,7,6,35,55,38,43,1,21,51,50,55,54,61,1,52,39,9,9,9,10,13,32,32,13,10,1,199,112,9,9,14, +14,9,9,112,34,23,22,1,1,18,18,27,1,64,27,18,18,1,1,22,23,34,208,64,64,32,17,11,12,12,11,17, +17,11,12,12,11,17,128,64,64,96,64,64,32,17,11,12,12,11,17,17,11,12,12,11,17,215,10,13,32,32,13,10, +9,9,215,10,13,128,13,10,9,192,9,137,64,14,9,9,9,9,14,64,1,22,23,34,254,240,27,18,18,1,1,18, +18,27,1,16,34,23,22,1,254,192,32,32,120,12,11,17,17,11,12,12,11,17,17,11,12,120,32,32,32,32,120,12, +11,17,17,11,12,12,11,17,17,11,12,63,9,192,9,10,13,128,13,10,0,1,0,4,255,196,1,252,1,188,0,49, +0,0,23,6,35,49,34,47,1,38,53,52,63,1,23,22,55,54,47,1,55,23,22,55,54,47,1,55,23,22,55,54, +47,1,55,23,22,55,54,47,1,55,54,51,50,31,1,22,21,20,7,1,178,15,19,19,15,92,14,14,51,48,11,11, +10,10,48,42,48,11,11,10,10,48,42,48,11,11,10,10,48,42,48,11,11,10,10,48,51,15,19,19,15,92,14,14, +254,196,46,14,14,92,15,19,19,15,51,48,10,10,11,11,48,42,48,10,10,11,11,48,42,48,10,10,11,11,48,42, +48,10,10,11,11,48,51,14,14,92,15,19,19,15,254,196,0,1,0,0,255,192,2,0,1,192,0,68,0,0,23,17, +54,55,54,55,51,22,23,22,23,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,22, +23,54,55,53,51,21,22,23,54,55,53,51,21,22,23,54,55,53,51,22,23,22,23,21,6,7,6,7,33,34,39,38, +39,52,53,0,1,13,14,20,96,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,80,15,1,1,15,80,1, +15,15,1,64,1,15,15,1,64,1,15,15,1,48,20,14,13,1,1,13,14,20,254,96,19,13,13,3,16,1,160,20, +14,13,1,1,13,14,20,48,1,15,15,1,64,1,15,15,1,64,1,15,15,1,80,15,1,1,15,80,80,15,1,1, +15,80,80,15,1,1,15,80,1,13,14,20,96,20,14,13,1,12,13,18,2,3,0,0,0,1,0,0,0,64,2,128, +1,64,0,56,0,0,19,54,55,49,54,55,51,21,22,23,54,55,53,51,21,22,23,54,55,53,51,21,22,23,54,55, +53,51,21,22,23,54,55,53,51,21,22,23,54,55,53,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,0, +1,13,14,20,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,64,20,14, +13,1,1,13,14,20,253,224,20,14,13,1,1,16,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,80,15, +1,1,15,80,80,15,1,1,15,80,80,15,1,1,15,80,1,13,14,20,160,20,14,13,1,1,13,14,20,160,0,0, +0,1,0,0,255,192,1,0,1,192,0,49,0,0,19,54,55,49,54,55,51,22,23,22,23,21,35,6,7,22,23,51, +21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,6,7,6,7,35,38,39,38,39,17, +0,1,13,14,20,160,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,80,15,1,1,15,80,80,15,1,1, +15,80,1,13,14,20,160,20,14,13,1,1,144,20,14,13,1,1,13,14,20,48,1,15,15,1,64,1,15,15,1,64, +1,15,15,1,64,1,15,15,1,48,20,14,13,1,1,13,14,20,1,160,0,8,0,0,255,192,2,128,1,192,0,14, +0,40,0,52,0,65,0,78,0,91,0,104,0,122,0,0,1,22,23,21,51,22,23,6,7,35,38,39,53,54,63,1, +23,22,23,22,21,17,6,7,6,7,33,38,39,38,39,17,52,55,54,63,2,54,31,1,3,51,53,38,39,38,39,6, +7,6,7,21,3,6,7,21,22,23,51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,5,6, +7,21,22,23,51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,3,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,39,1,64,15,1,16,15,1,1,15,32,15,1,1,15,157,125,17,10,11,1,13,14, +20,253,224,20,14,13,1,11,10,17,125,139,17,19,139,221,128,1,18,18,27,27,18,18,1,160,15,1,1,15,32,15, +1,1,15,32,1,144,1,15,32,15,1,1,15,32,15,1,254,112,15,1,1,15,32,15,1,1,15,32,1,144,1,15, +32,15,1,1,15,32,15,1,176,37,25,25,1,1,25,25,37,37,25,25,1,1,25,25,37,1,64,1,15,16,1,15, +15,1,1,15,32,15,1,30,27,5,13,13,17,254,221,20,14,13,1,1,13,14,20,1,35,17,13,13,5,27,93,10, +10,93,254,98,96,27,18,18,1,1,18,18,27,96,1,64,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64, +15,1,1,15,64,48,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64,15,1,1,15,64,1,56,1,25,25, +37,37,25,25,1,1,25,25,37,37,25,25,1,0,0,0,0,2,0,0,255,192,1,254,1,192,0,19,0,31,0,0, +55,7,6,21,20,31,1,22,51,50,63,1,54,53,52,39,38,35,34,7,1,7,23,7,22,23,22,23,55,51,55,39, +128,117,11,11,53,11,15,15,11,117,22,22,23,29,30,23,1,63,128,1,83,10,9,9,6,82,62,95,63,169,117,11, +15,15,11,53,11,11,117,23,30,29,23,22,22,1,23,96,62,83,6,9,9,10,83,128,64,0,0,0,0,4,0,0, +255,193,2,128,1,192,0,11,0,24,0,50,0,75,0,0,19,51,53,35,6,7,6,7,22,23,22,23,3,22,23,49, +22,23,51,53,35,34,7,6,7,37,34,7,49,6,7,48,35,6,7,6,35,21,23,22,23,22,55,54,55,54,39,38, +39,38,35,19,38,7,6,15,1,21,50,23,22,23,22,23,22,23,22,51,22,55,54,55,54,39,38,39,192,32,32,27, +18,18,1,1,18,18,27,192,1,18,18,27,32,32,27,18,18,1,1,82,27,28,28,22,1,17,21,22,44,58,39,41, +49,48,82,34,34,1,2,51,51,70,153,48,49,41,39,58,41,21,22,15,3,3,22,28,28,27,70,51,51,2,1,34, +34,82,1,33,127,1,18,18,26,27,18,18,1,255,0,27,18,18,1,127,18,18,27,128,9,8,14,14,10,9,128,16, +12,3,4,10,18,34,33,36,48,24,24,1,24,10,4,3,12,16,127,9,8,11,1,2,15,8,8,2,24,24,48,34, +34,33,19,0,0,3,0,0,255,192,2,0,1,192,0,52,0,70,0,88,0,0,37,21,6,7,6,7,35,53,38,39, +6,7,21,35,53,38,39,6,7,21,35,38,39,38,39,53,52,49,38,39,38,39,54,55,54,55,54,55,22,23,22,23, +22,23,20,7,6,7,48,51,20,57,1,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,54,55, +49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,160,1,13,14,20,48,1,15,15,1,64,1,15,15,1,48, +20,14,13,1,44,26,25,1,1,34,34,58,57,72,72,57,58,34,34,1,26,26,45,1,255,0,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,192,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,48,64,20,14,13, +1,48,15,1,1,15,48,48,15,1,1,15,48,1,13,14,20,64,1,31,45,46,53,63,50,51,29,30,1,1,30,29, +51,50,63,53,46,45,31,1,208,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,128,1,18,18,27,27,18, +18,1,1,18,18,27,27,18,18,1,0,0,0,6,0,0,255,192,2,0,1,192,0,8,0,35,0,46,0,51,0,69, +0,92,0,0,55,22,23,51,39,35,6,7,21,19,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55, +54,55,38,39,38,39,38,39,17,38,39,49,38,39,54,55,1,6,7,55,51,21,35,39,23,39,51,54,55,53,38,39, +35,39,54,55,22,23,22,23,6,7,39,38,39,38,43,1,6,21,22,23,22,23,22,23,22,59,1,54,53,38,39,38, +39,96,1,15,118,96,22,15,1,160,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58, +57,72,81,55,54,2,1,35,1,11,48,63,45,83,51,32,111,47,35,15,1,1,15,131,124,48,63,81,55,54,2,1, +35,91,26,6,1,6,17,8,4,18,17,25,25,6,2,6,16,8,4,17,18,24,144,15,1,96,1,15,64,1,48,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,64,2,54,55,81,63,48,254, +245,35,1,192,32,32,111,47,1,15,64,15,1,124,35,1,2,54,55,81,63,48,239,2,24,6,1,8,24,15,15,1, +2,24,6,1,8,24,15,15,1,0,0,0,0,2,0,15,255,192,2,48,1,192,0,32,0,61,0,0,37,6,35,38, +39,6,7,38,39,6,7,38,39,6,7,34,39,38,39,38,63,1,54,51,33,50,31,1,22,7,6,7,49,23,54,55, +21,6,7,6,7,33,38,39,38,39,53,22,23,49,22,51,50,55,21,33,53,22,51,50,55,49,1,240,6,7,40,25, +25,40,40,25,25,40,40,25,25,41,6,6,42,16,15,21,58,8,16,1,100,16,8,58,21,15,16,42,4,5,7,1, +18,18,27,254,192,27,18,18,1,6,6,8,8,19,17,1,64,17,18,9,8,225,1,1,28,28,1,1,28,28,1,1, +28,28,1,1,8,37,37,37,91,13,13,91,37,37,37,8,32,1,1,195,27,18,18,1,1,18,18,27,195,1,1,1, +5,133,133,5,1,0,0,0,0,3,0,0,255,192,2,128,1,192,0,21,0,38,0,50,0,0,19,52,63,1,54,55, +33,22,31,1,22,21,20,7,6,35,33,34,39,38,53,49,23,51,21,51,53,51,21,6,7,6,7,35,38,39,38,39, +53,33,51,17,20,7,6,35,34,39,38,53,17,0,6,76,14,26,1,140,26,14,76,6,11,10,16,253,202,16,10,11, +64,64,192,64,1,13,14,20,224,20,14,13,1,1,192,64,9,9,14,14,9,9,1,37,11,9,114,20,1,1,20,114, +9,11,16,10,11,11,10,16,69,160,160,240,20,14,13,1,1,13,14,20,240,255,0,14,9,9,9,9,14,1,0,0, +0,3,0,0,0,0,2,0,1,128,0,19,0,39,0,58,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6, +35,33,34,39,38,53,23,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,5,33,34,39,38,53, +52,55,54,51,33,50,23,22,21,20,7,6,35,0,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,64,9, +9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,96,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9, +14,1,96,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9,9,9,14,14,9,9,9,9,14,192,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,6,0,16,255,208,1,240,1,176,0,4,0,9,0,14,0,41,0,198, +0,203,0,0,55,7,23,55,39,55,39,7,23,55,7,23,55,39,7,19,6,7,49,6,7,49,6,7,22,23,22,23, +22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,7,6,47,1,7,23,55,54,31,1,22,15,1,23,22,15,1, +6,47,1,7,6,47,1,38,63,1,39,7,23,22,15,1,6,47,1,7,6,47,1,38,63,1,39,7,23,22,15,1, +6,47,1,7,6,47,1,38,63,1,39,38,63,1,54,31,1,55,39,7,6,47,1,38,63,1,39,38,63,1,54,31, +1,55,39,7,6,47,1,38,63,1,39,38,63,1,54,31,1,55,54,31,1,22,15,1,23,55,39,38,63,1,54,31, +1,55,54,31,1,22,15,1,23,55,39,38,63,1,54,31,1,55,54,31,1,22,15,1,23,22,15,1,6,47,1,7, +23,55,54,31,1,22,15,1,23,22,7,39,23,55,39,7,188,45,45,45,45,113,45,45,45,45,90,45,45,46,44,45, +67,54,54,32,32,1,1,32,32,54,54,67,67,54,54,32,32,1,1,32,32,54,54,67,187,12,5,6,28,45,34,16, +6,6,11,5,5,17,17,5,5,11,6,6,16,17,6,6,11,5,5,17,34,45,28,5,5,11,6,6,28,28,6,6, +11,5,5,28,45,34,17,5,5,11,6,6,16,16,6,6,11,5,5,17,17,5,5,11,6,6,16,33,45,28,6,5, +12,4,4,29,29,4,4,12,5,6,28,46,34,17,6,6,11,5,5,17,17,5,5,11,6,6,17,17,5,6,11,5, +5,17,34,45,28,5,5,11,6,6,28,28,6,6,11,5,5,28,45,34,17,5,5,11,6,5,17,17,6,6,11,5, +5,17,17,5,5,11,6,6,17,34,46,28,6,5,12,4,4,29,29,4,4,164,45,45,45,45,237,45,45,45,45,23, +45,45,45,45,136,45,45,45,45,1,52,1,32,32,54,54,67,67,54,54,32,32,1,1,32,32,54,54,67,67,54,54, +32,32,1,254,232,11,5,5,28,45,34,17,5,5,11,6,5,17,17,6,6,11,5,5,17,17,5,5,11,6,6,17, +34,46,28,6,5,12,4,4,29,29,4,4,12,5,6,28,46,34,17,6,6,11,5,5,17,17,5,5,11,6,6,17, +17,5,6,11,5,5,17,34,45,28,5,5,11,6,6,28,28,6,6,11,5,5,28,45,34,17,5,5,11,6,6,17, +16,6,6,11,5,5,17,17,5,5,11,6,6,16,34,45,28,6,5,12,4,4,29,29,4,4,12,5,6,28,46,34, +17,6,6,11,5,5,17,17,5,5,11,6,6,17,17,5,6,11,5,5,17,34,45,28,5,5,11,6,6,28,28,6, +6,40,45,45,45,45,0,0,0,3,0,0,255,224,2,0,1,160,0,42,0,47,0,76,0,0,1,39,38,43,1,53, +38,39,38,39,35,6,7,6,7,21,35,34,15,1,6,29,1,51,53,54,55,51,22,23,21,51,53,54,55,51,22,23, +21,51,53,52,47,1,35,53,51,21,23,6,7,35,38,39,53,35,21,6,7,35,38,39,53,35,21,20,23,22,51,33, +50,55,54,61,1,35,21,1,247,46,9,13,51,1,13,14,20,160,20,14,13,1,51,13,9,46,9,128,1,15,32,15, +1,128,1,15,32,15,1,128,9,167,160,160,48,1,15,32,15,1,128,1,15,32,15,1,128,9,9,14,1,192,14,9, +9,128,1,9,46,9,48,20,14,13,1,1,13,14,20,48,9,46,9,13,99,32,15,1,1,15,32,32,15,1,1,15, +32,99,13,9,55,48,48,240,15,1,1,15,32,32,15,1,1,15,32,112,14,9,9,9,9,14,112,32,0,1,0,0, +255,192,2,128,1,176,0,47,0,0,1,20,15,1,6,35,34,47,1,17,6,7,6,7,35,38,39,38,39,17,7,6, +39,34,47,1,38,53,52,63,1,54,59,1,22,23,22,23,54,55,54,55,51,50,31,1,22,21,2,128,7,50,10,15, +11,9,58,1,13,14,20,224,20,14,13,1,59,8,11,15,10,50,7,12,135,20,24,35,6,26,26,36,36,26,26,6, +34,25,20,135,12,1,29,10,10,61,12,7,46,254,251,20,14,13,1,1,13,14,20,1,5,46,7,1,12,60,10,10, +15,10,106,16,35,22,22,1,1,22,22,35,16,106,10,15,0,3,0,0,255,192,1,63,1,192,0,17,0,77,0,95, +0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,6,35,49,34,21,7,6,15,1,6,7, +6,39,38,39,38,63,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22, +31,1,22,7,6,7,6,39,38,47,2,38,63,1,7,55,22,31,1,7,6,15,1,6,35,34,39,38,53,52,63,1, +1,0,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,129,1,1,1,11,24,10,1,6,11,12,13,12,5, +5,4,2,20,47,11,31,35,34,27,27,14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3, +7,6,13,13,12,11,4,21,71,23,9,17,58,25,3,4,40,14,4,7,61,10,13,13,10,9,9,60,1,144,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,151,1,1,4,11,24,4,12,5,5,4,6,11,12,13,4,47,22, +5,14,19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13, +88,77,27,33,64,199,62,4,4,45,36,9,7,62,9,9,10,13,13,10,59,0,0,0,0,2,0,0,255,224,2,0, +1,160,0,35,0,53,0,0,1,50,23,49,22,21,20,7,6,35,33,6,7,22,23,33,22,23,22,23,21,6,7,6, +7,33,38,39,38,39,17,54,55,54,55,33,3,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,192, +14,9,9,9,9,14,254,144,15,1,1,15,1,112,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27, +1,128,32,14,9,9,9,9,14,14,9,9,9,9,14,1,160,9,9,14,14,9,9,1,15,15,1,1,18,18,27,224, +27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,208,9,9,14,14,9,9,9,9,14,14,9,9,0,4,0,0, +255,192,2,0,1,192,0,26,0,53,0,78,0,103,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,7,38,39,49,38,39,6,7,6,7,6,23,22,55,54,55,54,51,50,23,22, +23,22,55,54,39,49,39,50,55,49,54,53,52,53,23,22,55,54,47,1,38,7,6,31,1,6,7,22,23,22,51,63, +1,54,39,38,15,1,6,23,22,63,1,6,21,22,23,22,51,50,55,54,53,52,39,49,2,0,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,172,12,21,21,30,30,21,21,12,9,10,11,12,9, +15,14,21,22,15,15,9,11,12,10,9,164,14,9,9,11,14,6,3,13,96,14,6,3,13,31,9,1,1,9,9,13, +183,30,13,3,6,14,96,13,3,6,14,12,1,1,9,9,13,14,9,9,9,192,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,117,14,11,11,1,1,11,11,14,11,12,9,10,10,9,8,8,9, +10,10,9,12,11,101,9,9,14,2,2,3,3,13,14,6,32,3,13,14,6,10,9,14,14,9,9,55,10,6,14,13, +3,32,6,14,13,3,4,3,2,14,9,9,9,9,14,14,9,0,0,0,0,2,0,0,255,224,2,0,1,160,0,19, +0,51,0,0,1,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,5,33,17,50,23,22,21,20, +7,6,43,1,53,38,39,38,39,6,7,6,7,21,35,34,39,38,53,52,55,54,51,17,1,224,14,9,9,9,9,14, +254,64,14,9,9,9,9,14,1,192,254,64,1,192,14,9,9,9,9,14,128,1,27,27,41,41,27,27,1,128,14,9, +9,9,9,14,1,160,9,9,14,14,9,9,9,9,14,14,9,9,96,254,224,9,9,14,14,9,9,128,41,27,27,1, +1,27,27,41,128,9,9,14,14,9,9,1,32,0,0,0,0,9,0,0,255,192,1,192,1,192,0,10,0,16,0,22, +0,32,0,38,0,64,0,82,0,94,0,100,0,0,19,6,7,49,6,7,51,38,39,38,39,23,38,39,22,23,51,21, +35,6,7,54,55,43,1,22,23,22,23,54,55,54,55,39,6,7,51,54,55,23,17,38,39,38,39,33,6,7,6,7, +17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,3,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54, +55,19,33,34,39,38,53,52,55,54,51,33,21,39,38,39,35,22,23,240,6,8,7,2,46,2,7,8,6,94,9,44, +12,2,39,39,2,12,44,9,71,46,2,7,8,6,6,8,7,2,64,43,10,39,2,12,249,1,13,14,20,254,208,41, +27,27,1,1,27,27,41,1,64,14,9,9,1,15,15,1,208,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37, +54,144,254,224,14,9,9,9,9,14,1,32,185,12,2,39,10,43,1,95,6,20,20,33,33,20,20,6,79,49,21,29, +41,32,41,29,21,49,33,20,20,6,6,20,20,33,102,21,49,41,29,230,1,32,20,14,13,1,1,27,27,41,254,192, +41,27,27,1,9,9,14,18,9,81,14,22,1,16,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,254,128, +9,9,14,14,9,9,64,170,29,41,49,21,0,4,0,0,255,192,1,127,1,192,0,97,0,115,0,132,0,151,0,0, +37,54,55,49,54,55,54,55,54,55,54,39,38,55,54,55,54,55,38,39,38,39,38,55,54,39,38,39,38,39,38,39, +38,39,38,7,6,39,38,39,38,39,6,7,6,7,6,39,38,7,6,7,6,7,6,7,6,7,6,23,22,7,6,7, +6,7,22,23,22,23,22,7,6,23,22,23,22,23,22,23,22,23,22,55,54,23,22,23,22,23,54,55,54,55,54,23, +22,55,39,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,7,6,23,22,63,1,23,22,51,48,51,54, +63,1,38,39,7,37,6,7,23,22,23,48,49,48,51,50,63,1,23,22,55,54,47,1,1,32,11,6,5,7,8,10, +15,8,6,2,2,3,3,6,10,1,1,10,7,3,2,1,2,6,8,14,11,8,7,5,6,11,12,16,12,10,9,9, +13,14,14,13,9,10,10,12,16,12,11,6,5,7,8,10,15,8,6,2,2,3,3,7,10,1,1,10,7,3,3,2, +2,6,8,14,11,8,7,5,6,11,12,16,12,10,10,9,13,14,14,13,9,10,10,12,16,12,176,1,22,23,34,34, +23,22,1,1,22,23,34,34,23,22,1,110,5,9,9,14,45,21,7,15,1,15,6,34,83,56,32,1,92,56,83,34, +6,15,1,15,7,21,45,14,9,9,5,32,90,8,15,10,8,7,5,6,11,12,16,12,10,10,9,13,14,14,13,9, +10,10,12,16,12,11,6,5,7,8,10,15,8,6,2,2,3,3,6,10,2,1,10,7,3,3,2,2,6,8,15,10, +8,7,5,6,11,12,16,12,10,10,9,13,14,14,13,9,10,10,12,16,12,11,6,5,7,8,10,15,8,6,2,2, +3,3,7,10,1,1,10,7,3,2,1,2,6,166,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,241,13, +11,11,2,9,42,13,1,14,82,9,55,82,82,55,9,82,14,1,13,42,9,2,11,11,13,82,0,0,0,2,0,0, +0,0,2,64,1,128,0,22,0,48,0,0,37,6,7,49,6,7,33,34,47,1,38,53,52,63,1,54,51,33,22,23, +22,23,17,37,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49,2,64,1, +18,18,27,254,205,26,19,151,9,9,151,19,26,1,51,27,18,18,1,254,207,47,47,14,14,17,16,48,47,17,16,15, +15,46,46,15,15,16,17,47,48,16,17,14,14,64,27,18,18,1,19,150,10,13,13,10,150,19,1,18,18,27,255,0, +176,48,47,17,16,15,15,46,46,15,15,16,17,47,48,16,17,14,14,47,47,14,14,17,16,0,0,0,0,4,0,0, +255,224,2,128,1,160,0,103,0,108,0,113,0,118,0,0,1,22,23,49,22,23,21,51,54,55,22,23,22,23,6,7, +6,7,38,39,35,22,23,22,23,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,38,39, +38,39,6,7,35,38,39,6,7,6,7,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51, +54,55,54,55,35,6,7,38,39,38,39,54,55,54,55,22,23,51,53,54,55,54,55,51,7,51,53,35,21,7,21,51, +53,35,5,53,35,21,51,1,96,20,14,13,1,118,18,40,27,18,18,1,1,18,18,27,40,18,66,44,28,27,5,4, +20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,3,5,29,28,45,14,26,64,26,14,45,28,29,5,3, +20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,5,4,27,28,45,67,18,40,27,18,18,1,1,18,18, +27,40,18,118,1,13,14,20,64,56,48,48,208,48,48,1,208,48,48,1,160,1,13,14,20,4,34,2,1,18,18,27, +27,18,18,1,2,34,30,46,47,57,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,51,39,39,20, +20,1,1,20,20,39,39,51,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,57,47,46,30,34,2, +1,18,18,27,27,18,18,1,2,34,4,20,14,13,1,104,48,48,240,48,48,48,48,48,0,2,0,32,255,192,1,224, +1,192,0,47,0,58,0,0,5,54,55,54,55,38,39,55,23,22,63,1,54,47,1,38,15,1,6,31,1,7,38,39, +53,51,54,55,53,38,39,35,6,7,23,22,23,51,21,6,7,6,7,22,23,22,23,51,39,55,53,51,21,23,22,23, +33,54,55,1,79,36,20,24,1,1,26,43,9,12,11,11,10,10,52,12,11,11,10,10,9,39,18,21,16,15,1,1, +15,225,14,2,1,1,15,16,44,26,25,1,1,25,19,37,221,183,24,96,24,37,20,254,255,19,37,64,1,32,42,53, +55,44,43,9,10,10,11,11,12,52,10,10,11,11,12,9,39,17,12,154,2,14,32,15,1,2,14,32,15,1,154,25, +44,43,54,53,42,32,1,253,13,182,182,13,23,38,38,23,0,3,0,0,255,192,1,128,1,192,0,18,0,42,0,51, +0,0,19,51,22,23,22,23,21,33,53,54,55,54,55,51,23,55,51,23,55,19,21,6,7,6,7,35,21,6,7,6, +7,38,39,38,39,53,35,38,39,38,39,53,33,7,54,55,38,39,6,7,22,23,224,112,20,14,13,1,254,128,1,13, +14,20,16,32,32,32,32,32,160,1,18,18,27,64,1,18,18,27,27,18,18,1,64,27,18,18,1,1,128,192,15,1, +1,15,15,1,1,15,1,192,1,13,14,20,208,208,20,14,13,1,64,64,64,64,254,224,32,27,18,18,1,64,27,18, +18,1,1,18,18,27,64,1,18,18,27,32,176,1,15,15,1,1,15,15,1,0,0,0,0,4,0,0,255,192,1,192, +1,192,0,42,0,64,0,82,0,100,0,0,19,22,23,49,22,23,17,20,7,6,35,21,20,7,6,43,1,34,39,38, +61,1,35,21,20,7,6,43,1,34,39,38,61,1,34,39,38,53,17,54,55,54,55,3,20,23,49,22,51,33,50,55, +54,61,1,52,39,38,35,33,34,7,6,29,1,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,33, +50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,224,96,63,63,2,9,9,14,9,9,14,32,14,9,9, +192,9,9,14,32,14,9,9,14,9,9,2,63,63,96,160,9,9,14,1,0,14,9,9,9,9,14,255,0,14,9,9, +16,14,9,9,9,9,14,14,9,9,9,9,14,1,32,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,22,23, +34,254,176,14,9,9,32,14,9,9,9,9,14,32,32,14,9,9,9,9,14,32,9,9,14,1,80,34,23,22,1,255, +0,14,9,9,9,9,14,128,14,9,9,9,9,14,128,144,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,0,1,0,31,255,192,2,32,1,192,0,108,0,0,37,20,7,6,7,6,7,34,35,22, +21,22,7,6,39,34,39,38,39,21,6,7,38,39,53,6,7,6,35,6,39,38,55,52,55,34,35,38,39,38,39,34, +49,38,53,52,55,54,55,54,55,38,39,38,53,38,55,54,51,50,51,22,49,50,23,22,23,53,54,55,54,55,54,55, +48,51,54,51,50,23,48,49,22,23,22,23,22,23,21,54,55,54,51,54,51,50,23,22,7,20,7,6,7,22,23,22, +23,22,21,2,32,8,4,37,37,56,9,8,16,3,7,6,10,2,19,20,28,2,22,22,2,28,20,19,2,10,6,7, +3,17,9,9,51,36,36,9,1,9,9,1,21,20,34,47,19,19,1,6,4,7,1,1,1,6,48,48,59,1,14,15, +15,15,2,1,4,9,9,5,2,15,15,15,14,1,58,48,49,6,1,2,7,4,6,1,19,19,47,34,20,21,2,8, +74,10,5,2,14,13,2,36,3,9,7,7,3,8,8,18,43,22,2,2,21,43,18,8,8,3,7,7,9,5,35,1, +12,12,6,5,10,9,5,1,9,8,7,60,50,50,6,9,6,5,1,17,18,45,5,59,49,48,29,29,4,7,7,4, +29,29,49,48,59,5,45,18,17,1,5,6,9,6,50,50,60,7,8,9,1,5,9,0,0,2,0,0,255,224,1,192, +1,160,0,25,0,51,0,0,55,6,35,49,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20, +15,1,21,6,35,49,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20,7,1,183,10,13,13, +10,80,9,9,10,13,13,10,56,138,10,13,13,10,9,9,160,10,13,13,10,128,9,9,10,13,13,10,104,234,10,13, +13,10,9,9,255,0,201,9,9,80,10,13,13,10,9,9,58,138,9,9,10,13,13,10,160,224,9,9,128,10,13,13, +10,9,9,106,234,9,9,10,13,13,10,255,0,0,0,0,0,2,0,0,255,192,2,63,1,192,0,28,0,60,0,0, +5,35,53,55,54,39,38,39,33,6,7,6,31,1,21,35,34,7,6,21,22,23,51,54,55,54,39,38,35,19,6,7, +49,6,7,51,54,55,54,51,22,23,22,23,6,7,6,7,34,39,7,22,23,54,55,54,55,38,39,38,39,1,32,48, +169,11,6,6,17,254,146,17,6,6,11,169,48,14,9,9,2,13,191,14,1,2,9,8,14,144,48,36,36,15,52,13, +22,21,27,41,26,27,1,1,27,27,40,21,18,36,34,41,61,40,41,1,1,41,40,61,16,125,169,13,14,14,1,1, +14,14,13,169,125,9,9,14,15,1,1,15,14,9,9,1,208,1,26,26,43,22,13,13,1,27,27,41,41,27,27,1, +9,36,20,1,2,40,41,61,61,41,40,2,0,2,0,0,0,0,1,255,1,128,0,24,0,35,0,0,1,53,51,54, +55,38,39,35,6,7,20,23,22,59,1,21,6,7,6,7,33,38,39,38,39,23,33,6,7,22,23,33,54,55,38,39, +1,24,16,22,2,2,22,81,21,2,7,7,9,17,86,56,56,2,1,192,2,56,56,86,208,254,48,22,2,2,21,1, +208,22,2,1,22,1,47,33,2,22,22,2,2,21,10,7,8,33,11,62,61,89,89,61,62,11,255,2,21,23,2,2, +21,23,2,0,0,4,0,16,255,209,1,240,1,175,0,30,0,48,0,66,0,84,0,0,37,39,38,47,1,38,47,1, +38,15,1,6,15,1,6,31,1,22,31,1,22,31,1,22,63,1,54,63,1,54,39,5,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,1,239,12,6,29,51,29,39,72,40,35,65,36,19,32,18,6,11,6, +29,51,29,39,72,40,36,64,36,19,32,19,6,254,193,14,8,9,9,9,13,13,9,9,9,8,14,32,14,8,9,9, +9,13,14,8,9,9,9,13,160,14,8,9,9,9,13,13,9,9,9,8,14,193,72,39,29,51,29,6,11,6,17,34, +18,36,64,36,40,72,39,29,51,28,7,11,6,17,34,18,36,64,36,40,112,9,9,13,14,8,9,9,9,13,13,9, +9,159,9,9,13,13,9,9,9,9,13,13,9,9,127,9,9,13,14,8,9,9,9,13,13,9,9,0,0,4,0,16, +255,209,1,240,1,176,0,32,0,50,0,68,0,86,0,0,37,38,39,49,38,39,38,39,38,39,38,15,1,6,15,1, +6,31,1,22,31,1,22,31,1,22,63,1,54,63,1,54,39,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20, +7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50, +23,22,21,20,7,6,35,1,239,51,33,34,1,51,33,34,2,39,36,64,36,19,32,18,6,11,6,29,51,29,39,72, +40,36,64,36,19,33,17,5,254,193,14,9,9,9,9,14,14,9,9,9,9,14,32,14,9,9,9,9,14,14,9,9, +9,9,14,160,14,9,9,9,9,14,14,9,9,9,9,14,192,2,34,33,51,1,34,33,51,5,17,33,19,36,64,36, +40,72,39,29,51,29,6,11,6,17,34,18,36,64,36,39,111,9,9,13,13,9,9,9,9,13,13,9,9,159,9,9, +13,13,9,9,9,9,13,13,9,9,127,9,9,13,13,9,9,9,9,13,13,9,9,0,0,2,0,0,255,192,2,0, +1,192,0,28,0,57,0,0,55,51,21,35,38,39,38,39,17,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51, +50,23,22,21,17,1,35,53,51,22,23,22,23,17,51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38, +53,17,128,224,224,27,18,18,1,32,14,9,9,9,9,14,32,9,9,14,14,9,9,1,0,224,224,27,18,18,1,32, +14,9,9,9,9,14,32,9,9,14,14,9,9,64,64,1,18,18,27,1,0,9,9,14,14,9,9,32,14,9,9,9, +9,14,254,160,1,0,64,1,18,18,27,255,0,9,9,14,14,9,9,32,14,9,9,9,9,14,1,96,0,9,0,0, +0,0,2,128,1,128,0,20,0,33,0,44,0,57,0,70,0,83,0,96,0,109,0,120,0,0,1,33,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,5,54,55,51,22,23,21,6,7,35,38,39,53,5,33,38,39, +54,55,33,22,23,20,7,39,53,54,55,51,22,23,21,6,7,35,38,39,51,53,54,55,51,22,23,21,6,7,35,38, +39,51,53,54,55,51,22,23,21,6,7,35,38,39,51,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38, +39,53,54,55,51,22,23,21,23,35,38,39,54,55,51,22,23,6,7,2,64,254,0,27,18,18,1,1,18,18,27,2, +0,27,18,18,1,1,18,18,27,254,0,1,7,16,7,1,1,7,16,7,1,1,16,255,0,15,1,2,13,1,0,15, +1,15,208,1,7,16,7,1,1,7,16,7,1,64,1,7,16,7,1,1,7,16,7,1,64,1,7,16,7,1,1,7, +16,7,1,96,1,7,16,7,1,1,7,16,7,1,1,16,254,16,1,1,16,254,16,1,208,160,15,1,1,15,160,15, +1,1,15,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,232,7,1,1,7,16,7, +1,1,7,16,88,1,15,15,1,1,15,15,1,72,16,7,1,1,7,16,7,1,1,7,16,7,1,1,7,16,7,1, +1,7,16,7,1,1,7,16,7,1,1,7,7,1,1,7,16,7,1,1,7,16,74,16,2,2,16,92,16,2,2,16, +92,146,1,15,15,1,1,15,15,1,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,69,0,94,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,23,3,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15, +1,39,38,7,6,23,51,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,0, +1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,155,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11, +11,10,10,192,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,192,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,160,1,18,18,27,27,18,18,1,1,18, +18,27,27,18,18,1,1,5,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,0,3,0,0,255,192,2,0, +1,192,0,64,0,82,0,97,0,0,1,20,7,23,6,7,39,35,7,22,51,50,55,54,55,54,55,54,23,22,23,22, +7,6,7,6,7,34,39,7,6,15,1,6,39,38,61,1,52,63,1,38,39,38,55,54,55,54,23,22,23,22,23,55, +38,53,54,55,54,55,22,23,22,23,49,7,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,19,54,55, +23,22,29,1,20,7,6,47,1,38,47,1,1,96,9,53,36,52,52,1,67,32,36,53,46,45,31,9,12,13,11,10, +2,1,8,40,59,58,68,53,48,56,8,12,56,8,7,8,6,60,19,16,8,1,2,10,11,13,12,9,9,9,70,9, +1,27,27,41,41,27,27,1,96,14,9,9,9,9,14,14,9,9,9,9,14,116,50,40,44,6,8,7,8,56,12,8, +41,1,96,22,18,91,39,15,89,118,10,23,22,40,10,1,2,9,9,12,13,11,50,29,28,1,18,98,12,7,27,4, +4,5,9,55,13,11,104,17,20,11,13,12,9,9,2,1,10,12,9,120,18,22,41,27,27,1,1,27,27,41,32,9, +9,14,14,9,9,9,9,14,14,9,9,254,246,19,34,76,11,13,55,9,5,4,4,27,7,12,70,0,0,2,0,0, +255,224,1,255,1,159,0,58,0,94,0,0,1,55,54,39,38,15,1,38,39,38,35,48,49,48,49,34,7,6,7,6, +7,6,7,21,22,23,53,54,55,22,23,21,22,23,53,54,55,48,49,48,49,22,23,21,54,55,53,54,55,22,23,21, +54,55,53,54,39,38,39,7,48,57,1,48,49,38,39,38,39,54,55,54,55,48,49,48,49,50,23,7,6,23,22,51, +50,63,1,22,23,22,23,6,7,6,7,1,175,70,17,10,14,19,107,38,31,31,12,15,40,41,46,46,33,33,2,3, +68,2,22,22,1,53,60,2,22,22,2,62,49,2,22,22,2,69,2,1,22,22,35,176,88,59,58,2,2,59,58,88, +26,25,63,17,10,8,12,7,6,109,40,23,22,1,3,58,59,89,1,70,46,14,19,17,10,70,7,1,2,2,3,11, +10,23,23,40,160,47,31,102,22,2,2,22,119,14,3,104,22,2,2,22,104,3,14,119,22,2,2,22,102,31,47,160, +32,21,21,12,151,1,18,19,27,27,18,17,1,2,40,14,19,12,4,71,8,14,13,16,27,19,18,1,0,5,0,0, +255,224,2,64,1,160,0,28,0,42,0,55,0,71,0,85,0,0,1,34,7,49,6,7,49,6,7,21,22,23,22,23, +22,51,50,55,54,55,54,55,53,38,39,38,39,38,35,7,6,7,38,39,38,39,54,55,54,55,23,22,7,23,6,39, +54,55,54,51,50,23,22,23,6,35,55,6,7,49,6,7,38,39,38,39,53,54,51,50,23,21,23,38,39,38,63,1, +22,23,22,23,6,7,6,7,1,32,80,65,65,39,38,1,1,38,39,65,65,80,80,65,65,39,38,1,1,38,39,65, +65,80,83,7,21,59,34,35,1,1,33,34,56,26,15,8,83,32,29,6,17,16,22,22,16,17,6,29,32,64,1,18, +18,27,27,18,18,1,31,33,33,31,47,21,7,8,15,26,56,34,33,1,1,35,35,58,1,160,17,18,28,29,36,192, +36,29,28,18,17,17,18,28,29,36,192,36,29,28,18,17,158,26,15,10,19,19,23,23,18,18,10,44,26,29,50,1, +4,20,12,13,13,12,20,3,144,27,18,18,1,1,18,18,27,13,3,3,13,135,15,26,29,27,44,10,19,18,23,23, +19,19,10,0,0,1,255,255,255,192,2,0,1,192,0,37,0,0,37,7,51,6,15,1,51,6,7,6,39,7,6,39, +38,63,1,54,39,38,15,1,38,55,54,55,54,55,54,55,54,23,22,7,6,7,6,7,1,211,116,94,11,14,133,86, +44,66,65,90,68,17,17,14,14,254,7,9,11,11,169,13,44,44,73,73,73,73,45,14,10,10,1,2,10,10,23,207, +47,22,21,53,40,16,17,20,68,14,14,17,17,253,11,10,10,10,168,114,71,71,39,38,15,15,2,1,10,10,14,35, +56,56,61,0,0,5,0,0,255,192,1,128,1,192,0,3,0,26,0,39,0,52,0,95,0,0,1,21,51,39,7,53, +35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,39,54,55,51,22,23,21,6,7,35,38, +39,53,21,54,55,51,22,23,21,6,7,35,38,39,53,23,22,23,6,7,35,38,39,38,7,38,15,1,6,43,1,38, +47,1,7,6,7,35,38,39,54,55,51,50,63,1,54,55,22,31,1,54,23,22,23,22,59,1,1,0,128,128,32,176, +20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,160,1,7,80,7,1,1,7,80,7,1,1,7,80, +7,1,1,7,80,7,1,240,15,1,1,15,47,26,13,6,4,5,5,8,5,9,1,10,4,17,11,11,30,12,15,1, +1,15,12,8,3,18,6,17,17,6,14,16,20,20,10,3,7,47,1,192,128,128,128,128,1,13,14,20,254,96,20,14, +13,1,1,13,14,20,1,48,9,9,14,56,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1,7, +16,248,1,15,15,1,1,23,8,2,1,7,15,9,1,10,50,32,27,2,1,15,15,1,8,54,16,1,1,16,41,12, +4,4,19,6,0,3,0,0,255,192,1,128,1,192,0,3,0,26,0,49,0,0,1,35,53,23,7,51,17,6,7,6, +7,33,38,39,38,39,17,54,55,54,55,51,21,20,23,22,51,15,1,53,38,39,6,7,21,39,38,35,34,7,6,31, +1,22,63,1,54,39,38,7,1,128,128,128,128,128,1,13,14,20,254,224,20,14,13,1,1,13,14,20,176,9,9,14, +1,39,2,22,22,2,40,6,10,10,7,14,14,80,17,17,80,14,14,17,17,1,64,128,128,32,254,208,20,14,13,1, +1,13,14,20,1,160,20,14,13,1,128,14,9,9,135,39,102,22,2,2,22,102,39,7,7,17,17,80,14,14,80,17, +17,14,14,0,0,3,0,0,255,192,2,63,1,192,0,29,0,33,0,53,0,0,55,54,55,51,53,35,34,39,38,61, +1,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,35,38,39,19,21,51,39,1,39,38,7,6,31,1,35, +21,51,7,6,21,20,23,22,63,1,54,39,192,2,22,168,128,14,9,9,176,20,14,13,1,1,13,14,20,1,32,20, +14,13,1,168,22,2,64,128,128,1,56,80,17,17,14,14,40,110,110,39,7,7,17,17,80,14,15,136,22,2,128,9, +9,14,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,128,2,22,1,56,128,128,254,217,80,14,14,17,17,39, +48,39,7,10,10,7,14,14,80,17,17,0,0,3,0,0,255,192,2,0,1,192,0,3,0,45,0,53,0,0,1,21, +51,39,7,53,35,6,7,6,7,21,51,39,38,55,54,31,1,22,15,1,6,39,38,53,52,63,1,35,21,22,23,22, +23,33,54,55,54,55,17,35,34,39,38,53,5,6,7,22,23,51,53,35,1,128,128,128,32,176,20,14,13,1,174,39, +14,14,17,17,80,14,14,80,17,17,7,7,39,174,1,13,14,20,1,32,20,14,13,1,127,14,10,9,254,184,22,2, +2,22,104,104,1,192,128,128,128,128,1,13,14,20,240,39,17,17,14,14,80,17,17,80,14,14,7,10,10,7,39,128, +20,14,13,1,1,13,14,20,1,48,9,9,14,160,2,22,22,2,48,0,0,7,0,0,255,192,1,128,1,192,0,3, +0,8,0,31,0,44,0,57,0,70,0,83,0,0,1,21,51,39,19,35,21,51,53,39,53,35,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,35,34,39,38,53,39,54,55,51,22,23,21,6,7,35,38,39,53,21,54,55,51,22, +23,21,6,7,35,38,39,53,1,6,7,35,38,39,53,54,55,51,22,23,21,53,21,6,7,35,38,39,53,54,55,51, +22,23,1,0,128,128,32,192,192,64,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,160,1,7, +80,7,1,1,7,80,7,1,1,7,80,7,1,1,7,80,7,1,1,0,1,7,80,7,1,1,7,80,7,1,1,15, +224,15,1,1,15,224,15,1,1,192,128,128,255,0,64,64,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20, +1,48,9,9,14,56,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1,7,16,254,208,7,1,1, +7,16,7,1,1,7,16,200,96,15,1,1,15,96,15,1,1,15,0,0,0,5,0,0,255,192,1,128,1,192,0,3, +0,26,0,39,0,52,0,117,0,0,1,35,53,23,7,51,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51, +21,20,23,22,51,39,22,23,51,54,55,53,38,39,35,6,7,21,23,51,54,55,53,38,39,35,6,7,21,22,31,1, +39,38,39,38,55,54,55,54,23,22,23,22,55,54,39,38,39,53,38,39,6,7,21,6,7,6,23,22,23,48,49,23, +22,23,22,7,6,7,6,39,38,39,48,35,39,38,7,6,31,1,22,23,21,22,23,54,55,53,54,55,54,39,38,39, +1,128,128,128,128,128,1,13,14,20,254,224,20,14,13,1,1,13,14,20,176,9,9,14,192,1,7,80,7,1,1,7, +80,7,1,8,80,7,1,1,7,80,7,1,1,7,126,7,16,3,4,2,1,9,9,11,8,9,18,8,4,16,11,8, +2,18,18,2,35,7,3,19,19,16,6,21,4,4,2,1,9,9,11,11,12,1,4,18,8,4,17,4,12,13,2,18, +18,2,35,7,3,20,21,18,1,64,128,128,32,254,208,20,14,13,1,1,13,14,20,1,160,20,14,13,1,128,14,9, +9,72,7,1,1,7,16,7,1,1,7,16,72,1,7,16,7,1,1,7,16,7,1,157,2,5,3,4,2,6,2,2, +2,1,4,4,17,17,8,4,1,7,18,2,2,18,6,8,32,31,13,12,4,1,6,4,3,4,5,2,2,2,2,5, +2,4,17,18,7,2,4,3,7,18,2,2,18,6,8,32,31,13,13,4,0,4,0,0,255,192,1,128,1,192,0,7, +0,11,0,34,0,75,0,0,55,35,21,51,54,55,38,39,55,21,51,39,7,53,35,6,7,6,7,17,22,23,22,23, +33,54,55,54,55,17,35,34,39,38,53,31,1,22,15,1,23,22,15,1,6,47,1,7,6,47,1,38,63,1,39,35, +21,6,7,35,38,39,53,54,55,51,22,23,22,23,6,7,23,55,54,23,176,48,48,15,1,1,15,80,128,128,32,176, +20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,69,11,9,9,30,30,9,9,11,12,11,30,30,11, +12,11,9,9,29,58,19,1,15,16,15,1,1,15,80,27,18,18,1,2,31,33,30,11,12,208,32,1,15,15,1,240, +128,128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,188,11,11,11,30,30,12,11,11, +10,10,30,30,10,10,11,11,12,30,59,48,15,1,1,15,160,15,1,1,18,18,27,38,18,33,29,10,10,0,0,0, +0,4,0,0,255,192,2,64,1,192,0,9,0,18,0,22,0,87,0,0,37,6,29,1,51,50,63,1,39,7,37,39, +38,15,1,23,55,54,39,37,21,51,39,17,38,39,38,7,38,15,1,6,43,1,38,47,1,7,6,7,35,38,39,54, +55,51,50,63,1,54,55,22,31,1,54,23,22,23,22,23,53,52,63,1,53,35,34,39,38,61,1,35,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,53,35,1,37,5,62,7,5,157,68,158,1,20,32,18,18,28,68,27,16,15,254, +199,128,128,26,12,6,4,5,5,8,5,9,1,10,4,17,11,11,30,12,15,1,1,15,12,8,3,18,6,17,17,6, +14,16,20,20,10,3,6,9,119,128,14,9,9,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,128,106,5,7, +62,5,158,68,157,175,31,15,15,27,68,28,18,18,167,128,128,254,64,1,23,8,2,1,7,15,9,1,10,50,32,27, +2,1,15,15,1,8,54,16,1,1,16,41,12,4,4,19,5,1,69,13,10,117,47,9,9,14,128,1,13,14,20,254, +96,20,14,13,1,1,13,14,20,16,0,0,0,3,0,0,255,192,1,128,1,192,0,3,0,26,0,49,0,0,1,21, +51,39,7,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,23,6,35,34,47,1,21, +6,7,38,39,53,7,6,39,38,63,1,54,31,1,22,7,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32, +20,14,13,1,127,14,10,9,64,6,10,10,7,39,2,22,22,2,39,17,17,14,14,80,17,17,80,14,15,1,192,128, +128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,216,8,7,39,102,22,2,2,22,102, +39,14,14,17,17,80,14,14,80,17,16,0,0,2,0,3,255,194,1,239,1,192,0,31,0,53,0,0,19,55,54,51, +50,31,1,22,21,20,15,1,6,35,34,47,1,38,53,52,63,1,39,38,53,52,55,54,51,50,31,1,7,6,7,33, +55,54,47,1,38,15,1,23,22,21,20,7,6,35,34,47,1,7,168,53,22,29,29,22,151,21,21,190,30,38,38,30, +117,28,28,92,82,9,9,10,13,13,10,81,92,6,2,1,63,42,5,5,151,6,6,53,50,9,9,10,13,13,10,49, +92,1,101,53,21,21,151,22,29,29,22,190,29,29,117,30,38,38,30,93,80,10,13,13,10,9,9,82,182,7,7,41, +6,6,151,5,5,53,49,10,13,13,10,9,9,50,92,0,0,3,0,3,255,192,2,64,1,192,0,33,0,56,0,79, +0,0,19,54,51,49,50,31,1,55,54,51,50,31,1,22,21,20,15,1,6,35,34,47,1,38,53,52,63,1,39,38, +53,52,55,49,23,39,7,6,7,33,55,54,47,1,38,15,1,23,22,21,20,7,6,35,34,39,49,23,54,55,49,54, +55,54,51,50,23,22,23,22,23,6,7,6,7,38,39,38,39,49,41,10,13,13,10,81,53,22,29,29,22,151,21,21, +190,30,38,38,30,117,28,28,92,82,9,9,176,49,92,6,2,1,63,42,5,5,151,6,6,53,50,9,9,10,13,13, +10,231,1,18,17,15,5,8,8,5,15,17,18,1,1,18,18,27,27,18,18,1,1,183,9,9,82,53,21,21,151,22, +29,29,22,190,29,29,117,30,38,38,30,93,80,10,13,13,10,222,50,92,7,8,42,6,6,151,5,5,53,49,10,13, +13,10,9,9,217,21,32,32,24,7,7,24,32,32,21,27,18,18,1,1,18,18,27,0,0,6,255,255,255,192,2,0, +1,192,0,16,0,58,0,79,0,106,0,125,0,159,0,0,37,6,7,22,7,6,23,22,23,54,55,54,55,54,53,38, +47,1,6,7,49,6,21,22,7,6,23,22,23,22,55,54,55,54,39,52,55,54,55,22,23,22,23,22,7,6,23,22, +23,22,55,54,53,54,39,38,39,38,47,1,38,7,6,21,22,7,6,23,22,23,22,55,54,39,54,39,54,55,54,39, +55,34,7,6,23,22,55,54,51,22,23,22,23,22,7,6,23,50,55,54,53,54,39,38,39,38,39,23,38,7,6,7, +6,23,22,21,22,21,22,23,54,55,52,49,54,47,1,38,39,49,38,39,34,7,6,29,1,22,23,50,49,48,49,50, +55,54,61,1,54,55,54,51,22,23,22,23,22,55,54,39,1,0,21,2,2,30,3,5,5,16,17,6,10,10,9,2, +22,1,47,28,28,1,14,2,5,5,10,10,8,8,3,15,1,14,14,27,24,16,16,1,1,11,2,6,5,10,15,6, +7,12,1,2,29,30,44,110,19,15,39,1,10,2,6,5,10,15,6,7,1,11,1,1,27,14,16,108,22,23,21,3, +7,21,18,17,58,40,39,2,1,6,1,22,12,7,7,7,1,3,53,52,79,253,7,22,9,5,6,2,4,1,2,22, +22,2,2,8,41,37,56,56,64,108,74,71,3,21,1,9,7,7,1,56,61,87,53,45,46,31,14,19,16,11,202,2, +21,108,104,9,10,11,1,1,16,37,57,56,75,22,2,82,1,29,30,41,73,70,9,9,8,2,2,5,5,10,76,76, +21,16,16,1,1,16,16,23,71,72,10,8,8,2,1,8,8,5,75,76,44,29,29,2,19,13,16,49,63,57,55,9, +9,8,2,1,8,8,4,61,61,45,36,18,15,63,5,6,23,21,3,4,2,38,38,57,56,57,22,5,7,7,7,60, +60,76,51,52,3,122,21,2,3,8,8,10,16,14,14,17,22,3,2,22,1,31,40,91,53,29,30,1,73,72,102,21, +22,3,7,6,10,24,81,58,59,1,24,24,43,17,11,14,19,0,0,0,0,2,0,0,0,16,2,64,1,112,0,44, +0,62,0,0,19,54,55,49,54,55,22,23,22,23,22,23,22,23,22,7,6,7,6,7,6,7,6,7,38,39,38,39, +38,39,7,6,39,38,63,1,39,38,55,54,31,1,54,55,49,23,34,7,49,6,21,20,23,22,51,50,55,54,53,52, +39,38,35,181,29,39,39,48,48,39,39,30,29,20,21,10,8,8,10,21,20,29,30,39,39,48,48,39,39,29,25,18, +90,21,18,15,10,46,46,10,15,18,21,90,18,25,235,14,9,9,9,9,14,14,9,9,9,9,14,1,50,26,18,17, +1,1,17,18,26,25,26,27,21,15,15,21,26,27,26,25,18,17,1,1,17,18,25,21,23,53,10,15,18,21,80,80, +21,18,15,10,53,22,21,82,9,9,14,14,9,9,9,9,14,14,9,9,0,6,0,0,255,192,2,0,1,192,0,8, +0,17,0,44,0,55,0,73,0,91,0,0,55,6,7,38,39,54,55,22,23,51,6,7,38,39,54,55,22,31,1,6, +7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,5,51,54,55,38,39,35, +6,7,22,23,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,6,7,49,6,7,22,23,22,23, +54,55,54,55,38,39,38,39,184,2,22,22,2,2,22,22,2,192,2,22,22,2,2,22,22,2,136,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,192,128,15,1,1,15,128,15,1,1,15,32, +31,20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,192,31,20,20,1,1,20,20,31,31,20,20,1,1,20,20, +31,224,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,32,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,144,1,15,15,1,1,15,15,1,104,1,20,20,31,31,20,20,1,1,20,20, +31,31,20,20,1,144,1,20,20,31,31,20,20,1,1,20,20,31,31,20,20,1,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,44,0,62,0,84,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,55,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49,6,7,22, +23,22,51,50,55,54,53,52,39,38,35,7,22,23,22,55,54,39,38,39,38,39,6,7,6,7,6,23,22,55,54,55, +49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,176,14,9,9,9,9, +14,13,9,9,1,1,9,9,13,160,13,9,9,1,1,9,9,13,14,9,9,9,9,14,76,44,37,9,8,7,4,13, +26,27,35,35,27,27,13,3,7,7,10,37,44,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,16,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9, +193,1,16,3,5,5,10,29,18,18,1,1,18,18,29,10,5,5,4,15,1,0,0,0,0,2,0,0,255,192,1,255, +1,192,0,29,0,34,0,0,1,54,39,49,38,39,33,6,7,6,31,1,21,35,6,7,6,21,22,23,51,54,55,38, +39,38,39,35,53,55,15,1,35,39,33,1,246,15,8,8,23,254,68,23,8,8,15,214,49,20,13,14,1,15,224,15, +1,1,13,14,20,47,213,97,64,170,64,1,42,1,134,18,19,19,2,2,19,19,18,214,176,1,13,14,20,15,1,1, +15,20,14,13,1,176,214,6,64,64,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,106,0,0,37,6,7,49, +6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,23,22,29,1,20,23,22,63, +1,54,31,1,22,51,50,63,1,54,31,1,22,23,6,15,1,6,47,1,38,35,34,15,1,6,29,1,22,23,22,23, +51,22,23,21,20,23,22,51,50,63,1,54,61,1,52,63,1,54,55,52,47,1,38,55,54,31,1,22,55,54,31,1, +38,39,38,39,34,7,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,254,178,10,4,4,12,10,14,8,12,15,4,7,10,7,4,5,6,29,12,1,1,16,36,11,12,32,4,5,12,8, +39,16,1,13,14,20,32,15,1,9,9,14,16,10,25,13,6,6,19,1,8,33,7,7,9,13,14,20,11,7,11,28, +20,53,54,73,42,36,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,193, +18,7,9,41,6,4,9,10,17,9,5,7,3,7,4,5,3,15,6,14,17,5,9,3,4,10,2,7,29,12,20,28, +20,14,13,1,1,15,48,14,9,9,13,34,18,20,12,7,2,1,6,20,12,7,33,8,6,8,3,5,4,17,11,2, +5,67,42,42,1,15,0,0,0,3,0,0,255,192,2,0,1,192,0,26,0,87,0,102,0,0,37,6,7,49,6,7, +49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,23,22,31,1,22,23,21,22,23,22, +23,21,20,23,22,55,54,63,1,54,63,1,54,55,53,52,47,1,38,39,35,34,47,1,38,39,38,63,1,54,31,1, +22,55,54,47,1,38,63,1,54,47,1,34,35,6,7,6,7,49,37,7,6,7,6,31,1,22,31,1,54,53,38,39, +49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,58,9,13,25, +57,29,1,1,15,15,1,9,9,12,25,8,2,7,24,8,23,1,14,4,14,20,44,16,15,34,7,2,5,15,6,10, +10,24,14,8,7,8,14,15,16,15,14,10,3,5,5,71,53,53,21,1,124,26,12,5,5,4,16,6,17,29,2,1, +25,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,64,17,23,7,17,9, +29,40,18,7,10,17,39,12,7,6,3,8,25,11,27,14,4,14,28,8,20,14,4,14,1,7,20,4,7,16,9,3, +5,4,7,4,11,12,11,16,21,20,19,17,20,4,1,40,39,64,37,10,5,11,11,13,50,17,4,8,14,14,56,45, +0,6,0,0,255,192,2,0,1,192,0,26,0,71,0,102,0,114,0,125,0,137,0,0,37,6,7,49,6,7,49,6, +7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,5,23,22,63,1,54,23,22,31,1,22,51,50, +55,54,47,1,38,55,54,59,1,54,63,1,54,47,1,38,55,54,63,1,54,63,1,38,35,6,7,6,7,22,23,49, +5,7,6,47,1,38,39,6,15,1,6,15,1,6,7,6,31,1,22,23,22,63,1,54,31,1,54,55,38,7,49,5, +23,22,55,54,47,1,38,7,6,23,49,55,6,23,22,63,1,54,39,38,15,1,55,7,6,23,22,63,1,54,39,38, +7,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,52,31,13, +9,16,9,11,12,6,9,8,18,11,7,6,3,6,3,7,7,12,3,20,13,11,8,9,16,8,4,4,13,17,12,5, +16,32,38,88,59,59,2,1,4,1,142,15,11,7,2,10,17,19,9,6,2,4,37,13,5,4,5,7,6,14,14,15, +4,16,14,1,57,17,4,5,254,218,32,15,5,2,14,32,15,4,3,14,81,3,14,15,5,8,2,14,15,4,8,85, +16,6,13,14,7,16,6,13,14,7,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,39,7,2,9,15,10,2,3,11,18,15,9,8,11,20,12,9,10,1,17,16,14,14,21,11,12,11,4,5, +2,11,41,12,2,59,59,88,20,19,5,5,2,9,3,15,1,1,15,10,3,1,21,8,14,15,14,13,14,6,6,5, +2,4,9,1,46,73,1,1,68,8,2,14,15,4,8,3,14,15,5,40,15,5,2,14,32,15,4,3,14,32,207,32, +14,7,6,13,32,14,7,6,13,0,0,0,0,11,0,0,255,192,2,0,1,192,0,26,0,34,0,42,0,47,0,52, +0,57,0,62,0,70,0,78,0,96,0,114,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6, +7,6,7,38,39,38,39,38,39,5,35,21,51,50,55,54,55,39,35,21,51,38,39,38,35,7,53,35,21,51,21,53, +35,21,51,39,21,51,53,35,29,1,51,53,35,39,53,35,34,7,6,7,51,21,53,35,22,23,22,59,1,55,34,7, +49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22, +51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,143,55,8,18,13, +13,3,47,8,55,3,13,13,18,24,64,64,64,64,144,64,64,64,64,16,8,18,13,13,3,55,55,3,13,13,18,8, +8,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72, +57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,104,40,11,12,17,56,40,17,12, +11,40,40,40,56,40,40,96,40,40,56,40,40,16,40,11,12,17,56,40,17,12,11,224,9,9,14,14,9,9,9,9, +14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,48,0,66,0,84,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,34,7,49,6,7,22, +23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6,3,20,40, +40,51,52,40,40,19,4,7,6,10,60,72,80,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160,14,9,9,9, +9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,156,9,9,14,14,9,9,9, +9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,48,0,66,0,84,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,6,7,49,6,21,20, +23,22,23,54,55,54,53,52,39,38,39,23,54,55,49,54,53,52,39,38,39,6,7,6,21,20,23,22,23,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6,3,20,40, +40,51,52,40,40,19,4,7,6,10,60,72,80,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9,9,9,14, +14,9,9,9,9,14,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76, +1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,204,1,18,18,27,27,18,18,1,1,18,18, +27,27,18,18,1,128,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,48,0,98,0,147,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,54,53, +38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23, +22,23,22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55, +49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49, +0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6, +3,20,40,40,51,52,40,40,19,4,7,6,10,60,72,29,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2, +1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6, +5,3,1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10, +6,6,3,18,1,100,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1, +12,2,2,4,3,1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1, +1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,0,5,0,0,255,192,2,0,1,192,0,28, +0,62,0,84,0,134,0,183,0,0,1,38,39,49,38,39,52,55,48,49,52,55,54,55,54,55,54,23,22,23,22,23, +20,7,6,7,6,35,49,39,22,23,6,7,6,7,22,23,22,23,50,55,22,21,6,7,6,7,6,7,38,39,38,39, +38,39,54,55,54,55,54,55,49,17,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39, +54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23, +22,23,22,23,22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23, +22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21, +51,49,1,208,20,14,13,1,5,1,7,10,11,8,6,6,12,14,15,1,10,10,15,6,7,208,78,61,2,2,6,1, +1,23,23,33,14,13,21,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,71,60,10,7,6,3,20, +40,40,51,52,40,40,19,4,7,6,10,60,72,29,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3, +3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6,5,3, +1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,1,64,1,13,13,20,8,10,1,1,16, +16,16,10,6,6,15,23,24,16,17,12,12,4,2,128,1,40,5,5,12,18,34,22,22,1,5,47,54,72,57,58,34, +34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,180,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6, +6,3,18,1,100,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12, +2,2,4,3,1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1, +1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,48,0,73,0,97,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,38,7,49,6,15,1, +39,38,7,6,7,6,23,22,31,1,22,63,1,54,39,38,39,49,23,38,39,49,38,7,6,7,6,31,1,22,63,1, +54,55,54,39,38,39,38,15,1,39,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58, +34,34,1,1,0,71,60,10,7,6,3,20,40,40,51,52,40,40,19,4,7,6,10,60,72,57,13,12,12,4,4,17, +13,11,12,4,3,6,7,14,65,14,5,18,3,6,7,14,155,4,12,12,13,14,7,6,3,18,5,14,65,14,7,6, +3,4,12,11,14,16,4,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72, +76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,203,3,6,7,14,16,4,4,7,6,14, +14,11,12,4,17,3,14,66,13,11,12,4,24,14,7,6,3,4,12,11,13,66,14,3,17,4,12,11,14,14,6,7, +4,4,16,0,0,4,0,0,255,192,2,0,1,192,0,26,0,48,0,70,0,93,0,0,55,54,55,49,54,55,49,54, +55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55, +54,55,54,39,38,7,6,7,49,39,38,7,49,6,21,6,31,1,7,6,23,20,23,22,63,1,54,53,52,47,1,5, +52,39,49,38,15,1,6,21,20,31,1,22,55,54,53,52,47,1,55,54,53,49,0,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6,3,20,40,40,51,52,40,40,19,4, +7,6,10,60,72,122,7,5,6,1,4,36,36,4,1,6,5,7,89,8,8,89,1,6,6,5,6,90,8,8,90,6, +5,6,3,36,36,3,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76, +1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,185,3,3,3,7,4,4,43,43,4,4,7, +3,3,3,48,4,9,9,4,48,10,7,3,3,3,48,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,0,0, +0,6,0,0,255,192,2,0,1,192,0,28,0,70,0,93,0,115,0,137,0,157,0,0,1,54,51,49,50,23,22,21, +20,7,6,7,6,7,34,7,34,49,34,55,54,55,52,55,52,49,54,55,49,7,6,7,6,7,6,23,22,55,54,55, +54,55,22,7,6,7,6,7,6,39,54,55,54,55,54,39,38,7,6,7,6,7,38,55,54,55,54,55,54,23,49,23, +38,7,49,34,7,6,7,6,7,6,7,20,23,22,55,54,55,54,55,54,39,49,5,31,1,20,23,22,55,54,63,1, +54,39,38,15,1,6,7,6,23,22,23,49,55,6,23,49,22,63,1,54,55,54,39,38,35,47,1,38,39,38,7,6, +15,2,54,55,54,21,6,7,6,7,6,35,34,39,38,53,52,55,54,55,49,1,171,15,20,20,15,15,14,13,24,27, +20,1,1,2,11,1,3,6,1,6,11,45,2,2,7,3,2,14,13,21,20,31,7,7,41,10,11,62,65,83,84,75, +2,2,7,3,2,14,13,21,20,31,7,7,41,10,11,62,65,83,84,75,34,4,9,8,5,30,50,51,56,8,1,9, +45,48,48,37,36,9,9,19,254,190,57,5,3,5,6,6,3,30,1,6,5,9,98,6,2,2,5,3,4,142,3,6, +6,10,97,7,1,2,5,3,4,56,5,1,3,5,6,6,3,29,184,30,20,10,3,7,7,10,15,20,20,15,15,14, +12,26,1,178,14,15,15,20,20,15,10,7,7,2,1,10,18,29,1,1,1,26,12,19,7,8,30,20,21,13,14,2, +3,7,2,2,75,84,83,65,62,11,10,41,7,7,32,19,21,13,14,2,3,7,2,2,75,84,83,65,62,11,10,41, +169,9,1,9,55,51,51,29,5,9,9,4,18,9,9,36,37,47,48,46,87,5,56,4,3,5,2,1,7,97,10,6, +6,3,29,3,6,6,5,3,1,99,9,5,6,1,30,3,6,6,5,3,5,57,4,3,5,2,2,6,98,220,7,3, +1,11,20,30,25,13,14,15,15,20,20,15,11,6,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,49,0,81, +0,113,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,7, +54,39,49,38,7,6,7,38,39,38,7,6,23,22,23,22,23,54,55,54,55,49,39,15,1,6,7,6,31,1,7,6, +23,22,63,1,23,22,55,54,53,39,55,54,39,38,47,2,38,35,34,7,49,51,15,1,6,7,6,31,1,7,6,23, +22,63,1,23,22,55,54,53,39,55,54,39,38,47,2,38,35,34,7,49,2,0,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,72,57,58,34,34,1,105,4,7,6,10,60,72,71,60,10,7,6,3,20,40,40,51,52, +40,40,19,254,17,38,5,1,2,4,28,7,2,5,4,4,33,35,4,4,4,7,27,4,1,3,4,38,17,2,6,4, +2,192,17,38,5,1,2,4,28,7,2,5,4,4,34,34,4,4,4,7,27,4,1,3,4,38,17,2,5,5,2,192, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76,10,6,6,3,18,1,1, +18,3,6,6,10,45,27,27,1,1,27,27,45,207,34,5,1,5,4,4,27,37,5,3,3,2,18,18,2,3,3,5, +37,27,3,5,5,1,5,34,5,5,34,5,1,5,4,4,27,37,5,3,3,2,18,18,2,3,3,5,37,27,3,5, +5,1,5,34,5,5,0,0,0,6,0,0,255,192,2,128,1,192,0,48,0,71,0,120,0,170,0,197,0,232,0,0, +37,6,7,49,6,7,38,39,38,39,54,55,54,55,54,55,54,55,48,49,54,39,38,7,6,7,54,55,54,55,22,23, +22,23,38,39,38,7,6,23,22,23,22,23,22,23,22,23,49,39,54,39,49,38,7,6,7,38,39,38,7,6,23,22, +23,22,23,54,55,54,55,49,39,22,55,54,53,52,39,38,39,6,7,6,7,22,23,22,55,49,51,52,49,34,51,52, +55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,23,54,53,38,39,38,39, +6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21, +22,23,48,49,48,21,51,49,22,55,49,5,6,7,49,6,7,6,7,6,39,38,39,38,53,52,55,54,55,54,55,54, +55,54,55,50,7,49,5,34,57,1,38,53,48,53,38,39,38,39,52,51,50,51,50,21,22,23,22,23,22,23,22,23, +22,21,20,7,6,7,6,39,49,2,37,33,60,60,77,75,60,60,33,7,6,12,5,5,3,7,3,2,14,13,21,10, +16,16,69,69,98,99,70,69,16,16,10,21,13,14,2,1,9,3,5,5,12,6,7,78,4,7,6,10,60,72,71,60, +10,7,6,3,20,40,40,51,52,40,40,19,189,3,6,4,16,15,25,23,15,17,1,1,6,5,3,1,1,1,2,1, +3,3,2,2,14,13,15,14,2,2,3,3,1,1,1,1,169,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1, +2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,254,167,2,6,6,11,1,1,15,18,18,14, +14,14,6,14,14,16,10,9,8,7,9,1,1,200,1,2,11,6,7,2,9,1,1,1,8,8,7,7,16,14,15,6, +14,14,15,17,18,14,77,64,38,38,1,1,38,38,64,4,6,14,13,13,14,30,18,21,13,14,2,2,3,95,60,61, +2,2,61,60,95,3,2,2,14,13,21,18,30,14,13,13,14,6,4,39,10,6,6,3,18,1,1,18,3,6,6,10, +45,27,27,1,1,27,27,45,103,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4, +2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,3,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1, +1,1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,4,1,22,18,27,27,12,2,1,12,1,1, +13,15,19,19,14,7,5,5,4,1,2,1,1,9,87,1,1,1,12,27,27,18,9,1,1,1,1,1,4,5,5,7, +14,19,19,15,13,1,1,12,0,4,0,0,255,192,2,0,1,192,0,45,0,63,0,81,0,108,0,0,1,22,23,49, +22,23,49,22,23,6,7,6,7,54,61,1,54,55,54,39,38,7,6,7,38,39,38,7,6,23,22,23,21,20,23,38, +39,38,39,54,55,54,55,54,55,49,7,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49, +6,7,22,23,22,51,50,55,54,53,52,39,38,35,3,38,39,49,38,39,53,54,55,51,22,23,22,51,50,55,54,55, +51,22,23,21,6,7,6,7,49,1,0,72,57,58,34,34,1,1,48,48,77,14,37,18,4,7,6,10,60,72,71,60, +10,7,6,3,18,37,15,78,48,48,1,1,34,34,58,57,72,80,14,9,9,9,9,14,13,9,9,1,1,9,9,13, +160,13,9,9,1,1,9,9,13,14,9,9,9,9,14,80,27,18,18,1,2,25,2,18,5,3,9,8,4,5,18,2, +25,2,1,18,18,27,1,192,1,34,34,58,57,72,86,65,65,27,23,28,47,27,42,10,6,6,3,18,1,1,18,3, +6,6,10,42,27,47,28,23,27,65,65,86,72,57,58,34,34,1,240,9,9,14,14,9,9,9,9,14,14,9,9,64, +9,9,14,14,9,9,9,9,14,14,9,9,254,176,1,18,18,27,45,25,2,1,18,9,9,18,1,2,25,45,27,18, +18,1,0,0,0,4,0,0,255,192,2,0,1,192,0,45,0,67,0,89,0,116,0,0,1,22,23,49,22,23,49,22, +23,6,7,6,7,54,61,1,54,55,54,39,38,7,6,7,38,39,38,7,6,23,22,23,21,20,23,38,39,38,39,54, +55,54,55,54,55,49,7,23,7,6,23,20,23,22,63,1,54,53,52,47,1,38,7,6,21,6,23,49,23,6,21,49, +20,31,1,22,55,54,53,52,47,1,55,54,53,52,39,38,15,1,3,38,39,49,38,39,53,54,55,51,22,23,22,51, +50,55,54,55,51,22,23,21,6,7,6,7,49,1,0,72,57,58,34,34,1,1,48,48,77,14,37,18,4,7,6,10, +60,72,71,60,10,7,6,3,18,37,15,78,48,48,1,1,34,34,58,57,72,137,36,36,4,1,6,5,7,89,8,8, +89,7,5,6,1,4,170,8,8,90,6,5,6,3,36,36,3,6,5,6,90,33,27,18,18,1,2,25,2,18,5,3, +9,8,4,5,18,2,25,2,1,18,18,27,1,192,1,34,34,58,57,72,86,65,65,27,23,28,47,27,42,10,6,6, +3,18,1,1,18,3,6,6,10,42,27,47,28,23,27,65,65,86,72,57,58,34,34,1,149,43,43,4,4,7,3,3, +3,48,4,9,9,4,48,3,3,3,7,4,4,30,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,7,3,3, +3,48,254,179,1,18,18,27,45,25,2,1,18,9,9,18,1,2,25,45,27,18,18,1,0,5,0,0,255,192,2,0, +1,192,0,8,0,53,0,70,0,88,0,114,0,0,37,54,55,22,23,6,7,38,39,3,38,39,49,38,39,54,55,54, +55,54,55,22,23,22,23,22,23,6,7,6,7,54,61,1,54,55,54,39,38,7,6,7,38,39,38,7,6,23,22,23, +21,22,23,49,19,54,39,38,35,34,7,6,23,22,55,54,51,50,23,22,55,23,54,55,49,54,55,38,39,38,39,6, +7,6,7,22,23,22,23,7,21,6,7,6,7,38,39,38,39,53,54,55,51,22,23,22,51,50,55,54,55,51,22,23, +49,1,56,2,22,22,2,2,22,22,2,137,78,48,48,1,1,34,34,58,57,72,72,57,58,34,34,1,1,48,48,77, +14,37,18,4,7,6,10,60,72,71,60,10,7,6,3,18,36,1,15,43,11,8,25,36,36,25,7,10,13,10,14,21, +21,14,10,13,118,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,18,18,27,27,18,18,1,2,25, +2,18,5,3,9,8,4,5,18,2,25,2,240,22,2,2,22,22,2,2,22,254,221,27,65,65,86,72,57,58,34,34, +1,1,34,34,58,57,72,86,65,65,27,23,28,47,27,42,10,6,6,3,18,1,1,18,3,6,6,10,42,27,47,28, +23,1,6,10,13,30,30,13,10,7,10,18,18,11,8,35,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1, +131,45,27,18,18,1,1,18,18,27,45,25,2,1,18,9,9,18,1,2,25,0,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,48,0,65,0,83,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,55,54,39, +38,35,34,7,6,23,22,55,54,51,50,23,22,55,7,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51, +0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6, +3,20,40,40,51,52,40,40,19,4,7,6,10,60,72,138,11,8,25,36,36,25,8,11,13,10,14,21,21,14,10,13, +218,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,95,10,13, +30,30,13,10,7,10,18,18,11,8,3,9,9,14,14,9,9,9,9,14,14,9,9,0,0,6,0,0,0,32,1,192, +1,96,0,21,0,43,0,65,0,87,0,109,0,131,0,0,19,20,7,49,6,43,1,34,39,38,61,1,52,55,54,59, +1,50,23,22,29,2,20,7,49,6,43,1,34,39,38,61,1,52,55,54,59,1,50,23,22,29,1,55,52,55,49,54, +59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,23,20,7,49,6,43,1,34,39,38,61,1,52,55,54, +59,1,50,23,22,29,1,55,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,23,20,7, +49,6,43,1,34,39,38,61,1,52,55,54,59,1,50,23,22,29,1,128,12,11,17,48,17,11,12,12,11,17,48,17, +11,12,12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17,11,12,12,11,17,48,17,11,12,128, +12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17,11,12,12,11,17,48,17,11,12,128,12,11, +17,48,17,11,12,12,11,17,48,17,11,12,1,8,17,11,12,12,11,17,48,17,11,12,12,11,17,48,192,17,11,12, +12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11, +17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48, +17,11,12,12,11,17,48,0,0,6,0,0,255,224,1,64,1,160,0,21,0,43,0,65,0,87,0,109,0,131,0,0, +55,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59,2,50,23,49,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,59,1,39,34,39,49,38,61,1,52,55,54,59,1,50,23,22,29,1,20,7,6,43, +1,55,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59,1,39,34,39,49,38,61,1,52,55, +54,59,1,50,23,22,29,1,20,7,6,43,1,55,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55, +54,59,1,88,17,11,12,12,11,17,48,17,11,12,12,11,17,48,192,17,11,12,12,11,17,48,17,11,12,12,11,17, +48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240, +17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,96,12,11, +17,48,17,11,12,12,11,17,48,17,11,12,12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17, +11,12,12,11,17,48,17,11,12,128,12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17,11,12, +12,11,17,48,17,11,12,128,12,11,17,48,17,11,12,12,11,17,48,17,11,12,0,0,0,3,0,0,255,224,2,0, +1,160,0,36,0,57,0,78,0,0,1,6,7,49,6,7,49,6,7,21,22,23,50,55,54,61,1,54,55,54,55,22, +23,22,23,21,22,23,54,55,53,38,39,38,39,38,39,3,35,6,7,6,7,21,22,23,22,23,51,50,55,54,61,1, +52,39,38,35,51,35,34,7,6,29,1,20,23,22,59,1,54,55,54,55,53,38,39,38,39,1,0,72,57,57,33,34, +3,2,21,10,7,8,2,59,59,88,88,59,59,2,2,22,22,2,3,34,33,57,57,72,96,16,27,18,18,1,1,18, +18,27,16,14,9,9,9,9,14,208,16,14,9,9,9,9,14,16,27,18,18,1,1,18,18,27,1,160,1,35,35,58, +58,69,104,22,2,7,7,10,104,88,59,59,2,2,59,59,88,104,22,2,2,22,105,69,57,58,35,35,1,255,0,1, +18,18,27,64,27,18,18,1,9,9,14,128,14,9,9,9,9,14,128,14,9,9,1,18,18,27,64,27,18,18,1,0, +0,3,0,0,255,192,2,0,1,192,0,21,0,78,0,100,0,0,55,52,39,49,38,43,1,6,7,6,7,21,22,23, +22,23,51,50,55,54,53,39,55,6,7,49,6,7,49,6,7,21,22,23,50,55,54,61,1,54,55,54,55,22,23,22, +23,21,20,7,6,43,1,38,39,35,34,7,6,7,6,23,22,23,51,54,55,51,54,55,54,55,53,38,39,38,39,38, +39,19,54,55,49,54,55,53,38,39,38,39,35,34,7,6,29,1,20,23,22,59,1,191,9,9,14,15,27,18,18,1, +1,18,18,27,16,14,9,9,1,65,72,57,57,33,34,3,2,21,10,7,8,2,59,59,88,88,59,59,2,12,11,17, +111,13,28,30,18,14,13,4,4,14,14,22,33,28,13,111,37,25,25,1,3,34,33,57,57,72,112,27,18,18,1,1, +18,18,27,16,14,9,9,9,9,14,16,224,14,9,9,1,18,18,27,48,27,18,18,1,9,9,14,112,224,1,35,35, +58,58,69,40,22,2,7,7,10,40,88,59,59,2,2,59,59,88,144,17,11,12,23,1,11,10,17,24,17,16,1,1, +23,1,25,25,37,144,69,58,58,35,35,1,254,144,1,18,18,27,48,27,18,18,1,9,9,14,112,14,9,9,0,0, +0,3,0,16,255,192,2,47,1,192,0,28,0,33,0,46,0,0,55,53,54,55,37,54,51,50,31,1,22,21,20,7, +3,6,7,35,7,6,35,34,47,1,38,53,52,63,1,37,39,7,23,55,1,55,23,7,6,43,1,38,39,53,52,55, +49,143,1,20,1,17,10,15,18,13,54,12,7,202,15,23,73,24,10,13,13,10,50,10,10,24,1,90,29,215,85,159, +254,46,63,71,31,7,10,69,22,2,7,128,72,24,14,202,8,13,54,13,18,13,12,254,238,18,1,25,10,10,50,10, +13,13,10,25,220,29,158,85,214,254,146,63,71,30,8,2,22,5,10,7,0,8,0,0,255,192,2,0,1,192,0,18, +0,37,0,62,0,75,0,88,0,101,0,114,0,132,0,0,1,22,23,51,54,53,38,39,38,39,38,39,35,6,21,22, +23,22,23,35,22,23,51,54,53,38,39,38,39,38,39,35,6,21,22,23,22,31,1,35,39,38,43,1,6,7,6,7, +21,22,23,22,23,33,54,55,54,55,53,52,39,38,35,5,6,7,35,38,39,53,54,55,51,22,23,21,51,6,7,35, +38,39,53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51, +22,23,21,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,158,2,13,16,16,6,43,27,5,3, +13,16,16,8,42,27,5,108,2,13,16,16,6,43,27,5,3,13,16,16,8,42,27,5,174,224,111,18,20,43,27,18, +18,1,1,18,18,27,1,128,27,18,18,1,9,9,14,254,160,1,7,16,7,1,1,7,16,7,1,96,1,7,16,7, +1,1,7,16,7,1,96,1,7,16,7,1,1,7,16,7,1,96,1,7,16,7,1,1,7,16,7,1,254,160,27,18, +18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,14,13,1,2,16,61,36,23,40,13,1,2,16,61,37,22,40, +13,1,2,16,61,36,23,40,13,1,2,16,61,37,22,40,78,83,13,1,18,18,27,224,27,18,18,1,1,18,18,27, +160,14,9,9,184,7,1,1,7,112,7,1,1,7,112,7,1,1,7,112,7,1,1,7,112,7,1,1,7,112,7,1, +1,7,112,7,1,1,7,112,7,1,1,7,112,1,56,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0, +0,8,0,0,255,192,2,0,1,192,0,41,0,54,0,67,0,80,0,93,0,106,0,119,0,138,0,0,1,50,23,49, +22,21,20,7,6,35,17,50,23,22,21,20,7,6,43,1,53,35,21,35,34,39,38,53,52,55,54,51,17,34,39,38, +53,52,55,54,51,33,5,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21, +55,6,7,21,22,23,51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,7,6,7,49,6,7,6,23,22,59,1,50, +55,54,39,38,39,38,39,1,224,14,9,9,9,9,14,14,9,9,9,9,14,176,96,176,14,9,9,9,9,14,14,9, +9,9,9,14,1,192,254,144,15,1,1,15,32,15,1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,144,15,1, +1,15,32,15,1,1,15,32,254,240,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,112, +1,15,32,15,1,1,15,32,15,1,96,34,25,26,9,1,6,7,10,144,10,7,6,2,9,25,25,34,1,192,9,9, +14,14,9,9,254,128,9,9,14,14,9,9,64,64,9,9,14,14,9,9,1,128,9,9,14,14,9,9,96,1,15,32, +15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1, +1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1, +20,19,32,10,7,7,7,7,10,32,19,20,1,0,0,0,0,5,0,0,255,192,2,128,1,192,0,26,0,35,0,62, +0,75,0,86,0,0,1,22,23,21,22,23,51,54,55,53,52,39,38,39,38,39,53,38,39,35,6,7,21,20,23,22, +23,7,6,7,22,23,51,39,38,7,1,38,61,1,38,39,35,6,7,21,20,23,22,23,22,29,1,22,23,51,54,55, +53,52,39,38,39,3,34,35,49,34,35,23,22,59,1,39,38,35,51,35,23,22,59,1,54,55,53,38,39,1,188,35, +1,1,7,48,7,1,15,15,26,38,2,1,7,48,7,1,17,16,27,249,105,90,128,151,89,113,24,36,1,102,9,1, +7,48,7,1,29,32,17,18,1,7,48,7,1,23,23,41,192,28,29,28,3,118,19,29,88,117,20,29,255,184,117,21, +29,17,22,2,2,22,1,11,26,43,30,7,1,1,7,30,33,28,28,19,27,45,62,7,1,1,7,66,33,28,27,19, +178,17,56,79,1,131,27,5,1,16,6,11,62,7,1,1,7,62,36,20,21,32,33,38,30,7,1,1,7,30,50,42, +43,28,254,247,138,22,138,22,138,22,2,22,112,22,2,0,0,4,0,0,255,192,2,0,1,192,0,26,0,128,0,146, +0,164,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5, +38,39,6,7,6,23,49,21,51,21,50,23,20,51,22,23,20,51,22,23,22,23,20,7,6,21,6,7,6,7,34,21, +6,35,21,35,57,1,6,21,20,23,49,21,50,21,50,23,20,51,22,23,22,23,22,23,20,7,6,21,6,7,6,7, +34,21,6,35,20,35,53,21,6,23,22,51,50,55,54,55,54,55,38,39,38,39,34,39,38,39,54,55,54,55,54,55, +38,39,38,39,49,39,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38, +35,34,7,6,7,22,23,22,51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,32,21,27,6,2,1,5,1,1,2,1,4,6,1,5,4,2,1,2,1,4,6,6,4,1,2,1,1,4, +4,1,1,2,1,4,6,6,4,2,1,2,1,4,6,6,4,1,2,1,1,5,1,2,6,27,21,10,7,6,1,1, +6,7,10,1,2,3,3,5,4,10,7,6,1,1,6,7,10,112,13,9,9,1,1,9,9,13,14,9,9,9,9,14, +160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,44,11,1,1,4,7,2,1,1,1,1,3,4,1,4,5,5,4,2,4,1,2,5,5, +4,3,1,1,1,2,5,5,1,1,1,1,1,3,4,5,5,5,3,3,4,1,2,5,5,4,3,1,1,1,1,1, +3,6,5,11,6,8,7,12,9,8,9,5,1,2,2,1,2,6,8,7,12,9,8,9,5,124,9,9,14,14,9,9, +9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,128,0,178,0,227,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,6,7,6,23,49,21,51,21,50,23,20,51,22,23,20,51,22,23,22,23,20,7,6,21,6,7, +6,7,34,21,6,35,21,35,57,1,6,21,20,23,49,21,50,21,50,23,20,51,22,23,22,23,22,23,20,7,6,21, +6,7,6,7,34,21,6,35,20,35,53,21,6,23,22,51,50,55,54,55,54,55,38,39,38,39,34,39,38,39,54,55, +54,55,54,55,38,39,38,39,49,39,54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55, +52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53, +38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23, +22,23,22,21,22,23,48,49,48,21,51,49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,32,21,27,6,2,1,5,1,1,2,1,4,6,1,5,4,2,1,2,1,4,6,6,4,1,2, +1,1,4,4,1,1,2,1,4,6,6,4,2,1,2,1,4,6,6,4,1,2,1,1,5,1,2,6,27,21,10,7, +6,1,1,6,7,10,1,2,3,3,5,4,10,7,6,1,1,6,7,10,61,5,1,16,15,24,24,15,16,1,6,5, +3,1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24, +24,15,16,1,6,5,3,1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,44,11,1,1,4,7,2,1,1,1,1, +3,4,1,4,5,5,4,2,4,1,2,5,5,4,3,1,1,1,2,5,5,1,1,1,1,1,3,4,5,5,5,3, +3,4,1,2,5,5,4,3,1,1,1,1,1,3,6,5,11,6,8,7,12,9,8,9,5,1,2,2,1,2,6,8, +7,12,9,8,9,5,68,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1, +1,12,2,2,4,3,1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1, +1,1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,5,0,0,255,192,2,0,1,192,0,37, +0,139,0,157,0,174,0,197,0,0,37,38,39,49,38,7,6,7,6,31,1,22,23,6,35,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,20,7,38,7,49,39,38,39,38,39,38,39,6,7,6,23,49,21,50,21,50, +23,20,51,22,23,20,51,22,23,22,23,20,7,6,21,6,7,6,7,34,21,6,35,20,35,57,1,6,21,20,23,49, +21,51,21,50,23,20,51,22,23,22,23,22,23,20,7,6,21,6,7,6,7,34,21,6,35,20,35,57,1,6,23,22, +51,50,55,54,55,54,55,38,39,38,39,34,39,38,39,54,55,54,55,54,55,21,39,50,55,49,54,53,52,39,38,35, +34,7,6,7,22,23,22,51,55,54,39,38,35,34,7,6,23,22,55,54,51,50,23,22,55,23,55,54,23,22,23,22, +7,6,15,1,6,47,1,38,55,54,55,54,23,22,31,1,1,206,11,24,24,29,30,14,15,7,23,3,8,47,53,72, +57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,14,17,19,166,1,6,7,10,21,27,6,2,1,5,1, +1,2,1,4,6,1,5,4,2,1,2,1,4,6,6,4,1,2,1,1,4,4,1,1,2,1,4,6,6,4,2,1, +2,1,4,6,6,4,1,2,1,1,5,1,2,6,27,21,10,7,6,1,1,6,7,10,1,2,3,3,5,4,10,7, +6,1,120,14,9,9,9,9,14,13,9,9,1,1,9,9,13,218,11,8,25,36,36,25,8,11,13,10,14,21,21,14, +10,13,45,21,17,14,15,5,4,9,8,17,85,15,5,23,4,9,8,17,17,14,15,4,6,113,26,13,13,8,9,26, +27,30,89,12,8,20,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,44,40,8,3,3,11,7,9, +5,11,1,1,4,7,2,1,1,1,1,3,4,1,4,5,5,4,2,4,1,2,5,5,4,3,1,1,1,2,5,5, +1,1,1,1,1,3,4,5,5,5,4,2,4,1,2,5,5,4,3,1,1,1,3,6,5,11,6,8,7,12,9,8, +9,5,1,2,2,1,2,6,8,7,12,1,92,9,9,14,14,9,9,9,9,14,14,9,9,3,10,13,30,30,13,10, +7,10,18,18,11,8,136,5,5,9,9,17,18,16,15,5,24,2,14,89,18,15,15,5,5,9,9,17,21,0,0,0, +0,4,0,0,255,192,2,0,1,192,0,26,0,46,0,64,0,82,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54,55,54,39,38,35,33,34,7,6,23,22,23, +22,23,49,3,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34, +7,6,7,22,23,22,51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,0,58,43,43,15,3,7,6,11,254,236,11,6,7,3,15,43,43,58,80,13,9,9,1,1,9,9,13,14,9,9, +9,9,14,160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,1,16,9,9,14,14, +9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,46,0,96,0,145,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,5,54,55,49,54,55,54,39,38,35,33,34,7,6,23,22,23,22,23,49,39,54,53,38,39, +38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23, +22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51, +52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,0,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,58,43,43,15,3,7,6, +11,254,236,11,6,7,3,15,43,43,58,29,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3,3,2, +2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6,5,3,1,1, +1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58,34,34,1,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,216,2,6,28,21, +21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1, +4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12, +2,2,4,3,1,1,1,1,1,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,46,0,68,0,91,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54, +55,54,39,38,35,33,34,7,6,23,22,23,22,23,49,3,38,7,49,6,21,6,31,1,7,6,23,20,23,22,63,1, +54,53,52,47,1,5,52,39,49,38,15,1,6,21,20,31,1,22,55,54,53,52,47,1,55,54,53,49,0,1,34,34, +58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,58,43,43,15,3,7,6,11,254, +236,11,6,7,3,15,43,43,58,122,7,5,6,1,4,36,36,4,1,6,5,7,89,8,8,89,1,6,6,5,6,90, +8,8,90,6,5,6,3,36,36,3,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,1,61,3,3,3,7,4,4,43,43,4,4,7,3, +3,3,48,4,9,9,4,48,10,7,3,3,3,48,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,0,0,0, +0,4,0,0,255,192,2,0,1,192,0,26,0,46,0,64,0,82,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54,55,54,39,38,35,33,34,7,6,23,22,23, +22,23,49,3,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,54,51,49,50,23,22,55,54,39,38, +35,34,7,6,23,22,55,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,0,58,43,43,15,3,7,6,11,254,236,11,6,7,3,15,43,43,58,80,13,9,9,1,1,9,9,13,14,9,9, +9,9,14,125,14,21,21,14,10,13,11,8,25,36,36,25,8,11,13,10,192,72,57,58,34,34,1,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,1,16,9,9, +14,14,9,9,9,9,14,14,9,9,58,18,18,11,8,10,13,30,30,13,10,7,10,0,0,5,0,0,255,192,2,128, +1,192,0,63,0,77,0,82,0,95,0,108,0,0,37,22,21,49,22,21,20,7,6,7,38,39,38,39,52,55,52,53, +35,22,21,6,7,6,7,38,39,38,39,52,55,35,34,39,38,53,17,38,39,35,34,39,38,53,52,55,54,59,1,22, +23,22,23,17,33,50,23,22,21,20,7,6,43,1,3,22,23,49,22,23,17,35,17,54,55,54,55,51,7,51,53,35, +21,7,35,34,39,38,61,1,52,55,54,59,1,21,37,21,20,7,6,43,1,53,51,50,23,22,21,2,29,1,2,14, +14,20,20,14,13,1,2,197,3,1,13,14,20,20,14,13,1,3,67,14,9,9,1,15,16,14,9,9,9,9,14,32, +27,18,18,1,1,224,14,9,9,9,9,14,67,109,20,14,13,1,192,1,13,14,20,96,96,96,96,80,32,14,9,9, +9,9,14,32,1,64,9,9,14,32,32,14,9,9,0,2,3,5,6,20,14,13,1,1,13,14,20,8,6,1,1,8, +8,20,14,13,1,1,13,14,20,8,8,9,9,14,1,80,15,1,9,9,14,14,9,9,1,18,18,27,254,192,9,9, +14,14,9,9,1,192,1,13,14,20,254,240,1,16,20,14,13,1,96,48,48,224,9,9,14,160,14,9,9,224,192,160, +14,9,9,224,9,9,14,0,0,4,0,0,255,200,2,64,1,192,0,27,0,42,0,58,0,70,0,0,37,38,39,49, +38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,6,7,6,35,34,39,49,23,17,54,55,52,63,1,54, +23,22,23,17,6,15,1,1,55,22,23,22,23,21,7,6,39,38,39,17,54,55,49,1,39,53,22,23,22,51,50,55, +54,55,21,1,17,17,25,24,20,19,1,1,35,34,50,52,34,34,1,1,19,19,25,24,17,6,9,9,6,143,5,5, +1,116,13,9,10,1,1,14,145,254,111,123,4,8,5,5,127,12,10,10,1,1,14,1,113,193,34,23,17,23,23,17, +23,33,137,20,35,34,37,37,28,51,34,34,1,1,34,34,51,28,37,37,34,35,20,8,8,192,1,47,10,10,2,2, +46,5,7,7,13,254,241,16,6,58,1,60,49,22,20,10,10,252,51,3,6,7,13,1,14,17,6,254,195,55,194,49, +27,20,20,27,49,249,0,0,0,5,0,0,255,200,2,64,1,192,0,26,0,44,0,59,0,75,0,88,0,0,1,6, +7,49,6,7,49,6,7,6,35,34,39,38,39,38,39,38,39,54,55,54,55,22,23,22,23,7,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,23,52,63,1,54,23,22,23,17,6,15,1,17,54,55,33,22,23,21,7,6, +39,38,39,17,54,63,1,22,23,49,23,54,55,21,39,53,22,23,22,51,50,55,49,1,152,1,19,19,25,24,17,6, +9,9,6,17,24,25,19,19,1,1,34,34,51,51,34,34,1,120,17,11,12,12,11,17,17,11,12,12,11,17,138,1, +116,13,9,10,1,1,14,145,5,5,254,236,5,5,127,12,10,10,1,1,14,123,4,8,178,23,33,192,33,23,17,23, +23,17,1,72,28,37,37,34,35,20,8,8,20,35,34,37,37,28,51,34,34,1,1,34,34,51,32,12,11,17,17,11, +12,12,11,17,17,11,12,28,2,2,46,5,7,7,13,254,241,16,6,58,1,47,10,10,10,10,252,51,3,6,7,13, +1,14,17,6,49,22,20,151,27,49,249,55,194,49,27,20,20,0,0,0,0,2,0,0,255,192,1,252,1,188,0,27, +0,41,0,0,1,7,39,55,39,38,15,1,6,39,38,63,1,54,51,50,31,1,55,54,51,50,23,22,21,20,7,49, +7,6,15,1,6,39,38,63,1,54,63,1,23,7,1,224,164,130,116,14,16,17,87,16,17,14,14,86,22,29,29,22, +13,15,28,37,36,28,28,28,250,74,102,25,13,9,9,2,5,21,74,64,130,64,1,32,166,130,116,13,14,14,85,15, +15,16,17,86,21,21,13,15,27,27,28,37,36,28,253,73,21,5,2,10,8,13,25,102,73,65,130,65,0,4,0,0, +255,192,1,255,1,192,0,11,0,29,0,60,0,72,0,0,19,39,38,43,1,6,7,6,31,1,54,55,23,6,7,49, +6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,7,23,22,7,6,47,1,7,6,39,38,53,55,39,38,55,54, +63,2,54,51,50,31,2,22,23,22,7,19,35,34,15,1,22,23,55,54,39,38,39,224,75,4,9,120,10,4,4,5, +111,46,64,32,75,49,50,2,2,50,49,75,75,49,50,2,2,50,49,75,93,38,8,1,5,5,7,47,47,7,5,5, +9,38,5,3,2,7,52,24,3,7,7,3,24,52,7,2,3,5,146,119,9,5,74,64,46,111,5,4,4,11,1,61, +123,8,1,8,8,8,159,42,11,29,2,50,49,75,75,49,50,2,2,50,49,75,75,49,50,2,157,37,53,7,4,4, +3,25,25,3,4,4,7,53,37,5,7,6,1,8,47,7,7,47,8,1,6,7,5,1,61,8,122,11,42,159,8,7, +8,1,0,0,0,3,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,0,37,6,7,49,6,7,49,6,7,38, +39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,34,7,49,6,7,22,23,22,51,50,55,54,53,52, +39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,2,0,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,176,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160, +14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,80,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,37,0,62,0,88,0,0,55,54,55,49,54,55,49,54, +55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,6,7,22,23,51,54,55,38,39,35,39,22, +21,20,7,6,35,34,39,38,53,52,55,6,7,22,23,22,23,54,55,54,55,38,39,23,54,55,49,54,55,38,39,22, +21,20,7,6,35,34,39,38,53,52,55,6,7,22,23,22,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,192,15,1,1,15,128,15,1,1,15,128,6,6,9,9,14,14,9,9,6,36,2, +1,18,18,27,27,18,18,1,2,36,166,27,18,18,1,2,36,6,9,9,14,14,9,9,6,36,2,1,18,18,27,192, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,112,1,15,15,1,1,15,15, +1,202,8,10,14,9,9,9,9,14,10,8,16,42,27,18,18,1,1,18,18,27,42,16,122,1,18,18,27,42,16,8, +10,14,9,9,9,9,14,10,8,16,42,27,18,18,1,0,0,3,0,0,255,192,1,128,1,192,0,11,0,22,0,42, +0,0,19,54,31,1,22,23,19,33,19,54,63,1,3,6,7,22,23,51,54,55,38,39,35,23,50,23,49,22,21,20, +7,6,35,33,34,39,38,53,52,55,54,51,33,181,11,11,80,4,1,40,254,240,40,1,4,80,29,22,2,2,22,80, +22,2,2,22,80,200,14,9,9,9,9,14,254,192,14,9,9,9,9,14,1,64,1,187,10,10,80,4,5,254,190,1, +66,5,4,80,254,245,2,22,22,2,2,22,22,2,176,9,9,14,14,9,9,9,9,14,14,9,9,0,0,2,0,0, +255,192,2,0,1,191,0,10,0,41,0,0,1,54,39,49,38,39,38,15,1,51,55,7,33,6,7,21,22,31,1,22, +23,22,23,6,7,22,23,51,54,53,38,39,54,55,54,63,1,54,55,53,38,39,1,246,12,2,3,17,19,18,204,152, +99,6,254,32,15,1,1,15,15,1,33,33,54,19,6,1,16,224,16,6,19,54,33,32,1,17,15,1,1,15,1,131, +14,17,17,9,9,12,152,98,130,1,15,32,15,1,1,62,47,47,22,26,33,17,2,2,17,33,26,22,47,47,62,1, +1,15,32,14,2,0,0,0,0,2,0,0,255,192,2,0,1,192,0,21,0,66,0,0,19,54,55,49,54,55,33,22, +23,22,23,21,6,7,6,7,33,38,39,38,39,53,19,52,55,49,54,51,53,54,55,54,55,51,50,55,54,61,1,22, +23,22,23,21,6,7,6,7,35,6,7,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,0,1,18,18,27, +1,32,27,18,18,1,1,18,18,27,254,224,27,18,18,1,160,9,9,14,1,22,23,34,144,14,9,9,28,18,17,1, +1,27,27,41,144,15,1,14,9,9,9,9,14,64,14,9,9,1,128,27,18,18,1,1,18,18,27,64,27,18,18,1, +1,18,18,27,64,254,224,14,9,9,16,34,23,22,1,9,9,14,123,11,24,24,32,32,41,27,27,1,1,15,16,9, +9,14,128,14,9,9,9,9,14,128,0,0,0,9,0,0,255,192,1,192,1,192,0,5,0,11,0,22,0,28,0,49, +0,60,0,78,0,84,0,94,0,0,55,22,23,38,39,35,53,51,54,55,6,7,23,54,55,49,54,55,35,22,23,22, +23,55,22,23,51,38,39,55,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,35,38,39, +54,55,51,22,23,6,7,39,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,55,54,55,35,6,7,39, +51,38,39,38,39,6,7,6,7,130,9,44,12,2,39,39,2,12,43,10,94,6,8,7,2,46,2,7,8,6,41,12, +2,39,9,44,119,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,48,224,15,1,1,15,224, +15,1,1,15,112,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,41,44,9,39,2,12,64,46,2,7,8, +6,6,8,7,2,240,49,21,29,41,32,41,29,21,49,111,6,20,20,33,33,20,20,6,181,29,41,49,21,106,1,18, +18,27,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,254,96,1,15,15,1,1,15,15,1,96,1,36,37, +54,54,37,36,1,1,36,37,54,54,37,36,1,42,21,49,41,29,102,33,20,20,6,6,20,20,33,0,0,2,0,2, +255,194,2,0,1,192,0,11,0,39,0,0,1,54,55,22,23,22,23,6,15,1,39,55,3,7,6,15,1,55,22,51, +50,55,54,53,52,39,38,35,34,7,6,21,20,23,7,55,54,63,1,23,1,118,23,36,34,22,22,1,1,26,207,86, +182,119,19,7,27,178,96,4,4,14,9,9,9,9,14,14,9,9,1,95,49,9,27,83,85,1,165,26,1,1,22,22, +34,36,24,180,85,207,254,197,83,27,9,49,95,1,9,9,14,14,9,9,9,9,14,4,4,96,179,25,8,19,85,0, +0,2,0,2,255,195,1,254,1,190,0,13,0,45,0,0,1,54,51,49,50,31,1,22,21,20,15,1,39,55,23,7, +6,7,5,6,39,55,22,51,54,55,54,53,52,39,38,39,6,7,6,7,22,23,7,38,55,19,54,63,1,23,1,112, +18,22,22,18,46,16,16,56,125,55,49,46,10,30,254,247,18,14,153,10,10,21,13,14,14,13,21,20,13,14,1,1, +5,154,13,6,88,11,32,152,130,1,174,16,16,46,18,22,22,18,55,125,56,206,153,31,12,88,6,13,154,5,1,13, +14,20,20,14,13,1,1,13,14,20,11,10,153,14,18,1,8,31,10,46,129,0,0,0,0,4,0,0,255,192,1,255, +1,191,0,13,0,27,0,55,0,81,0,0,1,22,21,49,20,15,1,39,55,54,51,50,31,1,1,55,23,7,6,15, +1,6,39,38,63,1,54,63,1,7,39,38,53,52,63,1,54,51,50,31,1,48,35,48,21,7,6,23,22,63,1,48, +49,48,55,31,1,34,21,7,6,23,22,63,1,48,49,52,51,23,22,21,20,15,1,6,35,34,47,1,55,23,1,237, +18,18,57,114,57,19,26,26,19,24,254,64,255,114,255,10,14,104,14,10,9,3,30,4,10,204,146,87,14,14,78,15, +19,19,15,20,1,64,10,10,11,11,64,1,45,205,1,64,10,10,11,11,64,1,20,14,14,78,15,19,19,15,87,146, +45,1,149,19,26,26,19,57,114,57,18,18,24,254,202,255,114,255,10,4,30,4,11,9,14,104,14,10,250,146,87,15, +19,19,15,78,14,14,20,1,64,11,11,10,10,64,1,45,205,1,64,11,11,10,10,64,1,20,15,19,19,15,78,14, +14,87,146,45,0,4,0,0,255,192,2,128,1,192,0,32,0,52,0,70,0,88,0,0,19,53,54,31,1,22,31,2, +39,38,55,51,22,31,2,22,31,1,22,7,6,7,6,39,37,38,47,1,38,53,49,1,50,23,49,22,21,20,7,6, +35,33,34,39,38,53,52,55,54,51,33,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,52,55, +49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,0,2,18,35,17,6,17,128,41,3,18,40,19,9,109,108,24, +19,35,17,3,3,22,63,66,254,214,17,13,82,10,2,96,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64, +254,96,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,9,9,14,14,9,9,1,25,99,17,1, +8,4,16,47,39,146,17,3,1,15,194,32,7,16,27,16,21,22,10,23,17,77,5,12,84,9,13,254,231,9,9,14, +14,9,9,9,9,14,14,9,9,80,14,9,9,9,9,14,14,9,9,9,9,14,16,14,9,9,9,9,14,14,9,9, +9,9,14,0,0,2,0,0,255,192,2,128,1,154,0,33,0,53,0,0,1,54,59,1,22,23,22,7,6,7,5,6, +43,1,34,47,1,38,63,1,54,31,1,55,39,38,53,54,63,1,54,31,1,55,1,52,55,49,54,51,33,50,23,22, +21,20,7,6,35,33,34,39,38,53,1,229,27,31,57,21,11,11,7,29,71,254,239,7,8,137,15,10,73,9,14,32, +14,14,57,100,147,8,1,8,46,24,27,195,104,254,27,9,9,14,2,64,14,9,9,9,9,14,253,192,14,9,9,1, +130,14,1,16,15,20,75,37,137,3,11,85,15,10,16,7,6,25,49,95,5,9,9,5,23,12,10,73,53,254,94,14, +9,9,9,9,14,14,9,9,9,9,14,0,0,2,0,0,255,192,1,191,1,192,0,44,0,56,0,0,37,39,55,54, +47,1,38,15,1,39,54,55,54,39,38,39,38,39,35,34,7,6,21,17,22,23,51,54,55,53,51,23,7,6,31,1, +22,63,1,23,22,63,1,54,39,1,51,50,23,22,21,20,7,6,43,1,53,1,184,96,96,14,14,23,17,17,95,67, +35,19,19,9,9,34,33,44,134,13,9,9,2,21,31,22,1,42,113,97,14,14,23,17,17,96,96,17,17,23,14,15, +254,151,87,17,11,11,11,11,17,87,0,96,96,17,17,22,14,14,96,68,18,36,35,44,43,26,25,1,9,9,14,254, +248,22,2,2,22,56,112,96,17,17,23,14,14,96,96,14,14,23,17,17,1,112,12,11,17,17,11,12,80,0,0,0, +0,4,0,0,255,192,2,0,1,192,0,36,0,53,0,71,0,91,0,0,5,6,35,34,39,53,38,39,6,7,21,38, +39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,6,7,6,7,53,38,39,6,7,21,3,54,39,38,35,34,7, +6,23,22,55,54,51,50,23,22,63,1,54,51,49,50,23,22,55,54,39,38,35,34,7,6,23,22,55,7,22,23,49, +22,23,54,55,54,55,53,38,39,38,39,6,7,6,7,21,1,96,45,51,51,45,1,15,15,1,58,35,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,35,58,1,15,15,1,134,11,8,25,36,36,25,7,10,13,10,14,21,21, +14,10,13,99,14,21,21,14,10,13,11,8,25,36,36,25,8,11,13,10,109,1,13,14,20,20,14,13,1,1,13,14, +20,20,14,13,1,45,19,19,205,15,1,1,15,190,34,58,58,72,72,57,58,34,34,1,1,34,34,58,57,72,72,58, +58,34,190,15,1,1,15,205,1,0,10,13,30,30,13,10,7,10,18,18,11,8,3,18,18,11,8,10,13,30,30,13, +10,7,10,134,20,14,13,1,1,13,14,20,32,20,14,13,1,1,13,14,20,32,0,0,0,5,0,0,255,192,2,0, +1,192,0,26,0,40,0,61,0,79,0,97,0,0,1,22,23,49,22,23,49,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,54,55,54,55,54,55,17,22,23,22,55,54,39,38,39,6,7,22,23,49,7,38,39,49,38,39,38,7,6, +7,6,7,22,23,22,51,50,55,54,55,49,55,20,23,49,22,51,50,55,54,55,38,39,38,35,34,7,6,21,35,38, +39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,55,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,54,38,11,12,10,9,47,69,15,1,1,15,48,1,15,14,12,6,6,12,14,15, +1,1,13,14,20,20,14,13,1,96,9,8,15,13,9,9,1,1,9,9,13,15,8,9,96,1,9,9,13,15,8,9, +9,8,15,13,9,9,1,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,254,160,1,42,10,9,11,12,51,2,1,15,15,1,17,16,24,23,15,6,6,15,23,24,16,20,13,14,14,13,20, +161,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,0,6,0,0, +255,224,2,128,1,160,0,39,0,46,0,51,0,56,0,74,0,92,0,0,37,35,6,7,6,7,38,39,38,39,35,6, +7,6,7,38,39,38,39,35,38,39,38,39,53,54,55,54,55,33,22,31,1,22,29,1,6,7,6,7,37,51,53,35, +6,7,21,33,39,35,21,51,35,53,35,21,51,23,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5, +54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,2,80,16,1,27,27,41,41,27,27,1,128,1,27,27, +41,41,27,27,1,16,20,14,13,1,1,20,20,31,1,137,29,20,110,16,1,13,14,20,253,240,96,88,7,1,1,225, +80,81,161,225,96,96,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,192,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,64,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,13,14,20,232,31, +20,20,1,1,22,132,17,24,108,20,14,13,1,192,96,1,7,88,96,96,96,96,144,1,13,14,20,20,14,13,1,1, +13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,4,0,0,255,224,2,128, +1,160,0,70,0,83,0,93,0,102,0,0,19,20,7,49,6,35,34,39,38,61,1,54,55,54,55,22,23,22,23,21, +20,7,55,54,23,22,15,1,51,22,23,22,21,20,7,6,43,1,34,39,38,63,1,7,6,15,1,6,7,38,39,38, +39,53,54,55,54,63,1,54,39,53,52,39,38,35,34,7,6,7,23,7,21,22,23,50,63,1,54,55,7,6,7,49, +7,51,21,20,21,35,38,39,54,55,5,33,54,55,33,22,23,6,7,192,9,9,14,14,9,9,1,27,27,41,41,27, +27,1,4,123,18,13,14,6,18,84,14,9,9,9,9,14,128,16,10,9,5,12,94,18,41,14,21,41,31,21,21,1, +1,19,18,31,85,7,1,9,9,14,13,9,9,1,1,32,1,8,4,3,14,26,16,49,22,1,136,40,40,22,2,2, +22,2,80,254,180,12,10,1,54,22,2,2,22,1,32,14,9,9,9,9,14,32,41,27,27,1,1,27,27,41,8,31, +31,37,4,13,14,18,53,1,9,9,13,14,9,9,12,14,15,38,29,79,71,25,35,1,1,20,21,30,72,33,25,25, +9,26,41,41,8,14,9,9,9,9,14,32,176,72,7,1,4,25,46,51,14,9,23,32,40,4,4,2,22,22,2,48, +24,24,2,22,22,2,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,52,0,102,0,151,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,38,7,6,23,22,23,22,23, +54,55,54,55,54,39,38,7,6,7,6,7,38,39,38,39,49,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55, +49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49, +22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55, +54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,0,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,164,11,11,11,9,17,28,29,41,42,29,29,17,9,10,12,11,14,23, +23,33,32,23,22,14,63,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3,3,2,2,14,14,14,14, +2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3,3, +2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,70,11,9,11,12,20,16,16,1,1,16,16,20,12,11,9,11,16,13,12,1,1,12,13,16, +94,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12,2,2,4,3, +1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2, +2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,0,0,7,0,1,255,192,2,127,1,192,0,34,0,39,0,44, +0,49,0,54,0,59,0,64,0,0,1,38,39,33,6,7,3,6,23,22,59,1,21,35,6,7,6,7,22,23,51,54, +55,52,39,38,39,35,53,33,50,55,54,39,3,7,23,35,39,51,35,23,35,55,51,35,7,35,55,51,3,55,51,7, +35,51,55,51,23,35,51,39,51,23,35,2,63,6,26,254,65,25,6,63,3,9,9,15,255,47,20,14,13,1,1,15, +223,15,1,13,14,20,48,1,0,15,10,9,3,64,57,19,98,10,89,138,10,140,10,120,169,10,98,19,89,140,22,103, +11,114,163,11,150,11,172,221,11,103,22,114,1,166,24,2,2,24,254,192,15,11,12,64,1,13,14,20,15,1,2,14, +20,14,13,1,64,12,12,14,1,64,38,96,96,96,96,96,96,255,0,112,112,112,112,112,112,0,0,0,0,2,0,0, +255,225,2,64,1,160,0,46,0,65,0,0,1,38,7,49,6,7,49,6,7,6,7,38,39,38,39,38,39,38,7,6, +7,6,23,22,23,22,23,22,23,22,55,50,51,50,49,22,55,54,55,54,55,54,55,54,39,38,39,5,54,55,54,55, +38,39,38,39,38,7,6,7,6,7,22,23,22,23,2,56,15,36,35,44,43,41,48,18,18,48,41,43,44,35,36,15, +7,1,1,6,5,20,19,40,63,54,53,27,1,1,1,26,54,54,64,40,20,19,5,6,1,1,7,254,232,19,25,29, +31,12,25,25,34,8,7,35,25,25,12,31,28,26,19,1,0,1,5,5,18,18,37,47,49,49,46,38,18,17,5,6, +1,1,7,15,33,33,40,41,37,58,12,13,3,3,13,13,58,37,40,40,33,33,15,7,1,111,29,22,28,17,53,45, +44,30,6,6,29,45,44,54,17,27,23,29,0,1,0,0,255,192,2,0,1,192,0,54,0,0,1,23,22,31,1,22, +23,6,15,1,6,31,1,22,7,6,7,34,47,1,38,39,35,34,15,1,6,39,38,39,38,63,1,54,53,52,47,1, +38,55,54,55,54,31,1,22,63,1,54,55,50,23,22,23,49,1,93,19,11,39,58,34,2,1,22,82,21,1,3,1, +19,18,30,23,20,45,24,32,8,9,8,67,19,16,16,10,15,15,28,9,11,44,12,4,3,17,17,21,72,45,30,31, +20,31,22,16,17,6,1,145,69,40,15,21,15,37,28,17,59,17,27,50,29,20,20,1,16,38,20,1,2,13,3,7, +8,16,28,28,49,16,18,20,16,70,18,21,21,13,13,1,5,1,35,40,24,1,13,13,21,0,0,0,0,9,0,0, +255,192,2,0,1,192,0,13,0,35,0,53,0,71,0,89,0,107,0,125,0,143,0,161,0,0,19,50,23,49,22,29, +1,35,53,52,55,54,59,1,3,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,51,6, +7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,55,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,51,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,51,20,7,49,6,35,34,39,38,53,52,55, +54,51,50,23,22,21,7,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,23,20,7,49,6,35,34,39, +38,53,52,55,54,51,50,23,22,21,39,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,192,14,9,9, +128,9,9,14,64,192,1,27,27,41,128,41,27,27,1,1,13,14,20,224,20,14,13,1,160,34,23,22,1,1,22,23, +34,34,23,22,1,1,22,23,34,160,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,9,9,14, +14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9, +14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,1,192,9,9,14,96,96,14,9, +9,255,0,41,27,27,1,1,27,27,41,208,20,14,13,1,1,13,14,20,208,1,22,23,34,34,23,22,1,1,22,23, +34,34,23,22,1,192,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9, +9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,0,2,0,0,255,192,2,0,1,192,0,49, +0,54,0,0,37,51,22,23,22,23,6,7,21,6,7,6,7,33,38,39,38,39,53,38,39,54,55,54,55,51,54,55, +54,55,38,39,38,39,54,55,54,55,22,23,22,23,6,7,6,7,22,23,22,31,1,33,21,33,53,1,110,34,48,31, +32,1,2,30,1,13,14,20,254,160,20,14,13,1,30,2,1,32,31,48,34,23,15,15,1,2,18,19,1,1,27,27, +41,41,27,27,1,1,19,18,2,1,15,15,23,50,254,192,1,64,192,1,32,31,48,33,12,51,20,14,13,1,1,13, +14,20,51,12,33,48,31,32,1,1,15,15,23,27,20,25,34,41,27,27,1,1,27,27,41,34,25,20,27,23,15,15, +1,160,32,32,0,2,0,24,255,192,2,40,1,192,0,30,0,39,0,0,5,22,7,6,47,1,7,6,39,38,63,1, +39,38,55,54,63,2,54,55,22,31,2,22,23,22,15,1,23,39,49,23,39,55,47,1,49,17,1,207,3,16,16,17, +129,128,18,16,15,2,25,104,14,6,6,19,144,64,10,19,20,9,64,144,19,7,5,13,104,24,175,112,22,91,125,56, +27,19,12,11,9,68,68,9,11,12,19,147,102,14,19,18,3,22,132,17,1,1,17,132,22,3,18,19,14,102,147,99, +60,126,90,19,114,254,223,0,0,4,0,32,255,192,1,160,1,192,0,48,0,53,0,64,0,75,0,0,1,35,53,52, +39,38,39,35,6,7,6,7,21,35,6,7,6,7,17,22,23,22,23,51,21,22,23,51,54,55,53,51,21,22,23,51, +54,55,53,51,54,55,54,55,17,38,39,38,47,1,51,21,35,53,19,35,38,39,54,55,51,22,23,6,7,53,35,38, +39,54,55,51,22,23,6,7,1,112,48,14,14,20,96,20,14,13,1,48,20,14,13,1,1,13,14,20,16,1,15,32, +15,1,128,1,15,32,15,1,16,20,14,13,1,1,13,14,20,192,96,96,160,224,15,1,1,15,224,15,1,1,15,224, +15,1,1,15,224,15,1,1,15,1,64,80,20,14,13,1,1,13,14,20,80,1,13,14,20,255,0,20,14,13,1,16, +15,1,1,15,16,16,15,1,1,15,16,1,13,14,20,1,0,20,14,13,1,80,80,80,254,176,1,15,15,1,1,15, +15,1,128,1,15,15,1,1,15,15,1,0,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,80,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,50,55,49,54, +53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,7, +54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,176,14,9,9,9,9,14,13,9,9,1,1,9,9,13,160,13,9,9,1,1,9, +9,13,14,9,9,9,9,14,80,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,192,72,57,58,34,34,1, +1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,16,9,9,14,14,9,9,9,9,14,14,9,9,64, +9,9,14,14,9,9,9,9,14,14,9,9,240,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0,0, +0,6,0,0,255,192,2,0,1,192,0,20,0,25,0,30,0,39,0,55,0,68,0,0,19,52,55,49,54,59,1,50, +23,22,21,17,6,7,6,7,38,39,38,39,17,23,35,21,51,53,7,51,53,35,21,23,54,55,38,39,6,7,22,23, +55,17,55,54,51,50,31,1,22,21,20,15,1,52,53,49,55,51,50,23,22,29,1,20,7,6,35,33,55,0,9,9, +14,128,14,9,9,1,27,27,41,41,27,27,1,128,64,64,64,64,64,32,22,2,2,22,22,2,2,22,128,75,10,13, +13,10,90,10,10,211,151,105,14,9,9,9,9,14,254,215,192,1,160,14,9,9,9,9,14,254,128,41,27,27,1,1, +27,27,41,1,128,32,64,64,192,64,64,184,2,22,22,2,2,22,22,2,24,1,6,75,10,10,90,10,13,13,9,212, +5,5,96,9,9,14,128,14,9,9,192,0,0,3,0,0,0,17,2,64,1,96,0,54,0,131,0,149,0,0,55,50, +55,49,54,55,49,54,55,50,23,22,23,22,23,22,51,54,55,54,55,48,55,39,50,49,54,55,54,55,50,31,1,22, +51,50,55,54,55,38,47,1,38,35,6,7,6,7,6,21,7,6,7,22,51,5,38,39,38,39,38,39,38,39,6,7, +6,7,6,7,38,39,38,39,48,49,38,35,6,7,6,7,6,7,38,39,38,39,48,49,38,35,34,7,6,7,6,7, +6,21,20,23,22,51,50,55,54,55,22,23,22,51,50,55,54,55,22,23,22,51,50,55,54,55,22,23,22,51,50,55, +54,53,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,192,26,13,13,8,11,25,14,8,8,6,8, +13,13,26,27,15,14,5,1,141,1,5,19,19,32,19,18,39,3,4,12,10,9,1,1,24,38,26,26,60,40,39,20, +19,24,31,3,20,27,1,128,2,24,20,10,11,6,8,15,13,12,9,16,17,29,36,18,18,1,10,13,13,12,9,16, +17,29,35,18,19,1,10,13,12,10,19,20,15,10,10,9,8,15,8,18,19,19,15,24,24,33,33,24,24,15,15,24, +24,33,33,24,24,15,19,19,18,8,15,8,9,254,31,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,128, +7,8,8,15,2,5,5,7,9,7,7,1,8,9,6,1,116,3,7,7,1,4,9,1,9,9,14,24,7,9,6,1, +21,21,21,21,3,28,43,52,12,77,25,6,4,6,5,5,9,1,1,10,7,7,6,1,1,10,9,3,9,1,9,8, +7,6,1,1,10,9,3,9,9,14,4,4,6,7,17,13,9,10,5,6,11,9,8,7,8,7,10,10,7,8,8,7, +10,11,6,5,9,9,13,173,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,3,0,0,255,224,2,64, +1,160,0,10,0,79,0,156,0,0,1,48,21,49,48,49,20,49,20,21,53,7,53,51,21,54,55,54,55,54,55,53, +52,55,54,51,50,23,22,21,20,23,22,51,50,55,54,53,38,39,38,39,6,7,6,29,1,35,53,52,55,54,51,50, +23,22,21,20,23,22,51,50,55,54,55,38,39,38,39,6,7,6,7,21,22,23,22,23,22,51,5,38,39,38,39,38, +39,38,39,6,7,6,7,6,7,38,39,38,39,48,49,38,35,6,7,6,7,6,7,38,39,38,39,48,49,38,35,34, +7,6,7,6,7,6,21,20,23,22,51,50,55,54,55,22,23,22,23,54,55,54,55,22,23,22,23,54,55,54,55,22, +23,22,51,50,55,54,53,1,64,128,192,26,14,14,7,1,2,9,9,14,14,9,9,9,9,14,14,9,9,1,27,26, +41,46,25,26,192,9,9,14,14,9,9,9,9,14,13,9,9,1,2,25,25,44,41,27,27,1,2,2,7,13,14,26, +1,128,2,24,20,10,11,6,8,15,13,12,9,16,17,29,36,18,18,1,10,13,13,12,9,16,17,29,35,18,19,1, +10,13,12,10,19,20,15,10,10,9,8,15,8,18,19,19,15,24,24,33,33,24,24,15,15,24,24,33,33,24,24,15, +19,19,18,8,15,8,9,1,64,1,1,1,1,4,255,95,96,1,7,8,8,1,2,229,14,9,9,9,9,14,14,9, +9,9,9,14,41,26,27,1,1,29,30,39,92,96,14,9,9,9,9,14,14,9,9,9,9,13,38,29,29,1,1,27, +27,41,229,2,2,7,8,7,62,25,6,4,6,5,5,9,1,1,10,7,7,6,1,1,10,9,3,9,1,9,8,7, +6,1,1,10,9,3,9,9,14,4,4,6,7,17,13,9,10,5,6,11,9,8,7,1,1,7,8,9,9,8,7,1, +1,7,8,9,11,6,5,10,9,13,0,0,0,3,0,0,255,192,2,128,1,192,0,28,0,39,0,57,0,0,19,54, +55,49,54,55,54,51,50,23,22,23,22,23,22,23,20,7,23,22,7,6,39,1,38,55,54,31,1,7,54,55,5,6, +7,38,39,38,39,49,51,38,39,6,7,22,23,22,23,54,55,38,39,38,39,38,39,49,215,22,21,21,16,10,15,15, +10,26,35,35,27,27,1,4,139,16,12,15,19,253,176,16,12,15,19,176,72,2,24,1,19,50,75,74,50,50,2,96, +1,15,14,2,1,32,32,47,16,1,1,16,33,23,23,1,1,49,36,33,32,23,13,13,37,56,56,56,57,38,22,19, +109,15,19,16,12,1,208,15,19,16,12,138,176,35,54,215,49,2,2,50,49,76,14,2,2,14,48,32,32,1,1,15, +15,1,1,23,22,35,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,59,0,81,0,104,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,6,7,20,23,22,63,1,54, +59,1,50,31,1,22,55,54,53,38,39,38,39,38,39,38,39,6,7,6,7,6,7,49,39,38,7,49,6,21,6,31, +1,7,6,23,20,23,22,63,1,54,53,52,47,1,5,52,39,49,38,15,1,6,21,20,31,1,22,55,54,53,52,47, +1,55,54,53,49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,138,9, +1,7,7,8,20,41,43,4,43,41,20,8,7,7,1,9,10,17,16,24,23,28,28,23,24,16,17,10,4,7,5,6, +1,4,36,36,4,1,6,5,7,89,8,8,89,1,6,6,5,6,90,8,8,90,6,5,6,3,36,36,3,192,72,57, +58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,108,18,18,8,5,5,4,7,15,15, +7,4,5,5,8,18,18,18,17,17,12,12,1,1,12,12,17,17,18,217,3,3,3,7,4,4,43,43,4,4,7,3, +3,3,48,4,9,9,4,48,10,7,3,3,3,48,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,0,0,0, +0,1,0,32,255,224,1,159,1,160,0,52,0,0,37,6,7,6,15,1,6,7,38,47,1,38,39,6,15,1,6,7, +38,47,1,38,39,38,39,38,55,54,55,54,55,54,31,1,22,55,54,47,1,50,55,54,55,54,55,54,23,22,23,22, +23,22,7,1,138,28,3,5,13,7,5,20,20,5,30,8,26,26,8,30,6,19,20,5,7,13,4,4,28,30,11,8, +21,21,29,31,27,86,11,8,5,9,25,2,1,3,3,17,20,19,21,29,21,21,8,11,30,235,42,52,62,61,29,20, +1,1,19,121,26,2,2,26,121,19,1,1,20,29,61,62,52,42,41,56,30,22,22,8,6,15,57,6,10,12,8,16, +1,1,2,14,6,7,5,8,22,22,30,57,40,0,0,0,0,4,0,0,255,192,2,128,1,192,0,13,0,25,0,39, +0,58,0,0,19,23,54,55,54,55,38,7,6,7,6,23,22,31,2,54,39,38,39,38,35,6,7,6,7,37,22,23, +22,7,23,22,55,54,55,54,39,38,39,19,35,55,39,7,35,6,7,6,7,22,23,33,54,55,38,39,38,35,115,103, +26,36,36,41,73,65,65,46,5,2,3,7,133,238,27,12,11,47,11,12,44,47,47,34,1,18,9,4,8,27,102,8, +7,6,1,1,31,31,57,6,207,65,60,73,205,20,14,13,1,1,15,2,32,15,1,1,13,14,20,1,55,37,62,44, +45,23,3,29,30,56,7,7,8,3,48,87,94,70,71,19,4,1,46,46,78,124,24,31,77,90,37,3,5,4,8,73, +64,64,44,254,125,178,22,200,1,13,14,20,15,1,2,13,21,14,14,0,0,6,0,0,255,224,1,192,1,160,0,61, +0,66,0,87,0,92,0,97,0,102,0,0,1,50,23,49,22,29,1,20,7,6,35,21,50,23,22,29,1,20,7,6, +43,1,34,39,38,53,35,20,7,6,43,1,34,39,38,61,1,52,55,54,51,53,34,39,38,61,1,52,55,54,59,1, +50,23,22,21,51,52,55,54,59,1,7,21,51,53,35,5,21,50,23,22,21,51,52,55,54,51,53,34,39,38,53,35, +20,7,6,35,7,21,51,53,35,5,53,35,21,51,1,53,35,21,51,1,160,14,9,9,9,9,14,14,9,9,9,9, +14,64,14,9,9,192,9,9,14,64,14,9,9,9,9,14,14,9,9,9,9,14,64,14,9,9,192,9,9,14,64,48, +32,32,254,240,14,9,9,192,9,9,14,14,9,9,192,9,9,14,48,32,32,1,96,32,32,254,192,32,32,1,160,9, +9,14,64,14,9,9,192,9,9,14,64,14,9,9,9,9,14,14,9,9,9,9,14,64,14,9,9,192,9,9,14,64, +14,9,9,9,9,14,14,9,9,48,32,32,80,192,9,9,14,14,9,9,192,9,9,14,14,9,9,240,32,32,32,32, +32,1,64,32,32,0,0,0,0,2,0,0,255,192,1,255,1,192,0,29,0,47,0,0,37,3,38,39,35,54,53,38, +39,38,39,6,7,6,7,20,23,35,6,7,3,6,23,22,23,33,54,55,54,39,3,34,39,49,38,39,54,55,54,51, +50,23,22,21,20,7,6,35,1,254,73,7,24,60,6,1,27,27,41,41,28,27,1,6,59,24,7,73,6,14,14,24, +1,160,24,14,14,6,254,14,9,9,1,1,9,9,14,14,9,9,9,9,14,2,1,36,25,1,14,18,41,27,27,1, +1,27,27,41,17,15,1,25,254,220,26,19,20,1,1,20,19,26,1,62,9,9,14,14,9,9,9,9,14,14,9,9, +0,2,0,16,255,192,1,47,1,192,0,32,0,47,0,0,23,35,53,54,55,54,47,1,38,39,35,6,15,1,6,23, +22,23,21,35,34,7,6,21,22,23,51,54,55,52,39,38,35,39,6,39,38,39,38,63,1,51,23,22,7,6,7,35, +232,40,53,31,31,4,15,3,13,224,13,3,15,4,31,31,53,40,17,11,12,1,7,208,7,1,12,11,17,52,20,21, +36,21,20,2,14,164,14,2,20,21,36,1,16,117,13,42,43,56,178,14,1,1,14,178,56,43,42,13,117,12,11,17, +7,1,1,7,17,11,12,164,5,5,9,28,29,37,149,149,37,29,28,9,0,7,0,0,255,192,2,0,1,192,0,13, +0,35,0,53,0,82,0,111,0,142,0,174,0,0,19,52,55,49,54,59,1,50,23,22,29,1,35,53,23,22,23,49, +22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,3,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,19,20,15,2,34,21,6,35,34,47,2,38,53,52,63,2,54,51,50,23,20,51,31,1,22,21,23,47, +1,38,53,52,63,2,54,51,50,23,20,51,31,1,22,21,20,15,2,34,21,6,35,34,39,31,2,22,21,20,7,34, +21,15,1,34,21,6,35,34,47,2,38,53,52,63,2,54,51,50,23,20,51,39,20,7,49,34,21,15,1,34,21,6, +35,34,47,2,38,53,52,63,2,54,51,50,23,20,51,31,1,22,21,96,9,9,14,64,14,9,9,128,128,41,27,27, +1,1,13,14,20,224,20,14,13,1,1,27,27,41,128,64,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34, +224,2,30,12,1,2,1,2,2,12,30,2,2,30,12,2,2,1,2,1,12,30,2,76,12,30,2,2,30,12,2,2, +1,2,1,12,30,2,2,30,12,1,2,1,2,2,8,12,30,2,1,1,30,12,1,2,1,2,2,12,30,2,2,30, +12,2,2,1,2,1,20,1,1,30,12,1,2,1,2,2,12,30,2,2,30,12,2,2,1,2,1,12,30,2,1,160, +14,9,9,9,9,14,96,96,128,1,27,27,41,208,20,14,13,1,1,13,14,20,208,41,27,27,1,255,0,1,22,23, +34,34,23,22,1,1,22,23,34,34,23,22,1,1,112,2,2,12,30,1,1,2,30,12,2,2,2,2,12,30,2,1, +1,30,12,2,2,46,30,12,2,2,2,2,12,30,2,1,1,30,12,2,2,2,2,12,30,1,1,2,100,30,12,2, +2,1,2,1,12,30,1,1,2,30,12,2,2,2,2,12,30,2,1,1,50,1,2,1,12,30,1,1,2,30,12,2, +2,2,2,12,30,2,1,1,30,12,2,2,0,2,0,0,255,192,1,190,1,192,0,37,0,50,0,0,1,6,7,49, +6,7,38,39,38,39,6,7,6,21,20,23,22,23,22,23,54,55,54,55,22,23,22,23,54,55,54,55,54,39,54,39, +38,47,1,53,35,6,7,6,7,21,51,54,55,54,55,1,80,25,31,31,25,25,31,30,25,60,27,26,20,20,35,36, +48,27,16,11,10,10,11,16,27,48,36,36,20,20,1,2,26,26,60,16,32,34,23,22,1,32,34,23,22,1,1,64, +1,9,10,12,12,10,9,1,3,48,48,61,51,52,51,34,35,1,2,8,5,1,1,5,8,2,1,35,34,51,51,52, +60,49,48,3,96,32,1,22,23,34,32,1,22,23,34,0,0,9,0,32,255,192,1,223,1,192,0,17,0,75,0,84, +0,97,0,106,0,115,0,133,0,142,0,155,0,0,37,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35, +55,38,39,49,38,7,38,39,38,39,6,7,6,7,38,7,6,7,6,23,22,23,6,7,6,23,22,23,22,51,50,55, +48,49,22,23,22,23,54,55,54,55,48,49,22,51,50,55,54,55,54,39,38,39,54,55,54,39,5,38,55,22,23,22, +23,34,39,55,6,7,38,55,54,55,50,51,50,51,6,7,55,22,23,6,7,38,39,54,55,17,38,39,54,55,22,23, +6,7,53,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,23,6,35,54,55,54,55,22,7,39,38,39, +38,39,50,51,54,51,22,23,22,7,1,0,14,9,9,1,1,9,9,14,14,9,9,9,9,14,214,7,27,26,56,16, +25,24,33,33,24,25,16,56,26,27,7,13,4,5,29,29,5,4,13,15,25,24,22,22,8,16,25,24,33,33,24,25, +16,8,22,22,24,25,15,13,4,5,29,29,5,4,13,254,137,7,22,11,11,3,4,38,6,37,11,11,21,6,6,32, +2,1,2,1,4,3,124,15,19,17,17,17,17,19,15,15,19,17,17,17,17,19,15,34,23,22,1,1,22,23,34,34, +23,22,1,1,22,23,34,161,6,38,4,3,11,11,22,7,15,11,11,3,4,2,1,2,1,32,6,7,22,224,9,9, +14,14,9,9,9,9,14,14,9,9,96,16,16,15,5,39,23,23,1,1,23,23,39,5,15,16,16,22,32,33,41,41, +33,32,22,26,8,9,1,39,23,23,1,1,23,23,39,1,9,9,25,22,32,33,41,41,33,32,22,224,12,36,9,10, +20,20,11,163,10,9,36,12,10,1,20,20,125,1,36,6,7,7,6,36,1,254,128,1,36,6,7,7,6,36,1,112, +1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,16,11,19,21,10,9,36,12,144,10,9,20,20,1,2,10, +12,36,0,0,0,1,0,0,0,32,2,64,1,95,0,68,0,0,37,22,23,21,20,7,6,7,6,39,38,39,48,49, +48,49,38,39,35,6,7,49,6,7,6,39,38,39,38,61,1,54,55,54,53,52,39,38,39,53,52,55,54,55,54,23, +22,23,22,23,51,54,55,49,54,55,54,23,22,23,22,29,1,6,7,6,21,20,23,2,23,39,2,16,16,26,30,24, +23,10,10,29,208,28,11,10,23,24,30,26,16,16,2,39,7,7,39,2,16,16,26,30,24,23,10,10,29,208,28,11, +10,23,24,30,26,16,16,2,39,7,7,180,21,45,4,28,21,21,6,6,14,14,27,27,2,2,27,27,14,14,6,6, +21,21,28,4,45,21,5,7,7,4,22,45,4,28,21,21,6,6,14,14,27,27,2,2,27,27,14,14,6,6,21,21, +28,4,45,22,4,7,7,5,0,3,0,0,255,192,2,0,1,192,0,16,0,36,0,54,0,0,55,21,22,23,22,23, +22,23,17,38,39,38,39,34,7,6,21,37,6,7,49,6,7,34,21,17,54,55,54,55,54,55,53,52,39,38,35,39, +38,39,49,38,39,6,7,6,7,22,23,22,23,54,55,54,55,0,2,25,39,63,63,48,47,61,62,40,13,8,9,1, +226,40,61,62,46,1,48,63,63,40,24,2,9,8,13,130,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1, +229,213,23,4,1,11,11,30,1,11,29,11,12,1,7,8,12,27,1,12,11,29,1,254,246,30,11,11,1,4,23,213, +12,8,7,96,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,0,2,0,0,255,192,2,0,1,192,0,46, +0,93,0,0,19,22,23,49,22,23,17,6,7,6,7,34,39,38,39,6,35,38,39,38,39,52,55,38,39,38,53,52, +55,54,55,38,53,52,55,54,55,38,53,52,55,54,55,54,55,54,51,23,22,23,49,22,21,20,7,22,23,22,21,20, +7,22,23,22,21,20,7,6,7,22,21,6,7,6,7,34,39,6,7,6,35,38,39,38,39,17,54,55,54,55,50,23, +22,23,184,24,16,15,1,1,15,16,24,22,16,15,3,8,8,27,18,18,1,4,23,15,14,13,12,21,14,14,14,22, +2,14,13,21,3,15,16,22,200,21,13,14,2,22,14,14,14,21,12,13,14,15,23,4,1,18,18,27,8,8,3,15, +16,22,24,16,15,1,1,15,16,24,22,16,15,3,1,192,1,15,16,24,254,112,24,16,15,1,14,14,22,2,1,18, +18,27,11,10,9,20,20,26,24,19,19,10,18,22,23,17,17,6,8,9,23,17,16,6,22,14,14,50,6,16,17,23, +9,8,6,17,17,23,22,18,10,19,19,24,26,20,20,9,10,11,27,18,18,1,2,22,14,14,1,15,16,24,1,144, +24,16,15,1,14,14,22,0,0,5,0,0,255,224,2,0,1,160,0,49,0,58,0,71,0,82,0,93,0,0,19,51, +50,23,22,31,1,22,23,22,29,1,6,7,21,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39, +38,61,1,38,39,53,52,55,54,63,1,54,55,54,51,49,21,6,15,1,33,39,38,39,35,23,6,7,21,22,23,51, +54,55,53,38,39,35,7,51,54,55,38,39,35,6,7,22,23,37,6,7,22,23,51,54,55,38,39,35,165,182,31,24, +25,10,35,18,11,11,2,30,9,9,14,32,14,9,9,255,0,9,9,14,32,14,9,9,30,2,11,11,18,35,10,25, +24,31,22,8,26,1,38,26,8,22,182,43,15,1,1,15,96,15,1,1,15,96,136,32,22,2,2,22,32,22,2,2, +22,1,80,22,2,2,22,32,22,2,2,22,32,1,160,18,17,29,101,7,16,16,20,80,37,18,57,14,9,9,9,9, +14,48,48,14,9,9,9,9,14,57,18,37,80,20,16,16,7,101,29,17,18,64,1,20,75,75,20,1,176,1,15,32, +15,1,1,15,32,15,1,32,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,0,0,0,0,3,0,0, +0,0,2,0,1,128,0,41,0,66,0,77,0,0,19,52,55,49,54,59,1,50,23,22,21,51,52,55,54,59,1,50, +23,22,21,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51,5,38,39,6,7,21,35,6, +7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,5,51,54,55,38,39,35,6,7,22,23,80,9,9,14, +64,14,9,9,96,9,9,14,64,14,9,9,16,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,16, +1,48,1,15,15,1,32,15,1,1,15,32,1,15,15,1,32,15,1,1,15,32,254,224,96,15,1,1,15,96,15,1, +1,15,1,96,14,9,9,9,9,14,14,9,9,9,9,14,1,18,18,27,224,27,18,18,1,1,18,18,27,224,27,18, +18,1,96,15,1,1,15,32,1,15,15,1,32,15,1,1,15,32,1,15,15,1,32,64,1,15,15,1,1,15,15,1, +0,5,0,3,255,200,2,94,1,184,0,36,0,76,0,85,0,94,0,103,0,0,19,50,31,1,55,54,23,20,23,6, +15,1,6,15,2,6,39,38,63,1,39,38,39,38,63,1,39,38,55,54,31,1,55,54,51,49,31,1,22,23,22,31, +1,22,15,1,6,7,6,47,1,38,39,38,63,1,39,7,6,7,6,47,1,38,39,38,63,1,54,63,1,54,55,54, +23,49,7,38,15,1,23,39,38,47,1,7,22,55,54,39,38,7,6,23,5,38,7,6,23,22,55,54,39,176,11,4, +29,76,11,7,1,26,18,41,43,14,20,36,8,9,10,1,5,78,11,3,1,8,66,40,5,6,7,11,76,29,4,11, +208,136,25,16,15,3,7,27,8,35,4,11,11,13,15,14,6,6,3,8,247,8,5,11,11,13,15,13,7,6,3,36, +11,35,48,15,23,23,25,16,11,7,32,202,5,1,11,135,100,22,8,3,20,23,7,3,20,1,4,22,7,4,21,21, +8,4,21,1,184,10,74,23,3,8,1,1,13,24,60,14,46,74,33,7,4,5,11,79,13,2,10,10,7,45,69,9, +9,8,3,23,74,10,92,35,8,19,19,26,84,22,36,132,13,6,6,3,4,4,11,11,13,31,66,31,13,6,7,4, +4,4,11,11,13,131,35,6,69,22,8,9,7,62,3,9,47,54,58,10,3,36,147,3,20,22,8,3,20,22,8,20, +4,21,21,8,4,21,22,7,0,5,0,0,255,224,2,128,1,160,0,47,0,54,0,61,0,78,0,95,0,0,37,21, +20,7,6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,34,39,38,61,1,52,55,54,63, +1,54,55,54,59,1,22,31,1,22,23,22,23,21,37,34,15,1,51,53,35,23,51,39,38,43,1,21,23,54,53,38, +39,38,39,6,7,6,7,6,23,22,23,54,55,33,54,53,38,39,38,39,6,7,6,7,6,23,22,23,54,55,2,128, +9,9,14,33,7,26,26,36,36,26,26,7,130,7,26,26,36,36,26,26,7,33,14,9,9,11,11,19,41,12,24,23, +30,182,45,30,100,49,31,31,1,254,43,21,8,31,113,53,101,173,67,10,15,81,253,3,1,13,14,20,20,14,13,1, +1,4,12,33,33,12,254,192,3,1,13,14,20,20,14,13,1,1,4,12,33,33,12,128,48,14,9,9,35,22,22,1, +1,22,22,35,35,22,22,1,1,22,22,35,9,9,14,112,21,15,16,8,104,27,16,17,1,35,125,7,35,35,49,1, +224,20,76,96,96,84,12,96,208,8,8,20,14,13,1,1,13,14,20,8,8,30,2,2,30,8,8,20,14,13,1,1, +13,14,20,8,8,30,2,2,30,0,0,0,0,2,0,0,255,192,2,64,1,192,0,85,0,109,0,0,1,22,23,49, +22,23,21,51,22,23,22,23,21,22,23,54,55,53,38,39,38,61,1,54,55,51,53,54,55,22,23,21,51,53,54,55, +22,23,21,51,22,23,21,20,7,6,7,21,6,7,6,7,38,39,38,39,53,52,39,38,43,1,21,50,23,22,21,20, +7,6,35,33,34,39,38,53,52,55,54,51,17,54,55,54,55,51,15,1,6,23,22,23,51,7,6,23,22,63,1,54, +39,38,39,35,55,54,39,38,7,49,1,0,27,18,18,1,16,37,25,25,1,2,22,22,2,25,15,16,1,15,16,1, +15,15,1,32,1,15,15,1,16,15,1,16,15,25,1,20,20,31,31,20,20,1,12,11,17,16,14,9,9,9,9,14, +254,224,14,9,9,9,9,14,1,18,18,27,160,58,112,8,3,4,10,59,25,3,9,9,10,112,8,3,4,11,58,25, +3,9,11,8,1,192,1,18,18,27,192,1,25,25,37,32,22,2,2,22,124,8,20,21,27,32,15,1,48,15,1,1, +15,48,48,15,1,1,15,48,1,15,32,27,21,20,8,124,31,20,20,1,1,20,20,31,32,17,11,12,144,9,9,14, +14,9,9,9,9,14,14,9,9,1,128,27,18,18,1,84,96,7,11,9,1,75,11,7,6,7,96,7,11,9,1,75, +11,7,6,7,0,2,0,0,255,193,2,0,1,192,0,20,0,53,0,0,37,39,38,35,34,15,1,6,21,20,31,1, +22,55,50,63,1,54,53,52,39,15,1,6,39,38,39,53,35,21,20,7,6,35,34,39,38,61,1,52,55,54,59,1, +53,54,55,54,31,1,22,7,20,7,1,241,208,15,19,18,15,208,14,14,208,15,19,19,15,208,14,15,86,96,9,9, +8,1,65,9,9,14,14,9,9,10,9,13,95,1,9,8,9,96,7,1,4,226,208,14,14,208,15,18,19,15,208,15, +1,14,208,15,19,18,15,30,84,7,5,4,10,52,48,14,9,9,9,9,14,80,14,9,9,52,11,4,3,6,84,5, +7,7,5,0,0,2,0,0,255,224,1,192,1,160,0,46,0,75,0,0,37,22,23,49,22,23,6,7,6,7,38,39, +35,6,7,38,39,38,39,54,55,53,38,39,54,55,54,55,22,23,51,54,55,22,23,22,23,6,7,6,35,7,22,21, +20,7,23,5,22,23,51,48,49,48,49,39,38,7,48,35,38,39,38,39,54,55,54,55,50,51,55,49,35,6,7,21, +1,128,27,18,18,1,1,18,18,27,37,18,210,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,18,37, +27,18,18,1,1,18,18,27,38,6,6,38,254,224,15,8,210,37,1,2,1,27,18,18,1,1,18,18,27,2,2,37, +210,8,15,96,1,18,18,27,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,18,37,27,18,18,1,2,30,30, +2,1,18,18,27,27,18,18,69,13,15,15,13,68,9,8,15,64,1,1,1,18,18,27,27,18,18,1,64,15,8,210, +0,4,0,0,255,224,2,128,1,160,0,16,0,33,0,50,0,67,0,0,19,33,17,51,17,38,39,38,39,33,6,7, +6,7,17,51,17,1,33,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,37,22,51,50,63,1,54,47,1,38, +7,6,31,1,7,6,23,39,38,15,1,6,31,1,22,51,50,55,54,47,1,55,54,39,128,1,128,64,1,13,14,20, +254,96,20,14,13,1,64,1,240,253,160,15,1,1,18,18,27,2,0,27,18,18,1,1,15,254,254,6,8,8,6,48, +12,12,48,14,14,12,12,34,34,12,12,92,14,14,48,12,12,48,6,8,8,6,12,12,34,34,11,11,1,96,255,0, +1,16,20,14,13,1,1,13,14,20,254,240,1,0,254,224,1,15,16,27,18,18,1,1,18,18,27,16,15,1,98,6, +6,48,14,14,48,12,12,14,14,34,34,14,14,124,12,12,48,14,14,48,6,6,14,14,34,34,14,14,0,3,0,0, +255,192,2,0,1,192,0,16,0,35,0,55,0,0,19,54,31,1,22,23,6,15,1,6,47,1,38,39,54,63,1,5, +22,23,6,15,1,6,47,1,38,39,54,63,1,23,22,63,1,23,7,55,23,22,23,6,15,1,6,47,1,38,39,54, +63,1,23,22,55,49,233,23,24,218,13,1,1,13,218,24,23,219,13,1,1,13,219,1,9,13,1,1,13,218,24,23, +219,13,1,1,13,53,152,37,37,152,53,205,152,53,13,1,1,13,218,24,23,219,13,1,1,13,53,152,37,37,1,187, +10,10,101,7,14,16,7,101,10,10,101,7,16,14,7,101,229,7,14,16,7,101,10,10,101,7,16,14,7,24,70,16, +16,70,24,174,70,24,7,14,16,7,101,10,10,101,7,16,14,7,24,70,16,16,0,0,0,3,0,0,255,192,2,0, +1,192,0,17,0,75,0,93,0,0,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,19,50,23,49, +22,29,1,22,23,22,23,51,50,23,22,21,20,7,6,43,1,6,7,6,7,21,20,7,6,35,34,39,38,61,1,38, +39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54,55,53,52,55,54,51,3,22,23,49,22,23,54,55,54,55, +38,39,38,39,6,7,6,7,176,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,80,14,9,9,61,43,42, +11,35,14,9,9,9,9,14,35,11,42,43,61,9,9,14,14,9,9,61,43,42,11,35,14,9,9,9,9,14,35,11, +42,43,61,9,9,14,128,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,192,34,23,22,1,1,22,23,34, +34,23,22,1,1,22,23,34,1,0,9,9,14,35,11,42,43,61,9,9,14,14,9,9,61,43,42,11,35,14,9,9, +9,9,14,35,11,42,43,61,9,9,14,14,9,9,61,43,42,11,35,14,9,9,255,0,54,37,36,1,1,36,37,54, +54,37,36,1,1,36,37,54,0,1,0,0,255,193,2,128,1,192,0,82,0,0,37,6,7,49,6,47,1,38,39,38, +61,1,23,22,63,1,54,47,1,7,6,7,6,31,1,22,23,50,63,1,21,20,7,6,15,1,6,39,38,39,52,55, +54,55,54,55,54,55,54,55,22,23,22,23,21,55,54,61,1,54,55,51,22,23,21,20,31,1,53,54,55,54,55,22, +23,22,23,22,23,22,23,22,21,2,128,2,37,37,49,60,32,19,20,86,6,5,9,3,5,168,168,2,1,1,2,9, +2,3,3,3,86,20,19,32,60,49,37,37,2,4,33,69,3,2,14,16,16,29,30,20,19,1,33,7,1,15,16,15, +1,7,33,1,19,20,30,29,16,17,14,2,2,69,33,4,28,47,26,27,12,15,10,24,24,31,88,58,3,6,13,6, +5,112,112,2,3,3,3,13,3,1,1,58,88,31,24,24,10,15,12,27,26,47,15,15,122,109,4,4,24,15,15,1, +1,18,19,28,60,22,5,8,171,15,1,1,15,171,8,5,22,60,28,19,18,1,1,15,16,24,4,3,109,122,15,15, +0,3,0,0,255,192,2,0,1,192,0,34,0,65,0,78,0,0,55,51,21,22,23,51,54,55,53,51,50,55,54,61, +1,52,39,38,35,53,38,39,35,6,7,21,34,7,6,29,1,20,23,22,51,5,35,54,55,38,39,38,39,21,22,23, +22,23,6,7,6,7,33,6,7,6,7,22,23,33,54,55,38,39,38,39,37,51,54,55,53,38,39,35,6,7,21,22, +23,160,12,1,15,40,15,1,12,14,9,9,9,9,14,1,15,64,15,1,14,9,9,9,9,14,1,48,1,47,2,2, +54,55,81,54,36,37,1,1,37,36,54,254,240,20,14,13,1,1,15,1,224,15,1,1,13,14,20,254,152,208,7,1, +1,7,208,7,1,1,7,128,16,15,1,1,15,16,9,9,14,224,14,9,9,16,15,1,1,15,16,9,9,14,224,14, +9,9,128,53,75,81,55,54,2,64,1,37,36,54,54,36,37,1,1,13,14,20,15,1,1,15,20,14,13,1,32,1, +7,16,7,1,1,7,16,7,1,0,0,0,0,2,0,0,0,32,2,126,1,128,0,48,0,53,0,0,1,21,51,50, +31,1,55,54,23,22,15,1,6,35,33,38,39,38,39,53,39,38,39,53,54,55,54,55,51,53,35,34,39,38,53,52, +55,54,59,1,50,23,22,21,20,7,6,43,1,7,35,21,23,53,1,32,81,15,14,50,167,14,7,6,8,183,20,28, +254,253,20,14,13,1,67,28,1,1,13,14,20,176,32,14,9,9,9,9,14,128,14,9,9,9,9,14,32,192,48,48, +1,64,32,7,25,36,2,11,11,12,206,22,1,13,14,20,21,30,14,30,65,20,14,13,1,32,9,9,14,14,9,9, +9,9,14,14,9,9,80,65,21,86,0,0,0,1,0,0,255,192,2,0,1,192,0,60,0,0,37,6,7,49,6,7, +33,38,39,38,39,54,55,54,55,38,39,54,55,54,55,51,38,39,54,55,54,55,51,54,55,54,55,38,39,54,51,22, +23,22,23,20,7,51,22,23,22,23,6,7,51,22,23,22,23,6,7,22,23,22,23,2,0,1,20,21,31,254,145,31, +20,20,1,1,16,17,27,28,1,1,20,20,31,14,21,1,1,18,18,27,16,34,23,22,1,1,14,7,8,41,27,27, +1,6,6,27,18,18,1,1,21,14,31,20,20,1,1,28,27,17,16,1,8,31,20,20,1,1,20,20,31,27,20,19, +5,21,36,31,20,20,1,18,30,27,18,18,1,1,22,23,34,26,20,2,1,27,27,41,17,15,1,18,18,27,30,18, +1,20,20,31,36,21,5,19,20,27,0,0,0,3,0,0,255,192,2,0,1,192,0,15,0,37,0,55,0,0,1,22, +7,6,43,1,34,39,38,63,1,54,55,22,31,1,7,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34, +39,38,61,1,5,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,1,155,9,8,10,18,192,18,10,8, +9,96,9,18,18,9,96,123,12,11,17,144,17,11,12,12,11,17,144,17,11,12,254,224,1,36,37,54,54,37,36,1, +1,36,37,54,54,37,36,1,1,16,16,16,15,15,17,15,160,15,1,1,15,160,136,17,11,12,12,11,17,144,17,11, +12,12,11,17,144,72,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,0,0,0,1,0,19,255,192,1,236, +1,192,0,42,0,0,37,7,6,47,1,21,6,7,35,38,39,53,7,6,47,1,38,63,1,39,38,63,1,54,31,1, +39,54,55,51,22,23,21,55,54,31,1,22,15,1,23,22,7,1,233,24,13,20,129,2,22,48,22,2,128,20,13,24, +9,18,129,129,18,9,24,13,20,129,1,2,22,48,22,2,129,20,13,24,9,18,128,129,18,10,85,42,18,9,75,149, +22,2,2,22,149,75,9,18,42,20,12,75,74,13,20,42,18,9,75,149,22,2,2,22,149,75,9,18,42,20,12,75, +75,12,20,0,0,6,0,0,255,192,2,0,1,192,0,26,0,49,0,67,0,85,0,103,0,121,0,0,37,6,7,49, +6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,7,53,38,39,6,7,21,6,7, +6,21,22,23,22,23,54,55,54,55,52,39,38,47,1,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51, +7,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21, +20,23,22,51,39,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,2,0,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,232,2,22,22,2,18,11,11,1,18,18,27,27,18,18,1, +11,11,18,136,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14, +9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9,14,192,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,37,205,22,2,2,22,205,7,16,16,20,27,18,18,1, +1,18,18,27,20,16,16,7,117,9,9,14,14,9,9,9,9,14,14,9,9,48,9,9,14,14,9,9,9,9,14,14, +9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,176,9,9,14,14,9,9,9,9,14,14,9,9,0,6,0,0, +255,192,2,0,1,192,0,26,0,44,0,71,0,89,0,107,0,125,0,0,37,6,7,49,6,7,49,6,7,38,39,38, +39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38, +35,17,54,55,49,54,55,38,39,55,54,39,38,15,1,34,49,38,49,6,7,6,7,22,23,22,23,49,3,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,7,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51, +37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,2,0,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,72,57,58,34,34,1,255,0,14,9,9,9,9,14,14,9,9,9,9,14,27,18,18,1,1,17, +63,8,19,21,11,64,1,1,27,18,18,1,1,18,18,27,112,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9, +9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9,14,14,9,9,9,9,14,192,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,192,9,9,14,14,9,9,9,9,14,14,9,9,254,160, +1,18,18,27,27,18,145,21,11,7,19,146,1,1,18,19,27,27,18,18,1,1,48,9,9,14,14,9,9,9,9,14, +14,9,9,176,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,49,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,7,53,38,39,6,7,21,6,7,6,21,22,23,22,23,54,55,54,55,52,39, +38,39,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,232,2,22,22, +2,18,11,11,1,18,18,27,27,18,18,1,11,11,18,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,37,205,22,2,2,22,205,7,16,16,20,27,18,18,1,1,18,18,27,20,16,16,7,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,7,55,54,39,38,15,1,34,35,38,35,6,7,6,7,22,23,22,23,54,55, +54,55,38,39,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,207, +76,9,19,20,12,77,1,1,2,3,26,19,18,1,1,18,19,26,28,18,18,1,1,14,192,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,54,147,20,12,9,19,147,1,1,18,19,27,27,18,18, +1,1,18,18,27,24,18,0,0,9,0,0,255,224,2,64,1,160,0,20,0,37,0,53,0,70,0,86,0,103,0,119, +0,136,0,152,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,1,6,7,49,6, +7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6,7,49, +6,7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6,7, +49,6,7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6, +7,49,6,7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,1, +224,254,128,41,27,27,1,1,27,27,41,1,128,41,27,27,1,1,27,27,41,254,176,1,13,14,20,20,14,13,1,1, +15,64,15,1,1,15,64,15,1,1,13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,1, +13,68,13,1,1,13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,1,13,68,13,1,1, +13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,1,15,64,15,1,1,13,14,20,20,14, +13,1,1,160,1,27,27,41,255,0,41,27,27,1,1,27,27,41,1,0,41,27,27,1,254,208,20,14,13,1,1,13, +14,20,32,15,1,1,15,32,96,15,1,1,15,32,20,14,13,1,1,13,14,20,32,96,20,14,13,1,1,13,14,20, +32,15,1,1,15,32,94,13,1,1,13,66,20,14,13,1,1,13,14,20,66,94,20,14,13,1,1,13,14,20,32,15, +1,1,15,32,94,13,1,1,13,66,20,14,13,1,1,13,14,20,66,94,20,14,13,1,1,13,14,20,32,15,1,1, +15,32,96,15,1,1,15,32,20,14,13,1,1,13,14,20,32,0,0,0,0,10,0,0,255,224,2,64,1,160,0,20, +0,37,0,54,0,71,0,88,0,109,0,125,0,141,0,157,0,173,0,0,37,33,6,7,6,7,21,22,23,22,23,33, +54,55,54,55,53,38,39,38,39,5,6,7,49,6,7,38,39,38,39,53,54,55,51,22,23,21,51,6,7,49,6,7, +38,39,38,39,53,54,55,51,22,23,21,51,6,7,49,6,7,38,39,38,39,53,54,55,51,22,23,21,51,6,7,49, +6,7,38,39,38,39,53,54,55,51,22,23,21,3,33,6,7,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39, +38,39,5,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6,7,35,38,39,53,54,55,54,55,22,23,22, +23,21,51,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,55,6,7,35,38,39,53,54,55,54,55,22,23,22, +23,21,2,0,254,64,27,18,18,1,1,27,27,41,1,128,41,27,27,1,1,18,18,27,254,144,1,13,14,20,20,14, +13,1,1,15,64,15,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,128,1,13,14,20,20,14,13,1,1,15, +64,15,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,48,254,128,41,27,27,1,1,18,18,27,1,192,27,18, +18,1,1,27,27,41,254,176,1,15,64,15,1,1,13,14,20,20,14,13,1,128,1,13,68,13,1,1,13,14,20,20, +14,13,1,128,1,13,68,13,1,1,13,14,20,20,14,13,1,128,1,15,64,15,1,1,13,14,20,20,14,13,1,160, +1,18,18,27,32,41,27,27,1,1,27,27,41,32,27,18,18,1,80,20,14,13,1,1,13,14,20,32,15,1,1,15, +32,20,14,13,1,1,13,14,20,32,15,1,1,15,32,20,14,13,1,1,13,14,20,32,15,1,1,15,32,20,14,13, +1,1,13,14,20,32,15,1,1,15,32,1,80,1,27,27,41,64,27,18,18,1,1,18,18,27,64,41,27,27,1,176, +15,1,1,15,32,20,14,13,1,1,13,14,20,32,2,13,1,1,13,66,20,14,13,1,1,13,14,20,66,13,1,1, +13,66,20,14,13,1,1,13,14,20,66,2,15,1,1,15,32,20,14,13,1,1,13,14,20,32,0,0,0,7,0,0, +255,192,2,127,1,192,0,8,0,49,0,66,0,94,0,114,0,128,0,145,0,0,55,6,7,49,6,23,54,63,1,7, +39,52,49,48,49,54,51,50,51,50,51,54,55,54,55,38,39,38,35,34,7,6,7,6,31,1,22,23,22,23,22,51, +50,55,38,39,38,39,38,39,55,38,39,6,7,6,39,6,23,22,23,22,55,54,55,54,39,37,38,39,49,38,7,6, +7,6,15,1,6,23,22,23,22,23,22,55,54,55,54,63,1,54,39,38,39,5,54,55,49,54,23,22,23,22,7,6, +7,38,39,38,7,38,55,52,51,23,38,39,49,38,55,22,23,22,55,6,7,6,39,55,38,39,38,7,38,55,54,55, +54,23,22,23,22,7,6,7,207,27,16,16,1,18,32,8,111,32,89,100,2,1,1,1,21,31,28,29,15,27,36,36, +116,104,18,9,8,3,32,8,36,36,44,45,35,6,4,21,18,38,34,34,6,97,1,3,13,22,23,16,1,1,3,13, +13,17,17,9,9,3,1,158,67,75,74,76,21,15,14,4,32,6,26,27,39,39,33,33,48,49,40,41,9,32,3,8, +9,18,254,239,3,13,13,17,17,9,9,3,1,3,13,22,23,17,1,1,1,69,42,25,24,2,33,67,67,45,12,33, +34,44,131,13,22,23,16,1,1,3,13,13,17,17,9,9,3,1,3,203,9,20,20,25,19,12,43,50,179,3,49,21, +5,4,1,22,5,6,57,11,18,19,22,179,41,32,32,18,19,1,26,41,11,24,24,26,137,7,5,14,5,3,9,6, +6,17,9,9,2,3,14,13,16,37,37,13,13,12,3,14,15,21,181,44,46,45,33,32,7,5,17,18,33,34,44,179, +22,19,19,10,97,17,9,9,2,4,13,13,17,6,5,14,4,4,9,6,5,1,199,9,31,32,41,41,13,10,26,39, +21,21,6,152,14,4,4,9,6,6,17,9,9,3,3,13,13,17,6,5,0,4,0,0,255,192,1,64,1,192,0,20, +0,38,0,56,0,74,0,0,1,22,23,49,22,23,17,6,7,6,7,38,39,38,39,17,54,55,54,55,51,3,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,53,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,53,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,0,27,18,18,1,2,45,45,68,68,45,45, +2,1,18,18,27,192,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,192,1,18,18,27,254,224,68, +45,45,2,2,45,45,68,1,32,27,18,18,1,254,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,32, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,224,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,0,0,0,0,6,0,0,255,192,2,128,1,192,0,55,0,60,0,117,0,135,0,193,0,211,0,0,1,23,51,50, +23,22,29,1,50,23,22,21,20,7,6,7,38,39,38,35,34,7,6,7,35,38,39,38,35,34,7,6,7,38,39,38, +53,52,55,54,51,53,52,55,54,59,1,53,54,55,54,55,51,22,23,49,7,51,39,35,21,7,22,23,22,23,54,31, +1,22,7,22,23,22,23,21,6,7,6,7,22,15,1,6,39,6,7,6,7,35,38,39,38,39,6,47,1,38,55,38, +39,38,39,53,54,55,54,55,38,63,1,54,23,54,55,54,55,23,7,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,37,54,55,51,22,23,22,23,54,31,1,22,7,22,23,22,23,21,6,7,6,7,22,15,1,6,39,6, +7,6,7,35,38,39,38,39,6,47,1,38,55,38,39,38,39,53,54,55,54,55,38,63,1,54,23,54,55,49,23,6, +7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,163,77,80,14,9,9,14,9,9,9,9,14,22,33,33, +40,40,33,33,23,63,22,33,33,40,40,33,33,22,14,9,9,9,9,14,9,9,14,160,1,13,14,20,96,32,19,131, +128,48,80,120,20,4,11,11,16,15,11,13,11,6,3,19,2,2,19,3,6,11,13,11,15,16,11,11,4,21,16,18, +5,11,10,17,15,11,13,11,6,3,20,2,2,20,3,6,11,13,11,15,17,10,11,5,18,17,8,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,1,32,4,20,16,20,4,11,11,16,15,11,13,11,6,3,19,2,2,19,3, +6,11,13,11,15,16,11,11,4,20,16,20,4,11,10,17,15,11,13,11,6,3,19,2,2,19,3,6,11,13,11,15, +17,10,11,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,166,102,9,9,14,64,9,9,14,14,8, +9,1,30,17,17,17,17,30,30,17,17,17,17,30,1,9,8,14,14,9,9,64,14,9,9,80,20,14,13,1,1,25, +102,64,64,128,2,19,3,6,11,13,11,15,17,10,11,4,20,16,20,4,11,11,16,15,11,13,11,6,3,19,2,2, +19,3,6,11,13,11,15,16,11,11,4,20,16,20,4,11,10,17,15,11,13,11,6,3,20,2,1,176,1,13,14,20, +20,14,13,1,1,13,14,20,20,14,13,1,155,19,2,2,19,3,6,11,13,11,15,17,10,11,4,20,16,20,4,11, +11,16,15,11,13,11,6,3,19,2,2,19,3,6,11,13,11,15,16,11,11,4,20,16,20,4,11,10,17,15,11,13, +11,6,3,59,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,4,0,0,255,224,2,128,1,160,0,65, +0,70,0,88,0,106,0,0,1,51,22,31,1,51,50,23,22,29,1,50,23,22,21,20,7,6,43,1,22,21,6,7, +6,7,38,39,38,39,52,55,35,22,21,6,7,6,7,38,39,38,39,52,55,35,34,39,38,53,52,55,54,51,53,52, +55,54,59,1,53,54,55,54,55,49,23,35,21,51,39,3,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,33,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,16,97,30,20,108,49,14,9,9,14,9,9, +9,9,14,33,1,1,32,31,48,48,31,32,1,1,66,1,1,32,31,48,48,31,32,1,1,33,14,9,9,9,9,14, +9,9,14,160,1,13,14,20,97,81,157,76,193,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,32,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,160,1,23,136,9,9,14,64,9,9,14,14,9,9,8,8, +48,31,32,1,1,32,31,48,8,8,8,8,48,31,32,1,1,32,31,48,8,8,9,9,14,14,9,9,64,14,9,9, +112,20,14,13,1,64,96,96,254,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,0,0,0,5,0,0,255,224,2,64,1,160,0,3,0,12,0,34,0,52,0,75, +0,0,55,23,35,55,23,6,7,38,39,54,55,22,23,55,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17, +54,55,54,55,33,5,38,39,6,15,1,6,23,22,63,1,51,23,22,55,54,47,1,23,38,35,6,7,6,7,22,23, +22,23,50,55,22,51,54,55,53,38,39,6,7,21,208,21,42,21,208,2,22,22,2,2,22,22,2,96,27,18,18,1, +1,18,18,27,254,64,27,18,18,1,1,18,18,27,1,192,254,230,7,15,14,7,72,8,18,21,12,5,90,6,11,21, +18,7,72,186,11,13,31,20,20,1,1,20,20,31,17,14,7,10,22,2,2,22,22,2,210,42,42,42,22,2,2,22, +22,2,2,22,248,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,141,12,1,1,12,144,21, +12,7,18,11,11,18,7,12,21,144,39,4,1,20,20,31,31,20,20,1,8,8,2,22,144,22,2,2,22,28,0,0, +0,2,0,0,255,192,1,64,1,192,0,37,0,50,0,0,37,35,54,55,54,53,38,39,38,39,6,7,6,7,20,23, +22,23,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,47,1,22,23,6,7,6,7,38,39,38, +39,54,55,1,40,45,17,10,10,1,36,37,54,54,37,36,1,10,10,17,45,22,2,2,22,96,2,22,32,22,2,96, +22,2,2,22,136,46,2,1,15,15,17,17,15,15,1,2,46,192,26,29,29,28,67,38,38,1,1,38,38,67,28,29, +29,26,2,22,32,22,2,152,22,2,2,22,152,2,22,32,22,2,176,2,62,27,28,28,18,18,28,28,27,62,2,0, +0,3,0,0,255,192,1,192,1,192,0,25,0,54,0,66,0,0,37,17,38,39,38,39,33,6,7,6,7,17,22,23, +22,23,33,50,55,54,53,38,39,53,54,55,37,54,63,1,53,54,55,51,22,23,21,51,22,23,21,6,15,1,21,6, +7,35,38,39,53,35,38,39,53,19,33,34,39,38,53,52,55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27, +1,1,27,27,41,1,64,14,9,9,1,15,15,1,254,208,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15, +32,15,1,48,15,1,240,254,224,14,9,9,9,9,14,1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27, +27,1,9,9,13,18,9,82,14,22,192,14,1,1,48,14,1,1,14,48,2,13,32,15,1,1,112,15,1,1,15,112, +1,15,32,254,208,9,9,14,14,9,9,64,0,5,0,0,255,192,2,128,1,192,0,17,0,32,0,50,0,81,0,86, +0,0,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,35,38,39,53,54,55,22,23,21,51,22, +23,6,7,39,35,38,39,53,35,21,22,23,22,23,33,38,39,52,53,52,53,55,50,23,53,38,39,38,39,35,53,38, +39,38,39,35,6,7,6,7,21,35,6,7,6,7,21,33,54,55,54,51,39,35,53,51,21,1,240,61,41,40,2,2, +40,41,61,61,41,40,2,2,40,41,61,48,54,9,1,1,15,15,1,32,15,1,1,15,224,112,15,1,192,1,13,14, +20,1,56,39,1,176,8,8,1,13,14,20,80,1,13,14,20,160,20,14,13,1,80,20,14,13,1,1,104,25,35,35, +41,160,160,160,224,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,9,70,15,1,1,15,48,1,15, +15,1,32,1,15,48,144,20,14,13,1,47,65,3,3,5,5,160,1,49,20,14,13,1,48,20,14,13,1,1,13,14, +20,48,1,13,14,20,112,30,17,17,96,48,48,0,0,0,0,12,0,0,255,192,2,128,1,192,0,46,0,59,0,72, +0,85,0,98,0,111,0,124,0,137,0,150,0,163,0,176,0,189,0,0,1,51,22,23,22,23,21,6,7,6,7,33, +38,39,38,39,17,54,55,54,55,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,54,55,51,22,23, +22,23,21,23,38,39,35,6,7,21,22,23,51,54,55,53,5,54,55,53,38,39,35,6,7,21,22,23,51,39,38,39, +35,6,7,21,22,23,51,54,55,53,37,6,7,21,22,23,51,54,55,53,38,39,35,37,38,39,35,6,7,21,22,23, +51,54,55,53,39,6,7,21,22,23,51,54,55,53,38,39,35,23,38,39,35,6,7,21,22,23,51,54,55,53,7,54, +55,53,38,39,35,6,7,21,22,23,51,37,38,39,35,6,7,21,22,23,51,54,55,53,39,6,7,21,22,23,51,54, +55,53,38,39,35,23,38,39,35,6,7,21,22,23,51,54,55,53,1,224,112,20,14,13,1,1,13,14,20,253,224,20, +14,13,1,1,13,14,20,16,2,22,22,2,64,2,22,22,2,64,1,13,14,20,96,20,14,13,1,96,1,15,32,15, +1,1,15,32,15,1,254,176,15,1,1,15,32,15,1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,1,144,15, +1,1,15,32,15,1,1,15,32,254,240,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32, +176,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,1,48,1,15,32,15,1,1,15,32, +15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,1,0,1,13,14,20,224,20, +14,13,1,1,13,14,20,1,64,20,14,13,1,72,22,2,2,22,72,72,22,2,2,22,72,48,20,14,13,1,1,13, +14,20,144,176,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15, +1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,80,15,1,1,15,32,15,1,1,15,32,16,1,15,32,15,1, +1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15, +32,15,1,1,15,32,208,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,0,2,0,0, +255,225,1,255,1,161,0,36,0,103,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54, +55,54,55,22,51,54,55,54,55,54,55,38,39,38,39,38,39,23,6,7,21,6,7,38,39,53,38,47,1,38,55,54, +31,1,50,49,22,23,22,55,54,55,48,49,54,39,38,47,1,52,49,38,39,38,55,54,55,53,54,55,22,23,21,22, +23,22,7,6,39,38,39,38,7,6,7,6,23,22,31,1,22,23,22,7,1,0,71,58,57,34,34,1,2,55,12,20, +20,3,4,2,1,6,50,36,36,19,49,58,71,58,57,34,34,1,1,34,34,57,58,71,62,7,35,2,18,18,2,13, +12,4,17,5,7,18,4,1,12,11,11,9,9,1,2,4,4,21,6,16,19,19,3,7,35,2,18,18,2,8,11,16, +4,8,18,9,8,11,9,9,1,2,4,3,16,6,19,21,20,3,1,161,1,27,28,47,47,58,75,56,39,27,28,2, +5,4,4,1,17,17,16,19,1,27,28,47,46,58,58,47,47,28,28,1,251,32,8,10,18,2,2,18,11,3,4,2, +8,17,17,4,2,5,2,2,2,2,5,4,3,4,6,1,1,3,12,13,31,32,9,9,18,2,2,18,11,1,4,8, +17,17,4,4,1,2,2,2,6,2,4,3,5,2,4,13,13,31,0,0,0,3,0,0,255,192,2,128,1,192,0,27, +0,94,0,131,0,0,1,38,39,49,38,39,6,7,6,7,22,23,6,7,6,7,6,23,22,51,54,55,22,23,54,55, +54,55,7,6,7,21,6,7,38,39,53,38,47,1,38,55,54,31,1,50,49,22,23,22,55,54,55,52,49,54,39,38, +47,1,52,49,38,39,38,55,54,55,53,54,55,22,23,21,22,23,22,7,6,39,38,39,38,7,6,7,6,23,22,31, +1,22,23,22,7,5,54,55,38,39,38,39,48,49,34,49,20,21,22,21,6,7,6,7,22,23,22,23,54,55,22,23, +50,55,54,39,48,49,38,39,38,39,1,160,2,59,59,88,88,59,59,2,1,41,14,12,13,1,3,2,2,5,58,37, +47,58,88,59,59,2,146,7,35,2,18,18,2,13,12,4,17,5,7,18,4,1,12,11,11,9,9,1,2,4,4,21, +6,16,19,19,3,7,35,2,18,18,2,8,11,16,4,8,18,9,8,11,9,9,1,2,4,3,16,7,18,21,20,3, +1,74,39,1,2,54,54,82,1,1,2,51,52,81,17,50,50,69,51,42,37,54,5,2,2,3,3,11,12,12,1,16, +75,49,50,2,2,50,49,75,60,45,25,16,16,1,4,4,5,2,22,23,1,2,50,49,75,42,31,9,10,18,2,2, +18,11,3,4,2,8,17,17,4,2,5,2,2,2,2,5,1,3,3,4,6,1,1,3,12,13,31,32,8,10,18,2, +2,18,11,1,4,7,18,17,4,4,1,2,2,2,6,2,4,3,5,2,4,13,13,31,226,46,62,75,49,50,2,1, +1,7,7,75,55,55,18,58,37,37,1,1,21,20,2,5,4,4,2,15,15,23,0,0,0,1,0,0,255,192,1,127, +1,192,0,44,0,0,1,21,20,7,6,43,1,21,20,7,6,43,1,34,39,38,61,1,35,34,39,38,61,1,52,55, +54,59,1,53,52,55,54,59,1,50,23,22,29,1,51,50,23,22,21,1,127,9,9,13,96,9,9,13,65,14,9,9, +96,14,9,9,9,9,14,96,9,9,14,64,14,8,9,96,14,9,9,1,32,64,14,9,9,224,14,9,9,9,9,14, +224,9,9,14,64,14,9,9,96,14,9,9,9,9,14,96,9,9,14,0,0,10,0,0,255,192,2,0,1,192,0,72, +0,79,0,86,0,93,0,100,0,107,0,125,0,132,0,139,0,146,0,0,37,7,38,39,55,54,47,1,38,15,1,38, +39,55,38,39,35,6,7,23,6,7,39,38,15,1,6,31,1,6,7,39,6,7,21,22,23,55,22,23,7,6,31,1, +22,63,1,22,23,7,22,23,51,54,55,39,54,55,23,22,63,1,54,47,1,54,55,23,54,55,53,38,47,1,22,23, +7,38,39,55,35,23,6,7,39,54,55,7,23,6,7,39,54,55,7,55,22,23,7,38,39,23,38,39,55,22,23,7, +55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,39,54,55,23,6,7,55,39,54,55,23,6,7, +39,38,39,55,22,23,7,1,239,17,9,35,12,10,9,20,13,11,11,46,60,1,1,15,30,15,1,1,60,46,11,11, +12,22,9,10,12,35,8,17,15,2,2,15,17,9,35,12,10,9,22,11,12,11,46,60,2,1,15,30,15,1,1,60, +46,11,11,13,21,9,10,12,35,9,16,15,2,2,15,213,37,30,42,14,15,4,52,4,15,13,43,30,37,104,49,9, +3,64,6,21,27,64,3,9,49,21,6,131,37,30,42,14,15,4,26,14,9,9,9,9,14,14,9,9,9,9,14,26, +4,15,14,42,30,37,104,49,9,3,64,6,21,37,3,9,49,21,6,64,223,1,60,46,11,11,13,21,9,10,12,35, +9,16,15,2,2,15,17,9,35,13,10,9,22,12,11,11,46,60,1,1,15,30,15,1,1,60,46,11,11,12,22,9, +10,12,35,9,16,15,2,2,15,17,9,35,12,10,9,22,11,12,11,46,60,2,1,15,30,15,1,126,6,21,49,9, +3,64,64,3,9,49,21,6,64,42,14,15,4,37,30,119,4,15,14,42,30,37,131,6,21,49,9,3,64,125,9,9, +14,14,9,9,9,9,14,14,9,9,125,64,3,9,49,21,6,64,42,14,15,4,37,30,115,15,14,42,30,37,4,0, +0,4,0,0,255,192,2,0,1,192,0,17,0,65,0,76,0,87,0,0,37,6,47,1,21,22,23,22,23,33,54,55, +54,55,53,7,6,35,55,38,39,53,38,39,38,43,1,38,35,38,39,38,39,38,39,38,39,6,7,6,7,6,7,6, +7,34,7,35,6,7,6,7,21,6,7,6,29,1,23,53,33,21,55,53,52,39,5,51,54,55,38,39,35,6,7,22, +23,53,51,54,55,38,39,35,6,7,22,23,1,0,25,22,209,1,13,14,20,1,160,20,14,13,1,209,22,25,238,13, +17,1,13,14,20,77,1,1,4,4,4,5,14,17,18,15,15,18,17,14,5,4,4,4,1,1,77,20,14,13,1,17, +13,18,96,1,64,96,18,254,194,160,15,1,1,15,160,15,1,1,15,160,15,1,1,15,160,15,1,1,15,31,1,16, +151,213,20,14,13,1,1,13,13,20,214,151,15,254,10,13,44,20,14,14,1,3,3,3,4,11,11,11,1,1,11,11, +11,4,4,2,3,1,1,13,14,20,44,13,10,15,23,10,70,185,185,70,10,23,15,92,1,14,15,1,1,15,14,1, +64,1,15,14,1,2,13,15,1,0,0,0,0,2,0,0,255,224,2,0,1,160,0,22,0,33,0,0,1,35,39,35, +6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,35,38,39,54,55,51,22,23,6,7,1,208, +192,64,160,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,128,161,21,2,2,21,160,23,2,2,22, +1,96,64,1,13,14,20,254,160,20,14,13,1,1,13,14,20,1,32,20,14,13,1,215,1,22,21,2,1,22,22,1, +0,2,0,0,255,224,2,0,1,160,0,22,0,47,0,0,1,35,39,35,6,7,6,7,17,22,23,22,23,33,54,55, +54,55,17,38,39,38,39,7,35,21,6,7,38,39,53,35,38,39,54,55,51,53,54,55,22,23,21,51,22,23,6,7, +1,208,192,64,160,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,128,56,3,21,22,1,58,21,2, +2,21,56,3,22,22,1,56,23,2,2,22,1,96,64,1,13,14,20,254,160,20,14,13,1,1,13,14,20,1,32,20, +14,13,1,215,56,23,2,2,21,58,1,22,21,2,58,21,2,2,21,57,2,22,22,1,0,3,0,0,255,192,2,64, +1,192,0,24,0,42,0,127,0,0,19,54,55,33,22,23,22,15,1,6,7,6,7,22,23,38,47,1,38,61,1,39, +38,55,49,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,54,51,50,23,22,55,54,39,38,39, +53,38,39,6,7,21,6,7,6,7,22,23,22,31,1,22,23,22,7,48,21,22,7,22,7,6,39,34,39,34,39,38, +39,38,7,6,23,50,51,50,23,22,23,21,22,23,54,55,53,54,55,54,53,38,39,38,39,48,35,49,34,49,38,39, +38,55,48,49,53,52,55,54,55,49,4,11,25,1,176,25,11,10,16,106,61,39,40,1,1,18,3,2,64,13,183,15, +10,2,60,2,40,41,61,61,41,41,2,2,41,41,61,61,41,40,2,163,9,10,12,14,15,5,2,14,9,9,1,15, +15,1,9,10,20,1,4,18,14,14,2,15,8,5,1,1,2,1,5,7,10,14,14,1,1,3,3,15,5,3,13,1, +1,1,2,11,13,1,15,15,1,9,9,21,2,17,15,15,1,1,15,8,6,1,1,1,3,1,169,22,1,1,22,23, +19,131,13,47,47,65,41,36,2,1,48,10,16,79,224,19,23,254,167,61,41,40,2,2,40,41,61,61,41,40,2,2, +40,41,61,37,3,4,2,14,14,5,2,2,9,15,1,1,15,10,1,5,9,28,23,8,7,2,2,4,4,3,2,1, +3,1,1,2,4,1,5,1,1,1,3,14,14,6,2,3,3,12,14,2,2,14,11,2,4,10,27,24,9,7,4,4, +4,4,1,1,2,1,1,3,0,3,0,0,255,192,2,0,1,192,0,101,0,114,0,126,0,0,19,22,23,21,51,53, +54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,22,23,21,50,23,22,29,1,50,23,22,29,1,50,23,22, +29,1,20,7,6,43,1,53,35,53,35,53,35,21,51,21,51,21,35,53,38,39,38,39,6,7,6,7,21,35,53,51, +53,51,53,35,21,35,21,35,21,35,34,39,38,61,1,52,55,54,51,53,52,55,54,51,53,52,55,54,51,53,54,55, +19,34,7,49,6,29,1,51,53,52,39,38,35,39,51,53,52,39,38,35,34,7,6,29,1,120,22,2,40,2,22,22, +2,48,2,22,22,2,40,2,22,22,2,14,9,9,14,9,9,14,9,9,9,9,14,64,32,32,32,32,32,80,1,13, +14,20,20,14,13,1,80,32,32,32,32,32,64,14,9,9,9,9,14,9,9,14,9,9,14,2,22,136,14,9,9,64, +9,9,14,32,64,9,9,14,14,9,9,1,192,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2, +22,104,9,9,14,64,9,9,14,96,9,9,14,96,14,9,9,160,128,96,96,128,160,48,20,14,13,1,1,13,14,20, +48,160,128,96,96,128,160,9,9,14,96,14,9,9,96,14,9,9,64,14,9,9,104,22,2,254,240,9,9,14,48,48, +14,9,9,48,32,14,9,9,9,9,14,32,0,3,0,0,255,192,1,255,1,192,0,58,0,85,0,103,0,0,37,38, +39,35,53,52,39,38,39,34,7,6,29,1,6,7,35,38,39,53,52,39,38,39,34,7,6,7,21,20,7,35,38,39, +53,52,39,38,39,34,7,6,7,21,35,6,7,6,31,1,22,23,22,51,54,63,1,54,39,7,38,39,49,38,39,49, +38,53,52,55,54,55,54,55,22,23,22,23,22,21,20,7,6,7,6,7,53,34,7,49,6,21,20,23,22,51,50,55, +54,53,52,39,38,35,1,253,9,20,64,12,11,17,17,11,12,1,9,20,9,1,11,11,17,17,12,12,1,10,20,8, +2,12,11,17,17,11,11,1,63,20,9,8,14,102,27,38,37,43,87,58,102,14,8,253,27,21,22,13,13,13,13,22, +21,27,27,21,22,13,13,13,13,22,21,27,14,9,9,9,9,14,14,9,9,9,9,14,141,18,1,208,16,12,11,1, +12,11,17,134,9,1,1,8,175,16,12,11,1,12,11,17,174,9,1,1,9,134,16,12,11,1,12,11,17,208,1,18, +19,16,110,29,15,16,1,59,110,16,19,109,1,16,15,15,16,1,1,16,15,15,16,1,1,16,15,15,16,1,1,16, +15,15,16,1,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,2,0,0,255,192,2,0,1,192,0,56, +0,75,0,0,37,39,55,54,39,38,15,1,39,38,35,34,15,1,39,38,7,6,31,1,7,6,7,6,31,1,7,6, +23,22,51,50,51,55,7,22,23,50,63,1,23,22,51,54,55,39,23,22,55,54,47,1,55,54,39,38,39,7,39,23, +39,7,55,7,55,39,55,39,23,55,23,55,7,23,7,23,1,240,110,42,4,9,9,12,94,35,5,13,11,5,34,94, +13,9,9,4,42,110,14,2,2,12,98,75,7,4,5,12,2,2,108,4,2,17,8,6,68,68,6,8,17,2,4,108, +14,6,6,8,75,98,12,2,2,14,157,52,2,33,33,2,51,35,47,53,20,45,15,16,45,19,53,47,36,245,16,104, +14,7,8,6,60,107,13,13,107,60,6,7,8,14,104,16,3,12,12,7,53,83,10,10,11,24,113,18,1,7,89,89, +7,1,18,113,24,2,11,11,11,83,53,7,12,12,3,109,12,54,42,42,54,12,40,25,8,50,29,51,51,29,50,8, +25,40,0,0,0,1,0,16,255,192,2,47,1,192,0,124,0,0,37,7,51,6,7,6,7,38,39,38,39,51,39,38, +53,52,55,52,53,51,39,54,55,54,55,54,51,22,23,22,7,6,21,22,23,22,23,20,7,6,7,6,23,22,23,22, +23,55,7,6,39,38,63,1,39,38,39,54,63,1,39,38,55,54,31,1,19,54,55,22,23,19,55,54,23,22,15,1, +23,22,23,6,15,1,23,22,7,6,47,1,23,54,55,54,55,54,39,38,39,38,55,52,55,54,55,52,39,38,55,54, +55,50,23,22,23,22,23,7,51,20,23,20,21,22,7,2,43,59,40,33,66,65,85,84,65,65,33,40,59,5,1,47, +41,11,28,27,42,4,5,8,5,5,3,10,2,56,6,1,6,25,10,10,6,8,27,26,37,2,27,5,5,4,3,20, +42,6,1,1,6,42,20,3,4,5,5,30,12,1,6,7,1,12,30,5,5,4,3,20,42,6,1,1,6,42,20,3, +4,5,5,27,2,37,26,27,8,6,10,10,25,6,1,6,57,1,10,3,5,5,8,5,4,42,27,28,11,41,47,1, +1,5,155,59,72,43,43,2,1,44,43,72,59,26,26,5,5,4,3,41,50,41,42,29,4,1,7,7,8,25,26,70, +44,5,7,8,5,23,31,30,33,37,26,26,8,66,19,3,4,4,6,34,8,2,6,6,2,9,33,6,4,4,3,21, +1,32,7,1,1,7,254,224,21,3,4,4,6,33,9,2,6,6,2,9,33,6,4,4,3,18,65,8,26,26,37,33, +30,31,23,5,8,7,5,43,71,26,25,8,7,7,1,3,30,42,41,50,41,3,4,5,5,26,26,0,0,3,0,0, +255,192,1,192,1,192,0,25,0,154,0,166,0,0,37,17,38,39,38,39,33,6,7,6,7,17,22,23,22,23,33,50, +55,54,53,38,39,53,54,55,37,23,22,55,54,47,1,54,55,6,23,22,23,6,23,22,23,55,7,6,35,34,39,38, +53,52,63,1,39,38,53,52,63,1,39,38,55,54,31,1,55,54,51,50,31,1,55,54,51,48,49,50,23,22,15,1, +23,22,21,20,15,1,23,22,7,6,35,34,47,1,23,54,55,54,39,54,55,54,39,22,23,7,6,23,22,63,1,22, +21,48,21,48,21,7,6,21,20,23,20,49,22,51,50,55,48,49,55,6,7,6,7,38,39,38,39,23,22,51,50,55, +54,47,1,52,49,52,49,52,55,19,33,34,39,38,53,52,55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27, +1,1,27,27,41,1,64,14,9,9,1,15,15,1,254,197,21,6,6,4,4,27,16,31,13,4,4,19,22,9,10,31, +2,11,1,1,1,2,1,1,8,18,3,3,18,8,2,2,3,2,12,5,1,3,3,1,5,14,1,1,2,2,1,2, +8,17,3,3,17,9,1,1,2,2,1,1,13,2,31,11,8,22,19,4,4,13,31,16,27,4,4,6,6,21,5,37, +3,1,4,3,2,3,24,10,29,29,41,41,29,29,10,24,2,3,5,3,1,4,37,5,251,254,224,14,9,9,9,9, +14,1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9,82,14,22,176,22,4,4, +6,6,26,32,17,21,23,23,15,24,32,30,8,33,7,1,1,2,1,1,1,14,4,1,3,3,1,4,14,3,2,2, +2,8,111,4,4,112,9,1,2,2,2,14,4,1,3,3,1,3,15,2,2,2,1,8,34,8,30,32,24,15,23,23, +21,17,32,26,6,6,4,4,22,16,16,1,1,32,3,3,2,2,1,3,1,21,38,23,24,1,1,24,24,38,21,2, +5,5,4,32,1,1,16,16,254,224,9,9,14,14,9,9,64,0,0,0,0,6,0,0,255,192,2,64,1,192,0,14, +0,19,0,49,0,60,0,71,0,88,0,0,1,54,23,5,22,23,21,5,6,39,37,53,54,55,37,23,55,39,7,31, +1,37,21,7,6,23,22,63,1,21,6,7,5,6,39,37,38,39,53,23,22,55,54,47,1,53,5,22,55,49,39,38, +7,6,31,1,22,55,54,47,1,5,54,39,38,15,1,6,23,22,63,1,7,38,7,6,31,1,22,63,1,54,39,38, +15,1,6,47,1,1,23,9,10,1,0,21,1,254,229,5,5,254,229,1,21,1,1,9,227,227,228,228,14,1,18,53, +13,3,5,15,43,1,21,255,0,10,9,254,255,21,1,43,15,5,3,13,53,1,18,13,15,185,15,5,3,13,64,15, +5,3,13,64,1,96,13,3,5,15,64,13,3,5,15,64,224,15,5,3,13,39,13,15,39,13,3,5,15,38,5,5, +38,1,191,2,2,80,8,23,37,89,1,1,89,37,23,8,80,190,71,71,71,71,77,85,46,17,5,15,13,3,13,137, +22,9,80,3,3,80,9,23,136,13,3,13,15,5,17,46,85,5,5,2,3,13,15,5,20,3,13,15,5,20,30,5, +15,13,3,20,5,15,13,3,20,10,3,13,15,5,12,5,5,12,5,15,13,3,12,1,1,12,0,0,0,3,0,31, +255,194,2,31,1,192,0,116,0,125,0,134,0,0,1,38,7,6,23,22,23,6,7,6,15,1,53,55,54,47,1,54, +55,54,55,38,39,38,39,55,54,47,1,7,6,31,1,6,7,6,21,20,23,22,23,7,6,31,1,21,39,38,39,38, +39,52,55,54,39,38,7,6,7,6,23,22,31,1,22,63,1,23,7,34,39,34,35,6,7,22,23,54,63,1,21,6, +7,20,23,22,51,50,55,54,53,38,39,53,23,22,23,54,55,38,39,34,7,34,35,39,55,23,22,63,1,54,55,54, +39,38,39,7,6,7,39,38,63,1,22,23,35,54,55,23,22,15,1,38,39,1,192,11,9,7,5,25,1,1,18,19, +34,76,44,6,3,8,26,15,15,1,1,14,15,25,5,4,7,59,59,8,4,5,25,14,15,16,15,26,9,2,6,43, +76,33,19,18,1,25,6,8,9,11,60,24,23,25,11,20,56,8,11,80,29,47,1,1,1,1,22,2,2,22,19,4, +41,15,1,9,9,13,13,9,9,1,15,41,4,19,22,2,2,22,2,1,1,1,47,29,80,11,8,53,28,13,16,24, +25,56,96,2,27,6,13,13,8,26,1,128,1,25,8,13,13,5,28,1,1,127,5,8,9,11,40,47,41,34,35,22, +54,20,36,7,9,16,15,25,25,32,31,25,25,15,11,9,6,54,53,7,9,11,15,25,25,30,32,25,25,15,18,9, +7,36,20,54,23,34,35,40,47,40,11,8,9,6,34,62,63,70,27,22,65,9,5,42,20,33,1,2,22,21,2,2, +19,28,30,9,18,14,8,9,9,9,13,18,9,30,28,19,2,2,22,22,2,1,33,20,42,5,9,61,33,42,64,56, +56,32,111,35,18,12,38,38,17,19,33,33,19,17,38,38,12,18,35,0,0,2,0,0,255,192,2,0,1,192,0,19, +0,54,0,0,19,54,31,2,21,23,22,7,6,7,33,38,39,38,63,1,53,63,1,7,51,21,51,53,51,21,51,53, +51,21,51,53,51,21,48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,50,49,53,240,15,17,172,3,49, +20,5,7,25,254,64,22,8,5,20,47,5,172,176,64,40,64,48,64,40,64,1,1,48,18,5,8,23,254,64,23,8, +5,18,48,1,1,1,188,8,8,98,2,1,27,13,23,23,1,1,23,23,13,27,1,2,98,220,192,192,192,192,192,192, +196,1,32,14,22,22,1,1,22,22,14,32,1,196,0,0,0,5,0,32,255,192,2,96,1,192,0,17,0,37,0,53, +0,76,0,81,0,0,23,34,47,1,21,20,23,22,51,33,50,55,54,61,1,7,6,35,17,54,55,49,54,55,51,53, +52,39,38,35,33,34,7,6,29,1,51,53,23,33,34,7,6,29,1,23,22,63,1,53,52,39,38,35,37,33,34,7, +6,29,1,51,22,23,22,23,21,51,50,55,54,61,1,52,39,38,35,7,35,53,51,21,192,15,13,132,9,9,14,1, +0,14,9,9,132,13,15,1,18,18,27,224,9,9,14,254,192,14,9,9,96,128,255,0,14,9,9,151,9,9,151,9, +9,14,1,0,254,192,14,9,9,96,26,17,18,3,192,14,9,9,9,9,14,32,64,64,1,9,100,140,14,9,9,9, +9,14,140,100,9,1,1,27,18,18,1,96,14,9,9,9,9,14,192,32,64,9,9,14,12,114,6,6,114,12,14,9, +9,96,9,9,14,32,1,16,16,25,134,9,9,14,192,14,9,9,128,64,64,0,0,0,0,12,0,0,255,192,2,128, +1,192,0,8,0,28,0,37,0,57,0,77,0,97,0,156,0,165,0,185,0,205,0,225,0,234,0,0,1,38,39,35, +6,7,21,51,53,39,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,23,38,39,35,6,7,21, +51,53,55,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,33,50,55,49,54,53,38,39,38,39, +48,49,6,7,6,7,20,23,22,59,1,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,23,35, +6,7,21,20,7,6,43,1,53,38,39,35,6,7,21,35,34,39,38,61,1,38,39,35,6,7,21,22,23,22,23,51, +21,35,6,7,6,7,22,23,33,54,55,38,39,38,39,35,53,51,54,55,54,55,53,38,39,5,38,39,35,6,7,21, +51,53,55,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,35,50,55,49,54,53,38,39,38,39, +48,49,6,7,6,7,20,23,22,59,1,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,23,38, +39,35,6,7,21,51,53,2,32,1,15,32,15,1,64,128,14,9,9,2,14,14,2,2,14,14,2,9,9,14,32,1, +15,32,15,1,64,160,14,9,9,2,14,14,2,2,14,14,2,9,9,14,254,224,14,9,9,2,14,14,2,2,14,14, +2,9,9,14,192,14,9,9,2,14,14,2,2,14,14,2,9,9,14,112,32,15,1,9,9,14,192,1,15,32,15,1, +192,14,9,9,1,15,32,15,1,1,27,27,41,192,112,20,14,13,1,1,15,1,96,15,1,1,13,14,20,112,192,41, +27,27,1,1,15,254,48,1,15,32,15,1,64,64,14,9,9,2,14,14,2,2,14,14,2,9,9,14,192,14,9,9, +2,14,14,2,2,14,14,2,9,9,14,96,14,9,9,2,14,14,2,2,14,14,2,9,9,14,128,1,15,32,15,1, +64,1,48,15,1,1,15,144,144,49,9,9,14,15,23,23,2,2,23,23,15,13,9,10,49,15,1,1,15,144,144,49, +9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14,15, +23,23,2,2,23,23,15,13,9,10,33,1,15,144,14,9,9,176,15,1,1,15,176,9,9,14,144,15,1,1,15,144, +41,27,27,1,64,1,13,14,20,15,1,1,15,20,14,13,1,64,1,27,27,41,144,15,1,16,15,1,1,15,144,144, +49,9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14, +15,23,23,2,2,23,23,15,13,9,10,49,15,1,1,15,144,144,0,0,0,4,0,0,255,192,2,128,1,192,0,34, +0,78,0,94,0,110,0,0,1,50,23,22,23,22,23,48,49,22,23,22,23,22,23,6,7,33,38,39,54,55,54,55, +54,55,48,49,54,55,54,55,54,51,49,3,38,39,6,7,21,35,34,39,38,61,1,52,55,54,51,33,50,23,22,29, +1,20,7,6,43,1,53,38,39,6,7,21,35,53,52,47,1,7,6,7,21,35,53,3,54,31,1,22,23,22,29,1, +35,53,52,55,54,63,1,7,51,21,6,7,21,20,23,6,43,1,38,39,38,39,17,1,144,8,5,26,33,33,41,5, +4,4,3,45,1,1,29,254,156,29,1,1,45,3,4,4,5,41,33,33,26,4,9,112,2,22,22,2,48,14,9,9, +9,9,14,1,160,14,9,9,9,9,14,48,2,22,22,2,64,24,24,25,22,1,64,218,10,10,16,25,15,14,160,14, +15,25,16,70,160,30,2,6,10,12,64,20,14,13,1,1,192,6,34,26,25,27,3,3,2,3,31,55,43,30,30,43, +55,31,3,2,3,3,27,25,26,34,6,254,72,22,2,2,22,72,9,9,14,128,14,9,9,9,9,14,128,14,9,9, +72,22,2,2,22,72,59,30,18,21,21,18,30,59,72,1,179,6,6,12,20,28,29,32,2,2,32,29,28,20,12,155, +137,18,37,128,14,13,5,1,13,14,20,1,48,0,0,0,0,3,0,0,255,192,2,0,1,192,0,18,0,126,0,156, +0,0,1,22,51,50,63,1,54,53,52,47,1,38,15,1,6,21,20,31,2,6,15,1,6,43,1,54,39,38,39,38, +39,38,7,6,31,1,22,55,54,55,22,23,22,23,20,7,6,7,39,6,7,6,31,1,22,23,51,22,23,22,23,6, +7,6,7,38,39,38,39,38,39,38,7,6,21,20,23,22,23,22,23,54,55,54,55,38,39,51,54,63,1,54,51,50, +23,22,29,1,6,7,6,35,38,39,38,39,38,7,6,29,1,6,23,22,23,22,23,54,55,54,55,53,38,39,38,39, +55,6,39,49,38,39,49,38,39,38,7,6,23,22,23,22,23,22,23,54,55,54,55,54,61,1,38,39,38,7,1,105, +3,4,4,3,22,3,3,22,7,7,22,3,3,22,51,41,30,24,10,15,47,17,9,8,25,24,33,56,40,11,12,27, +9,10,13,17,20,14,13,1,14,14,21,31,9,5,4,4,16,4,9,33,27,18,18,1,1,18,18,27,67,30,30,15, +2,1,4,5,6,15,15,36,35,59,54,36,36,1,1,17,22,41,30,24,10,15,16,10,11,1,10,10,11,30,20,21, +11,4,5,5,1,5,4,20,21,47,38,28,29,1,1,28,28,43,42,43,39,38,25,25,2,11,9,9,5,1,13,13, +26,27,39,58,22,21,1,1,1,8,8,9,1,131,3,3,22,3,4,4,3,22,6,6,22,3,4,4,3,22,130,1, +28,25,10,34,41,32,22,23,5,8,36,14,11,20,6,6,11,1,1,13,14,20,21,13,14,1,1,1,7,7,8,34, +7,1,1,18,18,27,27,18,18,1,2,27,27,31,2,3,5,1,2,7,29,35,34,26,26,1,1,37,36,54,35,29, +1,28,25,10,10,11,15,100,10,7,7,1,13,14,15,4,2,1,6,38,1,16,15,15,16,1,1,25,25,37,100,43, +28,29,1,124,31,1,1,13,13,3,6,7,8,12,2,18,17,17,17,1,2,14,15,7,3,3,36,10,4,4,5,0, +0,3,0,0,255,192,2,128,1,192,0,203,0,212,0,221,0,0,37,38,7,49,6,7,6,39,38,39,38,39,48,49, +38,39,54,55,54,55,22,23,54,55,54,55,54,23,54,55,38,39,6,7,6,7,6,39,38,39,38,39,38,39,55,54, +55,54,55,38,39,38,39,6,7,6,7,20,23,7,38,35,34,7,39,54,53,38,39,38,39,6,7,6,7,22,23,22, +31,1,6,7,6,7,6,7,6,39,38,39,38,39,6,7,22,23,54,23,22,23,22,23,22,23,54,55,22,23,22,23, +6,7,48,49,6,7,6,7,6,39,38,39,38,7,6,23,22,55,54,23,22,23,48,49,22,23,22,23,50,55,54,55, +54,55,54,55,22,23,6,7,6,7,6,7,22,23,54,55,54,55,54,55,22,51,50,55,22,23,22,23,22,23,54,55, +38,39,38,39,38,39,54,55,22,23,48,49,22,23,22,23,22,51,54,55,54,55,50,49,54,23,22,55,54,39,1,38, +39,54,55,22,23,6,7,37,22,23,6,7,38,39,54,55,2,113,25,19,18,14,22,9,6,3,4,3,4,14,1,1, +2,2,15,27,25,14,15,7,15,8,22,2,2,22,25,15,14,8,14,8,10,17,11,17,17,25,17,26,17,16,1,1, +18,18,27,27,18,18,1,11,18,26,31,31,25,19,11,1,18,18,27,27,18,18,1,1,16,17,26,17,25,17,17,12, +16,10,8,14,8,15,14,25,22,2,2,22,9,12,1,1,8,14,15,24,27,15,2,2,1,1,14,4,3,4,3,6, +9,22,14,18,19,25,19,6,9,21,6,7,7,12,10,13,13,16,11,12,24,9,9,4,3,3,24,37,7,16,16,21, +22,2,2,22,33,22,22,13,12,5,10,11,11,10,5,12,13,22,22,33,22,2,2,22,21,16,16,7,37,24,3,3, +4,9,9,24,12,11,16,12,13,10,1,22,10,21,9,6,19,254,79,15,1,1,15,15,1,1,15,1,0,15,1,1, +15,15,1,1,15,100,9,8,7,10,17,5,2,7,6,15,21,22,1,1,3,3,16,1,1,14,14,14,23,2,2,22, +22,2,1,14,14,14,23,2,2,25,17,20,20,18,34,3,17,18,26,27,18,18,1,1,18,18,27,20,15,37,8,8, +37,15,20,27,18,18,1,1,18,18,27,26,18,17,3,34,18,20,20,17,25,2,2,23,14,14,14,1,2,22,22,2, +2,23,1,2,13,13,13,1,1,16,3,2,2,2,21,21,15,6,7,2,5,17,10,7,8,9,9,22,19,5,3,3, +2,9,7,7,6,1,5,10,18,17,17,13,6,21,13,30,30,29,2,2,22,22,2,1,23,24,30,30,21,1,1,21, +30,30,24,23,1,2,22,22,2,2,29,30,30,13,21,6,13,17,18,17,10,5,1,6,6,8,17,6,5,19,21,10, +1,12,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,0,0,5,0,0,255,192,2,0,1,192,0,26, +0,31,0,36,0,46,0,55,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,3,38,39,55,21,55,23,6,7,53,39,54,55,49,54,55,21,7,38,39,5,39,53,22,23,22,23, +6,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,32,55,41,96, +64,96,41,55,224,2,44,45,69,136,23,1,1,104,136,70,44,45,1,1,23,1,192,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,67,10,36,76,122,122,76,35,11,122,67,73,51,52,13,174, +108,42,51,93,108,174,13,52,51,73,51,42,0,3,0,0,255,192,2,128,1,185,0,31,0,43,0,55,0,0,19,55, +54,31,1,22,29,1,23,22,23,21,35,53,38,39,38,39,6,7,6,7,21,35,53,54,63,1,53,54,55,49,7,55, +21,35,38,39,38,39,53,54,55,49,5,35,53,23,22,23,21,6,7,6,7,49,233,76,11,11,76,9,41,22,1,96, +1,18,18,28,26,19,18,1,96,1,23,40,1,9,208,103,80,20,14,13,1,1,24,2,55,80,103,24,1,1,13,14, +20,1,105,76,9,9,76,9,13,109,24,14,27,229,96,27,18,18,1,1,18,18,27,96,229,27,14,24,109,13,9,243, +56,238,1,13,14,20,92,27,15,182,238,56,15,27,92,20,14,13,1,0,0,4,0,0,255,224,1,192,1,160,0,21, +0,41,0,61,0,81,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,5,34, +7,49,6,29,1,20,23,22,51,50,55,54,61,1,52,39,38,35,23,20,23,49,22,51,50,55,54,61,1,52,39,38, +35,34,7,6,29,1,55,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1,52,39,38,35,1,128,27,18,18,1, +1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,255,0,14,9,9,9,9,14,14,9,9,9,9,14,64,9, +9,14,14,9,9,9,9,14,14,9,9,128,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,27,18,18,1,192,9,9,14,96,14,9,9,9,9,14,96,14,9,9,128,14,9, +9,9,9,14,192,14,9,9,9,9,14,192,64,9,9,14,32,14,9,9,9,9,14,32,14,9,9,0,0,4,0,0, +255,224,1,192,1,160,0,21,0,41,0,61,0,81,0,0,37,6,7,49,6,7,33,38,39,38,39,17,54,55,54,55, +33,22,23,22,23,17,3,52,39,49,38,43,1,34,7,6,21,20,23,22,59,1,50,55,54,53,7,34,7,49,6,21, +20,23,22,59,1,50,55,54,53,52,39,38,43,1,23,52,39,49,38,43,1,34,7,6,21,20,23,22,59,1,50,55, +54,53,1,192,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,192,9,9,14,96,14,9,9, +9,9,14,96,14,9,9,128,14,9,9,9,9,14,192,14,9,9,9,9,14,192,64,9,9,14,32,14,9,9,9,9, +14,32,14,9,9,32,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,1,0,14,9,9,9, +9,14,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,128,14,9,9,9,9,14,14,9,9,9, +9,14,0,0,0,2,0,0,255,192,1,128,1,192,0,17,0,61,0,0,19,54,55,49,54,53,38,39,38,39,6,7, +6,7,22,23,22,23,7,22,23,49,22,63,1,54,55,54,39,38,39,38,15,1,39,38,7,6,15,1,6,23,22,31, +1,35,34,7,6,21,20,23,22,59,1,54,55,54,47,1,55,23,255,27,18,18,1,17,18,27,27,18,18,1,1,18, +18,27,30,11,16,16,13,88,13,2,1,10,11,16,16,13,58,39,25,39,38,18,49,18,10,9,33,45,92,17,11,12, +12,11,17,208,27,9,10,18,110,35,24,1,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,170,12,2, +1,10,72,11,16,16,13,13,2,1,10,47,46,29,3,5,32,92,34,34,35,21,35,12,11,17,17,11,12,2,23,22, +21,110,65,29,0,2,0,0,255,192,2,128,1,191,0,48,0,96,0,0,1,34,7,49,6,29,1,6,7,38,39,53, +52,63,1,54,39,38,39,38,7,34,49,48,49,7,6,29,1,7,6,7,21,20,23,22,23,50,63,1,54,55,54,55, +53,52,39,38,35,5,39,53,52,47,1,34,49,48,49,38,7,6,7,6,31,1,22,29,1,6,7,38,39,53,52,39, +38,35,6,7,6,29,1,22,23,22,31,1,22,51,54,55,54,61,1,38,39,1,16,14,9,9,1,15,15,1,14,78, +6,3,3,11,26,17,1,117,16,90,21,1,7,8,17,4,4,179,38,23,23,1,9,9,14,1,90,90,16,117,1,18, +25,11,3,3,6,78,14,1,15,15,1,9,9,14,14,9,9,1,23,23,38,179,4,4,17,8,7,1,21,1,0,9, +9,14,80,15,1,1,15,77,26,23,130,11,13,12,7,13,22,176,24,29,81,29,9,22,96,9,11,10,1,1,47,11, +30,30,40,128,14,9,9,162,30,81,29,24,176,21,12,7,12,13,12,129,23,27,76,15,1,1,15,81,13,9,10,1, +8,9,13,127,40,31,30,12,49,1,1,11,11,8,96,23,8,0,0,0,0,4,0,0,255,192,1,191,1,192,0,25, +0,52,0,85,0,97,0,0,1,33,6,7,6,7,17,22,23,21,6,7,20,23,22,51,33,54,55,54,55,17,52,39, +38,39,7,22,15,1,23,20,7,34,53,39,7,20,35,38,53,55,39,38,63,2,54,51,50,31,2,39,50,23,22,7, +6,39,38,35,6,7,6,7,22,23,22,23,50,55,54,23,22,7,6,35,38,39,38,39,54,55,54,55,19,33,53,33, +50,23,22,21,20,7,6,35,1,96,254,208,20,14,13,1,1,15,15,1,9,9,13,1,64,41,27,27,1,27,27,41, +27,5,3,21,5,4,1,26,26,1,4,5,21,3,5,29,13,1,2,2,1,13,29,109,36,30,5,2,3,6,11,9, +37,25,25,1,1,25,25,37,9,11,6,3,2,5,30,36,51,34,34,1,1,34,34,51,136,254,224,1,32,14,9,9, +9,9,14,1,192,1,13,14,20,254,224,22,14,81,9,17,14,10,9,1,27,27,41,1,64,41,27,27,1,170,2,5, +20,28,4,1,1,13,13,1,1,4,28,20,5,2,4,26,2,2,26,4,98,20,4,6,6,1,3,1,25,25,37,37, +25,25,1,3,1,6,6,4,20,1,34,34,51,51,34,34,1,254,136,64,9,9,14,14,9,9,0,0,0,2,0,0, +255,192,2,0,1,191,0,28,0,91,0,0,37,39,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,22,55, +23,22,51,50,55,54,53,52,47,1,6,7,21,6,7,38,39,53,38,47,1,38,55,54,31,1,22,23,22,55,54,55, +54,39,38,47,1,34,39,38,39,38,55,54,55,53,54,55,22,23,21,22,23,22,7,6,39,38,39,38,7,6,7,6, +23,22,31,1,22,23,22,7,1,244,119,42,9,11,49,49,70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16, +16,12,12,12,226,8,38,2,18,18,2,15,13,5,17,5,7,18,5,14,12,13,10,10,2,2,5,5,24,6,1,2, +17,18,19,3,8,38,2,18,18,2,9,12,17,4,8,18,12,7,13,10,10,2,2,4,4,19,6,22,21,21,3,4, +120,62,83,70,48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12,12,12,16,16,12,190,34,8,8,18,2, +2,18,9,3,5,2,8,17,17,4,2,5,3,2,2,3,7,5,4,4,7,2,1,4,13,14,31,34,8,8,18,2, +1,19,9,1,5,7,18,17,4,5,1,2,2,3,7,4,4,4,6,2,4,14,13,34,0,3,0,0,255,192,2,0, +1,191,0,17,0,47,0,73,0,0,19,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,1,6,35,49, +34,47,1,6,39,38,39,38,39,38,55,54,55,54,23,22,23,22,23,22,7,23,22,21,20,7,3,38,39,49,38,39, +6,7,6,7,22,23,22,23,22,23,22,51,50,55,54,55,54,55,54,55,236,8,8,12,12,8,8,8,8,12,12,8, +8,1,8,12,16,16,12,120,62,83,70,48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12,12,206,1,24, +25,37,36,24,24,1,1,14,15,18,18,12,3,4,5,3,12,19,18,15,14,1,1,16,12,8,8,8,8,12,12,8, +8,8,8,12,254,188,12,12,119,42,9,11,49,49,70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16,16,12, +1,62,36,25,24,1,1,24,25,36,20,26,27,24,24,13,4,4,13,24,24,27,26,20,0,4,0,32,255,192,2,32, +1,192,0,12,0,33,0,49,0,62,0,0,1,52,55,38,43,1,34,7,6,7,21,51,53,3,55,53,35,21,7,6, +7,6,23,22,23,22,51,50,63,1,38,55,54,63,1,7,6,7,6,23,22,51,50,63,1,54,55,53,35,7,19,35, +34,7,6,29,1,51,53,52,39,38,35,1,63,8,2,6,127,14,9,9,1,160,72,73,160,87,30,8,9,18,14,23, +22,25,31,27,21,22,11,11,40,104,86,30,9,8,18,32,52,31,27,115,50,1,192,1,161,128,14,9,9,192,9,9, +14,1,160,17,13,2,9,9,14,32,32,254,234,55,159,175,65,23,35,36,33,23,13,12,19,17,42,45,46,32,39,65, +23,35,36,33,49,19,87,38,65,207,175,1,15,9,9,14,32,32,14,9,9,0,0,0,0,2,0,0,255,193,2,64, +1,191,0,35,0,77,0,0,1,52,39,49,38,43,1,6,7,3,39,38,39,35,34,7,6,21,20,23,22,59,1,23, +22,23,50,51,54,55,19,51,50,55,54,53,7,38,35,49,34,15,1,39,38,35,34,7,6,21,20,31,1,7,6,21, +20,23,22,51,50,63,1,23,22,51,50,55,54,53,52,47,1,55,54,53,52,39,2,64,9,9,14,224,24,7,91,73, +10,19,64,14,9,9,9,9,14,44,103,10,19,2,2,21,6,106,199,14,9,9,9,10,13,13,10,41,41,10,13,13, +10,9,9,42,42,9,9,10,13,13,10,41,41,10,13,13,10,9,9,42,42,9,9,1,160,14,8,9,1,23,254,149, +146,17,1,9,9,13,13,9,10,206,17,1,3,21,1,168,8,9,14,201,9,9,42,42,9,9,10,13,13,10,41,41, +10,13,13,10,9,9,42,42,9,9,10,13,13,10,41,41,10,13,13,10,0,2,0,0,255,192,1,255,1,192,0,41, +0,72,0,0,5,34,7,49,34,35,38,39,38,39,54,55,54,55,50,51,22,51,54,55,54,39,38,35,6,7,6,7, +6,7,22,23,22,23,22,23,50,55,54,55,38,39,55,47,1,38,35,34,15,2,6,7,6,31,1,7,6,23,50,63, +1,23,22,51,54,53,39,55,54,39,38,39,1,85,2,2,3,3,89,60,59,3,3,59,60,89,3,3,2,2,11,3, +2,11,44,46,71,58,58,34,34,1,1,34,34,58,58,71,46,43,10,1,1,14,163,77,34,3,6,6,3,34,77,6, +2,1,4,55,13,1,11,2,3,68,68,3,2,10,13,55,4,2,1,6,18,1,2,60,60,89,89,60,60,2,1,1, +11,12,6,16,1,34,34,58,58,71,71,58,58,34,34,1,16,4,11,13,2,252,11,69,6,6,69,11,1,6,5,5, +54,76,11,1,2,36,36,2,1,11,76,54,5,6,5,1,0,8,0,16,255,192,1,240,1,192,0,36,0,40,0,44, +0,48,0,52,0,59,0,63,0,67,0,0,37,39,55,54,39,38,39,35,39,38,35,34,15,1,35,6,7,6,31,1, +7,6,23,22,23,51,23,22,51,50,63,1,51,54,55,54,39,3,23,35,55,3,55,23,35,55,39,51,7,23,39,51, +7,55,35,39,55,51,23,7,51,55,23,35,55,39,51,7,1,235,55,55,10,10,11,22,111,58,12,21,21,12,58,111, +23,10,10,10,55,55,10,10,10,23,111,58,12,21,21,12,58,111,23,10,10,10,235,24,47,23,167,21,21,42,21,21, +42,21,146,24,47,23,58,116,54,54,116,54,54,67,21,20,41,20,20,41,21,103,89,89,20,17,17,1,93,19,18,94, +1,17,17,20,89,89,20,16,17,1,93,20,18,93,2,17,17,20,1,15,38,38,254,243,33,33,142,33,33,237,38,38, +95,87,87,87,87,33,33,142,33,33,0,0,0,4,0,0,255,192,2,128,1,192,0,22,0,47,0,63,0,79,0,0, +1,54,31,1,22,23,17,35,53,38,39,38,39,6,7,6,7,21,35,17,54,63,1,23,38,15,1,35,6,31,1,7, +6,23,51,23,22,63,1,51,54,47,1,55,54,39,35,39,23,55,54,51,50,31,1,22,29,1,6,7,6,7,35,17, +33,17,35,38,39,38,39,53,52,63,1,54,51,50,31,1,1,54,10,10,121,28,1,96,1,18,18,27,27,18,18,1, +96,1,28,121,16,6,7,16,32,11,4,16,16,4,11,32,16,7,6,17,32,11,4,16,16,4,11,32,17,186,28,5, +7,7,5,64,12,1,18,18,27,64,254,128,64,27,18,18,1,12,64,5,7,7,5,28,1,188,8,8,101,24,36,254, +165,128,27,18,18,1,1,18,18,27,128,1,91,36,24,101,120,8,8,28,2,10,27,29,10,2,28,8,8,28,2,10, +29,27,10,2,28,121,32,5,5,71,13,19,132,27,18,18,1,1,11,254,245,1,18,18,27,132,19,13,71,5,5,32, +0,11,0,0,255,192,2,128,1,192,0,3,0,7,0,27,0,31,0,35,0,42,0,62,0,67,0,104,0,108,0,112, +0,0,37,55,35,23,63,1,39,7,1,34,7,49,6,7,17,22,23,22,51,50,55,54,55,17,38,39,38,35,5,35, +23,55,7,55,39,7,59,1,55,39,35,7,23,1,34,7,49,6,7,17,22,23,22,51,50,55,54,55,17,38,39,38, +35,1,33,17,33,17,19,54,55,51,55,54,51,50,31,1,51,22,23,22,15,1,23,22,7,6,43,1,7,6,35,34, +47,1,35,34,39,38,63,1,39,38,63,1,7,51,39,7,35,23,55,1,64,18,36,18,63,36,18,18,254,177,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,115,37,19,18,198,37,19,18,66,66,33,33,66,33,33,1,49, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,48,1,128,254,128,67,6,12,60,29,6,11,12,5,29, +60,12,6,6,6,29,29,6,6,6,12,60,29,6,12,11,7,29,60,12,6,5,7,29,29,6,6,124,17,36,19,61, +37,18,19,81,30,30,55,1,30,31,1,56,9,9,14,254,64,14,9,9,9,9,14,1,192,14,9,9,201,30,30,111, +1,30,31,56,55,55,56,1,56,9,9,14,254,64,14,9,9,9,9,14,1,192,14,9,9,254,32,1,192,254,64,1, +38,10,1,49,10,10,49,1,10,11,10,49,48,11,10,11,49,10,10,49,11,10,10,49,49,11,10,40,29,29,55,30, +30,0,0,0,0,2,0,0,255,192,2,0,1,192,0,30,0,72,0,0,19,53,23,22,51,33,50,63,1,21,6,7, +6,7,35,21,35,53,35,21,35,53,35,21,35,53,35,38,39,38,39,23,34,39,49,38,53,52,55,54,51,33,50,23, +22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,61,1,33,21,20,7,6,35,34,39,38,61,1,35,0,71,25, +25,1,13,26,25,71,1,13,14,20,16,64,96,64,96,64,16,20,14,13,1,32,14,9,9,9,9,14,1,192,14,9, +9,9,9,14,32,9,9,14,14,9,9,255,0,9,9,14,14,9,9,32,1,112,80,24,8,8,24,80,20,14,13,1, +64,64,64,64,64,64,1,13,14,20,208,9,9,14,14,9,9,9,9,14,14,9,9,192,14,9,9,9,9,14,192,192, +14,9,9,9,9,14,192,0,0,3,0,0,255,192,2,128,1,192,0,145,0,150,0,155,0,0,1,55,54,55,54,51, +50,23,22,31,1,22,31,1,50,23,22,23,22,23,22,7,6,7,6,7,6,7,6,43,1,21,23,22,31,1,22,23, +22,23,48,51,22,23,20,21,6,7,6,7,6,7,34,43,1,21,22,23,22,23,6,7,35,21,20,7,6,35,34,39, +38,61,1,35,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,35,38,39,54,55,54,55, +53,35,34,35,38,39,38,39,38,39,52,53,54,55,54,55,54,63,1,54,63,1,53,35,34,39,38,39,38,39,38,39, +38,55,54,55,54,51,54,51,55,54,55,49,7,21,51,53,35,7,33,53,33,21,1,24,26,2,2,5,4,6,5,2, +2,25,51,61,23,3,2,3,3,1,1,6,1,1,2,1,3,1,1,8,7,8,12,32,38,29,2,3,4,3,1,3, +1,1,3,2,4,5,5,2,3,39,32,45,18,1,2,22,40,9,9,14,14,9,9,160,9,9,14,14,9,9,160,9, +9,14,14,9,9,40,22,2,1,18,45,32,39,3,2,6,4,4,3,2,1,1,4,3,4,3,2,29,38,32,12,7, +9,7,1,1,3,1,2,1,1,6,3,4,1,1,2,2,23,61,50,57,193,193,64,1,65,254,191,1,170,17,2,1, +2,2,1,2,17,36,16,7,2,2,2,1,1,8,10,4,4,3,3,1,1,5,56,9,26,12,10,1,1,3,3,5, +6,4,4,4,4,4,4,3,1,66,35,12,5,18,22,2,32,14,9,9,9,9,14,32,32,14,9,9,9,9,14,32, +32,14,9,9,9,9,14,32,2,22,18,5,12,35,66,1,3,4,4,4,4,4,4,6,5,3,3,1,1,10,12,26, +9,56,5,1,1,3,3,4,4,10,8,4,2,1,1,7,16,36,106,64,64,224,64,64,0,2,0,0,255,227,2,56, +1,160,0,24,0,49,0,0,1,38,15,1,35,6,7,6,7,21,22,23,22,59,1,23,22,51,50,55,54,55,17,38, +39,23,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,1,45,19,15,135,84, +20,14,13,1,1,13,14,20,84,135,9,12,7,6,18,1,1,18,213,47,14,14,17,17,47,48,17,17,14,14,47,47, +14,14,17,17,48,47,17,17,14,14,47,1,157,8,13,120,1,13,13,20,95,21,13,13,120,8,3,9,20,1,125,20, +9,220,47,17,17,14,14,48,47,14,14,17,17,47,47,17,17,14,14,47,47,14,14,17,17,48,0,0,0,4,0,0, +255,192,2,0,1,192,0,17,0,44,0,62,0,88,0,0,1,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39, +38,35,53,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,17,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,6,7,49,6,7,22,23,22,23,38,39,38,39,54,55,54, +55,22,23,22,23,6,7,6,7,1,0,14,9,9,9,9,14,14,9,9,9,9,14,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,14,9,9,9,9,14,14,9,9,9,9,14,41,27,27,1,1, +27,27,41,82,54,54,2,2,54,54,82,41,27,27,1,1,27,27,41,1,64,9,9,14,14,9,9,9,9,14,14,9, +9,128,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,128,9,9,14,14, +9,9,9,9,14,14,9,9,128,1,27,27,41,41,27,27,1,2,54,54,82,82,54,54,2,1,27,27,41,41,27,27, +1,0,0,0,0,4,0,0,255,192,2,64,1,192,0,26,0,47,0,65,0,91,0,0,55,39,38,15,1,38,55,23, +50,63,1,54,47,1,38,7,6,21,20,23,22,23,22,63,1,54,39,5,35,6,7,6,7,21,20,23,22,51,5,50, +55,54,61,1,52,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,19,51,55,33,17,33, +55,35,38,39,54,55,51,55,35,38,39,54,55,51,55,35,38,39,54,51,159,27,4,12,45,26,26,45,12,4,26,5, +11,39,25,19,69,71,8,12,12,10,39,10,3,1,64,255,27,18,17,1,9,9,13,1,63,14,9,9,18,18,28,127, +14,8,9,9,9,13,13,9,9,9,8,14,47,159,18,254,127,1,32,18,98,15,1,1,15,106,18,124,15,1,1,15, +132,18,150,15,1,2,14,114,62,12,2,4,73,75,5,11,63,12,8,24,12,19,81,100,101,81,8,1,1,6,24,7, +14,50,1,18,18,26,32,14,8,9,2,9,9,13,31,29,18,18,1,96,9,9,13,14,8,9,9,9,13,13,9,9, +1,160,64,254,161,64,2,13,14,1,63,2,13,14,1,63,2,14,21,0,0,6,0,0,255,192,1,192,1,192,0,8, +0,34,0,55,0,84,0,96,0,105,0,0,1,54,55,38,39,6,7,22,31,1,17,38,39,38,39,33,6,7,6,7, +17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,3,22,23,49,22,23,6,7,21,6,7,35,38,39,53,38,39, +54,55,54,55,7,38,55,54,31,1,55,54,23,22,15,1,23,22,7,6,35,34,47,1,7,6,35,38,39,38,63,1, +39,5,33,34,39,38,53,52,55,54,51,33,21,3,54,55,38,39,6,7,22,23,1,16,15,1,1,15,15,1,1,15, +176,1,13,14,20,254,208,41,27,27,1,1,27,27,41,1,64,14,9,9,1,15,15,1,208,34,23,22,1,2,30,1, +15,64,15,1,30,2,1,22,23,34,118,13,4,7,14,106,106,14,7,4,13,77,77,13,4,5,10,3,3,106,106,3, +3,10,5,4,13,77,77,1,6,254,224,14,9,9,9,9,14,1,32,176,15,1,1,15,15,1,1,15,1,48,1,15, +15,1,1,15,15,1,192,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9,82,14,22,1, +16,1,18,18,27,32,19,13,15,1,1,15,13,19,32,27,18,18,1,175,7,14,13,4,46,46,4,13,14,7,33,33, +7,14,10,1,46,46,1,1,9,15,6,33,33,209,9,9,14,14,9,9,64,1,48,1,15,15,1,1,15,15,1,0, +0,2,0,0,255,192,2,64,1,192,0,37,0,41,0,0,1,19,22,29,1,6,7,6,7,33,38,39,38,39,53,52, +55,19,39,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,15,1,19,39,7,51,1,72,236,12,1,13, +14,20,254,32,20,14,13,1,12,235,48,9,2,2,10,11,12,13,8,40,39,9,12,13,10,11,2,1,9,48,80,120, +119,239,1,80,254,219,16,19,24,20,14,13,1,1,13,14,20,24,19,16,1,37,60,11,13,12,9,8,1,2,10,49, +49,10,2,1,8,9,12,13,11,60,254,176,156,156,0,0,0,4,0,32,255,192,2,32,1,160,0,53,0,67,0,76, +0,85,0,0,1,38,7,49,6,7,49,6,7,53,38,39,38,39,34,7,6,21,20,23,22,51,50,23,22,21,17,22, +23,22,23,51,54,55,53,52,39,38,43,1,55,21,22,23,51,54,55,53,6,35,38,39,38,39,55,35,39,21,22,23, +22,23,54,55,54,55,53,15,1,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,1,67,11,28,28,34, +33,29,1,27,27,41,14,9,9,9,9,14,14,9,9,1,18,18,27,176,15,1,9,9,14,32,128,1,15,32,15,1, +15,17,47,34,35,9,157,64,64,1,27,27,41,41,27,27,1,64,72,15,1,1,15,15,1,1,15,80,15,1,1,15, +15,1,1,15,1,0,1,5,4,18,19,41,86,41,27,27,1,9,9,14,14,9,9,9,9,14,255,0,27,18,18,1, +2,13,17,14,9,9,96,144,15,1,1,15,206,4,1,28,28,45,96,64,134,41,27,27,1,1,27,27,41,134,64,80, +1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,0,2,0,0,255,192,1,192,1,192,0,30,0,57,0,0, +37,39,38,39,33,6,15,1,6,23,22,51,21,22,23,51,54,55,53,33,21,22,23,51,54,63,1,50,55,54,39,37, +54,55,21,51,53,51,21,51,53,22,23,21,51,53,38,39,38,39,35,6,7,6,7,21,51,39,1,189,15,9,20,254, +158,20,9,15,7,9,10,16,1,15,32,15,1,1,0,1,15,31,15,1,2,17,10,9,7,254,178,2,38,48,48,48, +39,1,48,1,36,37,54,64,54,36,36,1,48,1,109,32,18,1,1,18,32,15,15,15,112,15,1,1,15,112,112,15, +1,1,15,112,15,15,15,211,45,24,197,208,208,197,23,46,128,128,54,37,36,1,1,36,37,54,128,128,0,2,255,255, +255,192,2,63,1,192,0,37,0,79,0,0,37,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,21,22, +21,6,7,6,7,22,23,22,23,51,54,55,54,55,52,39,38,39,55,6,39,49,38,39,52,55,54,55,54,39,38,39, +38,35,6,7,6,7,20,23,22,23,54,51,22,23,22,23,20,21,22,23,54,55,54,55,54,39,38,35,1,87,9,1, +18,18,26,27,17,14,22,22,28,41,27,27,1,1,29,18,17,1,2,27,27,41,239,34,22,22,1,20,20,31,222,72, +52,52,2,20,20,36,5,1,1,6,17,19,81,55,54,2,2,9,8,18,18,41,26,27,1,36,17,41,35,36,25,5, +3,2,7,95,15,18,27,18,18,1,1,17,23,14,14,1,27,27,41,2,1,2,1,10,24,24,32,41,27,28,1,1, +22,23,34,32,22,22,3,55,12,44,43,72,41,35,34,21,4,5,6,2,3,2,54,54,82,13,12,6,8,7,1,27, +27,41,5,6,17,35,3,18,18,31,5,5,5,0,0,0,0,3,0,0,255,192,2,127,1,191,0,43,0,61,0,102, +0,0,55,54,55,49,54,55,22,23,22,23,54,51,50,23,55,54,47,2,38,15,1,39,38,15,2,6,31,1,7,6, +31,2,22,63,1,54,55,38,39,38,39,51,22,23,49,22,23,50,55,54,55,38,39,38,39,6,7,6,7,5,52,55, +49,52,53,38,39,38,39,34,7,38,39,38,35,6,7,6,7,20,21,22,21,6,7,6,7,20,23,22,23,33,54,55, +54,55,52,39,38,39,96,1,32,31,47,40,30,29,10,28,31,7,7,24,6,14,88,16,5,14,74,74,14,5,16,89, +14,6,52,52,6,14,89,16,5,14,11,5,41,41,27,26,1,32,1,22,23,34,15,13,11,40,4,22,21,32,34,23, +22,1,1,191,1,1,18,18,26,19,15,14,27,27,34,48,31,32,1,1,38,25,25,1,26,27,41,1,16,41,27,27, +1,18,17,29,240,48,31,31,1,1,23,24,37,14,1,35,14,5,16,89,14,6,52,52,6,14,89,16,5,14,74,74, +14,5,16,89,14,6,8,54,34,7,30,30,43,34,23,22,1,5,52,32,30,20,20,1,1,22,23,34,118,2,1,2, +1,27,18,18,1,10,30,17,18,1,32,31,47,2,3,2,2,3,27,26,39,41,27,27,1,1,27,27,41,32,24,24, +10,0,0,0,0,3,0,0,0,0,2,127,1,128,0,80,0,96,0,105,0,0,37,39,53,52,39,38,7,6,7,39, +38,39,33,6,7,6,7,21,6,7,21,51,54,55,54,55,53,54,55,6,21,17,22,23,51,54,55,53,22,23,21,22, +23,54,55,53,50,51,22,51,50,55,21,22,23,54,55,53,54,55,21,22,23,51,54,55,53,23,21,20,31,1,22,23, +50,55,54,63,1,54,39,37,7,6,7,38,47,1,38,55,54,55,51,22,23,22,7,23,38,39,54,55,22,23,6,7, +2,122,10,8,7,8,16,10,66,30,48,254,193,37,25,25,1,23,1,8,27,18,18,1,2,23,1,1,15,63,15,1, +14,18,2,14,14,1,2,2,5,5,6,12,2,14,15,1,20,14,2,13,64,15,1,31,11,41,17,24,18,12,13,4, +21,3,8,254,255,23,34,48,48,34,23,11,7,7,19,166,19,7,8,12,199,15,1,1,15,15,1,1,15,171,14,77, +9,5,4,4,8,15,91,39,1,1,25,25,37,86,19,31,32,1,18,18,27,104,27,10,6,7,254,208,15,1,1,15, +112,14,8,26,15,1,1,15,17,1,1,17,15,1,1,15,26,8,14,112,15,1,1,15,176,32,42,19,16,62,20,1, +11,10,17,109,13,11,110,23,33,1,1,33,23,12,13,13,1,1,13,13,12,185,1,15,15,1,1,15,15,1,0,0, +0,10,0,16,255,192,1,240,1,192,0,11,0,19,0,33,0,47,0,55,0,59,0,75,0,83,0,97,0,111,0,0, +55,34,61,1,52,55,50,31,1,7,6,39,23,39,38,53,52,63,1,23,7,52,55,48,51,23,21,20,7,34,47,1, +38,39,19,38,53,52,63,1,54,51,50,23,20,15,1,39,23,55,54,51,50,31,1,35,23,7,39,51,23,22,21,20, +15,1,6,35,34,39,53,55,20,53,48,49,55,22,21,20,15,1,55,23,3,38,53,54,51,50,31,1,22,21,20,15, +1,39,23,50,29,1,20,35,34,47,1,55,54,49,52,21,20,4,4,1,1,77,76,1,2,211,208,7,1,106,108,200, +4,1,203,7,2,1,195,2,1,3,2,2,151,1,3,7,1,2,79,82,113,95,6,7,8,6,95,217,209,100,100,200, +120,4,2,195,1,2,7,1,204,19,1,7,208,108,106,178,2,1,7,2,2,151,2,2,81,80,174,4,4,2,1,76, +77,2,131,4,162,4,1,1,45,122,4,1,88,22,1,7,2,2,156,190,15,3,1,22,66,7,1,1,87,2,2,1, +47,1,2,2,2,98,1,8,2,2,143,49,58,168,7,8,168,31,176,176,208,1,3,2,2,87,1,8,66,22,1,1, +44,2,2,7,1,22,190,156,1,92,2,2,8,1,98,2,2,2,1,49,143,124,4,162,4,2,122,45,1,1,1,0, +0,3,0,0,255,192,1,192,1,192,0,14,0,31,0,46,0,0,19,54,31,1,21,6,7,34,47,1,38,39,53,54, +23,37,20,15,1,39,38,53,52,63,1,54,51,50,31,1,22,21,23,54,23,21,6,15,1,6,35,38,39,53,55,54, +23,8,2,2,196,2,14,4,4,152,31,1,1,7,1,162,4,198,198,4,4,165,16,17,17,15,165,5,14,7,1,1, +31,152,4,4,14,2,196,2,2,1,38,1,2,117,223,16,1,2,93,20,37,198,9,1,37,5,2,119,119,3,4,4, +3,101,9,9,101,3,4,37,1,9,198,37,20,93,2,1,16,223,117,2,1,0,0,0,0,3,0,0,255,192,2,64, +1,192,0,21,0,30,0,73,0,0,1,54,55,50,31,1,51,50,31,1,51,22,23,21,6,7,6,7,35,7,39,55, +23,6,7,22,23,54,55,38,39,7,21,20,7,6,43,1,34,39,38,61,1,6,35,34,39,21,20,7,6,43,1,34, +39,38,61,1,38,47,1,38,55,54,55,54,23,22,31,1,22,23,51,23,1,77,4,19,12,7,17,52,20,14,18,56, +22,2,1,22,23,34,69,5,112,23,115,15,1,1,15,15,1,1,15,32,9,9,14,32,14,9,9,37,43,44,36,9, +9,14,32,14,9,9,45,14,4,3,7,6,13,14,10,11,4,4,7,24,206,112,1,172,19,1,10,22,14,18,2,22, +24,34,23,22,1,31,64,139,44,1,15,15,1,1,15,15,1,192,224,14,9,9,9,9,14,115,19,19,115,14,9,9, +9,9,14,230,18,49,15,13,12,11,4,2,6,7,13,16,22,1,65,0,0,3,255,255,255,192,2,127,1,192,0,20, +0,72,0,80,0,0,63,1,7,6,23,22,23,51,38,61,1,39,38,7,6,15,1,6,23,22,51,5,39,38,39,53, +51,23,22,59,1,54,63,1,54,47,1,38,43,1,34,7,6,31,1,7,6,31,1,21,20,23,22,23,6,7,6,7, +6,7,6,7,22,23,33,54,55,54,55,54,39,38,47,1,23,6,7,38,39,38,55,18,174,91,7,3,4,11,223,15, +120,18,21,21,17,117,9,4,5,12,2,45,100,26,1,64,28,10,13,30,18,10,15,8,11,75,9,15,238,5,2,2, +3,61,59,8,8,59,26,25,45,142,108,107,68,5,4,13,1,3,16,1,243,49,35,35,3,2,17,17,32,86,46,6, +18,11,7,7,3,192,32,69,8,9,9,1,40,43,43,87,12,1,1,14,117,8,10,10,34,50,14,29,37,23,9,1, +17,28,18,16,99,13,5,4,5,50,25,7,7,25,109,54,47,47,31,6,18,19,16,1,1,4,13,16,2,1,31,30, +49,36,29,30,16,224,12,17,1,1,8,8,13,0,0,0,0,1,0,0,255,192,2,0,1,193,0,60,0,0,1,20, +21,38,35,6,7,6,7,6,21,20,23,6,43,1,7,6,21,20,23,22,23,6,7,6,7,34,39,38,53,52,55,6, +35,38,39,38,53,54,55,54,55,22,23,22,51,50,63,1,53,54,55,54,55,54,51,50,23,22,21,2,0,26,28,41, +23,23,10,9,30,29,32,87,40,9,3,3,1,1,17,17,25,25,18,17,2,7,8,31,14,14,1,17,17,25,15,7, +6,9,13,9,41,1,17,18,27,52,68,68,52,49,1,23,2,3,14,1,20,19,24,25,17,42,34,10,40,10,13,9, +6,6,16,26,16,17,1,18,18,23,8,7,2,2,19,20,19,25,17,17,1,1,3,3,9,40,87,47,34,35,26,50, +50,53,67,0,0,12,0,0,255,192,2,0,1,192,0,19,0,42,0,63,0,81,0,98,0,111,0,124,0,137,0,150, +0,161,0,172,0,183,0,0,1,38,63,1,54,55,54,23,22,23,22,7,6,15,1,6,39,38,39,49,39,6,35,38, +35,34,7,34,47,1,38,55,54,55,54,51,50,23,22,23,22,15,1,39,54,23,49,22,31,1,22,7,6,7,6,47, +1,38,39,38,55,54,55,49,5,38,63,1,54,23,22,23,22,23,6,7,35,38,39,38,39,49,37,22,7,6,7,6, +7,35,38,39,54,55,54,55,54,31,1,7,22,23,21,6,7,35,38,39,53,54,55,51,33,22,23,21,6,7,35,38, +39,53,54,55,51,5,22,23,21,6,7,35,38,39,53,54,55,51,33,22,23,21,6,7,35,38,39,53,54,55,51,7, +6,7,38,39,17,54,55,22,23,17,35,6,7,38,39,53,54,55,22,23,21,51,6,7,38,39,53,54,55,22,23,21, +1,81,15,5,31,4,9,9,10,32,25,6,1,2,8,68,18,15,2,2,39,9,20,7,6,6,7,20,9,31,3,4, +4,10,29,29,29,28,10,5,4,4,30,176,10,9,9,4,31,6,16,2,1,16,18,67,9,2,1,6,25,32,1,2, +5,15,68,9,10,10,4,16,4,1,22,80,21,5,1,1,254,255,14,4,2,1,5,21,80,22,1,4,16,4,10,10, +9,69,19,22,2,2,22,80,22,2,2,22,80,1,128,22,2,2,22,80,22,2,2,22,80,254,128,22,2,2,22,80, +22,2,2,22,80,1,128,22,2,2,22,80,22,2,2,22,80,216,1,15,15,1,1,15,15,1,64,1,15,15,1,1, +15,15,1,128,1,15,15,1,1,15,15,1,1,35,14,18,76,10,3,4,6,19,28,8,10,9,7,45,9,13,2,1, +44,16,1,1,16,76,10,9,9,3,6,6,3,9,9,10,76,75,6,4,3,10,76,18,14,1,2,13,9,45,7,9, +10,8,28,19,184,19,11,46,6,3,2,10,36,41,21,2,2,21,5,5,30,11,19,5,5,22,2,2,22,41,36,10, +2,3,6,46,96,2,22,48,22,2,2,22,48,22,2,2,22,48,22,2,2,22,48,22,2,128,2,22,48,22,2,2, +22,48,22,2,2,22,48,22,2,2,22,48,22,2,48,15,1,1,15,1,16,15,1,1,15,254,240,15,1,1,15,240, +15,1,1,15,240,15,1,1,15,240,15,1,1,15,240,0,0,5,0,0,255,192,1,128,1,192,0,22,0,66,0,101, +0,128,0,132,0,0,19,21,20,23,22,59,1,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,7,34,7, +49,6,29,1,20,23,22,59,1,50,55,54,61,1,38,39,6,7,21,6,7,35,38,39,53,54,55,51,22,23,21,22, +23,54,55,53,52,39,38,43,1,31,1,22,21,6,7,35,6,7,22,23,51,50,55,54,53,38,47,1,38,53,54,55, +51,54,55,38,39,35,6,7,6,21,22,23,55,38,39,6,7,21,20,31,1,22,51,50,63,1,54,61,1,38,39,6, +7,21,20,7,38,61,1,39,23,35,53,224,9,9,14,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,160,144, +17,11,12,12,11,17,16,17,11,12,1,15,15,1,1,7,16,7,1,1,7,16,7,1,1,15,15,1,12,11,17,16, +95,26,7,1,13,26,15,1,1,15,26,19,13,14,1,22,26,7,1,13,18,15,1,1,15,18,19,13,14,1,22,105, +1,15,15,1,30,5,5,8,8,5,5,30,1,15,15,1,16,16,24,128,128,1,192,128,14,9,9,254,224,27,18,18, +1,1,18,18,27,1,128,27,18,18,1,224,12,11,17,80,17,11,12,12,11,17,8,15,1,1,15,8,7,1,1,7, +80,7,1,1,7,8,15,1,1,15,8,17,11,12,87,14,4,9,13,1,1,15,15,1,14,13,19,27,14,14,4,9, +13,1,1,15,15,1,1,13,13,19,27,14,71,15,1,1,15,32,53,44,8,7,7,8,44,53,32,15,1,1,15,32, +35,31,31,35,32,240,128,128,0,5,0,32,255,192,1,160,1,192,0,13,0,29,0,49,0,69,0,117,0,0,19,53, +52,39,38,35,34,7,6,29,1,51,50,23,39,53,52,39,38,35,34,7,6,29,1,50,51,54,59,1,23,50,55,49, +54,61,1,52,39,38,35,34,7,6,29,1,20,23,22,51,55,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1, +52,39,38,35,7,38,39,6,35,34,39,22,23,6,7,6,7,35,38,39,54,55,51,50,55,54,53,52,39,38,43,1, +34,7,6,29,1,22,31,1,21,51,53,54,55,54,61,1,6,35,34,39,224,9,9,14,14,9,9,40,13,11,96,9, +9,14,14,9,9,1,1,3,3,56,160,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9, +9,9,9,14,33,19,8,16,20,11,11,5,1,1,20,20,31,72,15,1,1,15,72,17,11,12,12,11,17,128,17,11, +12,1,42,53,224,29,17,18,14,18,19,14,1,12,148,14,9,9,9,9,14,144,4,4,112,14,9,9,9,9,14,113, +1,16,9,9,14,96,14,9,9,9,9,14,96,14,9,9,96,9,9,14,64,14,9,9,9,9,14,64,14,9,9,150, +12,21,11,4,13,15,31,20,20,1,1,15,15,1,12,11,17,17,11,12,12,11,17,63,53,32,38,78,85,19,29,30, +37,65,9,10,0,3,0,0,255,192,1,128,1,192,0,35,0,53,0,71,0,0,19,6,7,49,6,7,17,22,23,22, +63,1,54,31,1,22,63,1,54,31,1,22,63,1,54,31,1,22,55,54,55,17,38,39,38,35,7,34,39,49,38,53, +52,55,54,51,50,23,22,21,20,7,6,35,51,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,186,81, +51,52,2,1,9,9,8,25,12,10,43,11,11,41,12,12,41,11,11,43,10,12,25,8,9,9,1,2,56,56,84,58, +14,8,9,9,9,13,13,9,10,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,1,192,5,57,57,81,254, +248,11,4,4,8,18,8,10,48,10,10,45,11,11,45,10,10,48,10,8,18,8,4,4,11,1,16,83,55,54,224,9, +9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,0,0,2,0,0,255,192,2,63, +1,192,0,36,0,52,0,0,37,39,38,35,34,15,1,39,54,47,1,38,39,6,15,1,23,21,20,31,1,22,23,50, +55,23,7,6,31,1,22,51,50,63,1,54,39,37,38,39,7,6,21,20,23,22,51,50,63,1,38,47,1,2,56,23, +7,9,10,7,6,20,6,26,45,49,69,69,50,7,96,21,49,21,29,7,7,21,6,14,14,23,7,10,9,7,91,14, +15,254,215,6,4,240,21,21,22,28,28,23,209,6,6,48,252,22,7,7,5,20,37,28,45,48,1,1,48,8,48,14, +30,21,49,20,1,2,21,5,17,17,23,7,7,91,17,17,4,5,7,209,22,29,29,22,21,21,239,5,5,50,0,0, +0,16,0,0,255,192,2,128,1,192,0,8,0,17,0,26,0,35,0,44,0,53,0,112,0,125,0,140,0,157,0,174, +0,191,0,208,0,225,0,242,1,3,0,0,19,6,7,21,51,53,38,39,43,1,6,7,21,51,53,38,39,35,51,6, +7,21,51,53,38,39,35,51,6,7,21,51,53,38,39,35,23,38,39,35,6,7,21,51,53,37,6,7,21,51,53,38, +39,35,33,35,6,7,21,20,7,6,43,1,53,38,39,35,6,7,21,35,34,39,38,61,1,38,39,35,6,7,21,22, +23,22,23,51,21,35,6,7,6,7,22,23,33,54,55,38,39,38,39,35,53,51,54,55,54,55,53,38,47,1,54,55, +38,39,38,39,6,7,6,7,22,23,33,54,55,38,39,38,39,6,7,6,7,20,23,22,51,37,54,55,38,39,38,39, +48,49,6,7,6,7,20,23,22,51,7,54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,59,1,54,55,38,39, +38,39,48,49,6,7,6,7,20,23,22,59,1,54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,59,1,54,55, +38,39,38,39,48,49,6,7,6,7,20,23,22,59,1,54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,59,1, +54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,51,231,6,1,32,1,7,17,64,6,1,32,1,7,17,225,7, +1,32,1,7,16,64,7,1,32,1,7,16,88,1,7,16,7,1,32,254,71,6,1,32,1,7,17,2,9,32,15,1, +9,9,14,192,1,15,33,13,2,192,14,9,9,1,15,32,15,1,1,27,27,41,192,113,20,13,13,1,2,13,1,96, +16,1,1,13,14,20,112,192,41,27,27,1,1,15,17,23,2,1,11,10,2,1,11,10,2,2,21,253,192,23,2,1, +11,10,2,1,11,10,2,7,7,9,1,32,22,2,1,10,10,2,1,11,10,2,7,7,9,207,22,2,1,11,10,2, +1,11,10,2,7,7,10,64,22,2,1,11,10,2,1,11,10,2,7,7,10,64,22,2,1,11,10,2,1,11,10,2, +7,7,10,160,22,2,1,11,10,2,1,11,10,2,7,7,10,64,22,2,1,11,10,2,1,11,10,2,7,7,10,64, +22,2,1,11,10,2,1,11,10,2,7,7,10,1,32,1,7,120,120,7,1,1,7,120,120,7,1,1,7,120,120,7, +1,1,7,120,120,7,1,8,7,1,1,7,120,120,8,1,7,120,120,7,1,1,15,112,14,9,9,192,15,1,1,15, +192,9,9,14,112,15,1,1,15,112,41,27,27,1,64,1,13,13,20,16,1,1,15,20,14,13,1,64,1,27,27,41, +112,15,1,32,2,25,13,19,19,2,2,19,19,13,25,2,2,25,13,19,19,2,2,19,19,13,12,7,8,48,2,25, +13,19,19,2,2,19,19,13,11,8,8,48,2,25,13,19,19,2,2,19,19,13,11,8,8,2,25,13,19,19,2,2, +19,19,13,11,8,8,2,25,13,19,19,2,2,19,19,13,11,8,8,2,25,13,19,19,2,2,19,19,13,11,8,8, +2,25,13,19,19,2,2,19,19,13,11,8,8,2,25,13,19,19,2,2,19,19,13,11,8,8,0,0,0,3,0,0, +255,192,2,0,1,192,0,30,0,47,0,62,0,0,55,39,38,53,52,63,2,54,51,50,31,2,22,21,20,15,2,51, +39,38,63,1,7,6,15,1,51,39,63,2,54,31,2,22,15,2,6,47,2,38,55,1,33,6,7,22,23,22,23,33, +54,55,54,55,38,39,200,49,6,6,49,16,3,5,5,3,16,49,6,6,49,8,208,86,10,8,56,188,36,17,111,144, +8,31,25,12,4,4,12,25,4,4,25,12,4,4,12,25,4,4,1,9,254,32,15,1,1,13,14,20,1,160,20,14, +13,1,1,15,72,16,3,5,5,3,16,49,6,6,49,16,3,5,5,3,16,40,202,22,23,169,107,21,38,250,40,204, +12,25,4,4,25,12,4,4,12,25,4,4,25,12,4,4,254,236,1,15,20,14,13,1,1,13,14,20,15,1,0,0, +0,4,0,0,255,192,1,128,1,192,0,17,0,41,0,91,0,103,0,0,19,54,55,49,54,55,38,39,38,39,6,7, +6,7,22,23,22,23,7,54,63,1,54,53,38,39,38,35,34,7,6,15,1,6,21,22,31,1,50,55,50,51,37,35, +6,7,21,35,39,38,35,34,7,6,15,1,6,21,20,31,1,21,20,23,22,51,50,55,54,61,1,52,47,1,50,49, +52,49,55,23,22,59,1,21,22,23,51,54,55,17,38,39,1,6,21,22,23,22,51,54,63,1,39,7,240,20,14,13, +1,1,13,14,20,20,14,13,1,1,13,14,20,160,12,4,41,1,1,12,10,10,28,22,22,7,25,1,1,11,64,1, +1,1,1,1,32,15,14,1,35,47,19,24,21,15,16,5,27,1,9,87,9,9,13,13,9,10,19,47,1,19,23,11, +13,47,2,13,15,18,1,1,15,254,225,1,1,23,4,4,24,6,25,52,34,1,96,1,13,14,20,20,14,13,1,1, +13,14,20,20,14,13,1,191,1,11,158,2,2,11,4,2,16,16,27,98,2,2,12,3,16,1,127,1,15,16,47,17, +12,13,20,107,4,4,13,10,86,83,14,9,9,9,9,14,83,26,19,47,1,80,23,9,240,15,1,1,15,1,64,15, +1,254,200,4,4,24,7,1,1,23,101,53,138,0,0,0,0,5,0,0,255,224,2,127,1,152,0,111,0,125,0,138, +0,147,0,156,0,0,1,54,31,1,50,59,1,50,23,55,54,23,22,15,1,22,21,22,23,22,23,22,21,6,7,21, +6,7,35,38,39,53,35,21,6,7,35,38,39,53,38,39,38,39,48,49,38,39,38,39,6,7,22,23,22,23,21,22, +23,22,59,1,21,20,7,6,43,1,34,39,38,39,53,6,35,34,39,21,20,7,6,43,1,34,39,38,39,53,7,6, +39,38,63,1,54,39,54,55,54,55,35,51,50,23,22,23,54,55,39,38,55,49,23,34,7,49,6,21,20,23,22,51, +54,55,38,39,23,54,55,38,39,34,7,6,21,20,23,22,51,39,6,7,22,23,54,55,38,39,23,54,55,38,39,6, +7,22,23,1,151,17,16,18,3,2,32,18,15,15,17,16,15,15,12,11,2,16,21,12,13,1,31,1,15,32,14,2, +64,1,15,32,14,2,16,16,1,2,27,2,1,15,14,2,1,17,18,28,1,9,9,13,32,9,9,14,64,13,9,9, +1,28,36,33,31,9,9,14,64,13,9,9,1,17,11,21,19,7,21,9,1,2,54,55,82,1,65,32,30,30,25,3, +3,4,14,14,48,10,7,7,7,7,10,23,1,1,23,112,23,1,1,23,10,7,7,7,7,10,104,14,2,2,14,15, +1,1,15,64,15,1,1,15,14,2,2,14,1,145,14,14,17,6,15,14,14,17,17,13,19,23,16,6,10,20,19,25, +41,23,32,15,1,1,15,16,16,15,1,1,15,18,4,10,2,1,24,37,15,1,1,15,34,27,26,14,11,14,9,9, +64,14,9,9,9,9,14,76,12,12,76,14,9,9,9,9,14,119,41,19,7,11,21,49,18,20,82,56,56,5,8,7, +11,3,3,3,17,17,161,7,7,10,10,7,7,2,22,22,2,48,2,22,22,2,7,7,10,10,7,7,128,1,15,15, +1,1,15,15,1,32,1,15,15,1,1,15,15,1,0,0,0,2,0,0,255,192,2,64,1,192,0,80,0,89,0,0, +1,52,39,38,39,38,39,54,55,52,39,35,6,7,6,7,35,6,7,53,6,7,6,7,21,22,31,1,54,55,53,54, +55,20,21,6,21,22,23,7,6,31,1,22,23,51,54,55,54,47,1,55,23,21,20,23,22,59,1,50,55,54,61,1, +54,53,48,49,48,61,1,31,1,22,23,22,63,1,54,55,53,7,38,39,54,55,22,23,6,7,2,64,9,3,4,3, +3,17,5,8,120,54,37,36,1,161,44,28,37,24,25,1,2,13,16,14,1,1,16,1,1,30,26,7,5,22,9,24, +32,17,9,9,3,22,24,133,9,9,13,31,14,8,9,35,17,19,6,11,11,12,33,19,1,64,14,1,1,14,14,1, +1,14,1,115,13,9,4,4,3,4,10,20,9,1,1,36,37,54,1,32,1,1,25,25,37,56,14,1,1,1,15,56, +20,12,2,2,2,2,43,27,68,19,20,87,23,1,1,11,12,16,85,64,23,134,14,9,9,9,9,14,162,32,46,1, +102,7,38,11,4,5,5,13,9,21,77,19,1,15,15,1,1,15,15,1,0,1,0,0,255,192,2,64,1,192,0,60, +0,0,37,6,7,49,6,7,35,23,6,7,6,7,35,39,55,54,47,1,38,7,6,31,1,7,6,31,1,35,38,39, +38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,53,52,55,54,59,1,50,23,22,29,1,23,22,7,49,2, +64,1,9,9,13,32,1,1,18,18,27,123,38,81,12,12,118,13,9,8,7,60,85,10,6,31,102,27,18,18,1,32, +14,9,9,10,1,0,11,11,12,10,106,9,9,14,32,14,9,9,53,12,1,192,13,9,9,1,160,27,18,18,1,64, +67,13,12,93,7,8,9,12,83,71,9,12,52,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9, +9,9,9,14,121,47,10,14,0,1,0,0,255,224,1,128,1,160,0,103,0,0,19,6,39,49,38,39,38,55,54,63, +1,54,59,1,22,23,22,23,20,7,51,50,23,22,21,20,7,6,43,1,6,15,1,51,50,23,22,21,20,7,6,43, +1,6,21,22,23,22,23,51,50,63,1,54,23,22,23,22,7,6,15,1,6,7,35,38,39,38,39,52,55,35,34,39, +38,53,52,55,54,59,1,54,63,1,35,34,39,38,53,52,55,54,59,1,54,55,38,39,38,39,35,34,15,1,115,10, +13,12,9,8,1,2,10,6,43,55,43,48,32,32,1,4,20,14,9,9,9,9,14,68,2,3,50,123,14,9,9,9, +9,14,229,11,1,13,14,20,44,33,25,6,11,12,13,8,9,1,2,11,5,43,55,44,47,32,32,1,4,20,14,9, +9,9,9,14,68,2,3,51,124,14,9,9,9,9,14,229,10,1,1,13,14,21,43,33,25,7,1,72,9,1,2,11, +10,13,12,9,5,34,1,32,32,47,17,15,9,9,14,14,9,9,2,1,29,9,9,14,14,9,9,13,18,21,14,13, +1,20,5,9,2,2,10,11,12,13,8,6,33,1,1,32,32,48,16,15,9,9,14,14,9,9,2,1,29,9,9,14, +14,9,9,13,19,20,14,13,1,20,4,0,0,3,0,0,0,0,2,64,1,128,0,36,0,54,0,72,0,0,1,6, +7,49,6,7,49,6,23,22,23,22,23,22,55,54,63,1,54,55,22,31,1,22,23,22,55,54,55,54,55,54,39,38, +39,38,39,3,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,33,38,39,49,38,39,54,55,54,55,22, +23,22,23,6,7,6,7,1,32,123,62,63,21,21,2,2,50,49,75,21,17,17,11,20,10,16,16,10,20,11,17,17, +21,75,49,50,2,2,21,21,63,62,123,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,0,27,18, +18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,128,1,33,33,48,47,48,80,47,46,1,1,8,8,22,40,18, +1,1,18,40,22,8,8,1,1,47,46,80,48,47,48,33,33,1,255,0,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,2,0,0,255,224,2,0,1,160,0,15, +0,21,0,0,37,3,38,35,34,7,3,6,23,22,23,33,54,55,54,39,3,23,35,7,39,55,1,247,223,9,15,15, +9,223,17,15,17,32,1,144,32,17,15,17,247,72,72,48,31,79,54,1,94,12,12,254,162,28,29,27,2,1,28,29, +28,1,26,112,64,53,123,0,0,4,0,0,255,192,2,128,1,192,0,91,0,96,0,101,0,106,0,0,1,22,23,49, +22,23,21,6,7,6,7,35,21,33,50,23,22,21,20,7,6,43,1,21,51,22,23,22,23,21,6,7,6,7,35,38, +39,38,39,53,54,55,54,55,51,53,33,21,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55, +51,53,35,34,39,38,53,52,55,54,51,33,53,35,38,39,38,39,53,54,55,54,55,51,7,21,51,53,35,3,53,35, +21,51,55,21,51,53,35,1,144,20,14,13,1,1,13,14,20,48,1,0,14,9,9,9,9,14,96,48,20,14,13,1, +1,13,14,20,160,20,14,13,1,1,13,14,20,48,255,0,48,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13, +14,20,48,96,14,9,9,9,9,14,1,0,48,20,14,13,1,1,13,14,20,160,144,128,128,32,128,128,192,128,128,1, +192,1,13,14,20,96,20,14,13,1,32,9,9,14,14,9,9,32,1,13,14,20,96,20,14,13,1,1,13,14,20,96, +20,14,13,1,32,32,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,32,9,9,14,14,9,9,32, +1,13,14,20,96,20,14,13,1,64,64,64,254,128,64,64,64,64,64,0,0,4,0,0,255,224,2,128,1,160,0,8, +0,17,0,143,0,190,0,0,19,54,55,38,39,6,7,22,23,39,6,7,22,23,54,55,38,39,37,34,7,22,23,22, +23,22,29,1,6,7,38,39,53,38,39,38,7,6,7,6,7,6,29,1,35,50,55,54,53,52,39,38,43,1,38,39, +38,61,1,22,51,50,63,1,23,22,51,50,55,22,23,22,23,51,54,55,35,54,55,54,51,50,55,54,53,52,39,38, +35,34,7,52,53,54,61,1,52,53,52,53,54,55,38,39,35,38,39,38,43,1,34,7,6,7,35,6,7,22,23,6, +21,20,29,1,20,23,21,22,23,22,23,22,23,51,54,55,54,55,54,55,38,39,38,39,5,53,54,55,54,55,51,22, +23,22,23,21,6,7,6,7,34,47,1,48,51,50,63,1,54,61,1,38,39,35,6,29,1,22,31,1,22,51,50,49, +7,6,35,38,39,38,39,224,15,1,1,15,15,1,1,15,128,15,1,1,15,15,1,1,15,1,122,13,1,1,9,34, +20,20,1,15,15,1,1,8,9,11,45,5,22,14,13,160,14,9,9,9,9,14,92,23,8,5,8,8,16,15,17,17, +15,16,11,10,10,24,25,32,37,10,29,76,1,10,10,11,14,9,9,9,9,14,24,25,1,15,1,1,15,11,14,27, +26,34,64,34,26,27,14,11,15,1,1,16,1,16,1,30,29,51,50,63,160,63,50,51,29,30,1,2,46,46,72,254, +102,1,18,18,27,64,27,18,18,1,1,13,13,21,6,6,34,1,3,4,8,14,1,12,38,13,1,12,8,4,3,1, +33,6,6,21,13,13,1,1,32,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,64,13,9,3,10,33, +34,26,112,15,1,1,15,92,11,6,6,5,24,51,13,21,22,27,32,9,9,14,14,9,9,1,23,20,20,2,2,6, +8,8,6,2,29,18,18,1,38,26,19,7,6,9,9,14,14,9,9,13,1,1,5,6,16,1,1,1,2,8,19,15, +1,29,17,18,18,17,29,1,15,19,8,2,1,1,1,16,30,23,43,63,50,51,29,30,1,1,30,30,51,51,63,74, +53,52,11,96,16,27,18,18,1,1,18,18,27,16,21,13,13,1,3,14,1,4,6,13,7,11,1,1,11,7,13,6, +4,1,14,3,1,13,13,21,0,3,0,0,0,0,2,0,1,128,0,19,0,28,0,45,0,0,1,6,7,49,6,7, +21,22,23,22,23,54,55,54,55,53,38,39,38,39,21,38,39,54,55,22,23,6,7,55,38,39,6,7,38,53,54,55, +54,55,22,23,22,23,20,7,1,0,112,71,71,2,3,72,72,109,109,72,72,3,2,72,71,111,81,55,53,83,83,53, +55,81,181,70,111,111,70,11,2,54,54,82,81,54,55,2,11,1,128,1,40,40,63,98,60,40,40,2,2,40,40,60, +98,63,40,40,1,224,1,22,24,1,1,24,22,1,54,40,2,2,40,12,14,34,23,22,1,1,22,23,34,14,12,0, +0,3,0,16,255,192,1,176,1,192,0,58,0,76,0,94,0,0,37,35,39,38,47,1,38,35,34,15,1,6,21,20, +23,22,23,50,63,1,54,51,50,51,23,7,6,23,20,31,1,7,6,21,22,23,22,51,54,63,1,54,53,38,47,1, +55,23,22,23,51,50,55,54,53,52,39,38,35,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,15, +1,35,34,7,6,21,20,23,22,59,1,54,63,1,39,38,39,1,144,44,26,21,41,71,12,10,33,26,39,13,9,9, +14,11,9,39,9,11,3,3,14,37,6,1,31,85,27,2,1,22,4,5,22,9,31,2,1,23,61,32,20,14,28,55, +14,9,9,9,9,14,112,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,158,15,67,14,9,9,9,9,14, +78,30,14,8,10,26,12,224,53,40,11,21,3,20,30,10,16,13,9,9,1,7,30,7,5,87,12,13,36,19,51,87, +5,5,22,9,1,1,21,101,7,6,27,15,36,78,41,26,1,9,9,14,14,9,9,128,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,222,34,9,9,14,14,9,9,1,28,21,6,16,26,0,0,0,3,0,0,255,224,2,64, +1,160,0,14,0,34,0,48,0,0,19,6,7,49,6,7,21,22,23,51,53,38,39,38,39,19,53,51,53,38,39,38, +39,33,22,23,17,22,23,22,55,54,55,54,53,55,21,6,7,6,7,33,54,55,54,55,38,39,33,48,20,14,13,1, +1,15,80,1,13,14,20,208,224,1,27,27,41,254,240,15,1,1,21,22,31,24,14,15,32,1,27,27,41,1,16,48, +31,32,1,1,15,254,240,1,160,1,13,14,20,64,15,1,80,20,14,13,1,254,163,61,192,41,27,27,1,20,28,254, +208,30,19,18,4,4,19,19,24,29,32,41,27,27,1,1,32,31,48,15,1,0,0,0,0,4,0,0,255,193,1,191, +1,192,0,29,0,47,0,65,0,108,0,0,1,20,7,49,6,7,21,20,7,6,43,1,34,39,38,39,53,38,39,38, +39,54,55,54,55,22,23,22,23,49,7,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,5,54,55,49,54,31,1,55,54,23,22,23,22,7,6,15,1,23, +22,23,22,7,6,7,6,47,1,7,6,39,38,39,38,55,54,63,1,39,38,39,38,55,49,1,112,18,17,29,9,9, +14,97,13,9,9,1,29,17,17,1,2,41,41,60,62,41,40,2,201,14,9,9,9,9,14,13,9,9,1,1,9,9, +13,113,14,9,9,9,9,14,14,9,9,9,9,14,254,235,7,12,12,12,177,179,12,12,12,7,5,4,4,12,134,134, +12,4,4,5,7,12,12,12,179,177,12,12,12,7,5,4,4,12,134,134,12,4,4,5,1,64,34,27,28,17,22,14, +9,9,9,9,14,22,17,28,27,34,54,37,36,1,1,36,37,54,48,9,9,14,14,9,9,9,9,14,14,9,9,64, +9,9,14,14,9,9,9,9,14,14,9,9,162,12,4,4,5,89,89,5,4,4,12,12,12,12,7,67,67,7,12,12, +12,12,4,4,5,89,89,5,4,4,12,12,12,12,7,67,67,7,12,12,12,0,0,0,0,1,0,0,255,192,2,128, +1,192,0,11,0,0,19,54,23,1,22,7,6,39,1,38,55,49,5,15,19,2,80,16,12,15,19,253,176,16,12,1, +183,16,12,254,48,15,19,16,12,1,208,15,19,0,0,0,0,1,0,12,255,192,2,51,1,192,0,125,0,0,37,22, +15,1,6,47,2,23,22,15,1,6,47,1,38,63,1,39,20,21,20,21,6,7,6,7,38,39,38,39,52,53,52,53, +7,23,22,15,1,6,47,1,38,63,1,15,1,6,47,1,38,63,1,54,63,1,39,38,47,1,38,63,1,54,31,2, +39,38,63,1,54,31,1,22,15,1,23,53,38,55,54,55,54,23,21,51,53,54,23,22,23,22,21,20,21,20,29,1, +55,39,38,63,1,54,31,1,22,15,1,63,1,54,31,1,22,15,1,6,15,1,23,22,31,1,2,51,3,13,16,14, +6,24,80,54,8,3,28,5,15,15,14,2,25,38,1,27,27,41,41,27,27,1,38,25,2,14,15,15,5,28,3,8, +54,80,24,6,14,16,13,3,27,4,10,105,105,10,4,27,3,13,16,14,6,24,80,54,8,3,28,5,15,15,14,3, +24,54,1,15,15,24,10,1,32,1,10,23,15,15,54,25,2,14,15,15,5,28,3,8,54,80,24,6,14,16,13,3, +27,4,10,105,105,10,4,27,46,14,5,4,3,13,77,32,62,10,12,110,14,2,4,5,15,98,45,2,1,2,2,41, +27,27,1,1,27,27,41,2,2,1,2,45,98,15,5,4,2,14,110,12,10,62,32,78,13,3,4,6,13,89,11,4, +43,42,5,10,89,14,5,4,3,13,78,32,63,10,12,110,14,2,4,5,15,98,62,24,28,21,22,9,1,9,24,24, +9,1,9,20,20,27,1,1,1,1,24,62,98,15,5,4,2,14,110,12,10,62,32,78,13,3,4,6,13,89,11,4, +43,42,4,11,89,0,0,0,0,7,0,0,255,192,2,64,1,192,0,31,0,40,0,49,0,58,0,67,0,85,0,103, +0,0,19,6,7,49,6,7,21,20,7,6,7,6,7,6,23,22,51,33,54,55,54,53,54,55,54,53,39,52,55,54, +55,33,7,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,51,38,39, +54,55,22,23,6,7,55,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,17,38,39,49,38,53,52,55, +54,55,22,23,22,21,20,7,6,7,127,40,27,27,1,5,6,11,4,5,3,5,5,8,1,25,22,8,1,10,7,7, +1,17,16,28,254,227,31,15,1,1,15,15,1,1,15,63,15,1,2,14,14,2,1,15,64,14,2,2,14,15,1,1, +15,64,14,2,2,14,15,1,1,15,192,41,27,27,1,1,27,27,41,41,27,28,1,1,28,27,41,13,10,9,9,10, +13,14,9,9,9,9,14,1,192,2,54,54,82,172,25,22,22,32,12,14,8,6,7,1,21,2,1,27,29,28,39,172, +63,50,50,29,224,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15, +1,1,15,15,1,224,2,54,55,81,82,54,54,2,2,54,54,82,82,54,54,2,255,0,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,0,5,0,0,255,192,2,128,1,192,0,110,0,115,0,133,0,152,0,161,0,0,19,54, +55,49,54,55,51,50,23,22,31,1,51,53,52,63,1,54,55,54,23,22,23,22,15,1,6,29,1,51,50,23,22,29, +1,6,15,1,38,35,6,7,35,20,7,6,43,1,6,7,23,22,21,20,15,1,6,35,34,47,1,6,7,21,20,7, +6,43,1,34,39,38,61,1,38,39,7,6,35,34,47,1,38,53,52,63,1,38,39,35,34,39,38,61,1,52,55,54, +59,1,54,55,39,38,53,52,63,1,54,23,53,51,21,51,39,35,23,6,7,49,6,7,22,23,22,23,54,55,54,55, +38,39,38,39,5,54,55,54,51,50,51,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23, +96,1,18,18,27,106,20,16,16,8,48,106,17,2,7,12,12,12,12,4,4,5,3,10,56,17,11,12,1,22,43,21, +25,61,36,79,9,9,14,8,2,5,7,9,9,23,10,12,13,10,6,7,7,9,9,14,32,14,9,9,7,7,6,10, +13,12,10,23,9,9,6,3,3,8,14,9,9,9,9,14,8,3,3,6,9,9,23,15,18,64,145,39,106,16,34,23, +22,1,1,22,23,34,34,23,22,1,1,22,23,34,1,8,2,35,22,29,4,4,34,23,22,1,1,25,25,37,37,25, +25,1,88,22,2,2,22,22,2,2,22,1,128,27,18,18,1,11,11,18,120,34,38,33,5,12,4,4,5,7,12,12, +12,5,21,22,34,12,11,17,45,27,14,27,9,2,46,14,9,9,7,7,6,10,13,12,10,23,9,9,7,5,2,8, +14,9,9,9,9,14,8,2,5,7,9,9,23,10,12,13,10,6,7,7,9,9,14,32,14,9,9,7,7,6,10,12, +13,10,23,13,6,129,96,96,192,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,168,46,26,16,4,24,25, +35,37,25,25,1,1,25,25,37,24,2,22,22,2,2,22,22,2,0,0,0,7,0,0,255,192,1,192,1,192,0,8, +0,13,0,32,0,41,0,62,0,74,0,80,0,0,1,38,35,6,7,6,7,51,55,23,38,39,7,51,7,54,55,49, +54,55,52,39,52,39,35,6,21,6,21,22,23,22,31,1,35,23,54,55,38,39,38,39,55,35,34,7,23,51,22,23, +22,23,6,7,51,50,55,54,53,38,39,38,39,5,20,23,49,22,59,1,53,6,7,6,21,55,21,51,39,6,7,1, +21,24,29,41,31,32,14,81,90,66,13,24,66,103,119,54,37,36,1,1,1,252,1,1,1,36,37,54,48,45,59,32, +2,1,13,14,20,3,102,8,8,50,65,34,23,22,1,1,15,77,15,10,10,2,49,49,73,254,237,10,10,15,29,30, +17,17,96,153,125,15,13,1,180,12,1,21,22,36,68,68,29,21,50,176,1,36,37,54,6,6,2,2,2,2,6,6, +54,37,36,1,160,94,12,34,20,14,13,1,112,1,79,1,22,23,34,28,20,10,10,15,73,49,49,2,173,15,10,10, +169,24,35,34,41,155,190,201,5,6,0,0,0,3,0,0,0,0,2,128,1,128,0,31,0,49,0,67,0,0,1,33, +6,7,6,7,17,22,23,22,23,51,54,63,1,54,55,22,31,1,22,23,51,54,55,54,55,17,38,39,38,39,5,38, +39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,33,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7, +6,7,2,64,254,0,27,18,18,1,1,18,18,27,128,41,18,27,14,28,28,14,27,19,40,128,27,18,18,1,1,18, +18,27,254,96,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,1,128,1,18,18,27,255,0,27,18,18,1,2,36,61,28,1,1,28,61,36,2,1,18,18,27, +1,0,27,18,18,1,240,1,18,18,27,27,18,17,1,1,18,17,27,27,18,18,1,1,18,18,27,27,18,17,1,1, +18,17,27,27,18,18,1,0,0,4,0,0,255,194,1,255,1,192,0,35,0,60,0,89,0,116,0,0,19,31,1,22, +51,48,49,48,49,50,63,2,54,53,48,53,38,47,1,49,39,38,35,48,49,48,49,34,15,2,6,21,20,23,5,52, +47,2,38,35,34,15,2,6,21,20,31,2,22,51,50,63,2,54,53,1,23,22,51,50,63,2,54,53,52,47,2,34, +49,38,35,34,21,48,35,15,1,6,21,20,31,2,54,55,53,55,54,47,1,38,7,5,35,6,7,21,7,6,21,20, +31,1,22,51,50,55,1,51,4,49,21,2,4,4,2,21,49,4,1,3,49,21,2,4,4,2,21,49,4,4,1,251, +4,49,21,1,4,4,2,21,49,4,4,49,21,2,4,4,2,21,49,3,254,208,13,2,1,2,2,12,30,2,2,30, +11,1,1,3,2,1,13,29,2,2,29,192,14,1,92,9,9,18,11,11,254,233,43,14,1,118,10,9,42,9,14,13, +10,1,23,22,1,43,22,49,4,4,49,21,2,4,1,3,2,21,49,4,4,49,21,2,4,4,1,219,4,2,21,49, +4,4,49,21,2,4,4,2,21,49,4,4,49,21,2,4,1,48,30,2,2,30,12,2,2,2,2,12,30,2,2,30, +12,2,2,2,2,12,127,1,15,28,102,10,12,18,9,8,251,2,13,37,106,10,13,13,10,42,9,10,1,54,0,0, +0,3,0,0,255,192,2,0,1,192,0,36,0,73,0,110,0,0,19,33,54,55,54,55,38,39,38,39,35,34,7,6, +21,20,23,22,59,1,50,23,22,21,20,7,6,35,33,34,7,6,21,20,23,22,51,23,35,34,7,6,21,20,23,22, +59,1,50,23,22,21,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,38,39,38,39,37,33,34,7, +6,21,20,23,22,51,33,50,23,22,21,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,38,39,38, +39,32,1,64,41,27,27,1,1,27,27,41,32,14,9,9,9,9,14,32,14,9,9,9,9,14,254,192,14,9,9,9, +9,14,128,128,14,9,9,9,9,14,128,14,9,9,9,9,14,32,14,9,9,9,9,14,32,41,27,27,1,1,27,27, +41,1,0,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,32,14,9,9,9,9,14,32,41,27,27,1,1, +27,27,41,1,0,1,27,27,41,41,27,27,1,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,128, +9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,1,27,27,41,41,27,27,1,96,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,1,27,27,41,41,27,27,1,0,0,0,0,2,0,0,255,192,2,0, +1,192,0,32,0,37,0,0,1,39,38,15,1,6,23,7,38,7,6,15,1,6,21,20,31,1,22,51,50,63,1,54, +55,54,39,55,22,63,1,54,39,1,39,55,23,7,1,251,68,11,11,23,9,9,76,36,38,38,29,158,19,19,90,20, +25,26,20,158,29,6,7,15,77,11,12,22,10,10,254,184,90,122,90,122,1,119,68,10,10,22,12,11,77,15,7,6, +29,158,20,25,26,20,90,19,19,158,29,38,38,36,76,9,9,23,11,11,254,162,90,122,90,122,0,0,0,4,0,32, +255,192,2,32,1,192,0,17,0,35,0,72,0,126,0,0,55,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,33,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,7,54,39,38,7,38,39,6,7,38,7,6, +23,6,7,22,23,6,23,22,51,54,55,22,23,54,55,22,23,54,55,54,39,54,55,38,39,55,38,39,49,38,39,48, +35,48,35,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,23,6,7,6,7,22,23,22,23,51,54,55, +54,55,54,55,22,23,22,23,22,23,51,54,55,54,55,80,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,119,7,17,19,23,12,25,25,12,23,19,17,7,22, +1,1,22,7,17,13,17,6,6,12,25,25,12,6,7,16,13,17,7,22,1,1,22,167,1,27,27,41,1,1,2,1, +22,23,34,38,23,14,26,26,33,48,31,32,1,2,29,18,18,1,1,27,27,41,43,6,9,21,30,21,30,30,21,30, +21,9,6,43,41,27,27,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,1,13,14,20,20,14,13,1,11,23,19,17,7,22,1,1,22,7,17,19,23,12,25,25,12,23,19,13,1,2,22, +1,1,22,2,1,1,12,19,23,12,25,25,12,139,41,27,27,1,8,8,34,23,22,1,1,28,28,16,17,1,32,31, +48,11,10,10,24,25,32,41,27,27,1,12,10,20,1,20,1,1,20,1,20,10,12,1,27,27,41,0,0,6,0,0, +255,192,2,63,1,192,0,32,0,64,0,77,0,90,0,103,0,116,0,0,37,38,39,49,38,39,34,7,38,39,6,7, +6,7,20,21,6,7,6,7,22,23,22,23,33,54,55,54,55,38,39,38,39,55,6,39,49,38,39,52,55,54,55,54, +39,38,35,6,7,6,7,22,23,22,23,22,23,22,51,22,51,54,55,54,39,15,1,6,23,22,51,50,63,1,54,39, +38,7,35,7,6,23,22,51,50,63,1,54,39,38,7,35,7,6,23,22,51,50,63,1,54,39,38,7,35,7,6,23, +22,51,50,63,1,54,39,38,7,1,95,6,22,21,30,19,15,28,50,41,27,27,1,28,18,17,1,1,22,23,34,1, +0,34,23,22,1,1,18,18,28,217,55,39,39,2,15,15,27,8,10,13,13,60,40,41,4,42,17,28,19,19,5,2, +3,5,5,69,43,5,11,228,32,10,17,6,6,12,8,32,11,18,18,14,96,32,10,17,6,6,12,8,32,11,18,18, +14,96,32,10,17,6,6,12,8,32,11,18,18,14,96,32,10,17,6,7,12,8,32,10,17,19,14,222,29,18,18,1, +7,37,2,1,27,26,41,1,1,6,22,21,30,34,22,22,1,1,22,23,33,30,21,22,5,2,8,32,33,54,31,26, +26,15,8,5,2,1,39,39,59,19,43,11,23,22,30,1,1,2,51,10,1,203,48,19,14,4,11,48,19,14,10,17, +48,19,14,4,11,48,19,14,10,17,48,19,14,4,11,48,19,14,10,17,48,19,14,4,11,48,19,14,10,17,0,0, +0,4,0,0,255,192,2,0,1,192,0,40,0,62,0,84,0,106,0,0,1,48,35,49,48,35,54,53,38,39,38,39, +6,7,38,39,38,35,6,7,6,7,20,23,6,7,6,7,22,23,22,23,33,54,55,54,55,38,39,38,39,3,22,23, +49,22,23,54,55,54,55,38,39,38,39,38,39,6,7,6,7,6,7,33,22,23,49,22,23,54,55,54,55,38,39,38, +39,38,39,6,7,6,7,6,7,51,22,23,49,22,23,54,55,54,55,38,39,38,39,38,39,6,7,6,7,6,7,1, +160,1,1,2,1,22,23,34,38,23,14,26,26,33,48,31,32,1,2,29,18,18,1,1,27,27,41,1,64,41,27,27, +1,1,27,27,41,48,1,13,14,20,20,14,13,1,1,11,12,12,11,1,1,11,12,12,11,1,254,192,1,13,14,20, +20,14,13,1,1,11,12,12,11,1,1,11,12,12,11,1,160,1,13,14,20,20,14,13,1,1,11,12,12,11,1,1, +11,12,12,11,1,1,64,8,8,34,23,22,1,1,28,28,16,17,1,32,31,48,11,10,10,24,25,32,41,27,27,1, +1,27,27,41,41,27,27,1,254,176,20,14,13,1,1,13,14,20,14,22,23,17,18,1,1,18,17,23,22,14,20,14, +13,1,1,13,14,20,14,22,23,17,18,1,1,18,17,23,22,14,20,14,13,1,1,13,14,20,14,22,23,17,18,1, +1,18,17,23,22,14,0,0,0,5,0,0,255,192,2,0,1,192,0,40,0,55,0,68,0,81,0,94,0,0,1,48, +35,49,48,35,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,23,6,7,6,7,22,23,22,23,33,54, +55,54,55,38,39,38,39,7,38,15,1,6,23,22,51,50,63,1,54,39,38,39,35,38,15,1,6,23,22,51,50,63, +1,54,39,51,38,15,1,6,23,22,51,50,63,1,54,39,51,38,15,1,6,23,22,51,50,63,1,54,39,1,160,1, +1,2,1,22,23,33,38,22,16,26,26,33,47,32,32,1,2,29,18,18,1,1,27,26,41,1,63,42,28,27,1,1, +27,27,41,217,21,11,47,7,20,3,5,15,7,47,5,4,3,9,118,21,10,47,8,20,4,5,15,7,47,8,20,235, +21,10,48,6,19,4,5,15,7,47,7,19,118,21,11,47,7,19,4,4,15,7,47,9,19,1,64,8,8,34,23,22, +1,1,28,28,16,17,1,32,31,48,11,10,10,24,25,32,41,27,27,1,1,27,27,41,41,27,27,1,226,7,19,112, +21,11,2,15,112,9,9,9,4,7,19,112,21,11,2,15,112,20,11,7,19,112,21,11,2,15,112,20,11,7,19,112, +21,11,2,15,112,20,11,0,0,7,0,32,255,192,2,96,1,192,0,14,0,67,0,100,0,115,0,132,0,149,0,166, +0,0,1,38,39,6,7,6,7,20,23,22,23,54,55,54,55,7,54,55,49,54,55,22,23,54,55,48,49,48,49,47, +1,38,35,34,15,1,39,38,35,34,15,2,6,21,20,31,1,7,6,21,20,31,2,22,51,50,63,1,38,53,52,55, +38,39,38,53,5,38,39,49,38,39,34,7,38,39,6,7,6,7,20,21,6,7,6,7,22,23,22,23,33,54,55,54, +55,38,39,38,39,23,34,15,1,6,21,22,23,50,63,1,54,53,38,39,35,34,15,1,6,21,22,23,50,63,1,54, +53,52,39,38,43,1,34,15,1,6,21,22,23,50,63,1,54,53,52,39,38,43,1,34,15,1,6,21,22,23,50,63, +1,54,53,52,39,38,35,1,0,18,30,25,17,17,1,11,10,18,16,23,6,24,136,1,25,25,37,43,25,33,43,52, +13,2,8,4,2,63,63,2,3,9,2,13,75,9,2,43,43,2,9,75,13,2,8,4,2,20,5,11,23,14,14,1, +167,6,22,21,30,19,15,28,50,41,27,27,1,28,18,18,1,1,23,22,34,1,0,35,22,23,1,1,18,18,28,9, +12,8,32,4,2,22,12,8,32,4,2,22,96,12,8,32,4,2,21,12,8,32,4,6,7,10,96,12,8,32,4,2, +21,12,8,32,4,6,7,10,96,12,8,32,4,2,21,12,8,32,4,6,7,10,1,53,22,1,1,16,17,25,20,14, +15,7,18,12,34,28,36,37,25,24,1,2,31,24,1,12,75,9,2,43,43,2,9,75,13,2,8,4,2,63,63,2, +4,8,2,13,75,9,2,13,16,17,26,22,11,21,21,28,51,29,18,18,1,8,38,2,1,27,27,41,1,1,5,22, +21,29,34,23,22,1,1,22,22,35,29,22,21,5,189,11,48,6,7,23,2,11,48,6,7,23,2,11,48,6,7,23, +2,11,48,6,7,10,7,8,11,48,6,7,23,2,11,48,6,7,10,7,8,11,48,6,7,23,2,11,48,6,7,10, +7,8,0,0,0,5,0,0,255,192,2,127,1,192,0,25,0,79,0,100,0,121,0,142,0,0,23,22,23,49,22,59, +1,50,55,54,61,1,51,21,20,23,22,59,1,50,55,54,61,1,33,7,37,39,38,39,38,43,1,39,54,55,54,39, +38,15,1,39,38,7,6,23,22,23,22,23,50,21,34,7,6,15,1,6,31,1,22,23,51,50,63,1,23,33,53,22, +23,22,23,22,23,22,63,1,54,39,37,7,23,6,47,1,7,6,53,55,39,38,63,2,54,31,2,22,7,51,7,23, +6,47,1,7,6,39,55,39,38,63,2,54,31,2,22,7,51,7,23,6,47,1,7,6,39,55,39,38,63,2,54,31, +2,22,7,191,1,9,9,13,32,14,9,9,160,10,9,13,32,14,9,9,254,161,1,1,190,19,22,33,33,38,237,80, +15,2,2,12,7,8,42,43,6,6,9,1,2,12,4,6,1,1,1,2,2,75,11,8,15,9,19,31,13,10,38,54, +1,95,10,6,6,9,4,5,9,13,27,12,7,254,171,16,4,1,7,21,19,8,4,16,4,7,22,11,4,5,10,23, +6,4,112,16,4,1,7,21,20,7,1,4,16,4,7,22,11,4,5,10,23,7,4,112,16,4,1,7,20,20,7,1, +4,16,4,7,22,11,4,5,10,23,6,4,31,14,9,10,9,9,14,64,64,14,9,9,9,9,14,128,127,222,29,32, +18,18,81,16,20,20,18,8,6,42,43,5,7,14,17,16,13,4,3,1,1,2,2,99,16,18,28,17,1,9,35,108, +78,7,7,8,15,6,7,12,7,18,9,13,14,16,23,7,2,10,10,2,7,23,16,6,2,4,20,6,6,20,4,2, +6,16,23,7,2,10,10,2,7,23,16,6,2,4,20,6,6,20,4,2,6,16,23,7,2,10,10,2,7,23,16,6, +2,4,20,6,6,20,4,2,6,0,0,0,0,5,0,32,255,192,2,32,1,192,0,95,0,104,0,113,0,122,0,131, +0,0,1,53,38,39,38,7,6,39,38,39,38,39,38,7,49,52,39,38,35,34,7,6,21,17,22,23,51,54,55,53, +54,23,22,23,22,23,22,55,54,55,53,6,39,38,39,34,49,38,39,38,7,53,54,23,22,23,22,23,22,55,53,6, +39,38,39,34,49,38,39,38,7,53,54,23,22,23,22,23,22,55,53,6,39,38,39,38,39,34,49,53,22,23,22,23, +22,55,5,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23,6,7,53,38,39, +54,55,22,23,6,7,2,32,1,16,17,19,66,39,40,33,34,49,49,85,9,9,14,14,9,9,2,13,33,15,1,76, +52,52,44,41,48,48,67,19,1,70,51,58,48,1,45,51,51,73,75,54,54,45,45,51,51,73,70,51,58,48,1,45, +51,51,73,75,54,54,45,45,51,51,73,85,51,44,33,33,8,2,11,14,30,54,53,94,254,128,15,1,1,15,15,1, +1,15,15,1,1,15,15,1,1,15,64,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,1,130,31,19,8, +8,8,30,2,2,13,14,3,2,34,14,9,9,9,9,14,254,48,15,1,1,15,112,34,2,2,14,13,3,3,26,9, +20,36,25,1,2,14,13,2,3,29,35,26,3,3,13,13,2,2,28,62,25,1,2,14,13,2,3,29,35,26,3,3, +13,13,2,2,28,69,33,2,1,11,10,5,33,3,5,15,5,4,38,74,1,15,15,1,1,15,15,1,64,1,15,15, +1,1,15,15,1,56,1,15,15,1,1,15,15,1,64,1,15,14,2,2,14,15,1,0,0,3,0,32,255,192,1,160, +1,192,0,17,0,44,0,62,0,0,55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,47,1,55,54,39, +38,7,6,7,6,7,22,23,22,23,7,6,23,22,51,54,55,54,55,38,39,38,39,23,38,39,49,38,39,54,55,54, +55,22,23,22,23,6,7,6,7,224,14,9,9,9,9,14,14,9,9,9,9,14,16,25,2,5,6,9,79,51,51,2, +2,59,59,88,24,3,5,6,9,78,52,51,2,2,59,59,88,16,41,27,27,1,1,27,27,41,41,27,27,1,1,27, +27,41,225,9,9,14,14,9,9,9,9,14,13,9,9,1,127,75,9,6,7,1,11,58,57,82,88,59,59,2,75,9, +6,6,11,58,57,82,88,59,59,2,255,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,2,0,0, +255,192,2,0,1,192,0,36,0,71,0,0,1,22,23,21,22,23,22,23,51,50,23,22,21,20,7,6,35,33,34,39, +38,39,54,55,54,59,1,54,55,54,55,53,52,55,54,59,1,3,51,21,51,53,51,21,51,53,51,21,51,53,51,21, +48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,48,49,53,1,8,22,2,61,43,42,11,3,14,9,9, +9,9,14,254,127,13,9,9,1,1,9,9,13,4,11,42,42,61,7,7,10,17,201,64,40,64,49,64,40,64,1,1, +48,18,5,8,23,254,63,22,8,5,18,48,1,1,192,2,22,11,11,42,43,61,9,9,14,14,9,9,9,9,14,14, +9,9,61,43,42,11,11,10,7,7,254,224,128,128,128,128,128,128,132,1,32,14,22,22,1,1,22,22,14,32,1,132, +0,4,0,0,255,192,1,255,1,191,0,57,0,75,0,93,0,102,0,0,1,6,7,49,6,7,22,23,22,23,22,23, +22,7,6,7,6,7,6,7,6,7,20,7,6,35,34,39,38,53,52,55,50,55,54,55,54,55,54,55,54,55,54,23, +22,23,22,23,22,23,54,55,54,55,54,23,22,7,3,38,39,49,38,39,6,7,6,7,22,23,22,23,54,55,54,55, +39,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,6,7,38,39,54,55,22,23,1,255,9,16,16, +20,4,4,6,5,7,3,3,4,11,22,22,29,28,30,1,1,1,60,78,78,60,57,57,1,1,1,1,31,42,42,38, +38,22,7,7,7,2,1,2,1,2,57,50,50,30,9,7,7,2,192,1,36,37,54,54,36,37,1,1,37,36,54,55, +36,36,1,128,9,9,14,14,9,9,9,9,14,13,10,9,33,2,14,15,1,1,15,14,2,1,171,30,50,50,58,1, +1,2,1,2,7,7,7,22,39,38,42,42,31,1,1,1,1,57,57,60,78,78,60,1,1,1,30,28,29,22,22,11, +4,3,3,7,5,6,4,4,20,16,16,9,3,7,7,9,254,214,54,36,37,1,1,37,36,54,55,36,36,1,1,36, +36,55,32,14,9,9,9,9,14,13,10,9,9,11,12,80,15,1,1,15,15,1,2,14,0,6,0,0,255,192,2,64, +1,192,0,8,0,21,0,39,0,90,0,99,0,127,0,0,23,22,23,51,54,55,53,35,21,1,35,17,22,23,51,54, +55,17,52,39,38,35,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,39,38,43,1,34,7, +6,21,17,20,23,22,51,50,55,54,61,1,22,49,22,51,23,21,20,23,22,51,50,55,54,55,53,52,47,1,53,23, +22,59,1,50,55,54,53,52,39,38,35,39,21,51,53,35,34,7,6,21,51,23,7,6,23,22,51,22,55,22,23,22, +51,50,55,54,53,20,23,22,51,50,55,54,53,17,35,21,192,1,15,32,15,1,64,1,96,32,1,15,32,15,1,9, +9,14,254,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,160,51,45,19,26,19,26,19,19,9,9,14, +13,9,10,1,1,1,29,9,9,14,13,9,9,1,7,41,21,14,20,57,14,9,9,9,9,14,32,64,32,14,9,9, +96,32,31,3,10,10,14,24,8,1,9,9,13,14,9,9,9,9,14,14,9,9,192,48,15,1,1,15,176,176,1,240, +254,16,15,1,1,15,1,208,14,9,9,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,45,19,19, +19,26,255,0,14,9,9,9,9,14,101,1,1,43,56,14,9,9,9,9,14,56,16,13,61,81,21,14,9,9,14,14, +9,9,192,160,192,9,9,14,223,155,16,11,11,1,31,13,8,9,9,9,14,14,9,9,9,9,14,1,160,32,0,0, +0,2,0,0,255,192,1,192,1,192,0,24,0,88,0,0,37,35,55,54,39,38,15,1,6,23,22,59,1,7,6,23, +22,51,50,63,1,54,39,38,35,55,54,53,38,39,38,39,35,54,53,38,39,38,39,34,7,22,21,6,7,6,7,35, +6,7,6,7,20,23,6,7,6,7,22,23,22,23,51,38,39,38,63,1,54,23,50,23,22,15,1,51,22,23,22,7, +51,54,55,54,55,38,39,38,39,1,48,56,39,4,10,10,10,128,7,3,4,11,56,39,4,10,4,4,6,5,128,7, +3,3,11,69,11,1,18,18,27,6,6,1,27,27,41,8,7,15,1,22,23,34,16,27,18,18,1,11,33,21,20,1, +1,27,27,41,13,6,4,10,23,128,14,17,16,12,29,13,19,7,32,13,10,19,13,41,27,27,1,1,20,21,33,80, +90,11,8,6,7,111,8,10,10,90,11,8,4,4,111,8,10,11,141,16,19,27,18,18,1,15,17,41,27,27,1,2, +20,26,34,23,22,1,1,18,18,27,19,16,8,25,25,35,41,27,27,1,7,8,31,22,112,13,1,9,23,35,45,2, +29,27,22,1,27,27,41,35,25,25,8,0,0,3,0,0,255,224,2,128,1,160,0,40,0,72,0,109,0,0,1,6, +7,49,6,7,49,6,7,21,22,23,51,54,55,53,54,55,54,55,54,51,22,23,22,23,22,23,21,22,23,51,54,55, +53,38,39,38,39,38,7,23,6,7,49,6,7,21,22,23,51,54,55,53,54,55,54,55,54,23,22,23,21,22,23,51, +54,55,53,38,39,38,7,39,6,7,49,6,7,49,6,7,21,22,23,51,54,55,53,54,55,54,55,54,23,22,23,21, +22,23,51,54,55,53,38,39,38,39,38,7,1,56,88,70,71,41,41,1,1,15,32,15,1,1,35,35,58,59,72,71, +56,57,34,33,1,1,15,32,15,1,1,44,44,74,74,91,2,53,34,34,1,1,15,32,15,1,1,16,17,26,28,20, +19,1,1,15,32,15,1,2,38,38,56,1,61,49,49,29,28,1,1,15,32,15,1,1,43,43,67,70,47,47,2,1, +15,32,15,1,1,31,31,52,52,64,1,160,3,45,44,73,73,88,106,15,1,1,15,107,72,60,59,35,35,2,34,35, +57,57,71,112,15,1,1,15,112,91,73,73,42,42,1,192,4,37,38,53,108,15,1,1,15,110,26,19,18,3,1,18, +19,28,112,15,1,1,15,112,56,37,36,1,96,3,31,31,51,51,62,107,15,1,1,15,108,67,46,47,4,1,46,45, +70,112,15,1,1,15,112,64,51,51,29,30,1,0,0,0,0,5,0,0,255,224,2,128,1,160,0,13,0,34,0,55, +0,76,0,123,0,0,1,38,39,49,38,39,35,6,7,6,7,21,33,53,37,7,23,20,47,1,7,6,53,55,39,38, +63,2,54,31,2,22,7,51,7,23,20,47,1,7,6,53,55,39,38,63,2,54,31,2,22,7,51,7,23,20,47,1, +7,6,53,55,39,38,63,2,54,31,2,22,7,23,35,6,7,21,6,7,38,39,53,33,21,20,23,22,51,23,50,55, +54,61,1,51,21,20,23,22,59,1,50,55,54,61,1,51,21,22,23,22,23,22,55,54,55,53,38,39,2,32,2,45, +45,67,226,67,45,45,2,2,31,254,145,19,4,8,25,24,9,5,20,5,8,27,13,5,5,13,27,8,5,144,19,4, +8,25,24,9,5,20,5,8,27,13,5,5,13,27,8,5,144,19,4,8,25,24,9,5,20,5,8,27,13,5,5,13, +27,8,5,160,32,14,1,2,13,14,1,253,221,9,9,13,65,14,9,9,191,10,9,13,64,14,8,9,32,1,19,20, +32,38,25,26,1,1,15,1,1,68,45,44,2,2,45,45,67,64,64,21,20,27,9,3,13,13,3,10,27,20,6,3, +4,25,6,6,25,4,3,7,20,27,9,3,13,13,3,10,26,20,7,3,4,25,6,6,25,4,3,7,20,27,9,3, +13,13,3,9,27,20,7,3,4,25,6,6,25,4,3,7,149,2,13,64,14,1,1,14,111,159,14,8,9,2,9,9, +14,64,64,14,9,9,9,9,13,96,43,33,23,24,5,2,23,23,37,64,14,2,0,0,0,4,0,0,255,192,2,128, +1,192,0,32,0,47,0,62,0,79,0,0,55,51,22,23,54,55,51,54,55,54,55,38,39,38,39,34,7,38,39,38, +35,6,7,38,39,6,7,6,7,22,23,22,23,7,35,34,7,6,21,20,23,22,59,1,54,55,38,39,37,33,6,7, +20,23,22,51,33,54,55,52,39,38,35,7,33,34,7,6,21,20,23,22,51,33,54,55,52,39,38,35,144,156,35,49, +49,35,60,48,31,32,1,1,32,31,48,27,23,19,33,33,41,63,41,41,63,61,41,40,2,2,40,41,61,8,113,9, +7,7,7,7,9,113,22,2,2,22,1,224,253,240,22,2,7,7,9,2,16,22,2,6,7,10,64,254,191,9,7,7, +7,7,9,1,65,22,2,7,7,10,160,31,1,1,31,1,32,31,48,48,31,32,1,12,35,20,21,2,43,43,2,2, +40,41,61,61,41,40,2,176,7,7,9,10,7,8,2,22,22,2,96,2,21,10,7,8,2,21,10,7,8,96,7,7, +9,10,7,8,2,21,10,7,8,0,0,0,0,5,0,0,255,192,2,0,1,192,0,18,0,36,0,54,0,78,0,102, +0,0,55,53,38,39,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,1,6,7,49,6,7,22,23,22,23,54, +55,54,55,38,39,38,39,21,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,39,38,39,49,38,39,6, +7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,53,3,38,39,49,38,39,54,55,53,54,55,54,51,50,23, +22,23,21,22,23,6,7,6,7,160,1,15,15,1,30,2,1,13,14,20,20,14,13,1,2,30,1,0,41,27,27,1, +1,27,27,41,41,27,27,1,1,27,27,41,14,9,9,9,9,14,14,9,9,9,9,14,160,1,32,31,48,48,31,32, +1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22, +23,34,125,211,15,1,1,15,211,12,33,20,14,13,1,1,13,14,20,33,12,1,67,1,27,27,41,41,27,27,1,1, +27,27,41,41,27,27,1,128,9,9,14,14,9,9,9,9,14,14,9,9,16,48,31,32,1,1,32,31,48,167,37,52, +61,41,40,2,2,40,41,61,51,38,167,254,176,1,22,23,34,40,24,192,20,14,14,14,14,20,192,24,40,34,23,22, +1,0,0,0,0,5,0,0,255,192,2,0,1,192,0,18,0,42,0,66,0,84,0,102,0,0,55,53,38,39,6,7, +21,6,7,22,23,22,23,54,55,54,55,38,39,55,38,39,49,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55, +54,55,38,39,53,3,38,39,49,38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,1,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,21,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,160,1,15,15,1,30,2,1,13,14,20,20,14,13,1,2,30,96,1,32,31,48,48,31,32,1,31,1,2,40,41, +61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34,1,16,41,27, +27,1,1,27,27,41,41,27,27,1,1,27,27,41,14,9,9,9,9,14,14,9,9,9,9,14,125,19,15,1,1,15, +19,12,33,20,14,13,1,1,13,14,20,33,12,211,48,31,32,1,1,32,31,48,167,37,52,61,41,40,2,2,40,41, +61,51,38,167,254,176,1,22,23,34,40,24,192,20,14,14,14,14,20,192,24,40,34,23,22,1,1,192,1,27,27,41, +41,27,27,1,1,27,27,41,41,27,27,1,128,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,2,0,0, +255,192,2,0,1,192,0,24,0,76,0,0,37,35,55,54,39,38,15,1,6,23,22,59,1,7,6,23,22,51,50,63, +1,54,39,38,39,55,48,35,49,48,35,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,23,6,7,6, +7,22,23,22,23,51,55,54,51,50,23,22,23,22,15,1,51,54,55,54,55,38,39,38,39,1,96,71,47,4,9,10, +10,153,8,3,4,11,71,47,4,9,3,6,6,5,153,8,3,4,11,64,1,1,2,1,22,23,34,38,23,14,26,26, +33,48,31,32,1,2,29,18,18,1,1,27,27,41,47,140,13,18,16,13,13,4,4,7,27,86,41,27,27,1,1,27, +27,41,97,105,12,8,6,7,128,7,11,10,106,11,8,4,4,128,7,10,11,1,223,8,8,34,23,22,1,1,28,28, +16,17,1,32,31,48,11,10,10,24,25,32,41,27,27,1,117,11,10,10,16,16,16,60,1,27,27,41,41,27,27,1, +0,4,0,0,255,192,1,192,1,192,0,12,0,24,0,36,0,51,0,0,1,54,39,38,39,33,6,7,6,23,33,54, +55,7,38,39,49,38,53,33,22,23,33,38,39,3,6,23,22,51,50,55,54,55,35,22,7,55,33,22,23,48,49,22, +23,51,54,55,52,53,38,39,1,152,11,5,7,16,254,145,21,3,1,6,1,98,13,36,20,17,11,11,254,175,18,35, +1,90,12,11,84,1,14,5,5,10,7,66,24,149,25,6,128,254,181,40,41,43,32,187,3,1,1,15,1,150,11,15, +15,1,2,21,41,32,22,32,154,19,16,16,17,60,36,15,13,254,223,17,8,2,7,65,56,35,66,230,31,20,21,25, +15,13,2,2,36,29,0,0,0,3,0,0,255,192,2,0,1,192,0,22,0,54,0,82,0,0,37,35,34,15,1,23, +22,51,50,55,54,55,54,31,1,22,51,50,63,1,39,38,35,39,50,55,23,51,55,22,51,54,55,54,55,38,39,38, +39,6,7,38,39,6,7,38,39,6,7,6,7,22,23,22,23,1,39,7,6,7,34,47,1,38,35,49,6,7,6,35, +34,47,1,7,6,23,22,23,33,54,55,54,39,1,48,96,16,10,55,13,8,12,12,8,17,27,27,18,32,8,11,12, +8,45,55,10,16,145,20,15,29,64,29,17,19,27,18,18,1,1,18,18,27,24,17,18,38,35,19,17,25,27,18,18, +1,1,18,19,26,1,91,101,41,18,26,26,18,31,8,12,12,8,18,27,27,18,8,101,11,8,9,20,1,192,20,9, +8,11,224,12,71,17,9,9,21,1,1,21,37,9,9,52,71,12,80,10,58,58,10,1,18,18,27,27,18,18,1,1, +14,29,2,2,29,14,1,1,18,18,27,27,18,18,1,254,195,129,48,19,1,20,37,9,1,9,20,20,11,128,17,16, +17,1,1,17,16,17,0,0,0,3,0,0,255,224,2,64,1,160,0,13,0,34,0,63,0,0,1,38,39,49,38,39, +33,6,7,6,7,17,33,17,15,1,6,7,38,35,48,49,34,47,1,38,55,54,31,1,55,54,23,22,7,23,35,21, +6,7,33,38,39,53,35,6,7,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,38,39,1,224,1,13,14,20, +254,224,20,14,13,1,1,128,101,88,6,11,1,2,9,6,56,15,13,16,18,37,72,15,19,16,12,149,16,1,15,254, +96,15,1,16,20,14,13,1,1,13,14,20,1,224,20,14,13,1,1,13,14,20,1,112,20,14,13,1,1,13,14,20, +254,208,1,48,87,112,8,1,1,6,48,14,19,15,13,31,92,16,12,15,19,121,112,15,1,1,15,112,1,13,14,20, +96,20,14,13,1,1,13,14,20,96,20,14,13,1,0,0,0,3,0,0,0,0,2,64,1,128,0,82,0,169,0,248, +0,0,37,38,39,49,38,53,49,48,49,38,35,34,7,6,7,6,7,38,39,38,39,48,49,38,35,34,7,6,7,6, +7,38,39,38,39,48,49,38,35,34,7,48,49,6,7,6,7,6,7,6,23,22,23,22,55,54,55,22,23,22,23,54, +55,54,55,22,23,22,23,54,55,54,55,22,23,22,55,54,55,54,39,38,39,21,38,39,49,38,53,49,48,49,38,35, +34,7,48,49,6,7,6,7,38,39,38,39,48,49,38,35,34,7,48,49,6,7,6,7,38,39,38,39,48,49,38,35, +34,7,48,49,6,7,6,7,6,7,6,23,22,23,22,55,54,55,22,23,22,51,50,55,54,55,22,23,22,51,50,55, +54,55,22,23,22,55,54,55,54,39,38,39,37,54,55,22,23,22,23,54,55,54,55,22,23,22,23,54,55,54,55,22, +23,22,55,54,55,54,39,38,39,38,39,38,53,48,49,38,35,34,7,6,7,6,7,38,39,38,39,48,49,38,35,34, +7,6,7,6,7,38,39,38,39,48,49,38,35,34,7,6,7,6,7,6,7,6,23,22,23,22,55,2,38,23,12,12, +10,13,12,10,1,18,19,36,36,18,18,1,10,13,12,10,1,18,19,36,36,18,18,1,10,13,12,10,2,12,11,23, +13,7,8,3,2,11,10,14,38,20,15,24,24,33,33,24,24,15,15,24,24,33,33,24,24,15,20,38,14,10,11,2, +3,8,7,13,23,12,12,10,13,12,10,2,18,19,35,36,18,18,1,10,13,12,10,2,18,18,36,36,18,18,1,10, +13,12,10,1,12,12,23,13,7,8,3,2,11,10,14,38,20,15,24,24,33,33,24,24,15,15,24,24,33,34,23,24, +14,20,38,15,10,11,3,2,8,7,13,254,0,38,20,15,24,24,33,33,24,24,15,15,24,24,33,33,24,24,15,20, +38,14,10,11,3,2,8,7,13,23,12,12,10,13,12,10,1,18,19,36,36,18,18,1,10,13,12,10,1,18,19,36, +35,19,18,1,10,13,12,10,1,12,11,24,13,7,8,3,2,11,10,14,210,5,7,8,1,9,9,2,10,9,2,1, +10,10,2,9,9,2,10,9,2,1,10,9,3,9,9,2,7,7,5,2,11,10,14,13,7,8,3,8,13,9,8,7, +1,1,7,8,9,9,8,7,1,1,7,8,9,13,8,3,8,7,13,14,10,11,2,144,5,7,7,2,9,9,3,9, +10,1,1,10,9,3,9,9,3,9,10,1,1,10,9,3,9,9,1,8,7,5,2,11,10,14,13,8,7,2,9,13, +10,7,8,8,7,10,9,8,8,8,8,9,13,9,2,7,8,13,14,10,11,2,226,8,13,9,8,7,1,1,7,8, +9,9,8,7,1,1,7,8,9,13,8,3,8,7,13,14,10,11,3,4,7,8,1,9,9,2,10,9,2,2,9,10, +2,9,9,2,10,9,2,1,10,9,3,9,9,1,7,8,5,2,11,10,14,13,7,8,3,0,0,0,0,4,0,32, +255,192,1,159,1,192,0,17,0,35,0,68,0,86,0,0,63,1,39,7,6,7,6,31,1,22,51,50,55,54,55,54, +47,1,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,38,39,49,38,15,1,6,35,34,47,1, +38,7,6,7,6,23,22,31,1,22,23,21,51,53,54,63,1,54,55,54,39,15,1,23,7,6,23,22,23,22,51,50, +63,1,54,39,38,47,1,157,31,60,52,11,1,1,9,48,13,19,13,11,13,3,2,10,27,67,34,23,22,1,1,22, +23,34,34,23,22,1,1,22,23,34,185,10,16,16,14,41,40,48,48,40,41,14,16,16,10,9,3,2,14,41,18,20, +192,20,18,41,14,2,3,9,89,60,31,27,10,2,3,13,11,12,19,13,48,9,1,1,11,51,36,31,54,53,11,14, +15,12,64,16,8,11,15,16,14,36,253,1,22,23,33,33,23,23,1,1,22,23,33,34,22,23,1,14,14,2,3,9, +29,28,28,29,9,3,2,14,14,16,16,10,28,13,8,38,38,8,13,28,10,16,16,14,182,53,32,36,14,16,15,11, +8,16,64,12,15,14,11,53,0,4,0,0,255,192,2,0,1,182,0,10,0,45,0,63,0,81,0,0,19,35,54,55, +54,55,54,23,22,31,1,55,54,55,49,54,55,51,50,23,22,21,20,7,6,43,1,21,20,7,6,7,6,7,6,35, +34,39,38,39,38,39,38,53,33,53,1,54,55,49,54,55,22,23,22,21,20,7,6,7,38,39,38,39,33,6,7,49, +6,7,38,39,38,39,54,55,54,55,22,23,22,23,255,255,3,26,26,44,10,11,12,7,116,129,1,18,18,27,32,14, +9,9,9,9,14,32,17,17,32,31,41,41,46,43,42,41,31,32,17,17,1,128,254,159,1,13,14,20,21,13,14,14, +13,21,20,14,13,1,1,129,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,0,56,46,46,30,6,2, +3,10,169,32,27,18,18,1,9,9,14,14,9,9,64,38,36,35,27,27,14,15,15,14,27,27,35,36,38,64,254,208, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +0,5,0,0,255,193,2,64,1,192,0,84,0,102,0,113,0,124,0,135,0,0,37,38,39,38,39,54,53,38,39,38, +7,6,23,22,21,6,7,6,7,38,39,38,39,52,55,54,39,38,7,6,7,22,23,6,7,6,7,6,23,22,55,54, +55,54,23,22,23,22,7,6,7,6,7,6,21,20,23,22,55,54,55,22,23,22,55,54,53,52,39,38,39,38,39,38, +55,54,55,54,23,22,23,22,55,54,39,5,34,39,49,38,39,54,55,54,55,22,23,22,21,20,7,6,35,23,22,23, +54,55,54,55,38,7,6,7,39,54,23,54,55,38,35,34,7,22,23,3,54,55,38,39,38,7,22,23,22,23,2,64, +21,54,26,29,10,1,40,4,6,5,1,7,1,34,34,51,51,34,34,1,7,1,5,6,4,40,1,1,9,29,26,53, +22,1,5,6,4,14,15,45,46,46,27,24,12,12,44,15,21,6,6,62,54,27,18,18,27,54,61,7,6,21,15,44, +12,12,24,26,47,46,45,15,14,4,6,5,1,254,223,20,14,13,1,1,13,14,20,20,14,14,14,13,21,98,2,25, +36,22,22,3,34,31,9,36,132,37,33,34,13,38,44,44,38,13,34,89,25,2,36,9,30,35,3,22,22,36,164,61, +32,15,5,26,30,63,49,5,3,4,6,20,18,52,35,35,1,1,35,35,52,18,20,6,4,3,5,49,63,30,26,5, +15,32,60,7,3,3,4,17,8,25,12,13,45,45,47,48,27,9,5,2,6,6,2,11,31,16,24,24,16,31,11,2, +6,6,2,5,9,27,47,48,45,45,13,12,25,9,16,4,3,3,6,36,14,13,21,20,14,13,1,1,13,14,20,20, +14,14,58,35,26,27,40,39,48,9,18,50,34,245,10,10,16,36,17,17,35,17,254,206,26,36,33,50,18,9,48,39, +40,27,0,0,0,3,0,0,255,194,2,0,1,192,0,20,0,50,0,88,0,0,19,6,7,22,23,22,23,22,23,22, +23,50,51,48,49,54,55,38,39,38,39,55,34,7,49,6,21,20,23,22,51,22,23,22,23,22,23,20,23,22,51,50, +55,54,53,38,39,38,39,38,39,7,38,7,49,6,29,1,22,23,22,23,6,7,6,35,34,39,38,39,53,38,39,35, +6,7,21,22,23,22,55,54,55,54,55,54,39,38,39,218,22,4,1,21,62,43,43,6,3,21,1,1,21,1,7,56, +56,79,6,14,9,9,9,9,14,62,51,50,30,30,1,9,9,14,14,9,9,1,38,39,65,65,80,52,11,8,9,1, +16,29,2,1,13,14,20,20,14,13,1,2,22,48,22,2,2,51,50,72,41,30,29,10,11,33,32,59,1,96,1,21, +23,2,6,43,43,62,20,2,3,22,79,56,56,7,96,9,9,14,14,9,9,1,30,30,50,51,62,14,9,9,9,9, +14,80,65,65,39,38,1,227,2,7,7,12,50,16,5,12,32,21,13,13,14,13,20,246,21,2,1,22,247,69,42,42, +12,10,29,30,41,63,48,47,13,0,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,60,0,0,19,21, +51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22, +21,7,33,17,6,7,6,7,33,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38,39,35,160,128,9,9,14, +14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160,20,14, +13,1,80,15,1,1,15,96,15,1,1,15,96,1,160,32,32,14,9,9,9,9,14,32,1,13,14,20,48,48,20,14, +13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,64,1,15,96,15,1,1,15,96,15, +1,0,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,60,0,0,19,21,51,53,52,55,54,51,50,23, +22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22,21,7,33,17,6,7,6,7, +33,38,39,38,39,17,23,6,7,21,22,23,33,54,55,53,38,39,33,160,128,9,9,14,14,9,9,48,20,14,13,1, +254,64,1,13,14,20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160,20,14,13,1,80,15,1,1,15,1, +32,15,1,1,15,254,224,1,160,32,32,14,9,9,9,9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9,9, +9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,64,1,15,64,15,1,1,15,64,15,1,0,0,7,0,0, +255,193,1,255,1,192,0,41,0,49,0,54,0,59,0,64,0,71,0,80,0,0,1,38,39,49,38,35,34,15,1,6, +7,6,31,1,22,23,22,63,1,54,51,50,23,22,7,6,7,5,6,7,6,31,1,22,23,22,55,37,54,55,54,39, +15,1,39,54,55,23,6,7,3,39,55,23,7,55,39,55,23,7,55,39,55,23,7,63,1,22,23,7,38,39,23,39, +54,55,54,53,23,6,7,1,242,22,39,39,46,42,39,28,11,4,3,7,33,7,12,12,13,27,8,9,17,10,7,3, +4,11,254,159,12,3,3,7,32,7,12,13,12,1,92,54,20,20,25,178,3,20,14,16,21,15,13,174,61,31,61,31, +107,60,31,60,31,111,60,31,60,31,21,46,12,10,45,9,14,82,60,5,3,1,61,3,7,1,101,44,23,24,23,15, +8,13,12,12,55,11,3,4,7,17,4,16,11,13,12,7,211,7,12,13,11,55,11,4,3,7,206,34,58,59,59,13, +3,62,7,3,62,1,6,254,184,39,18,38,19,64,39,18,39,18,67,37,19,39,17,196,45,9,13,46,15,8,108,20, +8,9,7,7,20,16,15,0,0,2,0,0,255,193,2,0,1,192,0,32,0,51,0,0,1,38,7,49,6,7,23,22, +7,6,35,34,47,1,3,6,23,22,63,1,39,38,55,54,31,1,55,54,55,54,39,38,39,55,54,39,49,38,39,6, +7,6,31,1,22,55,54,55,38,39,38,7,1,42,40,41,41,29,55,10,10,5,6,6,5,50,128,4,4,11,19,134, +49,10,10,11,11,57,102,37,20,22,16,16,47,92,15,8,7,31,38,1,2,33,8,36,42,42,33,25,33,33,31,1, +35,19,9,10,32,56,11,11,5,5,50,254,249,9,10,18,7,65,50,11,11,10,10,57,50,18,39,48,47,47,24,35, +32,32,33,25,33,42,42,35,8,33,1,2,38,30,7,8,15,0,0,0,0,10,0,0,255,192,2,0,1,192,0,51, +0,62,0,73,0,82,0,91,0,100,0,109,0,118,0,127,0,136,0,0,1,50,23,49,22,29,1,20,7,6,43,1, +21,51,50,23,22,31,1,22,29,1,6,7,6,7,33,38,39,38,39,53,52,63,1,54,55,54,59,1,53,35,34,39, +38,39,53,54,55,54,59,1,7,6,7,22,23,51,54,55,38,39,35,3,33,54,55,38,39,33,6,7,22,23,55,6, +7,22,23,54,55,38,39,23,54,55,38,39,6,7,22,23,7,6,7,22,23,54,55,38,39,55,54,55,38,39,6,7, +22,23,7,6,7,22,23,54,55,38,39,55,54,55,38,39,6,7,22,23,7,6,7,22,23,54,55,38,39,1,32,14, +9,9,9,9,14,80,216,25,18,17,4,23,1,1,18,18,27,254,128,27,18,18,1,1,23,4,17,18,24,56,80,13, +9,9,1,1,9,9,13,225,192,15,1,1,15,160,15,1,1,15,160,16,1,96,15,1,1,15,254,160,15,1,1,15, +32,22,2,2,22,22,2,2,22,96,22,2,2,22,22,2,2,22,48,22,2,2,22,22,2,2,22,144,22,2,2,22, +22,2,2,22,48,22,2,2,22,22,2,2,22,144,22,2,2,22,22,2,2,22,48,22,2,2,22,22,2,2,22,1, +192,9,9,14,64,14,9,9,32,15,15,24,150,7,7,70,27,18,18,1,1,18,18,27,70,7,7,150,24,15,15,32, +9,9,14,64,14,9,9,48,1,15,15,1,1,15,15,1,254,112,1,15,15,1,1,15,15,1,232,2,22,22,2,2, +22,22,2,48,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2, +22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,0,0,0,0,4,255,255, +255,193,2,2,1,192,0,29,0,55,0,83,0,109,0,0,55,35,6,7,6,31,1,7,6,21,20,31,1,22,51,50, +63,1,23,22,51,50,55,54,55,53,52,39,38,35,55,51,54,55,54,47,1,55,54,53,52,47,1,38,35,34,15,1, +39,38,7,6,7,21,22,23,39,38,15,1,39,38,35,34,15,1,6,21,20,31,1,7,6,21,20,23,22,23,51,54, +55,53,54,39,19,55,54,39,38,39,35,6,7,21,22,23,22,63,1,23,22,51,50,63,1,54,53,52,47,1,200,136, +21,9,7,14,30,62,9,9,23,10,13,12,10,62,30,10,13,6,6,19,1,7,7,10,112,135,21,9,7,14,30,62, +9,9,23,10,13,12,10,62,30,16,19,18,1,2,22,108,19,16,30,62,10,12,13,11,23,9,9,63,30,9,2,9, +21,135,22,1,2,20,237,30,14,7,9,21,135,22,1,1,19,19,15,30,63,9,13,13,10,22,10,10,63,161,1,19, +19,16,30,62,10,12,13,10,23,9,9,62,30,9,2,9,21,136,10,7,7,63,1,19,19,16,30,62,10,12,13,10, +23,9,9,62,30,14,7,9,21,135,23,2,190,7,14,30,62,9,9,23,10,13,12,10,62,30,10,13,6,6,19,1, +2,21,137,21,9,254,173,30,16,19,20,1,2,21,135,21,9,7,14,30,62,9,9,23,10,12,13,10,59,0,0,0, +0,5,0,0,255,224,2,64,1,160,0,8,0,13,0,18,0,27,0,62,0,0,1,54,47,1,38,43,1,23,51,37, +35,7,51,53,51,35,21,51,39,5,51,55,35,6,15,1,6,23,5,35,55,33,23,35,6,7,21,22,23,51,23,21, +22,23,51,54,55,53,33,21,22,23,51,54,55,53,55,51,54,55,53,38,39,2,48,17,1,24,4,12,99,26,97,254, +224,100,26,126,133,101,126,25,254,123,97,26,99,12,3,24,2,17,2,32,20,4,254,0,4,20,15,1,1,15,28,20, +1,15,32,15,1,1,64,1,15,32,15,1,20,28,15,1,1,15,1,32,2,18,95,13,128,128,128,128,128,128,128,128, +1,11,95,19,2,64,32,32,1,15,32,15,1,160,16,15,1,1,15,16,16,15,1,1,15,16,160,1,15,32,15,1, +0,7,0,0,255,224,2,127,1,160,0,6,0,11,0,32,0,41,0,64,0,85,0,113,0,0,1,39,35,21,51,54, +55,39,35,7,51,53,23,22,23,54,63,1,23,22,23,22,49,48,53,50,47,1,38,39,35,31,1,5,51,55,35,6, +15,1,6,23,5,33,23,35,6,7,21,22,23,51,23,21,22,23,51,54,55,53,51,38,39,54,63,1,6,7,38,39, +6,7,6,7,22,23,22,23,54,55,54,55,52,39,38,39,7,6,35,38,39,38,39,52,55,54,55,22,23,22,23,22, +23,48,49,55,22,23,22,23,22,7,6,7,1,163,14,101,61,24,30,147,100,26,126,189,28,23,9,9,21,21,1,1, +1,1,1,24,3,12,99,12,12,254,67,97,26,99,12,3,24,2,17,1,69,254,203,4,20,15,1,1,15,28,20,1, +15,32,15,1,209,47,2,2,51,210,22,18,30,41,54,32,33,1,1,45,46,67,68,45,45,2,24,25,39,18,23,30, +38,25,25,1,13,12,25,3,16,16,15,15,2,39,2,1,3,2,14,6,6,24,1,88,72,127,28,27,72,128,128,72, +25,27,9,8,19,19,1,1,1,1,1,96,11,1,62,10,56,128,1,11,96,18,2,32,32,1,15,32,14,1,159,18, +15,1,2,13,15,52,75,58,73,29,20,21,39,37,49,53,53,39,67,45,44,2,2,44,45,67,30,46,46,37,230,16, +1,23,23,41,20,21,21,30,4,21,21,20,20,2,47,2,3,4,4,30,30,30,20,0,0,1,0,0,0,0,2,0, +1,128,0,44,0,0,37,21,6,7,35,53,35,21,35,53,35,21,35,53,35,21,35,53,35,21,35,38,39,53,54,55, +51,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,51,22,23,2,0,1,15,80,32,64,32,64,32,64,32,80, +15,1,1,15,48,1,15,48,1,15,224,15,1,48,15,1,48,15,1,240,224,15,1,128,128,128,128,128,128,128,128,1, +15,224,15,1,48,15,1,48,15,1,1,15,48,1,15,48,1,15,0,0,0,6,0,0,255,192,2,128,1,192,0,49, +0,86,0,97,0,109,0,118,0,127,0,0,19,55,54,23,22,15,1,51,22,23,6,7,6,7,6,29,1,20,23,35, +38,39,38,39,17,54,55,54,55,51,39,38,55,54,31,1,39,38,55,54,23,22,31,1,55,54,23,22,15,1,23,22, +31,1,55,54,55,22,23,22,23,20,7,51,22,23,22,23,21,35,53,35,21,35,53,54,55,54,55,51,38,53,54,55, +54,55,49,23,38,39,34,7,6,21,22,23,51,39,55,6,15,1,51,54,55,52,39,38,35,49,1,53,51,21,35,38, +39,38,39,23,53,51,21,6,7,6,7,35,193,25,19,14,12,17,28,22,26,14,36,4,21,13,14,9,153,20,14,13, +1,1,13,14,20,22,28,17,12,14,19,28,9,5,20,10,8,9,4,10,10,10,21,20,5,8,151,35,23,30,31,22, +35,30,21,20,1,4,4,20,14,13,1,192,32,192,1,13,14,20,4,4,1,20,21,30,20,8,12,10,7,7,2,22, +49,29,156,12,7,30,49,22,2,7,7,10,254,216,192,144,20,14,13,1,224,192,1,13,14,20,144,1,137,18,12,17, +19,14,20,2,21,28,47,6,17,17,23,224,18,14,1,13,14,20,1,64,20,14,13,1,21,14,19,17,12,20,25,22, +9,3,5,4,9,30,30,20,5,10,21,23,72,1,28,40,40,28,1,1,20,21,30,14,10,1,14,13,20,81,97,97, +81,20,13,14,1,10,14,30,21,20,1,59,10,1,8,7,9,23,1,37,11,1,10,37,1,23,9,7,8,254,223,80, +128,1,13,14,20,48,128,80,20,14,13,1,0,3,0,0,255,193,2,127,1,192,0,69,0,74,0,79,0,0,37,38, +39,49,38,15,1,39,54,55,54,47,1,38,15,1,39,38,15,1,6,23,22,23,7,39,38,7,6,7,6,31,1,22, +55,54,39,38,47,1,55,50,51,22,51,50,55,54,63,1,23,22,23,22,51,50,55,50,51,23,7,6,7,6,23,22, +63,1,54,39,1,39,55,23,7,51,39,55,23,7,2,127,6,15,15,16,22,39,37,10,10,22,87,14,25,114,115,25, +15,87,22,10,10,37,39,22,16,15,14,7,3,7,162,7,4,6,6,6,16,22,39,2,2,5,4,40,31,31,12,20, +20,11,32,31,40,4,5,2,2,39,22,16,6,6,6,4,7,162,6,2,254,149,112,36,95,19,88,19,95,36,112,14, +16,6,6,6,9,101,27,42,43,41,150,22,8,48,49,8,22,151,40,42,43,27,102,9,6,6,6,16,7,3,67,3, +7,16,14,15,7,9,104,1,22,23,40,75,75,40,22,23,1,104,9,7,14,15,16,7,3,67,3,7,1,16,46,64, +39,71,71,39,64,46,0,0,0,2,0,0,255,224,2,0,1,160,0,20,0,25,0,0,1,33,34,7,6,23,19,22, +23,22,51,33,50,55,54,55,19,54,39,38,35,7,33,39,33,7,1,223,254,65,15,9,9,1,56,4,18,17,25,1, +17,24,18,17,4,56,1,9,9,16,56,254,178,20,1,118,20,1,160,11,11,15,254,156,24,15,16,16,15,24,1,100, +15,11,11,192,128,128,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,118,0,153,0,165,0,0,37,6,7,49, +6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,39,7,6,29,1,22,23,50,63, +1,54,59,1,22,23,20,15,1,6,15,1,6,7,20,15,1,6,29,1,20,23,22,51,54,63,1,54,51,50,31,1, +22,51,54,47,1,38,63,1,54,55,54,55,51,22,23,6,7,35,34,15,1,6,21,22,23,51,50,31,1,22,23,20, +7,20,15,1,6,21,20,31,1,22,59,1,54,53,38,39,38,39,49,19,38,35,34,47,1,38,35,34,47,1,38,39, +35,6,15,1,6,7,21,20,31,1,22,59,1,22,23,20,23,54,55,54,55,49,37,7,6,23,22,63,1,54,39,38, +7,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246,33,9,1, +11,4,3,42,3,4,1,10,1,3,20,9,12,26,9,1,4,18,10,9,8,13,18,8,4,4,9,7,4,17,3,6, +14,4,1,5,12,21,12,1,2,17,29,15,1,1,15,21,11,8,5,3,1,10,12,9,7,6,2,1,2,1,7,6, +6,18,16,23,6,11,2,56,55,85,172,5,8,9,7,14,11,17,15,11,28,17,24,21,19,16,27,28,1,19,16,13, +19,21,22,2,1,54,43,43,25,254,239,32,10,10,11,11,32,10,10,11,11,192,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,208,26,6,11,9,11,1,2,28,2,1,10,5,3,20,8,5,9, +3,10,6,4,18,10,14,4,13,8,9,1,15,8,8,6,22,4,3,13,3,12,6,7,4,13,17,2,1,15,15,1, +8,5,3,5,10,1,7,6,2,5,3,2,1,1,7,5,9,8,6,18,16,30,34,86,58,58,6,254,204,4,7,14, +11,10,23,15,1,1,11,18,20,33,4,26,19,16,13,2,22,4,3,5,28,29,45,255,32,11,11,10,10,32,11,11, +10,10,0,0,0,2,0,0,0,96,1,192,1,32,0,19,0,39,0,0,37,50,23,49,22,21,20,7,6,35,33,34, +39,38,53,52,55,54,51,33,53,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,1,160,14,9, +9,9,9,14,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9,14,1,128,160,9, +9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,0,2,0,0,255,224,0,192, +1,160,0,19,0,39,0,0,55,20,7,49,6,35,34,39,38,53,17,52,55,54,51,50,23,22,21,17,51,20,7,49, +6,35,34,39,38,53,17,52,55,54,51,50,23,22,21,17,64,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9, +14,14,9,9,9,9,14,14,9,9,0,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9, +14,1,128,14,9,9,9,9,14,254,128,0,0,2,0,0,255,193,2,0,1,192,0,47,0,65,0,0,1,39,38,35, +34,15,1,6,15,2,38,39,38,7,6,7,6,7,6,7,6,23,22,23,22,23,22,55,54,55,54,55,54,55,54,39, +38,39,63,1,54,63,1,54,53,52,39,1,38,39,49,38,39,54,55,54,55,22,23,22,21,20,7,6,7,1,247,30, +10,13,12,10,46,6,3,12,76,19,22,52,37,14,7,11,31,36,26,34,5,5,42,43,52,51,37,24,4,5,30,19, +14,34,13,6,13,76,37,7,6,47,10,9,254,217,20,14,13,1,1,13,14,20,20,13,14,13,14,20,1,153,30,9, +9,47,6,8,36,76,13,6,12,34,14,20,29,5,3,26,36,51,52,44,41,5,5,33,27,36,31,11,6,15,37,52, +22,19,76,12,3,6,46,10,12,13,10,254,199,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,0, +0,1,0,0,255,224,2,0,1,150,0,43,0,0,19,54,31,1,7,20,49,6,23,6,31,1,22,55,54,47,1,55, +54,47,1,54,23,22,23,22,23,21,6,15,1,6,35,34,47,1,38,39,53,54,55,54,55,49,119,36,32,51,76,3, +1,1,4,112,4,6,5,3,61,91,4,1,23,44,52,52,33,33,1,1,47,180,12,16,16,12,180,47,1,1,33,33, +52,1,148,6,11,78,75,1,1,4,4,2,104,4,4,4,6,98,76,4,5,63,26,8,10,39,38,54,6,65,44,169, +11,11,169,44,65,6,54,38,39,10,0,0,0,5,0,0,255,193,1,255,1,192,0,17,0,35,0,53,0,103,0,150, +0,0,1,22,23,49,22,51,50,55,54,53,52,39,38,39,6,7,6,15,1,50,55,49,54,53,52,39,38,39,6,7, +6,21,20,23,22,23,55,52,39,49,38,39,6,7,6,21,22,23,22,23,50,55,54,53,7,52,39,49,38,7,6,39, +34,7,6,23,22,23,22,7,6,7,6,35,34,7,6,23,22,7,6,23,22,55,54,23,50,55,54,39,38,39,38,55, +54,55,54,23,54,55,54,39,38,55,23,34,39,38,39,38,55,54,55,54,39,38,35,6,39,38,7,22,7,6,23,22, +7,22,23,22,23,22,7,6,7,6,23,22,51,54,23,22,55,54,39,38,55,54,39,38,35,1,31,1,13,13,20,21, +13,14,14,13,21,19,14,13,1,111,20,13,14,14,13,20,20,13,14,14,13,20,127,14,13,21,20,13,14,1,13,13, +20,21,13,14,59,7,8,9,61,62,8,5,4,2,7,3,2,8,7,13,25,25,8,5,4,2,18,6,1,9,9,11, +58,60,8,5,4,2,7,4,1,7,8,13,25,25,8,5,4,2,19,8,252,25,25,13,7,8,2,3,7,2,4,4, +9,62,60,11,8,3,2,6,17,5,6,19,18,13,8,7,1,3,8,2,4,5,8,60,58,11,9,9,1,6,18,2, +4,5,8,1,49,20,14,13,14,13,20,20,13,13,1,1,13,13,20,48,14,13,20,20,14,13,1,1,13,13,20,20, +14,13,1,144,20,13,13,1,1,13,13,20,20,14,14,1,14,14,21,196,10,6,5,4,26,1,6,6,7,23,25,12, +10,9,3,4,6,6,8,54,61,11,6,6,4,24,1,6,6,8,22,25,12,10,9,3,5,1,1,6,5,8,57,62, +113,4,3,9,10,12,25,23,7,6,6,1,26,4,7,8,10,55,50,15,15,1,3,3,9,10,12,25,22,8,6,6, +1,24,4,6,6,11,61,54,8,6,6,0,0,2,0,0,255,192,1,255,1,191,0,52,0,61,0,0,37,39,38,39, +38,39,54,55,54,39,38,15,1,6,7,6,23,21,20,23,22,59,1,54,55,54,47,1,53,38,39,38,39,38,63,1, +54,23,22,23,22,51,50,55,23,22,59,1,50,63,1,54,47,1,38,39,54,55,22,23,6,7,1,254,70,12,24,25, +32,15,13,14,8,3,9,202,97,36,36,2,9,9,14,236,19,8,9,7,41,35,27,27,15,3,4,12,8,5,12,23, +23,30,26,20,46,10,16,51,13,9,46,13,6,182,22,2,2,22,22,2,2,22,115,165,31,21,21,6,8,20,20,34, +9,3,75,36,83,83,121,81,14,9,9,1,14,14,17,82,1,3,18,19,29,6,4,12,5,8,25,16,16,13,64,13, +9,40,15,19,110,2,22,22,2,2,22,23,1,0,0,0,0,1,0,0,255,192,1,255,1,192,0,33,0,0,1,3, +6,35,34,39,3,7,6,35,34,47,1,7,6,35,34,47,1,7,6,35,34,39,3,38,55,54,55,33,22,23,22,7, +1,255,87,2,6,6,2,67,45,3,5,5,3,34,46,2,6,6,2,45,35,3,5,5,3,87,4,9,9,17,1,192, +15,10,9,3,1,154,254,45,7,7,1,107,172,6,6,133,197,6,6,187,124,5,5,1,18,16,12,12,1,1,11,11, +15,0,0,0,0,5,0,0,255,224,2,64,1,160,0,8,0,16,0,22,0,54,0,60,0,0,1,33,54,55,54,55, +50,23,21,55,22,23,49,22,23,35,53,5,21,35,54,55,51,23,35,53,33,21,35,21,51,21,6,7,6,7,35,53, +38,39,38,39,6,7,6,7,21,35,38,39,38,39,53,51,53,37,51,22,23,35,53,1,64,254,241,39,62,62,76,16, +16,32,55,45,45,31,176,255,0,96,1,29,66,96,64,1,64,64,192,1,13,14,20,176,1,18,18,27,27,18,18,1, +176,20,14,13,1,192,1,32,66,29,1,96,1,32,59,34,34,1,2,126,121,13,31,32,45,121,153,128,70,58,128,128, +128,32,80,20,14,13,1,128,27,18,18,1,1,18,18,27,128,1,13,14,20,80,32,128,58,70,128,0,0,2,0,0, +255,192,1,192,1,191,0,18,0,41,0,0,37,33,34,7,6,29,1,6,23,22,51,33,50,55,54,61,1,38,39,55, +38,7,49,6,15,1,39,38,39,38,7,6,7,6,31,1,33,55,54,39,38,39,1,95,254,225,14,8,9,1,9,9, +13,1,32,14,9,9,2,30,74,21,26,25,18,21,30,15,49,48,60,60,30,31,13,60,1,32,81,17,2,3,20,32, +9,9,13,31,15,9,10,9,9,13,31,32,2,209,17,2,3,20,25,128,59,31,30,12,15,49,48,60,208,86,22,26, +25,18,0,0,0,4,0,0,255,192,2,0,1,192,0,24,0,36,0,59,0,82,0,0,1,33,34,7,6,29,1,22, +23,22,23,51,54,55,54,55,51,54,55,54,55,38,39,38,39,21,35,53,51,22,23,22,23,6,7,6,7,37,22,23, +22,23,50,55,54,53,52,39,38,39,38,39,38,39,6,7,20,23,22,23,51,22,23,22,23,50,55,54,53,52,39,38, +39,38,39,38,39,6,7,20,23,22,23,1,144,254,144,14,9,9,1,27,27,41,192,41,27,27,1,16,48,31,32,1, +1,32,31,48,16,16,20,14,13,1,1,13,14,20,254,220,19,1,2,22,10,7,7,12,11,21,19,1,2,22,22,2, +12,11,21,112,19,1,2,22,10,7,7,12,11,21,19,1,2,22,22,2,12,11,21,1,0,9,9,14,192,41,27,27, +1,1,27,27,41,1,32,31,48,48,31,32,1,160,96,1,13,14,20,20,14,13,1,251,11,24,22,2,8,7,9,24, +20,21,12,12,23,22,2,2,22,24,20,21,12,11,24,22,2,8,7,9,24,20,21,12,12,23,22,2,2,22,24,20, +21,12,0,0,0,4,0,9,255,200,1,246,1,132,0,17,0,32,0,48,0,67,0,0,37,50,55,49,54,55,38,39, +38,39,6,7,6,7,22,23,22,51,47,1,38,39,38,7,6,7,6,23,22,23,51,54,63,1,38,7,49,6,15,1, +22,23,51,54,55,54,39,38,39,3,6,7,38,39,7,6,23,22,23,22,51,50,55,54,55,54,47,1,1,0,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,42,71,9,13,14,12,69,16,2,10,9,15,134,2,36,203,12,14, +13,9,71,36,2,134,15,9,10,2,16,69,119,18,24,24,18,71,8,4,4,13,46,54,54,46,13,4,4,8,71,145, +14,14,20,20,14,13,1,1,14,13,20,20,14,14,115,113,13,2,2,9,59,94,14,11,10,1,45,23,121,9,2,2, +13,113,23,45,1,10,11,14,94,59,254,255,11,1,1,11,113,13,13,13,7,21,21,7,13,13,13,113,0,6,0,16, +255,208,1,240,1,176,0,10,0,28,0,43,0,54,0,81,0,99,0,0,55,39,38,7,6,7,20,23,51,54,55,23, +50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,23,6,35,34,39,7,6,23,22,51,50,55,54,47,1, +55,38,15,1,22,23,51,54,53,38,47,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55, +38,39,38,39,38,39,17,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,226,41,10,14,47,9,16,79, +1,25,30,14,9,9,9,9,14,14,9,9,9,9,14,30,14,16,17,13,41,7,14,29,35,35,29,14,7,41,65,13, +11,41,25,1,79,16,9,47,95,67,54,54,32,32,1,1,32,32,54,54,67,67,54,54,32,32,1,1,32,32,54,54, +67,75,49,50,2,2,49,50,75,75,50,49,2,2,50,49,75,239,67,13,9,38,61,17,2,31,16,79,9,9,14,14, +9,9,9,9,14,14,9,9,15,9,9,67,15,8,15,15,8,15,67,165,9,13,67,16,31,2,17,61,38,122,1,32, +32,54,54,67,67,54,54,32,32,1,1,32,32,54,54,67,67,54,54,32,32,1,254,96,2,50,49,75,75,49,50,2, +2,50,49,75,75,49,50,2,0,5,0,0,255,192,2,127,1,192,0,12,0,60,0,78,0,96,0,145,0,0,1,6, +7,17,22,23,50,55,54,53,17,38,39,7,38,39,49,38,43,1,34,7,6,15,1,6,23,22,23,22,55,21,20,23, +22,51,50,55,54,61,1,51,21,20,23,22,51,50,55,54,61,1,22,51,50,55,54,55,54,47,2,54,55,49,54,53, +52,39,38,39,6,7,6,7,22,23,22,23,33,54,55,49,54,53,52,39,38,39,6,7,6,21,22,23,22,31,1,39, +38,39,38,43,1,34,7,6,15,1,6,23,22,23,22,51,7,51,21,20,23,22,51,50,55,54,61,1,51,21,22,23, +22,51,50,55,54,61,1,51,39,50,55,54,55,54,39,1,63,21,2,2,21,10,7,7,1,23,105,7,17,16,21,50, +21,16,17,7,40,4,5,6,13,20,14,9,9,14,14,8,9,16,9,10,13,14,8,9,10,14,5,5,13,6,6,4, +39,86,20,13,14,14,13,20,20,14,13,1,1,13,14,20,1,127,20,14,14,14,13,21,21,13,13,1,13,13,20,127, +40,7,17,16,21,50,21,16,17,7,40,4,5,6,13,5,5,17,40,9,9,13,13,9,10,16,1,8,9,13,13,10, +9,39,16,5,6,15,6,6,4,1,192,2,22,254,48,22,2,7,7,10,1,208,22,2,172,20,12,12,12,12,20,122, +13,11,12,4,6,15,155,14,9,9,9,9,14,144,144,14,9,9,9,9,14,155,11,2,4,12,11,13,122,76,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,198,122, +20,12,12,12,12,20,122,13,11,12,4,2,48,96,14,9,9,9,9,14,96,96,14,9,9,9,9,14,96,48,2,4, +12,11,13,0,0,3,0,0,255,192,2,0,1,192,0,71,0,76,0,81,0,0,37,39,55,54,53,52,47,1,38,35, +34,15,1,39,38,35,34,15,1,6,21,20,31,1,7,38,7,6,7,6,31,1,7,34,49,38,35,34,7,6,7,22, +23,22,23,54,55,54,53,52,39,48,53,55,23,22,55,54,55,54,39,55,23,22,51,50,63,1,54,53,52,39,37,39, +55,23,7,23,39,55,23,7,1,247,81,48,10,10,47,11,13,13,11,48,80,9,13,14,9,97,9,9,81,10,41,44, +44,40,13,10,108,18,1,3,4,13,9,9,1,1,9,9,13,14,9,9,1,18,107,13,10,21,2,1,18,10,80,10, +12,13,9,97,10,9,254,229,69,73,69,73,164,69,73,69,73,184,80,48,10,14,13,11,47,10,10,48,80,9,9,97, +10,13,12,10,81,9,18,1,2,21,10,13,108,17,1,9,9,14,13,9,9,1,1,9,9,13,4,3,1,18,108,10, +13,40,44,44,41,10,81,9,9,97,10,12,14,10,67,68,74,69,73,164,68,74,68,74,0,3,0,0,255,192,2,0, +1,192,0,16,0,46,0,87,0,0,19,6,7,22,23,22,23,22,23,22,23,54,55,38,39,38,39,55,34,7,49,6, +21,20,23,22,51,22,23,22,23,22,23,20,23,22,51,50,55,54,53,38,39,38,39,38,39,3,55,50,51,22,51,50, +55,54,53,52,39,38,35,34,7,6,21,20,23,22,49,7,39,38,7,6,7,6,23,22,23,22,23,22,55,54,55,54, +47,1,216,22,2,2,22,61,41,40,2,2,22,22,2,2,54,55,81,8,14,9,9,9,9,14,62,51,50,30,30,1, +9,9,14,14,9,9,1,38,39,65,65,80,35,27,1,1,3,3,14,9,9,9,9,14,13,10,9,1,1,28,117,6, +7,7,4,31,9,9,49,51,66,65,60,7,1,1,6,117,1,88,2,22,22,2,2,40,41,61,22,2,2,22,81,55, +54,2,104,9,9,14,14,9,9,1,30,30,50,51,62,14,9,9,9,9,14,80,65,65,39,38,1,254,166,27,1,9, +9,14,13,9,10,10,9,13,4,3,1,27,116,6,1,1,7,60,65,66,51,49,9,9,31,5,7,7,6,117,0,0, +0,4,0,0,255,192,1,128,1,192,0,17,0,22,0,27,0,32,0,0,1,35,7,17,22,23,22,23,33,54,55,54, +55,17,38,39,38,39,7,35,53,51,21,51,35,53,51,21,51,35,53,51,21,1,64,192,128,1,18,18,27,1,0,27, +18,18,1,1,18,18,27,160,48,48,80,48,48,80,48,48,1,192,128,254,192,27,18,18,1,1,18,18,27,1,128,27, +18,18,1,160,96,96,96,96,96,96,0,0,0,8,0,0,255,192,1,128,1,192,0,17,0,22,0,31,0,40,0,45, +0,54,0,59,0,69,0,0,19,17,22,23,22,23,33,54,55,54,55,17,39,35,6,7,6,7,23,35,53,51,21,51, +35,53,51,50,23,22,29,1,7,51,21,20,7,6,43,1,53,35,51,21,35,53,35,51,21,35,34,39,38,61,2,33, +21,33,61,1,52,55,49,54,59,1,21,35,53,0,1,18,18,27,1,0,27,18,18,1,128,192,27,18,18,1,224,64, +64,96,64,32,14,9,9,64,64,9,9,14,32,96,64,64,96,64,32,14,9,9,1,0,255,0,9,9,14,32,64,1, +128,254,128,27,18,18,1,1,18,18,27,1,64,128,1,18,18,27,192,64,64,64,9,9,14,32,128,32,14,9,9,64, +64,64,64,9,9,14,32,96,64,64,64,14,9,9,64,32,0,5,0,0,255,192,1,192,1,192,0,17,0,34,0,62, +0,76,0,119,0,0,1,6,7,49,6,7,22,23,22,23,54,55,54,53,52,39,38,39,17,6,7,6,7,35,6,7, +22,23,51,54,55,54,53,38,39,5,34,7,49,6,35,34,47,1,38,35,34,7,6,21,20,31,1,22,51,50,55,54, +55,52,39,38,35,55,7,6,21,22,23,22,51,50,63,1,39,38,47,1,51,7,6,7,6,23,20,31,1,21,20,23, +22,51,50,55,54,61,1,52,47,1,52,51,48,51,55,54,55,38,39,38,43,1,34,7,6,21,20,23,22,51,1,143, +20,14,13,1,1,13,14,20,21,14,14,14,14,21,14,2,1,15,96,14,2,2,14,96,20,14,14,1,15,254,242,8, +3,4,8,6,5,68,5,6,6,5,5,5,68,14,20,11,13,13,1,6,5,5,45,94,9,1,11,12,8,13,9,92, +30,7,6,47,106,20,15,4,4,1,19,78,9,9,14,14,9,9,14,61,1,1,82,11,1,1,11,11,17,206,13,9, +9,9,9,13,1,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,64,1,15,15,1,1,15,15,1, +1,13,14,20,15,1,4,5,4,4,68,5,5,5,6,6,5,68,14,6,7,12,8,4,4,175,94,9,13,18,7,7, +9,92,30,8,9,117,17,15,14,14,6,26,19,78,83,14,9,9,9,9,14,89,20,14,61,1,83,12,16,17,11,12, +9,9,14,14,9,9,0,0,0,3,0,0,255,192,1,255,1,192,0,17,0,54,0,102,0,0,1,50,55,49,54,53, +52,39,38,39,6,7,6,7,22,23,22,51,19,38,39,6,7,6,7,34,47,1,55,54,53,52,47,2,6,21,22,31, +1,7,39,38,35,6,7,20,23,5,22,51,54,55,54,55,1,7,22,51,50,55,23,34,49,48,49,23,55,23,22,31, +1,22,51,50,55,54,53,52,47,2,38,39,38,39,34,15,1,39,48,53,52,39,7,39,48,35,6,7,20,31,1,1, +176,20,14,14,14,14,20,20,14,13,1,1,13,14,20,79,2,22,12,6,8,20,8,8,136,50,8,14,41,106,1,1, +18,75,46,198,5,6,23,1,13,1,136,18,19,29,20,19,1,254,120,10,8,9,14,11,48,1,115,32,7,6,18,58, +7,7,14,9,9,18,52,17,5,16,15,24,11,13,82,62,21,11,35,1,4,1,2,25,1,96,14,14,20,20,14,13, +1,1,13,14,20,20,14,14,254,139,22,2,1,7,10,1,3,70,74,13,14,19,15,40,53,4,5,26,19,75,69,102, +3,3,21,14,7,203,8,1,14,14,14,1,121,22,4,9,24,57,13,19,19,9,28,3,10,9,13,19,9,27,51,15, +13,14,1,5,32,31,1,22,12,21,7,1,5,2,2,23,0,4,0,0,255,192,2,64,1,192,0,17,0,61,0,85, +0,99,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,19,6,7,6,7,35,55,54,55,52, +39,38,43,1,39,38,47,1,38,35,34,15,1,6,7,22,23,22,23,48,49,3,35,6,7,22,23,33,54,55,54,55, +38,39,5,35,55,39,38,39,7,39,19,54,63,1,54,51,50,51,23,7,6,21,20,31,1,7,51,35,55,54,53,38, +47,1,55,23,22,23,51,7,1,80,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,216,22,2,2,22,69, +25,19,1,9,9,14,44,26,21,41,71,11,12,32,26,39,13,1,1,3,4,1,53,43,22,2,2,22,1,224,31,20, +20,1,2,22,254,252,97,43,22,18,12,62,24,52,6,5,40,9,11,3,3,14,37,5,31,85,25,110,43,23,2,1, +22,62,32,20,14,29,33,25,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,192,2,22,22,2, +178,9,21,14,9,9,53,40,11,21,3,20,30,10,16,10,5,5,1,254,241,2,22,22,2,1,20,20,31,22,2,48, +91,12,11,17,132,1,1,5,2,4,30,7,5,87,13,12,36,20,50,81,76,6,7,26,15,36,78,41,26,1,176,0, +0,2,0,0,255,224,2,128,1,160,0,55,0,83,0,0,19,50,23,22,23,22,31,1,22,23,22,51,54,55,54,55, +53,52,55,54,59,1,50,23,22,21,20,7,6,35,21,6,7,6,7,21,35,53,35,21,35,53,38,39,38,39,53,34, +39,38,53,52,55,54,59,1,1,6,7,49,6,7,33,34,39,38,39,54,55,54,51,33,54,55,53,52,55,54,51,50, +23,22,29,1,63,5,3,40,35,35,22,5,30,49,49,57,24,15,15,1,9,9,14,64,14,9,9,9,9,14,1,27, +27,41,64,192,64,41,27,27,1,14,9,9,9,9,14,31,2,65,1,25,25,37,254,23,13,9,9,1,1,9,9,13, +1,233,22,2,9,9,14,14,9,9,1,160,1,4,21,21,35,7,49,27,27,1,15,15,24,41,14,9,9,9,9,14, +14,9,9,96,41,27,27,1,32,32,32,32,1,27,27,41,160,9,9,14,14,9,9,254,152,37,25,25,1,9,9,14, +14,9,9,2,22,8,14,9,9,9,9,14,8,0,0,0,0,4,0,0,255,224,2,0,1,160,0,36,0,85,0,114, +0,163,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22,51,54,55,54, +55,54,55,38,39,38,39,38,39,7,6,7,34,39,38,39,38,55,54,23,50,23,22,23,22,55,38,39,34,39,38,39, +38,55,54,55,54,23,22,23,22,7,6,39,38,39,38,7,22,23,50,23,48,51,22,23,22,7,23,6,7,38,39,53, +7,6,35,34,47,1,21,6,7,38,39,53,54,55,54,31,1,55,54,23,22,23,21,55,6,7,34,39,38,39,38,55, +54,23,50,23,22,23,22,55,38,39,34,39,38,39,38,55,54,55,54,23,22,23,22,7,6,39,38,39,38,7,22,23, +50,23,48,51,22,23,22,7,1,0,72,57,58,34,34,1,2,55,12,20,20,3,3,2,1,6,50,36,36,19,49,58, +72,57,58,34,34,1,1,34,34,58,57,72,89,6,40,6,6,12,11,15,3,6,13,2,1,10,8,19,3,1,19,2, +3,11,15,15,3,3,16,15,24,9,9,14,4,6,14,7,6,19,3,1,16,2,1,1,14,16,15,3,153,1,15,15, +1,19,5,8,8,5,19,1,15,15,1,1,10,11,7,35,35,7,11,10,1,119,6,40,6,6,13,11,14,3,5,14, +1,1,10,8,19,3,1,19,2,3,11,15,15,3,3,16,15,24,9,9,14,4,6,14,7,6,19,3,2,16,2,1, +1,14,16,15,3,1,160,1,27,28,47,47,58,76,55,39,27,28,2,3,5,5,1,17,17,16,19,1,27,28,47,47, +58,58,47,47,28,27,1,240,30,2,1,2,5,6,15,14,4,1,4,1,3,8,7,4,1,2,10,10,24,18,8,8, +3,2,3,6,14,14,4,2,1,3,8,6,4,1,3,10,10,24,16,15,1,1,15,48,26,6,6,26,48,15,1,1, +15,96,10,5,3,8,47,47,8,3,4,11,96,16,30,2,1,2,5,6,15,13,3,1,4,1,3,8,7,4,1,2, +10,10,24,18,8,8,3,2,3,6,14,14,4,2,1,3,8,6,4,1,3,10,10,24,0,3,0,0,255,192,2,0, +1,192,0,75,0,91,0,109,0,0,37,22,51,50,55,54,55,52,47,1,38,47,2,38,39,34,7,6,21,20,31,1, +22,31,1,7,6,7,21,7,6,7,22,23,39,38,39,38,39,6,7,6,21,20,23,22,23,5,22,51,50,55,54,53, +38,39,38,35,34,7,6,35,34,47,1,54,63,1,54,53,52,47,1,55,23,15,1,6,21,20,23,39,48,51,54,63, +1,54,55,53,23,55,54,55,49,54,55,38,39,38,39,6,7,6,21,20,23,22,23,1,205,9,10,9,11,11,1,13, +111,21,25,63,27,9,19,14,9,9,3,29,9,19,16,41,34,1,74,21,1,2,8,38,17,5,5,17,14,5,5,12, +11,28,1,108,16,15,19,17,14,1,8,9,6,5,5,8,8,7,7,90,13,4,22,1,19,52,66,84,145,19,1,3, +169,1,3,4,85,31,2,60,116,20,14,13,1,1,13,14,20,20,14,14,14,14,20,198,6,7,8,17,15,11,83,16, +8,21,52,17,1,10,9,13,7,7,58,18,6,6,21,18,39,53,25,8,22,17,6,14,8,12,13,1,1,8,9,6, +8,18,17,12,133,5,8,7,15,14,5,5,2,4,2,33,7,15,101,5,5,24,15,39,30,62,51,92,3,3,8,6, +61,1,1,28,12,33,21,45,205,1,13,13,20,20,14,14,1,1,13,13,20,20,14,14,1,0,0,0,0,7,0,0, +255,192,1,255,1,192,0,71,0,80,0,89,0,98,0,107,0,123,0,132,0,0,1,39,38,15,1,53,38,39,35,6, +7,21,48,49,20,49,7,38,39,54,53,38,39,38,39,6,7,6,7,20,23,6,7,39,48,53,48,49,53,38,39,35, +6,7,21,39,38,15,1,6,31,1,22,23,6,7,20,23,22,23,51,54,55,54,53,38,39,54,53,55,54,39,37,38, +39,54,55,22,23,6,7,19,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23, +6,7,53,38,39,49,38,39,54,55,22,23,6,7,6,7,48,49,55,38,39,54,55,22,23,20,7,1,255,6,7,14, +28,2,15,16,14,2,49,8,14,15,1,27,27,41,41,27,26,1,15,14,8,49,1,15,16,15,1,28,14,7,6,4, +13,134,1,7,54,2,18,17,30,190,30,17,18,3,53,7,135,13,4,254,225,14,1,2,13,13,2,1,14,32,14,1, +1,14,14,1,1,14,14,1,1,14,14,1,1,14,14,1,1,14,14,1,1,14,1,7,6,1,1,14,14,1,1,6, +7,1,31,14,1,2,13,14,1,15,1,40,14,13,4,12,29,15,1,1,15,47,1,21,19,15,22,29,41,27,27,1, +1,27,27,40,29,22,16,19,21,1,47,15,1,1,15,29,12,4,13,14,14,7,55,19,17,46,74,40,33,33,22,22, +33,33,40,74,46,17,19,55,7,14,57,2,13,13,2,2,13,13,2,254,240,2,13,14,3,2,13,15,2,64,2,13, +14,3,2,13,15,2,64,2,13,14,3,2,13,15,2,87,1,12,11,8,15,1,1,15,8,11,12,1,57,2,13,13, +2,2,13,13,2,0,0,0,0,7,0,0,255,192,2,128,1,192,0,8,0,17,0,26,0,35,0,101,0,107,0,126, +0,0,55,6,7,38,39,54,55,22,23,51,54,55,22,23,6,7,38,39,35,6,7,38,39,54,55,22,23,35,54,55, +22,23,6,7,38,39,37,22,29,1,51,53,52,63,1,54,55,54,23,22,23,22,15,1,21,23,22,21,20,7,6,35, +34,47,1,38,61,1,35,22,21,6,7,6,7,33,38,39,38,39,52,55,54,55,53,52,55,54,59,1,53,54,55,54, +55,51,22,31,1,22,21,49,39,35,21,23,51,39,19,33,6,7,6,7,22,23,22,23,33,54,55,54,55,38,39,38, +39,144,2,22,22,2,2,22,22,2,192,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,128,2,22,22, +2,2,22,22,2,1,15,1,64,14,57,9,12,13,10,11,2,1,9,56,55,9,9,10,13,13,10,54,19,43,11,1, +32,31,48,255,0,48,31,32,1,18,17,29,9,9,14,32,1,13,14,20,123,41,18,87,2,148,107,64,112,69,69,255, +0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,1,13,14,20,48,22,2,2,22,22,2,2,22,22,2,2,22, +22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,150,3,4,31,53,22,18,71,10,2,2,9, +9,12,13,10,72,168,54,10,13,13,10,9,9,55,20,25,51,22,26,48,31,32,1,1,32,31,48,34,27,26,14,107, +14,9,9,112,20,14,13,1,2,37,204,3,4,186,96,64,160,254,224,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,0,0,2,0,0,255,224,1,128,1,160,0,19,0,50,0,0,19,52,55,49,54,51,33,50,23,22,21,20, +7,6,35,33,34,39,38,53,21,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38, +61,1,35,34,39,38,53,0,9,9,14,1,64,14,9,9,9,9,14,254,192,14,9,9,9,9,14,1,64,14,9,9, +9,9,14,128,9,9,14,14,9,9,128,14,9,9,1,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9, +9,9,14,14,9,9,224,14,9,9,9,9,14,224,9,9,14,0,0,0,0,3,0,0,255,192,1,192,1,192,0,38, +0,51,0,69,0,0,1,54,55,53,38,39,33,6,7,21,22,23,51,21,6,7,20,23,22,23,7,6,23,22,23,33, +54,55,54,47,1,54,55,54,53,38,39,53,51,5,54,55,51,22,23,21,6,7,35,38,39,53,23,34,39,49,38,39, +54,55,54,51,50,23,22,23,6,7,6,35,1,176,15,1,1,15,254,96,15,1,1,15,16,31,1,23,22,39,19,4, +9,9,17,1,0,17,9,9,4,20,39,23,23,1,31,16,254,176,1,7,48,7,1,1,7,48,7,1,128,68,45,45, +2,2,45,45,68,68,45,45,2,2,45,45,68,1,144,1,15,16,15,1,1,15,16,15,1,159,21,28,46,39,39,26, +65,16,12,12,1,1,12,12,16,65,26,39,39,46,27,22,159,24,7,1,1,7,16,7,1,1,7,16,216,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,32,0,60,0,74,0,83,0,0, +37,22,31,1,54,55,54,55,54,39,38,39,38,15,1,35,53,55,54,39,38,39,38,7,6,7,6,7,6,21,23,54, +51,23,38,39,49,38,7,39,53,39,7,23,51,23,6,23,22,31,1,22,51,50,63,1,54,53,52,47,1,7,39,7, +6,21,20,23,22,51,50,63,1,38,55,7,38,39,54,55,22,23,6,7,1,76,43,32,19,31,21,22,8,8,8,2, +8,8,6,69,76,69,6,2,2,8,33,36,42,29,29,7,2,83,12,13,52,18,23,23,21,108,127,64,96,62,107,11, +4,3,18,117,11,15,15,11,53,11,11,117,156,59,149,20,20,21,27,26,21,119,13,7,164,22,2,2,22,22,2,2, +22,224,1,30,20,14,25,25,33,36,32,9,2,2,6,69,75,69,6,8,8,2,8,8,11,31,32,43,12,12,83,4, +55,18,3,4,11,107,62,96,63,127,107,21,23,23,18,117,11,11,52,12,15,15,11,115,28,59,149,21,27,26,21,20, +20,119,32,34,165,2,22,22,2,2,22,22,2,0,0,0,0,6,0,0,255,192,2,0,1,192,0,17,0,35,0,71, +0,84,0,97,0,110,0,0,1,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,7,20,7,49,6,35, +34,39,38,53,52,55,54,51,50,23,22,21,7,54,55,49,54,55,51,53,7,6,39,38,55,37,54,23,22,15,1,21, +51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,51,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,1,0,9,9,14,14,9,9,9, +9,14,14,9,9,32,9,9,14,14,9,9,9,9,14,14,9,9,192,1,18,18,27,136,203,22,7,2,21,1,208,22, +7,2,21,213,136,27,18,18,1,1,18,18,27,254,192,27,18,18,1,64,15,1,1,15,64,15,1,1,15,64,112,1, +15,64,15,1,1,15,64,15,1,144,15,1,1,15,64,15,1,1,15,64,1,160,14,9,9,9,9,14,14,9,9,9, +9,14,24,14,9,9,9,9,14,14,9,9,9,9,14,232,27,18,18,1,66,42,2,21,22,6,96,3,21,22,7,44, +76,1,18,18,27,160,27,18,18,1,1,18,18,27,160,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64,15, +1,1,15,64,80,1,15,64,15,1,1,15,64,15,1,0,0,1,0,0,255,192,1,128,1,192,0,48,0,0,37,6, +7,49,6,7,38,39,38,39,54,55,54,55,54,23,22,23,21,22,23,22,23,50,55,54,55,38,39,38,39,38,39,38, +55,54,55,54,23,22,23,22,23,22,23,22,23,22,23,1,128,2,54,55,81,81,55,54,2,1,16,17,21,12,14,14, +1,1,17,18,27,28,18,18,1,1,13,13,17,22,17,16,4,4,39,11,16,16,1,1,19,20,28,37,31,30,2,129, +82,55,54,2,2,54,55,81,44,35,34,21,12,5,6,17,85,27,18,19,1,18,19,27,23,17,18,16,20,25,25,37, +38,58,15,5,5,18,33,26,25,24,31,43,43,70,0,0,0,2,0,0,255,192,2,63,1,191,0,22,0,47,0,0, +55,39,38,55,54,63,1,54,63,1,54,63,1,54,31,1,7,6,15,1,6,15,1,1,39,7,6,15,1,6,15,1, +23,22,51,50,63,1,54,63,1,54,63,1,54,55,54,39,29,18,14,4,5,18,69,73,42,20,45,78,92,25,19,34, +105,85,48,22,43,75,114,2,24,22,113,76,43,22,48,85,104,37,11,18,7,8,93,77,45,20,42,73,69,18,5,3, +13,15,21,17,22,22,9,31,35,75,38,80,37,43,9,19,38,48,40,87,41,77,36,53,1,77,24,52,36,78,40,87, +40,48,42,13,3,43,37,80,38,75,35,31,9,22,23,16,0,3,0,0,255,192,1,192,1,192,0,25,0,54,0,66, +0,0,37,17,38,39,38,39,33,6,7,6,7,17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,37,54,55,51, +53,54,55,51,22,23,21,51,22,23,21,6,7,35,21,6,7,35,38,39,53,35,38,39,53,1,33,34,39,38,53,52, +55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27,1,1,27,27,41,1,64,14,9,9,1,15,15,1,254,192, +1,15,53,1,15,52,15,1,55,15,1,1,15,54,1,15,52,15,1,54,15,1,1,0,254,224,14,9,9,9,9,14, +1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9,82,14,22,170,15,1,54,15, +1,1,15,54,1,15,52,15,1,54,15,1,1,15,54,1,15,52,254,230,9,9,14,14,9,9,64,0,0,1,0,0, +255,224,2,0,1,160,0,30,0,0,1,20,7,49,6,43,1,21,20,7,6,35,33,34,39,38,61,1,35,34,39,38, +53,54,55,54,55,22,23,22,23,2,0,15,15,27,7,9,9,14,254,192,14,9,9,7,27,15,15,1,67,67,121,121, +67,67,1,1,16,21,13,14,224,14,9,9,9,9,14,224,14,13,21,51,45,45,3,3,45,45,51,0,0,2,0,0, +255,224,2,0,1,160,0,12,0,21,0,0,55,21,20,23,22,51,33,50,55,54,61,1,33,1,34,7,5,33,38,39, +38,39,0,9,9,14,1,192,14,9,9,254,0,1,44,12,9,254,233,2,0,2,60,60,90,160,159,14,9,10,9,9, +13,161,1,0,6,217,91,63,62,7,0,0,0,2,0,0,255,192,2,64,1,192,0,43,0,72,0,0,37,23,6,7, +6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,53,52,55,54,59,1,50,23,22,29,1, +23,22,7,6,7,6,7,35,39,38,39,35,53,38,39,35,6,7,21,35,6,7,21,22,23,51,21,22,23,51,54,55, +53,51,54,55,53,2,0,1,1,18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,106,9,9, +14,32,14,9,9,53,12,1,1,9,9,13,32,112,1,15,56,1,15,48,15,1,56,15,1,1,15,56,1,15,48,15, +1,56,15,1,160,160,27,18,18,1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9,9,9,9, +14,121,47,10,14,13,9,9,1,40,15,1,56,15,1,1,15,56,1,15,48,15,1,56,15,1,1,15,56,1,15,48, +0,4,0,0,255,192,1,128,1,192,0,29,0,47,0,65,0,80,0,0,1,35,38,39,38,39,6,7,6,7,35,6, +7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,35,50,23,49,22,21,20,7,6,35,34,39,38,53, +52,55,54,51,21,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19,35,38,39,54,55,54,55,51,22, +23,22,23,6,7,1,80,54,10,24,24,32,32,24,24,10,54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1, +13,14,20,144,14,9,9,9,9,14,14,9,9,9,9,14,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27, +96,192,15,1,1,22,23,34,64,34,23,22,1,1,15,1,128,28,18,17,1,1,17,18,28,1,13,14,20,254,160,20, +14,13,1,1,13,14,20,1,96,20,14,13,1,9,9,14,14,9,9,9,9,14,14,9,9,128,1,18,18,27,27,18, +18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23,34,15,1,0,2,0,0,255,224,2,0, +1,161,0,36,0,65,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22, +51,54,55,54,55,54,55,38,39,38,39,38,39,23,6,7,35,21,6,7,35,38,39,53,35,38,39,53,54,55,51,53, +54,55,51,22,23,21,51,22,23,21,1,0,71,58,57,34,34,1,2,55,12,20,20,3,4,2,2,5,50,36,36,19, +49,58,72,57,58,34,34,1,1,34,34,58,57,72,112,1,15,54,1,15,52,15,1,54,15,1,1,15,53,1,15,52, +15,1,55,15,1,1,161,1,27,28,47,47,58,75,56,39,27,28,2,5,4,5,1,17,17,16,19,1,28,28,46,47, +59,58,47,47,28,27,1,235,15,1,54,15,1,1,15,54,1,15,52,15,1,54,15,1,1,15,54,1,15,52,0,0, +0,3,0,0,255,192,2,0,1,193,0,18,0,39,0,49,0,0,1,39,38,35,34,7,6,21,20,31,1,22,51,50, +55,54,53,52,39,7,39,55,39,7,6,15,2,6,31,1,22,63,2,54,63,1,39,15,1,6,15,1,55,54,63,1, +23,7,1,247,160,10,13,13,9,10,9,160,10,13,13,10,9,9,169,67,55,46,109,19,7,28,108,10,10,22,12,11, +109,120,27,19,110,45,56,54,7,9,79,18,3,6,9,68,9,1,24,159,10,9,10,13,13,10,160,9,9,10,13,12, +11,77,67,56,45,110,19,27,120,109,11,12,22,10,10,108,28,7,19,109,46,55,55,6,3,18,79,9,7,9,68,9, +0,4,0,0,255,224,2,0,1,159,0,40,0,58,0,76,0,85,0,0,37,39,38,47,1,38,39,38,15,1,6,47, +1,38,7,6,31,1,22,15,1,6,23,22,63,1,54,31,1,22,55,54,63,1,54,63,1,54,39,38,39,5,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,22,7,6, +35,55,38,39,54,55,22,23,22,7,1,216,66,30,8,16,11,36,35,28,48,21,33,71,41,19,19,20,38,17,12,28, +14,24,23,40,69,32,25,55,32,33,34,5,5,3,27,61,35,2,3,37,254,199,13,9,9,9,9,13,13,9,9,8, +9,14,128,13,9,9,9,9,13,13,9,9,1,9,9,14,16,14,1,2,13,14,1,1,16,252,22,11,27,61,33,8, +7,25,47,21,1,6,1,27,26,31,52,24,26,57,33,24,24,7,15,6,18,40,22,12,12,35,62,28,15,31,20,31, +31,15,60,9,9,13,13,9,9,9,9,13,13,9,9,95,9,9,13,14,8,9,9,9,13,13,9,9,127,2,13,14, +1,1,14,13,2,0,0,0,0,2,0,0,255,208,1,128,1,176,0,22,0,40,0,0,19,6,7,49,6,7,49,6, +7,22,23,22,23,54,55,54,55,38,39,38,39,38,39,7,6,7,49,6,7,6,7,38,39,54,55,54,55,54,23,22, +7,192,54,43,43,26,25,1,2,54,54,82,81,54,55,2,1,25,26,44,43,53,32,25,19,19,1,1,15,15,1,1, +22,21,27,10,13,10,8,1,176,2,49,49,66,67,55,82,54,54,2,2,54,54,82,55,67,66,49,49,2,122,31,46, +47,42,15,1,1,15,49,52,51,34,11,9,10,12,0,0,0,3,0,0,255,192,2,64,1,192,0,22,0,45,0,64, +0,0,1,35,39,35,34,7,6,29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,35,17,35,39,35,34,7,6, +29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,35,1,38,39,35,6,7,17,20,23,22,59,1,53,35,53,51, +53,35,53,2,32,112,32,80,14,9,9,9,9,14,224,14,9,9,9,9,14,112,32,80,14,9,9,9,9,14,224,14, +9,9,9,9,14,254,32,1,15,32,15,1,9,9,14,224,192,192,192,1,160,32,9,9,14,160,14,9,9,9,9,14, +128,14,9,9,254,224,32,9,9,14,160,14,9,9,9,9,14,128,14,9,9,1,48,15,1,1,15,254,112,14,9,9, +64,224,64,80,0,6,0,16,255,224,1,240,1,160,0,18,0,39,0,67,0,93,0,119,0,145,0,0,37,22,21,20, +7,6,35,33,34,39,38,53,52,55,54,51,33,50,23,7,22,29,1,20,7,6,35,33,34,39,38,61,1,52,55,54, +51,33,50,23,37,38,39,38,39,38,55,54,55,54,55,22,23,22,23,22,7,6,7,48,49,6,7,6,35,33,34,39, +37,6,21,20,23,22,23,50,51,22,51,54,55,54,55,52,39,52,53,38,39,38,39,6,7,49,39,6,21,20,23,22, +23,50,51,22,51,54,55,54,55,52,39,52,53,38,39,38,39,6,7,49,7,6,21,20,23,22,23,50,51,22,51,54, +55,54,55,52,39,52,53,38,39,38,39,6,7,49,1,226,14,14,14,20,254,128,20,14,14,14,14,20,1,128,20,14, +7,5,19,19,26,254,192,26,19,19,5,4,7,1,160,7,4,254,87,6,5,5,1,2,2,18,61,60,84,84,60,61, +18,2,2,1,5,5,6,7,8,254,130,8,7,1,67,5,3,2,5,1,2,3,3,5,3,4,1,1,2,4,4,5, +7,4,128,5,3,2,5,1,2,3,3,5,3,4,1,1,2,4,4,5,7,4,128,5,3,2,5,1,2,3,3,5, +3,4,1,1,2,4,4,5,7,4,178,14,20,20,14,14,14,14,20,20,14,14,14,119,4,7,16,26,19,19,19,19, +26,16,7,4,5,5,168,4,5,6,8,7,7,67,42,42,1,1,42,42,67,7,7,8,6,6,3,3,3,104,4,7, +5,4,4,2,1,1,4,3,5,3,3,2,1,5,2,3,1,1,5,32,4,7,5,4,4,2,1,1,4,3,5,3, +3,2,1,5,2,3,1,1,5,32,4,7,5,4,4,2,1,1,4,3,5,3,3,2,1,5,2,3,1,1,5,0, +0,1,0,32,255,192,1,192,1,192,0,53,0,0,37,21,6,7,6,7,35,34,39,38,47,1,38,61,1,52,63,1, +21,22,23,54,55,53,54,55,54,55,22,23,22,23,53,52,55,54,51,50,23,22,29,1,54,55,50,23,22,23,54,51, +22,23,22,23,1,192,1,36,37,54,136,38,33,34,22,15,10,18,30,1,15,15,1,1,13,14,20,20,14,13,1,12, +11,17,17,11,12,14,26,18,13,13,3,11,14,20,14,13,1,160,96,54,37,36,1,17,17,30,19,13,16,48,23,14, +24,45,15,1,1,15,96,20,14,13,1,1,13,14,20,200,17,11,12,12,11,17,190,21,1,11,11,17,7,1,13,14, +20,0,0,0,0,2,0,0,255,224,2,64,1,160,0,21,0,45,0,0,37,38,39,49,38,39,7,53,38,39,35,6, +7,21,39,6,7,6,7,21,33,53,23,38,35,33,34,7,6,23,22,23,22,23,22,23,54,55,54,55,54,55,52,51, +54,39,2,32,1,40,39,60,52,1,17,92,17,1,52,60,39,40,1,2,0,31,5,10,253,224,10,5,3,6,1,26, +26,62,61,107,103,60,61,28,28,3,1,8,4,167,68,52,53,24,90,124,17,1,1,17,124,90,24,53,52,68,71,71, +113,10,10,9,8,3,16,17,16,16,1,1,15,15,16,17,4,1,8,9,0,4,0,0,255,192,2,64,1,192,0,37, +0,66,0,84,0,105,0,0,1,22,23,49,22,23,17,6,7,6,21,20,23,35,38,39,38,39,53,51,54,55,38,39, +35,53,51,54,55,38,39,35,53,54,55,54,55,51,7,6,7,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53, +51,54,55,53,38,39,35,53,38,39,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54,55, +49,54,55,51,22,23,22,23,20,7,6,43,1,34,39,38,53,49,1,16,20,14,13,1,29,17,18,10,218,20,14,13, +1,144,15,1,1,15,144,144,15,1,1,15,144,1,13,14,20,224,120,15,1,24,15,1,1,15,24,1,15,16,15,1, +24,15,1,1,15,24,1,15,16,1,104,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,224,1,26,27,39, +102,39,27,26,1,10,10,15,218,15,10,10,1,192,1,13,14,20,254,192,16,29,28,36,19,16,1,13,14,20,80,1, +15,15,1,64,1,15,15,1,208,20,14,13,1,64,1,15,24,1,15,16,15,1,24,15,1,1,15,24,1,15,16,15, +1,24,15,1,208,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,205,39,27,26,1,1,26,27,39,15,10, +10,10,10,15,0,4,0,0,255,193,2,0,1,192,0,17,0,136,0,149,0,162,0,0,1,38,35,49,34,7,1,6, +23,22,23,22,55,1,54,53,52,39,7,6,7,49,6,7,49,48,49,6,7,6,7,6,7,6,7,48,49,48,21,6, +7,6,7,6,7,6,7,34,49,6,7,6,7,6,7,48,49,48,49,6,7,6,7,6,7,6,7,48,49,6,7,6, +7,6,39,38,55,54,55,54,55,48,49,54,55,54,55,54,55,54,55,48,49,48,53,54,55,54,55,54,55,54,55,50, +49,54,55,54,55,54,55,54,55,48,49,48,49,54,55,54,55,54,55,54,55,48,51,48,49,54,55,54,55,54,23,22, +7,5,1,39,38,39,38,15,1,6,23,22,31,1,37,1,23,22,23,22,63,1,54,39,38,47,1,1,233,25,32,32, +24,254,160,32,11,13,44,44,33,1,96,23,23,50,15,13,13,11,9,9,8,9,9,3,3,1,1,5,5,14,15,13, +13,10,1,18,16,9,3,3,2,1,5,5,14,14,13,13,11,10,8,8,9,11,12,9,9,15,13,13,11,10,8,8, +9,9,3,3,1,1,5,5,14,15,13,13,10,1,9,8,8,9,9,3,3,2,1,5,5,14,14,13,13,11,1,9, +8,8,9,11,12,8,8,254,105,1,34,11,20,24,25,18,207,17,1,1,19,11,1,193,254,222,11,20,24,25,18,207, +17,1,1,19,11,1,169,23,23,254,160,33,44,44,13,11,32,1,96,24,32,32,25,95,14,5,5,1,2,3,3,9, +9,8,8,9,1,10,13,13,15,14,5,5,1,1,15,9,9,8,9,11,13,13,15,14,5,5,1,1,3,3,9,10, +10,11,11,14,5,5,1,2,3,3,9,9,8,8,9,1,10,13,13,15,14,5,5,1,2,3,3,8,9,9,8,9, +11,13,13,15,14,5,5,1,1,3,3,9,9,9,11,11,204,1,34,12,19,1,1,17,207,19,24,24,20,12,132,254, +222,11,19,1,1,17,207,19,24,24,20,11,0,2,0,32,255,192,1,160,1,192,0,11,0,55,0,0,55,33,7,6, +7,6,35,34,39,38,47,1,37,22,23,22,23,22,23,20,21,20,7,20,7,6,7,6,7,6,35,33,34,39,38,53, +52,55,54,55,51,38,53,54,55,54,55,22,23,22,23,20,7,51,50,23,96,1,0,99,4,9,7,9,10,7,8,4, +99,1,34,9,7,7,3,3,1,4,1,4,5,7,8,9,10,254,224,20,14,14,14,14,20,1,1,1,41,43,58,60, +43,41,1,1,1,9,9,160,206,8,5,5,5,5,8,206,124,4,6,7,9,7,9,1,1,10,9,1,1,7,6,7, +4,3,14,15,19,19,15,13,1,8,8,59,43,41,1,1,41,43,59,8,8,4,0,0,0,3,0,0,255,224,2,128, +1,160,0,16,0,33,0,62,0,0,37,33,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,1,33,17,51,17, +38,39,38,39,33,6,7,6,7,17,51,17,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35,6,7,21,35, +6,7,21,22,23,51,21,22,23,2,112,253,160,15,1,1,18,18,27,2,0,27,18,18,1,1,15,254,16,1,128,64, +1,13,14,20,254,96,20,14,13,1,64,176,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48, +1,15,64,1,15,16,27,18,18,1,1,18,18,27,16,15,1,1,32,255,0,1,16,20,14,13,1,1,13,14,20,254, +240,1,0,240,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,0,0,0,4,0,0, +0,0,2,0,1,128,0,20,0,29,0,38,0,60,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,1,35,38,39,53,54,55,51,21,55,6,7,35,53,51,22,23,21,55,20,7,49,6,35,33,34,39, +38,61,1,52,55,54,51,33,50,23,22,29,1,1,192,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,1, +18,18,27,254,224,80,15,1,1,15,80,128,1,15,80,80,15,1,160,9,9,14,254,192,14,9,9,9,9,14,1,64, +14,9,9,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,254,208,1,15,16,15,1, +48,16,15,1,48,1,15,16,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64,0,0,2,0,0,255,192,2,0, +1,191,0,23,0,48,0,0,1,54,39,49,38,39,38,7,6,23,22,7,38,39,6,7,23,21,51,23,54,55,38,39, +7,53,39,6,7,6,7,6,7,6,7,6,7,6,7,22,23,22,23,54,55,54,55,39,35,1,209,16,1,2,19,14, +19,17,11,21,17,26,30,55,39,78,91,33,35,1,2,45,145,53,19,17,17,22,22,33,32,49,24,16,15,1,1,15, +16,24,136,100,100,53,23,102,1,58,29,33,33,28,17,11,14,20,33,36,12,1,1,35,35,90,78,39,56,63,42,154, +101,23,30,41,39,38,37,25,25,1,1,15,16,24,24,16,15,1,3,51,51,63,56,0,0,5,0,0,255,193,2,0, +1,192,0,10,0,28,0,46,0,64,0,81,0,0,19,3,6,23,22,55,37,38,39,38,39,19,34,39,49,38,53,52, +55,54,51,50,23,22,21,20,7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,3,38,15,1,22,23,22,23,55,54,39,38,39,38,39,38,39, +100,99,2,6,7,8,1,124,5,81,80,134,27,13,10,9,9,10,13,14,9,9,9,9,14,48,13,10,9,9,10,13, +14,9,9,9,9,14,97,14,9,9,9,9,14,14,9,9,9,9,14,113,27,8,15,142,86,86,8,57,25,1,12,49, +49,75,76,92,1,80,254,132,9,6,7,3,105,133,79,79,3,254,208,9,9,13,14,9,9,9,9,13,14,9,9,145, +9,9,14,13,9,9,9,9,13,14,9,9,96,9,9,13,14,9,9,9,9,14,13,9,9,1,111,1,25,57,5,85, +85,141,16,9,27,91,75,74,48,47,10,0,0,3,0,0,255,192,2,0,1,192,0,12,0,44,0,133,0,0,1,35, +39,38,55,54,55,51,22,23,22,15,2,51,48,51,22,23,22,23,22,23,22,23,6,7,6,7,33,38,39,38,39,54, +55,54,55,54,55,48,49,54,55,49,23,38,39,6,7,21,6,7,6,7,6,23,22,23,22,31,1,22,23,22,21,22, +21,6,7,6,39,38,39,38,35,38,35,38,7,6,23,22,51,48,21,22,23,21,22,23,54,55,53,54,55,54,55,54, +55,54,39,38,39,38,39,34,49,35,38,35,38,39,38,51,34,49,52,53,52,55,54,23,22,23,22,51,22,55,54,39, +38,39,53,1,64,128,47,5,4,4,10,196,10,4,4,5,47,128,128,1,5,6,31,41,42,32,32,2,1,27,27,41, +254,192,41,27,27,1,2,32,32,41,42,30,7,6,84,1,20,17,2,9,7,24,7,3,6,7,11,19,19,2,21,9, +3,1,1,7,10,19,11,15,2,2,1,2,18,7,4,17,1,3,13,17,2,17,20,1,5,4,3,3,26,6,3,6, +6,11,19,20,1,2,1,1,18,9,4,1,1,9,9,19,6,10,4,2,18,6,3,17,9,12,1,96,71,9,8,7, +1,1,7,8,9,71,32,4,4,18,34,35,55,56,82,41,27,27,1,1,27,27,41,82,56,55,35,34,18,4,4,96, +18,2,2,18,6,2,3,10,28,15,14,13,6,12,4,1,6,6,2,2,1,5,6,3,5,3,2,6,1,1,4,17, +18,6,2,1,4,5,6,18,2,2,18,5,1,2,1,1,10,29,16,13,14,7,12,5,1,5,6,3,1,4,4,4, +5,1,2,2,1,3,17,18,6,2,3,6,0,10,0,0,255,192,1,191,1,192,0,3,0,29,0,66,0,78,0,82, +0,86,0,90,0,94,0,101,0,105,0,0,37,51,39,7,55,33,6,7,6,7,17,22,23,21,6,7,20,23,22,51, +33,54,55,54,55,17,52,39,38,39,5,54,59,1,55,54,51,50,31,1,51,50,23,22,15,1,23,22,7,6,7,35, +7,6,7,38,47,1,35,38,39,38,63,1,39,38,55,1,33,53,33,50,23,22,21,20,7,6,35,39,55,35,23,39, +51,39,7,55,35,23,55,43,1,23,55,23,51,55,39,35,7,23,55,7,51,39,1,11,35,17,18,85,254,208,20,14, +13,1,1,15,15,1,9,9,13,1,64,41,27,27,1,27,27,41,254,249,6,12,56,28,6,11,11,6,28,56,12,6, +5,6,27,27,6,5,6,12,56,28,6,11,11,6,28,56,12,5,6,6,27,27,6,5,1,7,254,224,1,32,14,9, +9,9,9,14,144,17,34,17,95,35,18,17,188,35,18,17,152,36,19,17,28,62,32,32,62,32,32,31,17,34,17,203, +30,30,245,1,13,14,20,254,224,22,14,81,9,18,14,9,9,1,27,27,41,1,64,41,27,27,1,126,10,47,9,9, +47,10,10,10,46,46,10,10,10,1,46,9,1,1,9,46,1,10,10,10,46,46,10,10,254,190,64,9,9,14,14,9, +9,151,29,29,52,30,30,105,29,29,29,29,105,53,53,53,53,158,29,29,0,4,0,0,0,0,2,0,1,128,0,21, +0,26,0,48,0,53,0,0,1,22,23,49,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,33,7,35, +21,51,53,23,22,23,49,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,33,5,21,33,53,33,1,208, +20,14,13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,16,128,128,16,20,14,13,1,1,13,14,20, +254,96,20,14,13,1,1,13,14,20,1,160,254,240,1,0,255,0,1,128,1,13,14,20,64,20,14,13,1,1,13,14, +20,64,20,14,13,1,64,32,32,160,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,64,32,32,0, +0,3,0,0,255,192,1,192,1,192,0,26,0,39,0,65,0,0,1,22,31,1,51,50,23,22,21,20,7,6,35,33, +34,39,38,53,52,55,54,59,1,55,54,55,51,7,33,3,6,7,6,43,1,34,39,38,39,3,23,7,6,23,22,63, +1,21,20,23,22,51,54,55,53,23,22,55,54,47,1,38,39,6,7,49,1,28,20,9,7,96,14,9,9,9,9,14, +254,128,14,9,9,9,9,14,96,7,9,20,120,253,1,129,21,2,13,14,19,246,19,14,13,2,22,176,80,14,14,17, +16,39,7,7,10,23,2,39,17,16,15,15,80,6,11,9,7,1,192,1,17,14,9,9,14,14,9,9,9,9,14,14, +9,9,14,17,1,128,254,174,20,13,13,13,13,20,1,82,71,80,17,16,15,15,38,134,10,7,7,2,22,134,38,15, +15,16,17,80,7,1,1,7,0,3,0,0,255,192,1,192,1,192,0,26,0,39,0,65,0,0,1,22,31,1,51,50, +23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,55,54,55,51,7,33,17,6,7,6,7,33,38,39,38, +39,17,23,7,6,23,22,63,1,21,20,23,22,51,54,55,53,23,22,55,54,47,1,38,39,6,7,49,1,28,20,9, +7,96,14,9,9,9,9,14,254,128,14,9,9,9,9,14,96,7,9,20,120,253,1,129,1,18,18,27,254,255,27,18, +18,1,176,80,14,14,17,16,39,7,7,10,23,2,39,17,16,15,15,80,6,11,9,7,1,192,1,17,14,9,9,14, +14,9,9,9,9,14,14,9,9,14,17,1,128,254,192,27,18,18,1,1,18,18,27,1,64,71,80,17,16,15,15,38, +134,10,7,7,2,22,134,38,15,15,16,17,80,7,1,1,7,0,0,0,0,4,0,0,255,192,1,192,1,192,0,21, +0,50,0,62,0,82,0,0,55,54,55,49,54,55,53,38,47,1,38,35,34,15,1,6,7,21,22,23,22,23,39,52, +59,1,53,52,59,1,50,29,1,51,50,29,1,20,43,1,21,20,43,1,34,61,1,35,34,61,1,7,51,21,6,7, +6,7,38,39,38,39,53,23,7,39,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,224,54,37,36,1, +1,20,84,11,12,11,11,85,20,1,1,36,37,54,40,5,22,5,16,5,22,5,5,22,5,16,5,22,5,40,160,1, +22,23,34,34,23,22,1,183,103,103,54,33,33,1,10,10,15,1,122,15,10,10,2,33,32,54,144,1,36,37,54,110, +22,8,32,4,4,32,8,22,110,54,37,36,1,232,5,22,5,5,22,5,16,5,22,5,5,22,5,16,88,16,34,23, +22,1,1,22,23,34,16,153,103,103,17,44,44,59,15,10,10,10,10,15,59,44,44,17,0,1,0,0,255,224,2,128, +1,159,0,54,0,0,5,35,34,39,38,53,17,35,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,53,52,55, +54,59,1,50,23,22,21,17,51,53,52,55,54,59,1,50,23,22,21,20,7,6,43,1,21,20,7,6,35,1,220,152, +15,10,11,96,11,10,15,125,13,9,9,9,9,13,97,11,10,15,152,15,10,11,96,11,10,15,124,14,9,9,9,9, +13,97,11,10,15,32,11,10,15,1,92,156,15,10,11,9,9,14,14,8,9,156,15,11,10,10,11,15,254,164,156,15, +11,10,8,9,14,14,9,9,156,15,10,11,0,6,0,0,255,192,2,128,1,192,0,17,0,57,0,75,0,93,0,111, +0,129,0,0,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,22,23,49,22,21,20,7,6,43, +1,6,47,1,7,23,22,29,1,20,7,6,35,34,39,38,61,1,39,38,39,38,63,1,54,51,50,31,1,51,7,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,49,6,7,22,23,22,23,54,55, +54,55,38,39,38,39,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,14,9,9,9,9,14,64, +11,9,41,60,43,14,9,9,14,14,9,9,60,25,1,2,23,83,14,16,16,13,62,53,224,1,36,37,54,54,37,36, +1,1,36,37,54,54,37,36,1,128,31,20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,2,0,1,36,37,54, +54,37,36,1,1,36,37,54,54,37,36,1,128,31,20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,111,1,9,9,13,14,9,9,1,8,32,49,28,10,17,128,14, +9,9,9,9,14,111,38,18,27,28,19,64,10,10,48,225,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54, +72,1,20,20,31,31,20,20,1,1,20,20,31,31,20,20,1,72,54,37,36,1,1,36,37,54,54,37,36,1,1,36, +37,54,72,1,20,20,31,31,20,20,1,1,20,20,31,31,20,20,1,0,0,5,0,0,255,224,1,192,1,160,0,21, +0,26,0,31,0,36,0,41,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33, +21,35,21,51,53,21,35,21,51,53,39,53,35,21,51,7,51,53,35,21,1,128,27,18,18,1,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,128,128,128,128,192,128,128,128,128,128,1,160,1,18,18,27,254,192,27,18,18,1, +1,18,18,27,1,64,27,18,18,1,64,128,128,192,128,128,64,128,128,192,128,128,0,0,0,21,0,0,255,224,1,192, +1,160,0,17,0,35,0,53,0,71,0,89,0,107,0,125,0,143,0,161,0,179,0,197,0,215,0,233,0,251,1,13, +1,31,1,49,1,67,1,85,1,103,1,121,0,0,55,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,17,34,39,49,38,53,52,55,54,51,50,23,22,21, +20,7,6,35,23,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,34,39,49,38,53,52,55,54,51, +50,23,22,21,20,7,6,35,19,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,7,34,39,49,38,53, +52,55,54,51,50,23,22,21,20,7,6,35,7,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,3,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,17,34,39,49,38,53,52,55,54,51,50,23, +22,21,20,7,6,35,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,5,34,39,49,38,53,52,55, +54,51,50,23,22,21,20,7,6,35,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,34,39,49, +38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,37,20,7,49,6,35,34,39,38,53,52,55,54,51, +50,23,22,21,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,20,7,49,6,35,34,39,38,53, +52,55,54,51,50,23,22,21,64,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,14,9,9,9, +9,14,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9, +9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9, +9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14, +14,9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9, +9,14,254,160,9,9,14,14,9,9,9,9,14,14,9,9,1,96,14,9,9,9,9,14,14,9,9,9,9,14,254,160, +9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9, +9,9,14,14,9,9,254,96,14,9,9,9,9,14,14,9,9,9,9,14,1,160,9,9,14,14,9,9,9,9,14,14, +9,9,254,96,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,0,14,9, +9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9,9,14,14,9,9,1,128,9,9,14,14,9,9,9, +9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,1, +160,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9,9, +14,14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9, +9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,1,128,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9, +9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9, +9,9,9,14,128,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,32,9, +9,14,14,9,9,9,9,14,14,9,9,224,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9, +9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,8,0,0,255,224,1,192,1,160,0,27, +0,45,0,63,0,81,0,99,0,117,0,135,0,153,0,0,19,54,55,49,54,55,33,50,23,22,21,20,7,6,35,33, +6,7,17,20,7,6,35,34,39,38,53,17,19,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,51,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,39,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23, +22,21,20,7,6,35,23,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,39,34,39,49,38,53,52,55, +54,51,50,23,22,21,20,7,6,35,0,1,22,23,34,1,80,14,9,9,9,9,14,254,176,15,1,9,9,14,14,9, +9,128,14,9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14, +9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9, +14,32,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,1,80,34,23,22, +1,9,9,14,14,9,9,1,15,254,176,14,9,9,9,9,14,1,80,254,144,9,9,14,14,9,9,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9, +9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,14,9,9,9,9, +14,160,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,5,0,0,255,192,2,64,1,192,0,17,0,44,0,84, +0,89,0,93,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,3,38,47,1,7,6,23,22, +23,22,55,54,63,1,23,21,20,23,22,51,50,55,54,61,1,52,39,23,6,15,1,33,39,38,39,38,15,1,47,1, +38,39,38,49,34,35,38,35,38,39,38,43,1,34,15,1,6,49,6,21,6,23,22,23,5,7,35,47,1,55,51,7, +23,55,23,39,1,16,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,62,39,41,71,58,3,6,6,13,14, +11,11,4,36,61,9,9,14,14,9,9,14,101,22,8,25,1,64,102,10,17,18,11,32,65,24,14,56,1,1,1,2, +1,2,2,23,25,74,14,10,56,1,1,7,4,3,11,1,81,10,40,205,24,29,34,39,94,34,14,48,1,96,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,251,26,22,39,201,13,11,12,4,3,6,6,13,128,40,79,13, +9,10,10,9,13,96,17,10,59,1,21,74,206,17,1,1,17,54,36,121,62,29,1,1,1,1,10,11,64,1,1,1, +10,12,12,7,184,17,212,13,32,45,52,41,67,26,0,0,0,2,0,0,255,192,2,0,1,193,0,36,0,54,0,0, +1,34,7,55,38,35,6,7,6,7,20,23,39,6,21,22,23,22,23,50,55,7,22,51,54,55,54,55,52,39,23,54, +53,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,97,43,35,13,1,18,61,40, +39,2,13,122,18,8,45,44,62,43,35,13,1,18,61,39,40,1,13,123,18,9,44,44,62,98,13,9,9,9,9,13, +13,9,9,8,9,14,1,65,13,123,18,10,44,44,62,43,35,13,1,18,61,39,40,1,13,123,18,9,44,44,62,43, +35,13,1,18,61,40,39,2,160,9,9,14,13,10,9,9,10,13,14,9,9,0,0,0,0,5,0,0,255,193,2,0, +1,192,0,37,0,66,0,84,0,107,0,131,0,0,1,22,29,1,6,7,6,35,34,39,38,39,54,55,54,55,53,7, +21,6,7,6,35,34,39,38,39,54,55,54,55,53,54,63,1,54,23,49,1,55,54,55,51,22,31,1,51,22,23,22, +29,1,20,7,6,43,1,34,39,38,39,53,54,55,54,55,51,23,6,7,49,6,7,22,23,22,51,50,55,54,53,52, +39,38,39,5,51,22,23,22,15,1,6,39,38,63,1,35,34,39,38,63,1,54,23,22,15,1,37,39,38,55,54,55, +54,23,22,31,1,55,54,55,54,23,22,23,22,15,1,6,39,49,1,244,12,1,18,18,28,26,19,18,1,1,18,19, +26,96,1,17,18,28,26,19,18,1,1,18,19,26,2,25,160,14,12,254,87,12,9,17,62,17,10,11,26,21,13,14, +14,13,21,192,20,13,13,1,1,13,13,20,28,68,20,13,14,1,1,14,13,20,21,13,14,14,13,21,1,41,56,11, +3,5,8,128,10,10,10,4,39,56,11,4,3,8,128,9,10,10,4,39,254,189,97,21,1,1,24,21,26,27,19,10, +10,19,27,26,22,23,1,1,21,96,12,11,1,185,10,14,144,21,13,14,14,13,21,20,13,14,1,56,19,117,21,13, +14,14,13,21,20,13,14,1,96,24,6,32,3,9,254,216,17,14,1,1,14,17,1,14,13,20,112,21,13,14,14,13, +21,112,20,13,14,1,56,1,14,13,20,21,13,14,14,13,21,20,13,14,1,8,1,10,11,7,112,7,6,8,11,91, +9,10,9,112,6,6,8,11,89,148,100,23,29,30,22,17,2,3,19,10,10,19,3,2,17,22,30,29,23,100,10,10, +0,1,0,0,255,192,2,0,1,191,0,28,0,0,63,1,54,31,1,54,55,54,55,39,38,63,1,54,31,1,22,23, +6,7,6,7,6,7,38,47,1,38,55,19,108,22,15,44,52,41,41,25,53,17,8,46,12,24,101,23,1,1,62,61, +103,103,128,23,7,23,4,22,97,46,8,17,53,25,41,41,52,44,15,22,108,22,4,23,7,24,127,103,103,62,61,1, +1,23,101,24,12,0,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,47,0,0,19,17,22,23,22,23,33,54, +55,54,55,17,38,39,38,39,33,6,7,6,7,23,55,54,31,1,54,55,39,38,63,1,54,31,1,22,23,6,7,6, +7,6,7,38,47,1,38,55,0,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,27,18,18,1,106,54,10, +8,22,53,27,27,8,3,24,5,13,50,11,1,1,30,31,51,52,64,12,3,12,2,12,1,96,254,192,27,18,18,1, +1,18,18,27,1,64,27,18,18,1,1,18,18,27,208,24,4,9,27,27,53,22,8,10,55,11,2,12,3,12,64,52, +51,31,30,1,1,11,50,13,5,0,0,0,0,8,0,0,255,192,2,127,1,192,0,24,0,37,0,50,0,63,0,76, +0,97,0,115,0,137,0,0,37,6,7,35,38,39,17,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,35, +21,7,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38, +39,53,54,55,51,22,23,21,5,54,55,51,22,23,21,6,7,35,38,39,53,19,33,6,7,6,7,17,22,23,22,23, +33,54,55,54,53,17,52,39,38,39,5,50,23,49,22,21,20,7,6,35,34,39,38,39,54,55,54,51,5,6,35,33, +34,39,38,63,1,54,51,50,31,1,55,54,51,50,31,1,22,7,1,96,1,15,160,15,1,112,20,14,13,1,1,13, +14,20,1,160,20,14,13,1,160,248,1,8,30,8,1,1,8,30,8,1,1,8,30,8,1,1,8,30,8,1,1,8, +30,8,1,1,8,30,8,1,1,48,1,8,30,8,1,1,8,30,8,1,183,254,160,20,13,14,1,1,13,14,20,1, +96,20,14,14,13,14,21,254,224,14,9,9,9,9,14,13,9,9,1,1,9,9,13,1,15,5,9,254,223,9,4,4, +5,70,5,7,8,5,22,63,5,9,9,5,106,5,4,16,15,1,1,15,1,48,1,13,14,20,254,224,20,14,13,1, +1,13,14,20,80,48,7,8,1,1,8,30,8,1,1,8,30,104,8,1,1,8,30,8,1,1,8,30,104,8,1,1, +8,30,8,1,1,8,30,178,8,1,1,8,30,8,1,1,8,30,1,153,1,13,14,20,255,0,20,14,13,1,1,13, +14,20,1,0,20,14,13,1,64,9,9,14,14,9,9,9,9,14,14,9,9,216,8,9,8,8,96,7,7,30,94,7, +7,160,8,9,0,3,0,0,255,193,2,127,1,192,0,22,0,58,0,65,0,0,37,35,55,39,7,35,34,7,6,21, +20,23,22,59,1,50,55,54,53,52,39,38,35,5,37,55,51,21,20,23,22,51,50,55,54,61,1,52,39,38,35,33, +34,7,6,29,1,39,38,7,6,23,1,22,51,50,55,54,39,1,39,54,61,1,51,7,1,96,45,19,55,32,47,14, +9,9,9,9,13,160,14,10,9,9,9,14,1,23,254,235,46,112,9,9,14,14,9,9,9,9,14,254,160,14,9,9, +121,19,15,12,16,2,79,7,8,11,8,13,16,254,181,82,6,109,33,32,64,43,107,9,9,14,14,9,9,9,9,14, +14,9,9,53,217,156,32,14,9,9,9,9,14,64,14,9,9,9,9,14,36,95,12,16,19,15,254,49,5,9,17,16, +1,3,64,8,10,32,114,0,0,4,0,7,255,224,1,239,1,160,0,35,0,64,0,90,0,94,0,0,23,22,51,49, +50,63,1,54,39,52,39,38,35,6,15,1,17,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,6,31,1, +19,51,7,6,23,22,23,51,54,55,52,39,38,43,1,55,54,39,38,39,35,34,7,6,21,20,23,22,51,19,39,38, +35,34,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,104,10,14,14,10, +87,9,1,10,11,12,13,9,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,216,51,74,14,7,9,21, +127,31,2,9,9,14,51,74,14,7,9,22,127,14,9,9,9,9,14,173,80,10,19,19,10,80,5,4,4,12,12,12, +12,7,7,88,7,5,12,12,14,12,4,4,5,125,16,16,32,22,10,10,96,10,13,13,9,9,1,10,35,1,46,14, +9,9,9,9,14,254,210,35,11,9,9,13,13,10,96,1,118,73,16,19,19,1,3,29,14,9,9,73,16,19,19,1, +9,9,14,14,9,9,254,175,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7,6,12,12,13,42,32, +32,0,0,0,0,4,0,8,255,224,1,239,1,160,0,35,0,64,0,90,0,94,0,0,19,38,35,49,34,15,1,6, +21,22,23,22,51,54,63,1,17,20,23,22,51,50,55,54,53,17,23,22,51,50,55,54,55,54,47,1,23,51,7,6, +23,22,23,51,54,55,52,39,38,43,1,55,54,39,38,39,35,34,7,6,21,20,23,22,51,19,39,38,35,34,15,1, +6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,152,10,14,14,10,87,9,1,9, +11,12,13,10,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,168,51,74,14,7,9,21,127,31,2,9, +9,14,51,74,14,7,9,22,127,14,9,9,9,9,14,173,80,10,19,19,10,80,5,4,4,12,12,12,12,7,7,88, +7,5,12,12,14,12,4,4,5,125,16,16,32,1,150,10,10,96,10,13,13,9,9,1,10,35,254,210,14,9,9,9, +10,14,1,45,35,11,9,9,13,13,10,96,54,73,16,19,19,1,3,29,14,9,9,73,16,19,19,1,9,9,14,14, +9,9,254,175,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7,6,12,12,13,42,32,32,0,0,0, +0,5,0,7,255,224,2,64,1,160,0,18,0,37,0,56,0,75,0,110,0,0,37,51,50,55,54,53,52,39,38,43, +1,34,7,6,21,20,23,22,51,21,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,17,51,50,55, +54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,19,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39, +38,35,37,7,17,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,6,31,1,22,51,50,63,1,54,39,52, +39,38,35,6,7,1,64,96,14,9,9,9,9,14,95,14,9,9,9,8,14,160,14,9,9,9,9,14,159,14,9,9, +9,8,14,32,14,8,9,9,9,13,32,14,9,9,9,9,14,224,223,14,9,9,9,9,14,223,14,9,9,9,9,14, +254,160,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,9,14,14,10,87,9,1,10,9,13,12,10,224, +9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14,14,9, +9,9,9,14,14,9,9,254,192,9,9,14,14,9,9,9,9,14,14,9,9,85,35,1,46,14,9,9,9,9,14,254, +210,35,11,9,9,13,13,10,96,10,10,96,10,13,13,9,9,1,10,0,0,5,0,8,255,224,2,64,1,160,0,18, +0,37,0,56,0,75,0,111,0,0,37,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,3,51,50, +55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,21,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20, +23,22,51,21,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,3,38,35,49,34,15,1,6,21,22, +23,22,51,50,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50,55,54,55,52,47,1,2,32,223,14,9,9, +9,9,14,223,14,9,9,9,9,14,224,32,14,8,9,9,9,13,32,14,9,9,9,9,14,96,14,9,9,9,9,14, +95,14,9,9,9,8,14,160,14,9,9,9,9,14,159,14,9,9,9,8,14,168,10,14,14,10,87,9,1,9,10,12, +14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,8,88,32,9,9,14,14,9,9,9,9,14,14,9,9,1, +64,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9, +9,9,9,14,14,9,9,1,54,10,10,96,10,13,13,9,9,11,35,254,210,14,9,9,9,9,14,1,46,35,10,1, +9,9,13,13,10,96,0,0,0,4,0,7,255,224,1,224,1,160,0,34,0,62,0,71,0,102,0,0,55,34,15,1, +17,52,39,38,35,34,7,6,21,17,39,38,39,34,7,6,7,6,31,1,22,51,50,63,1,54,39,52,39,38,35,55, +7,6,21,20,23,22,51,50,55,54,55,54,55,54,39,38,39,38,39,6,7,6,7,20,23,22,23,55,22,23,6,7, +38,39,54,55,19,53,38,39,38,15,1,6,7,6,23,22,51,21,6,7,6,21,20,23,22,59,1,50,55,54,53,52, +39,38,39,216,14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,1,9,88,9,14,14,10,87,9,1,10,8, +12,142,8,8,9,8,11,12,8,16,13,34,14,14,1,1,25,25,37,37,25,25,1,15,15,24,34,22,2,2,22,22, +2,2,22,24,1,14,16,16,32,12,3,4,6,9,19,14,9,9,9,9,14,64,14,9,9,9,9,14,128,11,35,1, +46,14,9,9,9,9,14,254,210,35,10,1,9,9,13,13,10,96,10,10,96,10,13,13,9,9,119,8,9,11,11,9, +7,8,17,12,35,19,20,25,37,25,25,1,1,25,25,37,28,21,22,10,105,2,22,22,2,2,22,22,2,254,192,96, +17,10,9,8,17,6,12,12,13,17,47,1,9,9,13,14,9,9,9,9,14,13,9,9,1,0,0,0,0,4,0,8, +255,224,1,224,1,160,0,35,0,63,0,72,0,103,0,0,19,54,55,49,52,47,1,38,35,34,15,1,6,21,22,23, +22,51,54,63,1,17,20,23,22,51,50,55,54,53,17,23,22,51,50,55,23,7,6,21,20,23,22,51,50,55,54,55, +54,55,54,39,38,39,38,39,6,7,6,7,20,23,22,23,55,22,23,6,7,38,39,54,55,19,53,38,39,38,15,1, +6,7,6,23,22,51,21,6,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,39,238,9,1,8,88,10,14,14, +10,87,9,1,9,11,12,13,10,32,9,9,13,13,9,10,33,10,14,12,10,120,8,8,9,8,11,12,8,16,13,34, +14,14,1,1,25,25,37,37,25,25,1,15,15,24,34,22,2,2,22,22,2,2,22,24,1,14,16,16,32,12,3,4, +6,9,19,14,9,9,9,9,14,64,14,9,9,9,9,14,1,9,9,13,13,10,96,10,10,96,10,13,13,9,9,1, +10,35,254,210,14,9,9,9,9,14,1,46,35,11,9,18,8,9,11,11,9,7,8,17,12,35,19,20,25,37,25,25, +1,1,25,25,37,28,21,22,10,105,2,22,22,2,2,22,22,2,254,192,96,17,10,9,8,17,6,12,12,13,17,47, +1,9,9,13,14,9,9,9,9,14,13,9,9,1,0,0,0,6,0,0,255,192,2,64,1,192,0,25,0,51,0,55, +0,79,0,87,0,95,0,0,37,38,35,49,34,15,1,39,38,35,34,7,6,21,20,31,1,22,51,50,63,1,54,53, +52,39,37,39,38,39,6,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,50,55,54,55,54,47,1,55,23,35, +23,51,54,55,54,55,38,39,54,53,38,39,38,39,35,34,7,6,29,1,20,23,22,51,55,51,22,23,6,7,35,53, +21,51,22,23,6,7,35,53,2,55,10,13,13,10,169,73,10,13,13,10,9,9,96,10,13,13,10,192,9,9,254,167, +80,9,21,21,9,80,4,4,5,13,12,12,12,6,5,90,5,10,20,6,6,13,5,4,4,129,19,19,38,195,80,34, +23,22,1,1,25,10,1,22,23,33,65,14,9,9,9,9,14,32,32,15,1,1,15,32,48,15,1,1,15,48,183,9, +9,170,74,9,9,10,13,13,10,96,9,9,192,10,13,13,10,53,192,19,1,1,19,192,12,12,12,6,4,4,5,13, +12,12,19,1,2,6,12,12,12,52,45,45,96,1,22,23,33,36,23,18,20,34,23,22,1,9,9,13,192,14,10,9, +192,1,15,15,1,32,96,1,15,15,1,32,0,3,0,0,0,65,2,128,1,96,0,35,0,53,0,71,0,0,1,34, +7,49,6,7,6,23,22,23,35,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,33,54,55,54,55,38,39, +38,39,5,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,5,38,39,49,38,39,54,55,54,55,22,23, +22,23,6,7,6,7,1,239,40,34,34,19,19,2,2,22,111,27,3,4,33,35,47,48,45,44,20,19,11,13,38,38, +51,1,96,61,41,40,2,2,40,41,62,254,81,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,1,175,34, +22,23,1,1,23,22,34,34,23,22,1,1,22,22,35,1,96,20,21,35,36,39,39,34,42,49,48,38,37,8,8,23, +25,44,44,49,49,29,29,1,1,40,41,61,61,41,40,2,144,34,23,22,1,1,22,23,34,34,22,22,1,1,22,22, +34,80,1,22,23,33,33,23,23,1,1,22,23,34,34,22,22,1,0,0,0,2,0,0,0,0,2,127,1,160,0,26, +0,67,0,0,37,38,39,49,38,39,49,38,39,6,7,6,35,34,39,38,39,6,7,6,7,6,7,22,23,54,63,1, +38,7,48,49,6,7,6,7,6,7,38,39,38,39,38,39,48,49,38,7,6,23,20,23,22,23,22,23,22,23,54,55, +54,55,54,55,54,39,54,39,1,233,4,12,12,20,20,29,21,16,16,19,19,16,16,21,29,20,20,12,12,5,57,112, +113,57,144,10,10,1,34,33,65,65,95,95,65,65,33,34,1,10,10,9,3,16,16,37,37,61,61,90,90,61,62,36, +37,16,17,1,6,10,183,32,54,54,45,45,3,1,13,12,12,13,1,3,45,45,54,54,32,21,2,2,21,37,6,7, +3,22,21,22,21,2,2,21,22,21,22,3,7,6,7,11,3,30,30,39,39,30,29,2,2,29,30,39,39,30,30,2, +12,7,0,0,0,2,0,0,255,255,2,128,1,160,0,16,0,49,0,0,37,38,35,6,7,6,7,6,23,22,51,33, +34,39,38,47,1,55,39,38,39,38,15,1,6,7,6,15,1,50,55,54,51,50,31,1,22,23,22,51,54,55,54,55, +52,39,38,39,38,39,1,5,44,53,59,44,43,17,5,14,14,22,2,34,75,51,51,56,98,235,28,5,22,22,27,191, +21,13,14,2,7,2,1,9,8,64,54,98,51,45,46,70,20,14,13,1,12,12,32,32,56,188,35,1,42,42,71,26, +21,21,27,27,50,85,18,157,26,16,15,5,41,5,15,15,21,65,1,1,43,84,46,26,25,1,13,14,20,14,29,28, +25,26,5,0,0,3,0,0,255,192,1,128,1,192,0,13,0,22,0,31,0,0,55,22,23,49,22,23,51,54,55,54, +55,53,33,21,19,35,6,7,6,7,21,51,53,51,35,21,51,53,38,39,38,39,0,2,45,45,68,64,68,45,45,2, +254,128,176,16,68,45,45,2,176,48,16,176,2,45,45,68,96,68,45,45,2,2,45,45,68,128,128,1,96,2,45,45, +68,32,192,192,32,68,45,45,2,0,0,0,0,5,0,0,255,194,1,255,1,191,0,27,0,40,0,53,0,66,0,84, +0,0,1,35,37,54,39,38,7,5,6,7,6,7,49,21,22,23,22,51,33,54,55,54,61,1,54,39,38,39,5,54, +59,1,22,29,1,6,43,1,38,61,1,23,6,43,1,38,61,1,54,59,1,22,29,1,55,6,43,1,38,61,1,54, +59,1,22,29,1,23,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,191,228,1,20,19,3,7,23, +254,83,22,14,14,2,1,18,18,26,1,127,27,18,18,1,18,17,28,254,145,1,6,111,7,1,6,111,7,128,1,6, +111,7,1,6,111,7,16,1,6,145,7,1,6,143,7,145,34,22,23,1,1,23,22,34,34,22,22,1,1,21,22,35, +1,64,81,8,22,20,4,126,7,17,18,23,255,27,18,18,1,17,18,27,255,27,18,18,1,120,7,1,6,15,7,1, +6,15,143,7,1,6,15,7,1,6,15,64,7,1,6,16,7,1,6,16,72,1,22,23,33,33,23,23,1,1,22,23, +34,34,22,22,1,0,0,0,0,4,0,0,255,192,2,0,1,192,0,17,0,35,0,62,0,80,0,0,1,6,7,49, +6,7,22,23,22,23,54,55,54,55,38,39,38,39,21,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35, +17,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,17,38,39,49,38, +39,54,55,54,55,22,23,22,23,6,7,6,7,1,0,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,14, +9,9,9,9,14,14,9,9,9,9,14,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,1,32,1,27,27,41,41,27,27,1,1,27,27, +41,41,27,27,1,128,9,9,14,14,9,9,9,9,14,14,9,9,1,32,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,72,57,58,34,34,1,254,128,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,0,0, +0,4,0,0,255,192,1,128,1,192,0,51,0,64,0,77,0,90,0,0,1,35,53,38,39,35,6,7,21,35,53,38, +39,35,6,7,21,35,53,38,39,6,7,21,35,34,7,6,29,1,20,31,1,21,22,23,22,23,51,54,55,54,55,53, +55,54,61,1,52,39,38,35,7,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22, +23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,1,96,32,1,15,32,15,1,32,1,15,32,15,1,48,2,22, +22,2,32,14,9,9,9,23,1,13,14,20,224,20,14,13,1,23,9,9,9,14,64,1,7,176,7,1,1,7,176,7, +1,1,7,176,7,1,1,7,176,7,1,1,7,176,7,1,1,7,176,7,1,1,96,16,15,1,1,15,16,16,15,1, +1,15,16,73,21,2,2,21,73,9,9,14,179,13,9,23,112,20,14,13,1,1,13,14,20,112,23,9,13,179,14,9, +9,216,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1, +7,16,0,0,0,4,0,0,255,192,2,128,1,160,0,35,0,55,0,77,0,95,0,0,19,54,55,49,54,55,33,22, +23,22,23,21,51,50,23,22,21,20,7,6,35,33,6,7,6,7,38,39,38,39,35,38,39,38,39,53,5,51,53,35, +38,39,54,55,51,53,52,39,38,43,1,34,7,6,29,1,39,34,7,49,6,29,1,20,23,22,59,1,50,55,54,61, +1,52,39,38,43,1,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,0,1,22,23,34,1,80,68, +45,45,2,32,14,9,9,9,9,14,254,192,1,27,27,41,41,27,27,1,16,34,23,22,1,1,64,128,32,15,1,1, +15,32,9,9,14,64,14,9,9,224,14,9,9,9,9,14,128,14,9,9,9,9,14,128,96,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,1,80,34,23,22,1,2,45,45,68,160,9,9,14,14,9,9,41,27,27,1,1,27, +27,41,1,22,23,34,224,240,96,1,15,15,1,64,14,9,9,9,9,14,192,224,9,9,14,64,14,9,9,9,9,14, +64,14,9,9,254,176,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,0,0,0,22,1,14,0,1, +0,0,0,0,0,0,0,26,0,108,0,1,0,0,0,0,0,1,0,25,0,134,0,1,0,0,0,0,0,2,0,5, +0,53,0,1,0,0,0,0,0,3,0,31,0,22,0,1,0,0,0,0,0,4,0,25,0,134,0,1,0,0,0,0, +0,5,0,50,0,58,0,1,0,0,0,0,0,6,0,22,0,0,0,1,0,0,0,0,0,10,0,44,0,159,0,1, +0,0,0,0,0,11,0,23,0,222,0,1,0,0,0,0,0,16,0,19,0,203,0,1,0,0,0,0,0,17,0,5, +0,53,0,3,0,1,4,9,0,0,0,52,1,205,0,3,0,1,4,9,0,1,0,50,2,1,0,3,0,1,4,9, +0,2,0,10,1,95,0,3,0,1,4,9,0,3,0,62,1,33,0,3,0,1,4,9,0,4,0,50,2,1,0,3, +0,1,4,9,0,5,0,100,1,105,0,3,0,1,4,9,0,6,0,44,0,245,0,3,0,1,4,9,0,10,0,88, +2,51,0,3,0,1,4,9,0,11,0,46,2,177,0,3,0,1,4,9,0,16,0,38,2,139,0,3,0,1,4,9, +0,17,0,10,1,95,70,111,110,116,65,119,101,115,111,109,101,54,70,114,101,101,45,83,111,108,105,100,70,111,110,116, +32,65,119,101,115,111,109,101,32,54,32,70,114,101,101,32,83,111,108,105,100,45,54,46,49,46,50,83,111,108,105,100, +86,101,114,115,105,111,110,32,55,54,57,46,48,49,57,53,51,49,50,53,32,40,70,111,110,116,32,65,119,101,115,111, +109,101,32,118,101,114,115,105,111,110,58,32,54,46,49,46,50,41,67,111,112,121,114,105,103,104,116,32,40,99,41,32, +70,111,110,116,32,65,119,101,115,111,109,101,70,111,110,116,32,65,119,101,115,111,109,101,32,54,32,70,114,101,101,32, +83,111,108,105,100,84,104,101,32,119,101,98,39,115,32,109,111,115,116,32,112,111,112,117,108,97,114,32,105,99,111,110, +32,115,101,116,32,97,110,100,32,116,111,111,108,107,105,116,46,70,111,110,116,32,65,119,101,115,111,109,101,32,54,32, +70,114,101,101,104,116,116,112,115,58,47,47,102,111,110,116,97,119,101,115,111,109,101,46,99,111,109,0,70,0,111,0, +110,0,116,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0,54,0,70,0,114,0,101,0,101,0,45,0,83,0, +111,0,108,0,105,0,100,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0, +32,0,54,0,32,0,70,0,114,0,101,0,101,0,32,0,83,0,111,0,108,0,105,0,100,0,45,0,54,0,46,0, +49,0,46,0,50,0,83,0,111,0,108,0,105,0,100,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0, +55,0,54,0,57,0,46,0,48,0,49,0,57,0,53,0,51,0,49,0,50,0,53,0,32,0,40,0,70,0,111,0, +110,0,116,0,32,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0,32,0,118,0,101,0,114,0,115,0,105,0, +111,0,110,0,58,0,32,0,54,0,46,0,49,0,46,0,50,0,41,0,67,0,111,0,112,0,121,0,114,0,105,0, +103,0,104,0,116,0,32,0,40,0,99,0,41,0,32,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0,101,0, +115,0,111,0,109,0,101,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0, +32,0,54,0,32,0,70,0,114,0,101,0,101,0,32,0,83,0,111,0,108,0,105,0,100,0,84,0,104,0,101,0, +32,0,119,0,101,0,98,0,39,0,115,0,32,0,109,0,111,0,115,0,116,0,32,0,112,0,111,0,112,0,117,0, +108,0,97,0,114,0,32,0,105,0,99,0,111,0,110,0,32,0,115,0,101,0,116,0,32,0,97,0,110,0,100,0, +32,0,116,0,111,0,111,0,108,0,107,0,105,0,116,0,46,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0, +101,0,115,0,111,0,109,0,101,0,32,0,54,0,32,0,70,0,114,0,101,0,101,0,104,0,116,0,116,0,112,0, +115,0,58,0,47,0,47,0,102,0,111,0,110,0,116,0,97,0,119,0,101,0,115,0,111,0,109,0,101,0,46,0, +99,0,111,0,109,0,0,0,0,2,0,0,0,0,0,0,255,219,0,25,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,110,0,0,1,2,1,3,1,4,0,8,0,13,0,14,1,5,1,6,1,7,1,8, +1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,0,34,0,35,1,18,1,19,1,20,1,21,1,22, +1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38, +1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54, +1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70, +1,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86, +1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102, +1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118, +1,119,1,120,1,121,1,122,1,123,1,124,1,125,1,126,1,127,1,128,1,129,1,130,1,131,1,132,1,133,1,134, +1,135,1,136,1,137,1,138,1,139,1,140,1,141,1,142,1,143,1,144,1,145,1,146,1,147,1,148,1,149,1,150, +1,151,1,152,1,153,1,154,1,155,1,156,1,157,1,158,1,159,1,160,1,161,1,162,1,163,1,164,1,165,1,166, +1,167,1,168,1,169,1,170,1,171,1,172,1,173,1,174,1,175,1,176,1,177,1,178,1,179,1,180,1,181,1,182, +1,183,1,184,1,185,1,186,1,187,1,188,1,189,1,190,1,191,1,192,1,193,1,194,1,195,1,196,1,197,1,198, +1,199,1,200,1,201,1,202,1,203,1,204,1,205,1,206,1,207,1,208,1,209,1,210,1,211,1,212,1,213,1,214, +1,215,1,216,1,217,1,218,1,219,1,220,1,221,1,222,1,223,1,224,1,225,1,226,1,227,1,228,1,229,1,230, +1,231,1,232,1,233,1,234,1,235,1,236,1,237,1,238,1,239,1,240,1,241,1,242,1,243,1,244,1,245,1,246, +1,247,1,248,1,249,1,250,1,251,1,252,1,253,1,254,1,255,2,0,2,1,2,2,2,3,2,4,2,5,2,6, +2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22, +2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38, +2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54, +2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70, +2,71,2,72,2,73,2,74,2,75,2,76,2,77,2,78,2,79,2,80,2,81,2,82,2,83,2,84,2,85,2,86, +2,87,2,88,2,89,2,90,2,91,2,92,2,93,2,94,2,95,2,96,2,97,2,98,2,99,2,100,2,101,2,102, +2,103,2,104,2,105,2,106,2,107,2,108,2,109,2,110,2,111,2,112,2,113,2,114,2,115,2,116,2,117,2,118, +2,119,2,120,2,121,2,122,2,123,2,124,2,125,2,126,2,127,2,128,2,129,2,130,2,131,2,132,2,133,2,134, +2,135,2,136,2,137,2,138,2,139,2,140,2,141,2,142,2,143,2,144,2,145,2,146,2,147,2,148,2,149,2,150, +2,151,2,152,2,153,2,154,2,155,2,156,2,157,2,158,2,159,2,160,2,161,2,162,2,163,2,164,2,165,2,166, +2,167,2,168,2,169,2,170,2,171,2,172,2,173,2,174,2,175,2,176,2,177,2,178,2,179,2,180,2,181,2,182, +2,183,2,184,2,185,2,186,2,187,2,188,2,189,2,190,2,191,2,192,2,193,2,194,2,195,2,196,2,197,2,198, +2,199,2,200,2,201,2,202,2,203,2,204,2,205,2,206,2,207,2,208,2,209,2,210,2,211,2,212,2,213,2,214, +2,215,2,216,2,217,2,218,2,219,2,220,2,221,2,222,2,223,2,224,2,225,2,226,2,227,2,228,2,229,2,230, +2,231,2,232,2,233,2,234,2,235,2,236,2,237,2,238,2,239,2,240,2,241,2,242,2,243,2,244,2,245,2,246, +2,247,2,248,2,249,2,250,2,251,2,252,2,253,2,254,2,255,3,0,3,1,3,2,3,3,3,4,3,5,3,6, +3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,3,22, +3,23,3,24,3,25,3,26,3,27,3,28,3,29,3,30,3,31,3,32,3,33,3,34,3,35,3,36,3,37,3,38, +3,39,3,40,3,41,3,42,3,43,3,44,3,45,3,46,3,47,3,48,3,49,3,50,3,51,3,52,3,53,3,54, +3,55,3,56,3,57,3,58,3,59,3,60,3,61,3,62,3,63,3,64,3,65,3,66,3,67,3,68,3,69,3,70, +3,71,3,72,3,73,3,74,3,75,3,76,3,77,3,78,3,79,3,80,3,81,3,82,3,83,3,84,3,85,3,86, +3,87,3,88,3,89,3,90,3,91,3,92,3,93,3,94,3,95,3,96,3,97,3,98,3,99,3,100,3,101,3,102, +3,103,3,104,3,105,3,106,3,107,3,108,3,109,3,110,3,111,3,112,3,113,3,114,3,115,3,116,3,117,3,118, +3,119,3,120,3,121,3,122,3,123,3,124,3,125,3,126,3,127,3,128,3,129,3,130,3,131,3,132,3,133,3,134, +3,135,3,136,3,137,3,138,3,139,3,140,3,141,3,142,3,143,3,144,3,145,3,146,3,147,3,148,3,149,3,150, +3,151,3,152,3,153,3,154,3,155,3,156,3,157,3,158,3,159,3,160,3,161,3,162,3,163,3,164,3,165,3,166, +3,167,3,168,3,169,3,170,3,171,3,172,3,173,3,174,3,175,3,176,3,177,3,178,3,179,3,180,3,181,3,182, +3,183,3,184,3,185,3,186,3,187,3,188,3,189,3,190,3,191,3,192,3,193,3,194,3,195,3,196,3,197,3,198, +3,199,3,200,3,201,3,202,3,203,3,204,3,205,3,206,3,207,3,208,3,209,3,210,3,211,3,212,3,213,3,214, +3,215,3,216,3,217,3,218,3,219,3,220,3,221,3,222,3,223,3,224,3,225,3,226,3,227,3,228,3,229,3,230, +3,231,3,232,3,233,3,234,3,235,3,236,3,237,3,238,3,239,3,240,3,241,3,242,3,243,3,244,3,245,3,246, +3,247,3,248,3,249,3,250,3,251,3,252,3,253,3,254,3,255,4,0,4,1,4,2,4,3,4,4,4,5,4,6, +4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,4,18,4,19,4,20,4,21,4,22, +4,23,4,24,4,25,4,26,4,27,4,28,4,29,4,30,4,31,4,32,4,33,4,34,4,35,4,36,4,37,4,38, +4,39,4,40,4,41,4,42,4,43,4,44,4,45,4,46,4,47,4,48,4,49,4,50,4,51,4,52,4,53,4,54, +4,55,4,56,4,57,4,58,4,59,4,60,4,61,4,62,4,63,4,64,4,65,4,66,4,67,4,68,4,69,4,70, +4,71,4,72,4,73,4,74,4,75,4,76,4,77,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86, +4,87,4,88,4,89,4,90,4,91,4,92,4,93,4,94,4,95,4,96,4,97,4,98,4,99,4,100,4,101,4,102, +4,103,4,104,4,105,4,106,4,107,4,108,4,109,4,110,4,111,4,112,4,113,4,114,4,115,4,116,4,117,4,118, +4,119,4,120,4,121,4,122,4,123,4,124,4,125,4,126,4,127,4,128,4,129,4,130,4,131,4,132,4,133,4,134, +4,135,4,136,4,137,4,138,4,139,4,140,4,141,4,142,4,143,4,144,4,145,4,146,4,147,4,148,4,149,4,150, +4,151,4,152,4,153,4,154,4,155,4,156,4,157,4,158,4,159,4,160,4,161,4,162,4,163,4,164,4,165,4,166, +4,167,4,168,4,169,4,170,4,171,4,172,4,173,4,174,4,175,4,176,4,177,4,178,4,179,4,180,4,181,4,182, +4,183,4,184,4,185,4,186,4,187,4,188,4,189,4,190,4,191,4,192,4,193,4,194,4,195,4,196,4,197,4,198, +4,199,4,200,4,201,4,202,4,203,4,204,4,205,4,206,4,207,4,208,4,209,4,210,4,211,4,212,4,213,4,214, +4,215,4,216,4,217,4,218,4,219,4,220,4,221,4,222,4,223,4,224,4,225,4,226,4,227,4,228,4,229,4,230, +4,231,4,232,4,233,4,234,4,235,4,236,4,237,4,238,4,239,4,240,4,241,4,242,4,243,4,244,4,245,4,246, +4,247,4,248,4,249,4,250,4,251,4,252,4,253,4,254,4,255,5,0,5,1,5,2,5,3,5,4,5,5,5,6, +5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,5,22, +5,23,5,24,5,25,5,26,5,27,5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38, +5,39,5,40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,5,53,5,54, +5,55,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70, +5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,82,5,83,5,84,5,85,5,86, +5,87,5,88,5,89,5,90,5,91,5,92,5,93,5,94,5,95,5,96,5,97,5,98,5,99,5,100,5,101,5,102, +5,103,5,104,5,105,5,106,5,107,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118, +5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134, +5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150, +5,151,5,152,5,153,5,154,5,155,5,156,5,157,5,158,5,159,5,160,5,161,5,162,5,163,5,164,5,165,5,166, +5,167,5,168,5,169,5,170,5,171,5,172,5,173,5,174,5,175,5,176,5,177,5,178,5,179,5,180,5,181,5,182, +5,183,5,184,5,185,5,186,5,187,5,188,5,189,5,190,5,191,5,192,5,193,5,194,5,195,5,196,5,197,5,198, +5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214, +5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,230, +5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246, +5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,5,255,6,0,6,1,6,2,6,3,6,4,6,5,6,6, +6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,6,18,6,19,6,20,6,21,6,22, +6,23,6,24,6,25,6,26,6,27,6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38, +6,39,6,40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,6,53,6,54, +6,55,6,56,6,57,6,58,6,59,6,60,6,61,6,62,6,63,6,64,6,65,6,66,6,67,6,68,6,69,6,70, +6,71,6,72,6,73,6,74,6,75,6,76,6,77,6,78,6,79,6,80,6,81,6,82,6,83,6,84,6,85,6,86, +6,87,6,88,6,89,6,90,6,91,6,92,6,93,6,94,6,95,6,96,6,97,6,98,6,99,6,100,6,101,6,102, +6,103,6,104,6,105,11,101,120,99,108,97,109,97,116,105,111,110,7,104,97,115,104,116,97,103,11,100,111,108,108,97, +114,45,115,105,103,110,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,9,108,101,115,115,45, +116,104,97,110,6,101,113,117,97,108,115,12,103,114,101,97,116,101,114,45,116,104,97,110,1,97,1,98,1,99,1,100, +1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116, +1,117,1,118,1,119,1,120,1,121,1,122,6,102,97,117,99,101,116,11,102,97,117,99,101,116,45,100,114,105,112,20, +104,111,117,115,101,45,99,104,105,109,110,101,121,45,119,105,110,100,111,119,12,104,111,117,115,101,45,115,105,103,110,97, +108,22,116,101,109,112,101,114,97,116,117,114,101,45,97,114,114,111,119,45,100,111,119,110,20,116,101,109,112,101,114,97, +116,117,114,101,45,97,114,114,111,119,45,117,112,7,116,114,97,105,108,101,114,8,98,97,99,116,101,114,105,97,9,98, +97,99,116,101,114,105,117,109,10,98,111,120,45,116,105,115,115,117,101,20,104,97,110,100,45,104,111,108,100,105,110,103, +45,109,101,100,105,99,97,108,13,104,97,110,100,45,115,112,97,114,107,108,101,115,13,104,97,110,100,115,45,98,117,98, +98,108,101,115,22,104,97,110,100,115,104,97,107,101,45,115,105,109,112,108,101,45,115,108,97,115,104,15,104,97,110,100, +115,104,97,107,101,45,115,108,97,115,104,15,104,101,97,100,45,115,105,100,101,45,99,111,117,103,104,21,104,101,97,100, +45,115,105,100,101,45,99,111,117,103,104,45,115,108,97,115,104,14,104,101,97,100,45,115,105,100,101,45,109,97,115,107, +15,104,101,97,100,45,115,105,100,101,45,118,105,114,117,115,18,104,111,117,115,101,45,99,104,105,109,110,101,121,45,117, +115,101,114,12,104,111,117,115,101,45,108,97,112,116,111,112,11,108,117,110,103,115,45,118,105,114,117,115,13,112,101,111, +112,108,101,45,97,114,114,111,119,115,11,112,108,97,110,101,45,115,108,97,115,104,12,112,117,109,112,45,109,101,100,105, +99,97,108,9,112,117,109,112,45,115,111,97,112,12,115,104,105,101,108,100,45,118,105,114,117,115,4,115,105,110,107,4, +115,111,97,112,12,115,116,111,112,119,97,116,99,104,45,50,48,10,115,104,111,112,45,115,108,97,115,104,11,115,116,111, +114,101,45,115,108,97,115,104,18,116,111,105,108,101,116,45,112,97,112,101,114,45,115,108,97,115,104,11,117,115,101,114, +115,45,115,108,97,115,104,5,118,105,114,117,115,11,118,105,114,117,115,45,115,108,97,115,104,7,118,105,114,117,115,101, +115,4,118,101,115,116,12,118,101,115,116,45,112,97,116,99,104,101,115,16,97,114,114,111,119,45,116,114,101,110,100,45, +100,111,119,110,14,97,114,114,111,119,45,116,114,101,110,100,45,117,112,21,97,114,114,111,119,45,117,112,45,102,114,111, +109,45,98,114,97,99,107,101,116,12,97,117,115,116,114,97,108,45,115,105,103,110,9,98,97,104,116,45,115,105,103,110, +12,98,105,116,99,111,105,110,45,115,105,103,110,14,98,111,108,116,45,108,105,103,104,116,110,105,110,103,13,98,111,111, +107,45,98,111,111,107,109,97,114,107,13,99,97,109,101,114,97,45,114,111,116,97,116,101,9,99,101,100,105,45,115,105, +103,110,12,99,104,97,114,116,45,99,111,108,117,109,110,11,99,104,97,114,116,45,103,97,110,116,116,12,99,108,97,112, +112,101,114,98,111,97,114,100,6,99,108,111,118,101,114,12,99,111,100,101,45,99,111,109,112,97,114,101,9,99,111,100, +101,45,102,111,114,107,17,99,111,100,101,45,112,117,108,108,45,114,101,113,117,101,115,116,10,99,111,108,111,110,45,115, +105,103,110,13,99,114,117,122,101,105,114,111,45,115,105,103,110,7,100,105,115,112,108,97,121,9,100,111,110,103,45,115, +105,103,110,8,101,108,101,118,97,116,111,114,19,102,105,108,116,101,114,45,99,105,114,99,108,101,45,120,109,97,114,107, +11,102,108,111,114,105,110,45,115,105,103,110,13,102,111,108,100,101,114,45,99,108,111,115,101,100,10,102,114,97,110,99, +45,115,105,103,110,12,103,117,97,114,97,110,105,45,115,105,103,110,3,103,117,110,14,104,97,110,100,115,45,99,108,97, +112,112,105,110,103,10,104,111,117,115,101,45,117,115,101,114,17,105,110,100,105,97,110,45,114,117,112,101,101,45,115,105, +103,110,8,107,105,112,45,115,105,103,110,9,108,97,114,105,45,115,105,103,110,13,108,105,116,101,99,111,105,110,45,115, +105,103,110,10,109,97,110,97,116,45,115,105,103,110,9,109,97,115,107,45,102,97,99,101,9,109,105,108,108,45,115,105, +103,110,11,109,111,110,101,121,45,98,105,108,108,115,10,110,97,105,114,97,45,115,105,103,110,6,110,111,116,100,101,102, +8,112,97,110,111,114,97,109,97,11,112,101,115,101,116,97,45,115,105,103,110,9,112,101,115,111,45,115,105,103,110,8, +112,108,97,110,101,45,117,112,11,114,117,112,105,97,104,45,115,105,103,110,6,115,116,97,105,114,115,8,116,105,109,101, +108,105,110,101,11,116,114,117,99,107,45,102,114,111,110,116,17,116,117,114,107,105,115,104,45,108,105,114,97,45,115,105, +103,110,5,118,97,117,108,116,19,119,97,110,100,45,109,97,103,105,99,45,115,112,97,114,107,108,101,115,9,119,104,101, +97,116,45,97,119,110,15,119,104,101,101,108,99,104,97,105,114,45,109,111,118,101,9,98,111,119,108,45,114,105,99,101, +15,112,101,114,115,111,110,45,112,114,101,103,110,97,110,116,13,104,111,117,115,101,45,99,104,105,109,110,101,121,11,104, +111,117,115,101,45,99,114,97,99,107,13,104,111,117,115,101,45,109,101,100,105,99,97,108,9,99,101,110,116,45,115,105, +103,110,10,112,108,117,115,45,109,105,110,117,115,8,115,97,105,108,98,111,97,116,7,115,101,99,116,105,111,110,6,115, +104,114,105,109,112,19,98,114,97,122,105,108,105,97,110,45,114,101,97,108,45,115,105,103,110,12,99,104,97,114,116,45, +115,105,109,112,108,101,12,100,105,97,103,114,97,109,45,110,101,120,116,19,100,105,97,103,114,97,109,45,112,114,101,100, +101,99,101,115,115,111,114,17,100,105,97,103,114,97,109,45,115,117,99,99,101,115,115,111,114,13,101,97,114,116,104,45, +111,99,101,97,110,105,97,9,98,117,103,45,115,108,97,115,104,16,102,105,108,101,45,99,105,114,99,108,101,45,112,108, +117,115,9,115,104,111,112,45,108,111,99,107,11,118,105,114,117,115,45,99,111,118,105,100,17,118,105,114,117,115,45,99, +111,118,105,100,45,115,108,97,115,104,19,97,110,99,104,111,114,45,99,105,114,99,108,101,45,99,104,101,99,107,25,97, +110,99,104,111,114,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,19,97,110,99,104,111,114,45, +99,105,114,99,108,101,45,120,109,97,114,107,11,97,110,99,104,111,114,45,108,111,99,107,25,97,114,114,111,119,45,100, +111,119,110,45,117,112,45,97,99,114,111,115,115,45,108,105,110,101,18,97,114,114,111,119,45,100,111,119,110,45,117,112, +45,108,111,99,107,19,97,114,114,111,119,45,114,105,103,104,116,45,116,111,45,99,105,116,121,26,97,114,114,111,119,45, +117,112,45,102,114,111,109,45,103,114,111,117,110,100,45,119,97,116,101,114,24,97,114,114,111,119,45,117,112,45,102,114, +111,109,45,119,97,116,101,114,45,112,117,109,112,19,97,114,114,111,119,45,117,112,45,114,105,103,104,116,45,100,111,116, +115,19,97,114,114,111,119,115,45,100,111,119,110,45,116,111,45,108,105,110,101,21,97,114,114,111,119,115,45,100,111,119, +110,45,116,111,45,112,101,111,112,108,101,25,97,114,114,111,119,115,45,108,101,102,116,45,114,105,103,104,116,45,116,111, +45,108,105,110,101,11,97,114,114,111,119,115,45,115,112,105,110,24,97,114,114,111,119,115,45,115,112,108,105,116,45,117, +112,45,97,110,100,45,108,101,102,116,16,97,114,114,111,119,115,45,116,111,45,99,105,114,99,108,101,13,97,114,114,111, +119,115,45,116,111,45,100,111,116,13,97,114,114,111,119,115,45,116,111,45,101,121,101,17,97,114,114,111,119,115,45,116, +117,114,110,45,114,105,103,104,116,19,97,114,114,111,119,115,45,116,117,114,110,45,116,111,45,100,111,116,115,17,97,114, +114,111,119,115,45,117,112,45,116,111,45,108,105,110,101,9,98,111,114,101,45,104,111,108,101,14,98,111,116,116,108,101, +45,100,114,111,112,108,101,116,12,98,111,116,116,108,101,45,119,97,116,101,114,9,98,111,119,108,45,102,111,111,100,13, +98,111,120,101,115,45,112,97,99,107,105,110,103,6,98,114,105,100,103,101,19,98,114,105,100,103,101,45,99,105,114,99, +108,101,45,99,104,101,99,107,25,98,114,105,100,103,101,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105, +111,110,19,98,114,105,100,103,101,45,99,105,114,99,108,101,45,120,109,97,114,107,11,98,114,105,100,103,101,45,108,111, +99,107,12,98,114,105,100,103,101,45,119,97,116,101,114,6,98,117,99,107,101,116,4,98,117,103,115,27,98,117,105,108, +100,105,110,103,45,99,105,114,99,108,101,45,97,114,114,111,119,45,114,105,103,104,116,21,98,117,105,108,100,105,110,103, +45,99,105,114,99,108,101,45,99,104,101,99,107,27,98,117,105,108,100,105,110,103,45,99,105,114,99,108,101,45,101,120, +99,108,97,109,97,116,105,111,110,21,98,117,105,108,100,105,110,103,45,99,105,114,99,108,101,45,120,109,97,114,107,13, +98,117,105,108,100,105,110,103,45,102,108,97,103,13,98,117,105,108,100,105,110,103,45,108,111,99,107,12,98,117,105,108, +100,105,110,103,45,110,103,111,15,98,117,105,108,100,105,110,103,45,115,104,105,101,108,100,11,98,117,105,108,100,105,110, +103,45,117,110,13,98,117,105,108,100,105,110,103,45,117,115,101,114,14,98,117,105,108,100,105,110,103,45,119,104,101,97, +116,5,98,117,114,115,116,6,99,97,114,45,111,110,10,99,97,114,45,116,117,110,110,101,108,11,99,104,105,108,100,45, +114,105,102,108,101,8,99,104,105,108,100,114,101,110,12,99,105,114,99,108,101,45,110,111,100,101,115,18,99,108,105,112, +98,111,97,114,100,45,113,117,101,115,116,105,111,110,19,99,108,111,117,100,45,115,104,111,119,101,114,115,45,119,97,116, +101,114,8,99,111,109,112,117,116,101,114,13,99,117,98,101,115,45,115,116,97,99,107,101,100,21,101,110,118,101,108,111, +112,101,45,99,105,114,99,108,101,45,99,104,101,99,107,9,101,120,112,108,111,115,105,111,110,5,102,101,114,114,121,23, +102,105,108,101,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,17,102,105,108,101,45,99,105,114, +99,108,101,45,109,105,110,117,115,20,102,105,108,101,45,99,105,114,99,108,101,45,113,117,101,115,116,105,111,110,11,102, +105,108,101,45,115,104,105,101,108,100,11,102,105,114,101,45,98,117,114,110,101,114,9,102,105,115,104,45,102,105,110,115, +10,102,108,97,115,107,45,118,105,97,108,11,103,108,97,115,115,45,119,97,116,101,114,19,103,108,97,115,115,45,119,97, +116,101,114,45,100,114,111,112,108,101,116,19,103,114,111,117,112,45,97,114,114,111,119,115,45,114,111,116,97,116,101,17, +104,97,110,100,45,104,111,108,100,105,110,103,45,104,97,110,100,9,104,97,110,100,99,117,102,102,115,11,104,97,110,100, +115,45,98,111,117,110,100,19,104,97,110,100,115,45,104,111,108,100,105,110,103,45,99,104,105,108,100,20,104,97,110,100, +115,45,104,111,108,100,105,110,103,45,99,105,114,99,108,101,17,104,101,97,114,116,45,99,105,114,99,108,101,45,98,111, +108,116,18,104,101,97,114,116,45,99,105,114,99,108,101,45,99,104,101,99,107,24,104,101,97,114,116,45,99,105,114,99, +108,101,45,101,120,99,108,97,109,97,116,105,111,110,18,104,101,97,114,116,45,99,105,114,99,108,101,45,109,105,110,117, +115,17,104,101,97,114,116,45,99,105,114,99,108,101,45,112,108,117,115,18,104,101,97,114,116,45,99,105,114,99,108,101, +45,120,109,97,114,107,17,104,101,108,105,99,111,112,116,101,114,45,115,121,109,98,111,108,9,104,101,108,109,101,116,45, +117,110,14,104,105,108,108,45,97,118,97,108,97,110,99,104,101,14,104,105,108,108,45,114,111,99,107,115,108,105,100,101, +18,104,111,117,115,101,45,99,105,114,99,108,101,45,99,104,101,99,107,24,104,111,117,115,101,45,99,105,114,99,108,101, +45,101,120,99,108,97,109,97,116,105,111,110,18,104,111,117,115,101,45,99,105,114,99,108,101,45,120,109,97,114,107,10, +104,111,117,115,101,45,102,105,114,101,10,104,111,117,115,101,45,102,108,97,103,17,104,111,117,115,101,45,102,108,111,111, +100,45,119,97,116,101,114,36,104,111,117,115,101,45,102,108,111,111,100,45,119,97,116,101,114,45,99,105,114,99,108,101, +45,97,114,114,111,119,45,114,105,103,104,116,10,104,111,117,115,101,45,108,111,99,107,26,104,111,117,115,101,45,109,101, +100,105,99,97,108,45,99,105,114,99,108,101,45,99,104,101,99,107,32,104,111,117,115,101,45,109,101,100,105,99,97,108, +45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,26,104,111,117,115,101,45,109,101,100,105,99,97, +108,45,99,105,114,99,108,101,45,120,109,97,114,107,18,104,111,117,115,101,45,109,101,100,105,99,97,108,45,102,108,97, +103,13,104,111,117,115,101,45,116,115,117,110,97,109,105,3,106,97,114,9,106,97,114,45,119,104,101,97,116,14,106,101, +116,45,102,105,103,104,116,101,114,45,117,112,13,106,117,103,45,100,101,116,101,114,103,101,110,116,11,107,105,116,99,104, +101,110,45,115,101,116,12,108,97,110,100,45,109,105,110,101,45,111,110,13,108,97,110,100,109,97,114,107,45,102,108,97, +103,11,108,97,112,116,111,112,45,102,105,108,101,13,108,105,110,101,115,45,108,101,97,110,105,110,103,17,108,111,99,97, +116,105,111,110,45,112,105,110,45,108,111,99,107,6,108,111,99,117,115,116,28,109,97,103,110,105,102,121,105,110,103,45, +103,108,97,115,115,45,97,114,114,111,119,45,114,105,103,104,116,22,109,97,103,110,105,102,121,105,110,103,45,103,108,97, +115,115,45,99,104,97,114,116,20,109,97,114,115,45,97,110,100,45,118,101,110,117,115,45,98,117,114,115,116,15,109,97, +115,107,45,118,101,110,116,105,108,97,116,111,114,15,109,97,116,116,114,101,115,115,45,112,105,108,108,111,119,12,109,111, +98,105,108,101,45,114,101,116,114,111,19,109,111,110,101,121,45,98,105,108,108,45,116,114,97,110,115,102,101,114,19,109, +111,110,101,121,45,98,105,108,108,45,116,114,101,110,100,45,117,112,16,109,111,110,101,121,45,98,105,108,108,45,119,104, +101,97,116,8,109,111,115,113,117,105,116,111,12,109,111,115,113,117,105,116,111,45,110,101,116,5,109,111,117,110,100,13, +109,111,117,110,116,97,105,110,45,99,105,116,121,12,109,111,117,110,116,97,105,110,45,115,117,110,8,111,105,108,45,119, +101,108,108,12,112,101,111,112,108,101,45,103,114,111,117,112,11,112,101,111,112,108,101,45,108,105,110,101,14,112,101,111, +112,108,101,45,112,117,108,108,105,110,103,14,112,101,111,112,108,101,45,114,111,98,98,101,114,121,11,112,101,111,112,108, +101,45,114,111,111,102,25,112,101,114,115,111,110,45,97,114,114,111,119,45,100,111,119,110,45,116,111,45,108,105,110,101, +25,112,101,114,115,111,110,45,97,114,114,111,119,45,117,112,45,102,114,111,109,45,108,105,110,101,20,112,101,114,115,111, +110,45,98,114,101,97,115,116,102,101,101,100,105,110,103,12,112,101,114,115,111,110,45,98,117,114,115,116,11,112,101,114, +115,111,110,45,99,97,110,101,17,112,101,114,115,111,110,45,99,104,97,108,107,98,111,97,114,100,19,112,101,114,115,111, +110,45,99,105,114,99,108,101,45,99,104,101,99,107,25,112,101,114,115,111,110,45,99,105,114,99,108,101,45,101,120,99, +108,97,109,97,116,105,111,110,19,112,101,114,115,111,110,45,99,105,114,99,108,101,45,109,105,110,117,115,18,112,101,114, +115,111,110,45,99,105,114,99,108,101,45,112,108,117,115,22,112,101,114,115,111,110,45,99,105,114,99,108,101,45,113,117, +101,115,116,105,111,110,19,112,101,114,115,111,110,45,99,105,114,99,108,101,45,120,109,97,114,107,18,112,101,114,115,111, +110,45,100,114,101,115,115,45,98,117,114,115,116,15,112,101,114,115,111,110,45,100,114,111,119,110,105,110,103,14,112,101, +114,115,111,110,45,102,97,108,108,105,110,103,20,112,101,114,115,111,110,45,102,97,108,108,105,110,103,45,98,117,114,115, +116,17,112,101,114,115,111,110,45,104,97,108,102,45,100,114,101,115,115,16,112,101,114,115,111,110,45,104,97,114,97,115, +115,105,110,103,24,112,101,114,115,111,110,45,109,105,108,105,116,97,114,121,45,112,111,105,110,116,105,110,103,21,112,101, +114,115,111,110,45,109,105,108,105,116,97,114,121,45,114,105,102,108,101,25,112,101,114,115,111,110,45,109,105,108,105,116, +97,114,121,45,116,111,45,112,101,114,115,111,110,11,112,101,114,115,111,110,45,114,97,121,115,12,112,101,114,115,111,110, +45,114,105,102,108,101,14,112,101,114,115,111,110,45,115,104,101,108,116,101,114,30,112,101,114,115,111,110,45,119,97,108, +107,105,110,103,45,97,114,114,111,119,45,108,111,111,112,45,108,101,102,116,26,112,101,114,115,111,110,45,119,97,108,107, +105,110,103,45,97,114,114,111,119,45,114,105,103,104,116,38,112,101,114,115,111,110,45,119,97,108,107,105,110,103,45,100, +97,115,104,101,100,45,108,105,110,101,45,97,114,114,111,119,45,114,105,103,104,116,22,112,101,114,115,111,110,45,119,97, +108,107,105,110,103,45,108,117,103,103,97,103,101,18,112,108,97,110,101,45,99,105,114,99,108,101,45,99,104,101,99,107, +24,112,108,97,110,101,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,18,112,108,97,110,101,45, +99,105,114,99,108,101,45,120,109,97,114,107,10,112,108,97,110,101,45,108,111,99,107,11,112,108,97,116,101,45,119,104, +101,97,116,16,112,108,117,103,45,99,105,114,99,108,101,45,98,111,108,116,17,112,108,117,103,45,99,105,114,99,108,101, +45,99,104,101,99,107,23,112,108,117,103,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,17,112, +108,117,103,45,99,105,114,99,108,101,45,109,105,110,117,115,16,112,108,117,103,45,99,105,114,99,108,101,45,112,108,117, +115,17,112,108,117,103,45,99,105,114,99,108,101,45,120,109,97,114,107,12,114,97,110,107,105,110,103,45,115,116,97,114, +12,114,111,97,100,45,98,97,114,114,105,101,114,11,114,111,97,100,45,98,114,105,100,103,101,17,114,111,97,100,45,99, +105,114,99,108,101,45,99,104,101,99,107,23,114,111,97,100,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116, +105,111,110,17,114,111,97,100,45,99,105,114,99,108,101,45,120,109,97,114,107,9,114,111,97,100,45,108,111,99,107,11, +114,111,97,100,45,115,112,105,107,101,115,3,114,117,103,10,115,97,99,107,45,120,109,97,114,107,19,115,99,104,111,111, +108,45,99,105,114,99,108,101,45,99,104,101,99,107,25,115,99,104,111,111,108,45,99,105,114,99,108,101,45,101,120,99, +108,97,109,97,116,105,111,110,19,115,99,104,111,111,108,45,99,105,114,99,108,101,45,120,109,97,114,107,11,115,99,104, +111,111,108,45,102,108,97,103,11,115,99,104,111,111,108,45,108,111,99,107,13,115,104,101,101,116,45,112,108,97,115,116, +105,99,10,115,104,105,101,108,100,45,99,97,116,10,115,104,105,101,108,100,45,100,111,103,12,115,104,105,101,108,100,45, +104,101,97,114,116,10,115,113,117,97,114,101,45,110,102,105,22,115,113,117,97,114,101,45,112,101,114,115,111,110,45,99, +111,110,102,105,110,101,100,12,115,113,117,97,114,101,45,118,105,114,117,115,11,115,116,97,102,102,45,115,110,97,107,101, +14,115,117,110,45,112,108,97,110,116,45,119,105,108,116,4,116,97,114,112,12,116,97,114,112,45,100,114,111,112,108,101, +116,4,116,101,110,116,23,116,101,110,116,45,97,114,114,111,119,45,100,111,119,110,45,116,111,45,108,105,110,101,21,116, +101,110,116,45,97,114,114,111,119,45,108,101,102,116,45,114,105,103,104,116,20,116,101,110,116,45,97,114,114,111,119,45, +116,117,114,110,45,108,101,102,116,16,116,101,110,116,45,97,114,114,111,119,115,45,100,111,119,110,5,116,101,110,116,115, +15,116,111,105,108,101,116,45,112,111,114,116,97,98,108,101,16,116,111,105,108,101,116,115,45,112,111,114,116,97,98,108, +101,10,116,111,119,101,114,45,99,101,108,108,17,116,111,119,101,114,45,111,98,115,101,114,118,97,116,105,111,110,9,116, +114,101,101,45,99,105,116,121,6,116,114,111,119,101,108,13,116,114,111,119,101,108,45,98,114,105,99,107,115,17,116,114, +117,99,107,45,97,114,114,111,119,45,114,105,103,104,116,13,116,114,117,99,107,45,100,114,111,112,108,101,116,11,116,114, +117,99,107,45,102,105,101,108,100,14,116,114,117,99,107,45,102,105,101,108,100,45,117,110,11,116,114,117,99,107,45,112, +108,97,110,101,19,117,115,101,114,115,45,98,101,116,119,101,101,110,45,108,105,110,101,115,10,117,115,101,114,115,45,108, +105,110,101,10,117,115,101,114,115,45,114,97,121,115,15,117,115,101,114,115,45,114,101,99,116,97,110,103,108,101,16,117, +115,101,114,115,45,118,105,101,119,102,105,110,100,101,114,17,118,105,97,108,45,99,105,114,99,108,101,45,99,104,101,99, +107,10,118,105,97,108,45,118,105,114,117,115,28,119,104,101,97,116,45,97,119,110,45,99,105,114,99,108,101,45,101,120, +99,108,97,109,97,116,105,111,110,4,119,111,114,109,12,120,109,97,114,107,115,45,108,105,110,101,115,11,99,104,105,108, +100,45,100,114,101,115,115,14,99,104,105,108,100,45,114,101,97,99,104,105,110,103,17,102,105,108,101,45,99,105,114,99, +108,101,45,99,104,101,99,107,17,102,105,108,101,45,99,105,114,99,108,101,45,120,109,97,114,107,21,112,101,114,115,111, +110,45,116,104,114,111,117,103,104,45,119,105,110,100,111,119,10,112,108,97,110,116,45,119,105,108,116,7,115,116,97,112, +108,101,114,10,116,114,97,105,110,45,116,114,97,109,19,109,97,114,116,105,110,105,45,103,108,97,115,115,45,101,109,112, +116,121,5,109,117,115,105,99,16,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115,5,104,101,97,114,116,4, +115,116,97,114,4,117,115,101,114,4,102,105,108,109,17,116,97,98,108,101,45,99,101,108,108,115,45,108,97,114,103,101, +11,116,97,98,108,101,45,99,101,108,108,115,10,116,97,98,108,101,45,108,105,115,116,5,99,104,101,99,107,5,120,109, +97,114,107,21,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115,45,112,108,117,115,22,109,97,103,110,105,102, +121,105,110,103,45,103,108,97,115,115,45,109,105,110,117,115,9,112,111,119,101,114,45,111,102,102,6,115,105,103,110,97, +108,4,103,101,97,114,5,104,111,117,115,101,5,99,108,111,99,107,4,114,111,97,100,8,100,111,119,110,108,111,97,100, +5,105,110,98,111,120,18,97,114,114,111,119,45,114,111,116,97,116,101,45,114,105,103,104,116,13,97,114,114,111,119,115, +45,114,111,116,97,116,101,14,114,101,99,116,97,110,103,108,101,45,108,105,115,116,4,108,111,99,107,4,102,108,97,103, +10,104,101,97,100,112,104,111,110,101,115,10,118,111,108,117,109,101,45,111,102,102,10,118,111,108,117,109,101,45,108,111, +119,11,118,111,108,117,109,101,45,104,105,103,104,6,113,114,99,111,100,101,7,98,97,114,99,111,100,101,3,116,97,103, +4,116,97,103,115,4,98,111,111,107,8,98,111,111,107,109,97,114,107,5,112,114,105,110,116,6,99,97,109,101,114,97, +4,102,111,110,116,4,98,111,108,100,6,105,116,97,108,105,99,11,116,101,120,116,45,104,101,105,103,104,116,10,116,101, +120,116,45,119,105,100,116,104,10,97,108,105,103,110,45,108,101,102,116,12,97,108,105,103,110,45,99,101,110,116,101,114, +11,97,108,105,103,110,45,114,105,103,104,116,13,97,108,105,103,110,45,106,117,115,116,105,102,121,4,108,105,115,116,7, +111,117,116,100,101,110,116,6,105,110,100,101,110,116,5,118,105,100,101,111,5,105,109,97,103,101,12,108,111,99,97,116, +105,111,110,45,112,105,110,18,99,105,114,99,108,101,45,104,97,108,102,45,115,116,114,111,107,101,7,100,114,111,112,108, +101,116,13,112,101,110,45,116,111,45,115,113,117,97,114,101,25,97,114,114,111,119,115,45,117,112,45,100,111,119,110,45, +108,101,102,116,45,114,105,103,104,116,13,98,97,99,107,119,97,114,100,45,115,116,101,112,13,98,97,99,107,119,97,114, +100,45,102,97,115,116,8,98,97,99,107,119,97,114,100,4,112,108,97,121,5,112,97,117,115,101,4,115,116,111,112,7, +102,111,114,119,97,114,100,12,102,111,114,119,97,114,100,45,102,97,115,116,12,102,111,114,119,97,114,100,45,115,116,101, +112,5,101,106,101,99,116,12,99,104,101,118,114,111,110,45,108,101,102,116,13,99,104,101,118,114,111,110,45,114,105,103, +104,116,11,99,105,114,99,108,101,45,112,108,117,115,12,99,105,114,99,108,101,45,109,105,110,117,115,12,99,105,114,99, +108,101,45,120,109,97,114,107,12,99,105,114,99,108,101,45,99,104,101,99,107,15,99,105,114,99,108,101,45,113,117,101, +115,116,105,111,110,11,99,105,114,99,108,101,45,105,110,102,111,10,99,114,111,115,115,104,97,105,114,115,3,98,97,110, +10,97,114,114,111,119,45,108,101,102,116,11,97,114,114,111,119,45,114,105,103,104,116,8,97,114,114,111,119,45,117,112, +10,97,114,114,111,119,45,100,111,119,110,5,115,104,97,114,101,6,101,120,112,97,110,100,8,99,111,109,112,114,101,115, +115,5,109,105,110,117,115,18,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,4,103,105,102,116,4, +108,101,97,102,4,102,105,114,101,3,101,121,101,9,101,121,101,45,115,108,97,115,104,20,116,114,105,97,110,103,108,101, +45,101,120,99,108,97,109,97,116,105,111,110,5,112,108,97,110,101,13,99,97,108,101,110,100,97,114,45,100,97,121,115, +7,115,104,117,102,102,108,101,7,99,111,109,109,101,110,116,6,109,97,103,110,101,116,10,99,104,101,118,114,111,110,45, +117,112,12,99,104,101,118,114,111,110,45,100,111,119,110,7,114,101,116,119,101,101,116,13,99,97,114,116,45,115,104,111, +112,112,105,110,103,6,102,111,108,100,101,114,11,102,111,108,100,101,114,45,111,112,101,110,14,97,114,114,111,119,115,45, +117,112,45,100,111,119,110,17,97,114,114,111,119,115,45,108,101,102,116,45,114,105,103,104,116,9,99,104,97,114,116,45, +98,97,114,12,99,97,109,101,114,97,45,114,101,116,114,111,3,107,101,121,5,103,101,97,114,115,8,99,111,109,109,101, +110,116,115,9,115,116,97,114,45,104,97,108,102,24,97,114,114,111,119,45,114,105,103,104,116,45,102,114,111,109,45,98, +114,97,99,107,101,116,9,116,104,117,109,98,116,97,99,107,26,97,114,114,111,119,45,117,112,45,114,105,103,104,116,45, +102,114,111,109,45,115,113,117,97,114,101,22,97,114,114,111,119,45,114,105,103,104,116,45,116,111,45,98,114,97,99,107, +101,116,6,116,114,111,112,104,121,6,117,112,108,111,97,100,5,108,101,109,111,110,5,112,104,111,110,101,12,115,113,117, +97,114,101,45,112,104,111,110,101,6,117,110,108,111,99,107,11,99,114,101,100,105,116,45,99,97,114,100,3,114,115,115, +10,104,97,114,100,45,100,114,105,118,101,8,98,117,108,108,104,111,114,110,11,99,101,114,116,105,102,105,99,97,116,101, +16,104,97,110,100,45,112,111,105,110,116,45,114,105,103,104,116,15,104,97,110,100,45,112,111,105,110,116,45,108,101,102, +116,13,104,97,110,100,45,112,111,105,110,116,45,117,112,15,104,97,110,100,45,112,111,105,110,116,45,100,111,119,110,17, +99,105,114,99,108,101,45,97,114,114,111,119,45,108,101,102,116,18,99,105,114,99,108,101,45,97,114,114,111,119,45,114, +105,103,104,116,15,99,105,114,99,108,101,45,97,114,114,111,119,45,117,112,17,99,105,114,99,108,101,45,97,114,114,111, +119,45,100,111,119,110,5,103,108,111,98,101,6,119,114,101,110,99,104,10,108,105,115,116,45,99,104,101,99,107,6,102, +105,108,116,101,114,9,98,114,105,101,102,99,97,115,101,18,117,112,45,100,111,119,110,45,108,101,102,116,45,114,105,103, +104,116,5,117,115,101,114,115,4,108,105,110,107,5,99,108,111,117,100,5,102,108,97,115,107,8,115,99,105,115,115,111, +114,115,4,99,111,112,121,9,112,97,112,101,114,99,108,105,112,11,102,108,111,112,112,121,45,100,105,115,107,6,115,113, +117,97,114,101,4,98,97,114,115,7,108,105,115,116,45,117,108,7,108,105,115,116,45,111,108,13,115,116,114,105,107,101, +116,104,114,111,117,103,104,9,117,110,100,101,114,108,105,110,101,5,116,97,98,108,101,10,119,97,110,100,45,109,97,103, +105,99,5,116,114,117,99,107,10,109,111,110,101,121,45,98,105,108,108,10,99,97,114,101,116,45,100,111,119,110,8,99, +97,114,101,116,45,117,112,10,99,97,114,101,116,45,108,101,102,116,11,99,97,114,101,116,45,114,105,103,104,116,13,116, +97,98,108,101,45,99,111,108,117,109,110,115,4,115,111,114,116,9,115,111,114,116,45,100,111,119,110,7,115,111,114,116, +45,117,112,8,101,110,118,101,108,111,112,101,17,97,114,114,111,119,45,114,111,116,97,116,101,45,108,101,102,116,5,103, +97,118,101,108,4,98,111,108,116,7,115,105,116,101,109,97,112,8,117,109,98,114,101,108,108,97,5,112,97,115,116,101, +9,108,105,103,104,116,98,117,108,98,22,97,114,114,111,119,45,114,105,103,104,116,45,97,114,114,111,119,45,108,101,102, +116,16,99,108,111,117,100,45,97,114,114,111,119,45,100,111,119,110,14,99,108,111,117,100,45,97,114,114,111,119,45,117, +112,11,117,115,101,114,45,100,111,99,116,111,114,11,115,116,101,116,104,111,115,99,111,112,101,8,115,117,105,116,99,97, +115,101,4,98,101,108,108,10,109,117,103,45,115,97,117,99,101,114,8,104,111,115,112,105,116,97,108,13,116,114,117,99, +107,45,109,101,100,105,99,97,108,16,115,117,105,116,99,97,115,101,45,109,101,100,105,99,97,108,11,106,101,116,45,102, +105,103,104,116,101,114,14,98,101,101,114,45,109,117,103,45,101,109,112,116,121,8,115,113,117,97,114,101,45,104,11,115, +113,117,97,114,101,45,112,108,117,115,11,97,110,103,108,101,115,45,108,101,102,116,12,97,110,103,108,101,115,45,114,105, +103,104,116,9,97,110,103,108,101,115,45,117,112,11,97,110,103,108,101,115,45,100,111,119,110,10,97,110,103,108,101,45, +108,101,102,116,11,97,110,103,108,101,45,114,105,103,104,116,8,97,110,103,108,101,45,117,112,10,97,110,103,108,101,45, +100,111,119,110,6,108,97,112,116,111,112,13,116,97,98,108,101,116,45,98,117,116,116,111,110,13,109,111,98,105,108,101, +45,98,117,116,116,111,110,10,113,117,111,116,101,45,108,101,102,116,11,113,117,111,116,101,45,114,105,103,104,116,7,115, +112,105,110,110,101,114,6,99,105,114,99,108,101,10,102,97,99,101,45,115,109,105,108,101,10,102,97,99,101,45,102,114, +111,119,110,8,102,97,99,101,45,109,101,104,7,103,97,109,101,112,97,100,8,107,101,121,98,111,97,114,100,14,102,108, +97,103,45,99,104,101,99,107,101,114,101,100,8,116,101,114,109,105,110,97,108,4,99,111,100,101,9,114,101,112,108,121, +45,97,108,108,14,108,111,99,97,116,105,111,110,45,97,114,114,111,119,4,99,114,111,112,11,99,111,100,101,45,98,114, +97,110,99,104,10,108,105,110,107,45,115,108,97,115,104,4,105,110,102,111,11,115,117,112,101,114,115,99,114,105,112,116, +9,115,117,98,115,99,114,105,112,116,6,101,114,97,115,101,114,12,112,117,122,122,108,101,45,112,105,101,99,101,10,109, +105,99,114,111,112,104,111,110,101,16,109,105,99,114,111,112,104,111,110,101,45,115,108,97,115,104,6,115,104,105,101,108, +100,8,99,97,108,101,110,100,97,114,17,102,105,114,101,45,101,120,116,105,110,103,117,105,115,104,101,114,6,114,111,99, +107,101,116,19,99,105,114,99,108,101,45,99,104,101,118,114,111,110,45,108,101,102,116,20,99,105,114,99,108,101,45,99, +104,101,118,114,111,110,45,114,105,103,104,116,17,99,105,114,99,108,101,45,99,104,101,118,114,111,110,45,117,112,19,99, +105,114,99,108,101,45,99,104,101,118,114,111,110,45,100,111,119,110,6,97,110,99,104,111,114,14,117,110,108,111,99,107, +45,107,101,121,104,111,108,101,8,98,117,108,108,115,101,121,101,8,101,108,108,105,112,115,105,115,17,101,108,108,105,112, +115,105,115,45,118,101,114,116,105,99,97,108,10,115,113,117,97,114,101,45,114,115,115,11,99,105,114,99,108,101,45,112, +108,97,121,6,116,105,99,107,101,116,12,115,113,117,97,114,101,45,109,105,110,117,115,13,97,114,114,111,119,45,116,117, +114,110,45,117,112,15,97,114,114,111,119,45,116,117,114,110,45,100,111,119,110,12,115,113,117,97,114,101,45,99,104,101, +99,107,10,115,113,117,97,114,101,45,112,101,110,21,115,113,117,97,114,101,45,97,114,114,111,119,45,117,112,45,114,105, +103,104,116,17,115,104,97,114,101,45,102,114,111,109,45,115,113,117,97,114,101,7,99,111,109,112,97,115,115,17,115,113, +117,97,114,101,45,99,97,114,101,116,45,100,111,119,110,15,115,113,117,97,114,101,45,99,97,114,101,116,45,117,112,18, +115,113,117,97,114,101,45,99,97,114,101,116,45,114,105,103,104,116,9,101,117,114,111,45,115,105,103,110,13,115,116,101, +114,108,105,110,103,45,115,105,103,110,10,114,117,112,101,101,45,115,105,103,110,8,121,101,110,45,115,105,103,110,10,114, +117,98,108,101,45,115,105,103,110,8,119,111,110,45,115,105,103,110,4,102,105,108,101,10,102,105,108,101,45,108,105,110, +101,115,14,97,114,114,111,119,45,100,111,119,110,45,97,45,122,12,97,114,114,111,119,45,117,112,45,97,45,122,21,97, +114,114,111,119,45,100,111,119,110,45,119,105,100,101,45,115,104,111,114,116,19,97,114,114,111,119,45,117,112,45,119,105, +100,101,45,115,104,111,114,116,14,97,114,114,111,119,45,100,111,119,110,45,49,45,57,12,97,114,114,111,119,45,117,112, +45,49,45,57,9,116,104,117,109,98,115,45,117,112,11,116,104,117,109,98,115,45,100,111,119,110,15,97,114,114,111,119, +45,100,111,119,110,45,108,111,110,103,13,97,114,114,111,119,45,117,112,45,108,111,110,103,15,97,114,114,111,119,45,108, +101,102,116,45,108,111,110,103,16,97,114,114,111,119,45,114,105,103,104,116,45,108,111,110,103,12,112,101,114,115,111,110, +45,100,114,101,115,115,6,112,101,114,115,111,110,3,115,117,110,4,109,111,111,110,11,98,111,120,45,97,114,99,104,105, +118,101,3,98,117,103,17,115,113,117,97,114,101,45,99,97,114,101,116,45,108,101,102,116,10,99,105,114,99,108,101,45, +100,111,116,10,119,104,101,101,108,99,104,97,105,114,9,108,105,114,97,45,115,105,103,110,13,115,104,117,116,116,108,101, +45,115,112,97,99,101,15,115,113,117,97,114,101,45,101,110,118,101,108,111,112,101,16,98,117,105,108,100,105,110,103,45, +99,111,108,117,109,110,115,14,103,114,97,100,117,97,116,105,111,110,45,99,97,112,8,108,97,110,103,117,97,103,101,3, +102,97,120,8,98,117,105,108,100,105,110,103,5,99,104,105,108,100,3,112,97,119,4,99,117,98,101,5,99,117,98,101, +115,7,114,101,99,121,99,108,101,3,99,97,114,4,116,97,120,105,4,116,114,101,101,8,100,97,116,97,98,97,115,101, +8,102,105,108,101,45,112,100,102,9,102,105,108,101,45,119,111,114,100,10,102,105,108,101,45,101,120,99,101,108,15,102, +105,108,101,45,112,111,119,101,114,112,111,105,110,116,10,102,105,108,101,45,105,109,97,103,101,11,102,105,108,101,45,122, +105,112,112,101,114,10,102,105,108,101,45,97,117,100,105,111,10,102,105,108,101,45,118,105,100,101,111,9,102,105,108,101, +45,99,111,100,101,9,108,105,102,101,45,114,105,110,103,12,99,105,114,99,108,101,45,110,111,116,99,104,11,112,97,112, +101,114,45,112,108,97,110,101,17,99,108,111,99,107,45,114,111,116,97,116,101,45,108,101,102,116,7,104,101,97,100,105, +110,103,9,112,97,114,97,103,114,97,112,104,7,115,108,105,100,101,114,115,11,115,104,97,114,101,45,110,111,100,101,115, +18,115,113,117,97,114,101,45,115,104,97,114,101,45,110,111,100,101,115,4,98,111,109,98,6,102,117,116,98,111,108,3, +116,116,121,10,98,105,110,111,99,117,108,97,114,115,4,112,108,117,103,9,110,101,119,115,112,97,112,101,114,4,119,105, +102,105,10,99,97,108,99,117,108,97,116,111,114,10,98,101,108,108,45,115,108,97,115,104,5,116,114,97,115,104,9,99, +111,112,121,114,105,103,104,116,11,101,121,101,45,100,114,111,112,112,101,114,10,112,97,105,110,116,98,114,117,115,104,12, +99,97,107,101,45,99,97,110,100,108,101,115,10,99,104,97,114,116,45,97,114,101,97,9,99,104,97,114,116,45,112,105, +101,10,99,104,97,114,116,45,108,105,110,101,10,116,111,103,103,108,101,45,111,102,102,9,116,111,103,103,108,101,45,111, +110,7,98,105,99,121,99,108,101,3,98,117,115,17,99,108,111,115,101,100,45,99,97,112,116,105,111,110,105,110,103,11, +115,104,101,107,101,108,45,115,105,103,110,9,99,97,114,116,45,112,108,117,115,15,99,97,114,116,45,97,114,114,111,119, +45,100,111,119,110,7,100,105,97,109,111,110,100,4,115,104,105,112,11,117,115,101,114,45,115,101,99,114,101,116,10,109, +111,116,111,114,99,121,99,108,101,11,115,116,114,101,101,116,45,118,105,101,119,11,104,101,97,114,116,45,112,117,108,115, +101,5,118,101,110,117,115,4,109,97,114,115,7,109,101,114,99,117,114,121,14,109,97,114,115,45,97,110,100,45,118,101, +110,117,115,11,116,114,97,110,115,103,101,110,100,101,114,12,118,101,110,117,115,45,100,111,117,98,108,101,11,109,97,114, +115,45,100,111,117,98,108,101,10,118,101,110,117,115,45,109,97,114,115,11,109,97,114,115,45,115,116,114,111,107,101,14, +109,97,114,115,45,115,116,114,111,107,101,45,117,112,17,109,97,114,115,45,115,116,114,111,107,101,45,114,105,103,104,116, +6,110,101,117,116,101,114,10,103,101,110,100,101,114,108,101,115,115,6,115,101,114,118,101,114,9,117,115,101,114,45,112, +108,117,115,10,117,115,101,114,45,120,109,97,114,107,3,98,101,100,5,116,114,97,105,110,12,116,114,97,105,110,45,115, +117,98,119,97,121,12,98,97,116,116,101,114,121,45,102,117,108,108,22,98,97,116,116,101,114,121,45,116,104,114,101,101, +45,113,117,97,114,116,101,114,115,12,98,97,116,116,101,114,121,45,104,97,108,102,15,98,97,116,116,101,114,121,45,113, +117,97,114,116,101,114,13,98,97,116,116,101,114,121,45,101,109,112,116,121,13,97,114,114,111,119,45,112,111,105,110,116, +101,114,8,105,45,99,117,114,115,111,114,12,111,98,106,101,99,116,45,103,114,111,117,112,14,111,98,106,101,99,116,45, +117,110,103,114,111,117,112,11,110,111,116,101,45,115,116,105,99,107,121,5,99,108,111,110,101,14,115,99,97,108,101,45, +98,97,108,97,110,99,101,100,15,104,111,117,114,103,108,97,115,115,45,115,116,97,114,116,14,104,111,117,114,103,108,97, +115,115,45,104,97,108,102,13,104,111,117,114,103,108,97,115,115,45,101,110,100,9,104,111,117,114,103,108,97,115,115,14, +104,97,110,100,45,98,97,99,107,45,102,105,115,116,4,104,97,110,100,13,104,97,110,100,45,115,99,105,115,115,111,114, +115,11,104,97,110,100,45,108,105,122,97,114,100,10,104,97,110,100,45,115,112,111,99,107,12,104,97,110,100,45,112,111, +105,110,116,101,114,10,104,97,110,100,45,112,101,97,99,101,9,116,114,97,100,101,109,97,114,107,10,114,101,103,105,115, +116,101,114,101,100,2,116,118,13,99,97,108,101,110,100,97,114,45,112,108,117,115,14,99,97,108,101,110,100,97,114,45, +109,105,110,117,115,14,99,97,108,101,110,100,97,114,45,120,109,97,114,107,14,99,97,108,101,110,100,97,114,45,99,104, +101,99,107,8,105,110,100,117,115,116,114,121,7,109,97,112,45,112,105,110,10,115,105,103,110,115,45,112,111,115,116,3, +109,97,112,7,109,101,115,115,97,103,101,12,99,105,114,99,108,101,45,112,97,117,115,101,11,99,105,114,99,108,101,45, +115,116,111,112,12,98,97,103,45,115,104,111,112,112,105,110,103,15,98,97,115,107,101,116,45,115,104,111,112,112,105,110, +103,16,117,110,105,118,101,114,115,97,108,45,97,99,99,101,115,115,24,112,101,114,115,111,110,45,119,97,108,107,105,110, +103,45,119,105,116,104,45,99,97,110,101,17,97,117,100,105,111,45,100,101,115,99,114,105,112,116,105,111,110,12,112,104, +111,110,101,45,118,111,108,117,109,101,7,98,114,97,105,108,108,101,10,101,97,114,45,108,105,115,116,101,110,22,104,97, +110,100,115,45,97,115,108,45,105,110,116,101,114,112,114,101,116,105,110,103,8,101,97,114,45,100,101,97,102,5,104,97, +110,100,115,14,101,121,101,45,108,111,119,45,118,105,115,105,111,110,12,102,111,110,116,45,97,119,101,115,111,109,101,9, +104,97,110,100,115,104,97,107,101,13,101,110,118,101,108,111,112,101,45,111,112,101,110,12,97,100,100,114,101,115,115,45, +98,111,111,107,12,97,100,100,114,101,115,115,45,99,97,114,100,11,99,105,114,99,108,101,45,117,115,101,114,8,105,100, +45,98,97,100,103,101,7,105,100,45,99,97,114,100,16,116,101,109,112,101,114,97,116,117,114,101,45,102,117,108,108,26, +116,101,109,112,101,114,97,116,117,114,101,45,116,104,114,101,101,45,113,117,97,114,116,101,114,115,16,116,101,109,112,101, +114,97,116,117,114,101,45,104,97,108,102,19,116,101,109,112,101,114,97,116,117,114,101,45,113,117,97,114,116,101,114,17, +116,101,109,112,101,114,97,116,117,114,101,45,101,109,112,116,121,6,115,104,111,119,101,114,4,98,97,116,104,7,112,111, +100,99,97,115,116,15,119,105,110,100,111,119,45,109,97,120,105,109,105,122,101,15,119,105,110,100,111,119,45,109,105,110, +105,109,105,122,101,14,119,105,110,100,111,119,45,114,101,115,116,111,114,101,12,115,113,117,97,114,101,45,120,109,97,114, +107,9,109,105,99,114,111,99,104,105,112,9,115,110,111,119,102,108,97,107,101,5,115,112,111,111,110,8,117,116,101,110, +115,105,108,115,11,114,111,116,97,116,101,45,108,101,102,116,9,116,114,97,115,104,45,99,97,110,6,114,111,116,97,116, +101,9,115,116,111,112,119,97,116,99,104,18,114,105,103,104,116,45,102,114,111,109,45,98,114,97,99,107,101,116,16,114, +105,103,104,116,45,116,111,45,98,114,97,99,107,101,116,12,114,111,116,97,116,101,45,114,105,103,104,116,3,112,111,111, +6,105,109,97,103,101,115,6,112,101,110,99,105,108,3,112,101,110,8,112,101,110,45,99,108,105,112,9,100,111,119,110, +45,108,111,110,103,9,108,101,102,116,45,108,111,110,103,10,114,105,103,104,116,45,108,111,110,103,7,117,112,45,108,111, +110,103,8,102,105,108,101,45,112,101,110,8,109,97,120,105,109,105,122,101,9,99,108,105,112,98,111,97,114,100,10,108, +101,102,116,45,114,105,103,104,116,7,117,112,45,100,111,119,110,11,99,105,114,99,108,101,45,100,111,119,110,11,99,105, +114,99,108,101,45,108,101,102,116,12,99,105,114,99,108,101,45,114,105,103,104,116,9,99,105,114,99,108,101,45,117,112, +20,117,112,45,114,105,103,104,116,45,102,114,111,109,45,115,113,117,97,114,101,15,115,113,117,97,114,101,45,117,112,45, +114,105,103,104,116,10,114,105,103,104,116,45,108,101,102,116,6,114,101,112,101,97,116,11,99,111,100,101,45,99,111,109, +109,105,116,10,99,111,100,101,45,109,101,114,103,101,7,100,101,115,107,116,111,112,3,103,101,109,9,116,117,114,110,45, +100,111,119,110,7,116,117,114,110,45,117,112,9,108,111,99,107,45,111,112,101,110,12,108,111,99,97,116,105,111,110,45, +100,111,116,16,109,105,99,114,111,112,104,111,110,101,45,108,105,110,101,115,20,109,111,98,105,108,101,45,115,99,114,101, +101,110,45,98,117,116,116,111,110,6,109,111,98,105,108,101,13,109,111,98,105,108,101,45,115,99,114,101,101,110,12,109, +111,110,101,121,45,98,105,108,108,45,49,11,112,104,111,110,101,45,115,108,97,115,104,14,105,109,97,103,101,45,112,111, +114,116,114,97,105,116,5,114,101,112,108,121,13,115,104,105,101,108,100,45,104,97,108,118,101,100,20,116,97,98,108,101, +116,45,115,99,114,101,101,110,45,98,117,116,116,111,110,6,116,97,98,108,101,116,13,116,105,99,107,101,116,45,115,105, +109,112,108,101,10,117,115,101,114,45,108,97,114,103,101,15,114,101,99,116,97,110,103,108,101,45,120,109,97,114,107,32, +100,111,119,110,45,108,101,102,116,45,97,110,100,45,117,112,45,114,105,103,104,116,45,116,111,45,99,101,110,116,101,114, +34,117,112,45,114,105,103,104,116,45,97,110,100,45,100,111,119,110,45,108,101,102,116,45,102,114,111,109,45,99,101,110, +116,101,114,17,98,97,115,101,98,97,108,108,45,98,97,116,45,98,97,108,108,8,98,97,115,101,98,97,108,108,10,98, +97,115,107,101,116,98,97,108,108,12,98,111,119,108,105,110,103,45,98,97,108,108,5,99,104,101,115,115,12,99,104,101, +115,115,45,98,105,115,104,111,112,11,99,104,101,115,115,45,98,111,97,114,100,10,99,104,101,115,115,45,107,105,110,103, +12,99,104,101,115,115,45,107,110,105,103,104,116,10,99,104,101,115,115,45,112,97,119,110,11,99,104,101,115,115,45,113, +117,101,101,110,10,99,104,101,115,115,45,114,111,111,107,8,100,117,109,98,98,101,108,108,8,102,111,111,116,98,97,108, +108,13,103,111,108,102,45,98,97,108,108,45,116,101,101,11,104,111,99,107,101,121,45,112,117,99,107,10,98,114,111,111, +109,45,98,97,108,108,11,115,113,117,97,114,101,45,102,117,108,108,24,116,97,98,108,101,45,116,101,110,110,105,115,45, +112,97,100,100,108,101,45,98,97,108,108,10,118,111,108,108,101,121,98,97,108,108,9,104,97,110,100,45,100,111,116,115, +7,98,97,110,100,97,103,101,3,98,111,120,13,98,111,120,101,115,45,115,116,97,99,107,101,100,17,98,114,105,101,102, +99,97,115,101,45,109,101,100,105,99,97,108,17,102,105,114,101,45,102,108,97,109,101,45,115,105,109,112,108,101,8,99, +97,112,115,117,108,101,115,15,99,108,105,112,98,111,97,114,100,45,99,104,101,99,107,14,99,108,105,112,98,111,97,114, +100,45,108,105,115,116,21,112,101,114,115,111,110,45,100,111,116,115,45,102,114,111,109,45,108,105,110,101,3,100,110,97, +5,100,111,108,108,121,12,99,97,114,116,45,102,108,97,116,98,101,100,12,102,105,108,101,45,109,101,100,105,99,97,108, +13,102,105,108,101,45,119,97,118,101,102,111,114,109,11,107,105,116,45,109,101,100,105,99,97,108,8,99,105,114,99,108, +101,45,104,12,105,100,45,99,97,114,100,45,99,108,105,112,13,110,111,116,101,115,45,109,101,100,105,99,97,108,6,112, +97,108,108,101,116,5,112,105,108,108,115,19,112,114,101,115,99,114,105,112,116,105,111,110,45,98,111,116,116,108,101,27, +112,114,101,115,99,114,105,112,116,105,111,110,45,98,111,116,116,108,101,45,109,101,100,105,99,97,108,9,98,101,100,45, +112,117,108,115,101,10,116,114,117,99,107,45,102,97,115,116,7,115,109,111,107,105,110,103,7,115,121,114,105,110,103,101, +7,116,97,98,108,101,116,115,11,116,104,101,114,109,111,109,101,116,101,114,4,118,105,97,108,5,118,105,97,108,115,9, +119,97,114,101,104,111,117,115,101,12,119,101,105,103,104,116,45,115,99,97,108,101,5,120,45,114,97,121,8,98,111,120, +45,111,112,101,110,12,99,111,109,109,101,110,116,45,100,111,116,115,13,99,111,109,109,101,110,116,45,115,108,97,115,104, +5,99,111,117,99,104,21,99,105,114,99,108,101,45,100,111,108,108,97,114,45,116,111,45,115,108,111,116,4,100,111,118, +101,12,104,97,110,100,45,104,111,108,100,105,110,103,18,104,97,110,100,45,104,111,108,100,105,110,103,45,104,101,97,114, +116,19,104,97,110,100,45,104,111,108,100,105,110,103,45,100,111,108,108,97,114,20,104,97,110,100,45,104,111,108,100,105, +110,103,45,100,114,111,112,108,101,116,13,104,97,110,100,115,45,104,111,108,100,105,110,103,15,104,97,110,100,115,104,97, +107,101,45,97,110,103,108,101,16,104,97,110,100,115,104,97,107,101,45,115,105,109,112,108,101,13,112,97,114,97,99,104, +117,116,101,45,98,111,120,16,112,101,111,112,108,101,45,99,97,114,114,121,45,98,111,120,10,112,105,103,103,121,45,98, +97,110,107,6,114,105,98,98,111,110,5,114,111,117,116,101,8,115,101,101,100,108,105,110,103,12,115,105,103,110,45,104, +97,110,103,105,110,103,15,102,97,99,101,45,115,109,105,108,101,45,119,105,110,107,4,116,97,112,101,14,116,114,117,99, +107,45,114,97,109,112,45,98,111,120,12,116,114,117,99,107,45,109,111,118,105,110,103,11,118,105,100,101,111,45,115,108, +97,115,104,10,119,105,110,101,45,103,108,97,115,115,16,117,115,101,114,45,108,97,114,103,101,45,115,108,97,115,104,14, +117,115,101,114,45,97,115,116,114,111,110,97,117,116,10,117,115,101,114,45,99,104,101,99,107,10,117,115,101,114,45,99, +108,111,99,107,9,117,115,101,114,45,103,101,97,114,8,117,115,101,114,45,112,101,110,10,117,115,101,114,45,103,114,111, +117,112,13,117,115,101,114,45,103,114,97,100,117,97,116,101,9,117,115,101,114,45,108,111,99,107,10,117,115,101,114,45, +109,105,110,117,115,10,117,115,101,114,45,110,105,110,106,97,11,117,115,101,114,45,115,104,105,101,108,100,10,117,115,101, +114,45,115,108,97,115,104,8,117,115,101,114,45,116,97,103,8,117,115,101,114,45,116,105,101,10,117,115,101,114,115,45, +103,101,97,114,16,115,99,97,108,101,45,117,110,98,97,108,97,110,99,101,100,21,115,99,97,108,101,45,117,110,98,97, +108,97,110,99,101,100,45,102,108,105,112,7,98,108,101,110,100,101,114,9,98,111,111,107,45,111,112,101,110,15,116,111, +119,101,114,45,98,114,111,97,100,99,97,115,116,5,98,114,111,111,109,10,99,104,97,108,107,98,111,97,114,100,15,99, +104,97,108,107,98,111,97,114,100,45,117,115,101,114,6,99,104,117,114,99,104,5,99,111,105,110,115,12,99,111,109,112, +97,99,116,45,100,105,115,99,4,99,114,111,119,5,99,114,111,119,110,4,100,105,99,101,9,100,105,99,101,45,102,105, +118,101,9,100,105,99,101,45,102,111,117,114,8,100,105,99,101,45,111,110,101,8,100,105,99,101,45,115,105,120,10,100, +105,99,101,45,116,104,114,101,101,8,100,105,99,101,45,116,119,111,6,100,105,118,105,100,101,11,100,111,111,114,45,99, +108,111,115,101,100,9,100,111,111,114,45,111,112,101,110,7,102,101,97,116,104,101,114,4,102,114,111,103,8,103,97,115, +45,112,117,109,112,7,103,108,97,115,115,101,115,18,103,114,101,97,116,101,114,45,116,104,97,110,45,101,113,117,97,108, +10,104,101,108,105,99,111,112,116,101,114,8,105,110,102,105,110,105,116,121,9,107,105,119,105,45,98,105,114,100,15,108, +101,115,115,45,116,104,97,110,45,101,113,117,97,108,6,109,101,109,111,114,121,22,109,105,99,114,111,112,104,111,110,101, +45,108,105,110,101,115,45,115,108,97,115,104,15,109,111,110,101,121,45,98,105,108,108,45,119,97,118,101,17,109,111,110, +101,121,45,98,105,108,108,45,49,45,119,97,118,101,11,109,111,110,101,121,45,99,104,101,99,107,18,109,111,110,101,121, +45,99,104,101,99,107,45,100,111,108,108,97,114,9,110,111,116,45,101,113,117,97,108,7,112,97,108,101,116,116,101,14, +115,113,117,97,114,101,45,112,97,114,107,105,110,103,15,100,105,97,103,114,97,109,45,112,114,111,106,101,99,116,7,114, +101,99,101,105,112,116,5,114,111,98,111,116,5,114,117,108,101,114,14,114,117,108,101,114,45,99,111,109,98,105,110,101, +100,16,114,117,108,101,114,45,104,111,114,105,122,111,110,116,97,108,14,114,117,108,101,114,45,118,101,114,116,105,99,97, +108,6,115,99,104,111,111,108,11,115,99,114,101,119,100,114,105,118,101,114,11,115,104,111,101,45,112,114,105,110,116,115, +5,115,107,117,108,108,11,98,97,110,45,115,109,111,107,105,110,103,5,115,116,111,114,101,4,115,104,111,112,14,98,97, +114,115,45,115,116,97,103,103,101,114,101,100,11,115,116,114,111,111,112,119,97,102,101,108,7,116,111,111,108,98,111,120, +5,115,104,105,114,116,14,112,101,114,115,111,110,45,119,97,108,107,105,110,103,6,119,97,108,108,101,116,10,102,97,99, +101,45,97,110,103,114,121,7,97,114,99,104,119,97,121,10,98,111,111,107,45,97,116,108,97,115,5,97,119,97,114,100, +11,100,101,108,101,116,101,45,108,101,102,116,12,98,101,122,105,101,114,45,99,117,114,118,101,4,98,111,110,103,5,98, +114,117,115,104,10,98,117,115,45,115,105,109,112,108,101,8,99,97,110,110,97,98,105,115,12,99,104,101,99,107,45,100, +111,117,98,108,101,20,109,97,114,116,105,110,105,45,103,108,97,115,115,45,99,105,116,114,117,115,14,98,101,108,108,45, +99,111,110,99,105,101,114,103,101,6,99,111,111,107,105,101,11,99,111,111,107,105,101,45,98,105,116,101,11,99,114,111, +112,45,115,105,109,112,108,101,18,116,97,99,104,111,103,114,97,112,104,45,100,105,103,105,116,97,108,10,102,97,99,101, +45,100,105,122,122,121,16,99,111,109,112,97,115,115,45,100,114,97,102,116,105,110,103,4,100,114,117,109,13,100,114,117, +109,45,115,116,101,101,108,112,97,110,15,102,101,97,116,104,101,114,45,112,111,105,110,116,101,100,13,102,105,108,101,45, +99,111,110,116,114,97,99,116,15,102,105,108,101,45,97,114,114,111,119,45,100,111,119,110,11,102,105,108,101,45,101,120, +112,111,114,116,11,102,105,108,101,45,105,109,112,111,114,116,12,102,105,108,101,45,105,110,118,111,105,99,101,19,102,105, +108,101,45,105,110,118,111,105,99,101,45,100,111,108,108,97,114,17,102,105,108,101,45,112,114,101,115,99,114,105,112,116, +105,111,110,14,102,105,108,101,45,115,105,103,110,97,116,117,114,101,13,102,105,108,101,45,97,114,114,111,119,45,117,112, +4,102,105,108,108,9,102,105,108,108,45,100,114,105,112,11,102,105,110,103,101,114,112,114,105,110,116,4,102,105,115,104, +12,102,97,99,101,45,102,108,117,115,104,101,100,15,102,97,99,101,45,102,114,111,119,110,45,111,112,101,110,13,109,97, +114,116,105,110,105,45,103,108,97,115,115,12,101,97,114,116,104,45,97,102,114,105,99,97,14,101,97,114,116,104,45,97, +109,101,114,105,99,97,115,10,101,97,114,116,104,45,97,115,105,97,12,102,97,99,101,45,103,114,105,109,97,99,101,9, +102,97,99,101,45,103,114,105,110,14,102,97,99,101,45,103,114,105,110,45,119,105,100,101,14,102,97,99,101,45,103,114, +105,110,45,98,101,97,109,20,102,97,99,101,45,103,114,105,110,45,98,101,97,109,45,115,119,101,97,116,16,102,97,99, +101,45,103,114,105,110,45,104,101,97,114,116,115,16,102,97,99,101,45,103,114,105,110,45,115,113,117,105,110,116,22,102, +97,99,101,45,103,114,105,110,45,115,113,117,105,110,116,45,116,101,97,114,115,15,102,97,99,101,45,103,114,105,110,45, +115,116,97,114,115,15,102,97,99,101,45,103,114,105,110,45,116,101,97,114,115,16,102,97,99,101,45,103,114,105,110,45, +116,111,110,103,117,101,23,102,97,99,101,45,103,114,105,110,45,116,111,110,103,117,101,45,115,113,117,105,110,116,21,102, +97,99,101,45,103,114,105,110,45,116,111,110,103,117,101,45,119,105,110,107,14,102,97,99,101,45,103,114,105,110,45,119, +105,110,107,4,103,114,105,112,13,103,114,105,112,45,118,101,114,116,105,99,97,108,17,104,101,97,100,112,104,111,110,101, +115,45,115,105,109,112,108,101,7,104,101,97,100,115,101,116,11,104,105,103,104,108,105,103,104,116,101,114,14,104,111,116, +45,116,117,98,45,112,101,114,115,111,110,5,104,111,116,101,108,5,106,111,105,110,116,9,102,97,99,101,45,107,105,115, +115,14,102,97,99,101,45,107,105,115,115,45,98,101,97,109,20,102,97,99,101,45,107,105,115,115,45,119,105,110,107,45, +104,101,97,114,116,10,102,97,99,101,45,108,97,117,103,104,15,102,97,99,101,45,108,97,117,103,104,45,98,101,97,109, +17,102,97,99,101,45,108,97,117,103,104,45,115,113,117,105,110,116,15,102,97,99,101,45,108,97,117,103,104,45,119,105, +110,107,21,99,97,114,116,45,102,108,97,116,98,101,100,45,115,117,105,116,99,97,115,101,12,109,97,112,45,108,111,99, +97,116,105,111,110,16,109,97,112,45,108,111,99,97,116,105,111,110,45,100,111,116,6,109,97,114,107,101,114,5,109,101, +100,97,108,14,102,97,99,101,45,109,101,104,45,98,108,97,110,107,17,102,97,99,101,45,114,111,108,108,105,110,103,45, +101,121,101,115,8,109,111,110,117,109,101,110,116,13,109,111,114,116,97,114,45,112,101,115,116,108,101,12,112,97,105,110, +116,45,114,111,108,108,101,114,8,112,97,115,115,112,111,114,116,9,112,101,110,45,102,97,110,99,121,7,112,101,110,45, +110,105,98,9,112,101,110,45,114,117,108,101,114,13,112,108,97,110,101,45,97,114,114,105,118,97,108,15,112,108,97,110, +101,45,100,101,112,97,114,116,117,114,101,12,112,114,101,115,99,114,105,112,116,105,111,110,12,102,97,99,101,45,115,97, +100,45,99,114,121,13,102,97,99,101,45,115,97,100,45,116,101,97,114,11,118,97,110,45,115,104,117,116,116,108,101,9, +115,105,103,110,97,116,117,114,101,15,102,97,99,101,45,115,109,105,108,101,45,98,101,97,109,11,115,111,108,97,114,45, +112,97,110,101,108,3,115,112,97,7,115,112,108,111,116,99,104,9,115,112,114,97,121,45,99,97,110,5,115,116,97,109, +112,16,115,116,97,114,45,104,97,108,102,45,115,116,114,111,107,101,16,115,117,105,116,99,97,115,101,45,114,111,108,108, +105,110,103,13,102,97,99,101,45,115,117,114,112,114,105,115,101,10,115,119,97,116,99,104,98,111,111,107,15,112,101,114, +115,111,110,45,115,119,105,109,109,105,110,103,12,119,97,116,101,114,45,108,97,100,100,101,114,13,100,114,111,112,108,101, +116,45,115,108,97,115,104,10,102,97,99,101,45,116,105,114,101,100,5,116,111,111,116,104,14,117,109,98,114,101,108,108, +97,45,98,101,97,99,104,13,118,101,99,116,111,114,45,115,113,117,97,114,101,14,119,101,105,103,104,116,45,104,97,110, +103,105,110,103,16,119,105,110,101,45,103,108,97,115,115,45,101,109,112,116,121,18,115,112,114,97,121,45,99,97,110,45, +115,112,97,114,107,108,101,115,11,97,112,112,108,101,45,119,104,111,108,101,4,97,116,111,109,4,98,111,110,101,16,98, +111,111,107,45,111,112,101,110,45,114,101,97,100,101,114,5,98,114,97,105,110,8,99,97,114,45,114,101,97,114,11,99, +97,114,45,98,97,116,116,101,114,121,9,99,97,114,45,98,117,114,115,116,8,99,97,114,45,115,105,100,101,16,99,104, +97,114,103,105,110,103,45,115,116,97,116,105,111,110,18,100,105,97,109,111,110,100,45,116,117,114,110,45,114,105,103,104, +116,12,100,114,97,119,45,112,111,108,121,103,111,110,11,108,97,112,116,111,112,45,99,111,100,101,11,108,97,121,101,114, +45,103,114,111,117,112,19,108,111,99,97,116,105,111,110,45,99,114,111,115,115,104,97,105,114,115,5,108,117,110,103,115, +10,109,105,99,114,111,115,99,111,112,101,7,111,105,108,45,99,97,110,4,112,111,111,112,6,115,104,97,112,101,115,12, +115,116,97,114,45,111,102,45,108,105,102,101,5,103,97,117,103,101,10,103,97,117,103,101,45,104,105,103,104,12,103,97, +117,103,101,45,115,105,109,112,108,101,17,103,97,117,103,101,45,115,105,109,112,108,101,45,104,105,103,104,5,116,101,101, +116,104,10,116,101,101,116,104,45,111,112,101,110,13,109,97,115,107,115,45,116,104,101,97,116,101,114,13,116,114,97,102, +102,105,99,45,108,105,103,104,116,13,116,114,117,99,107,45,109,111,110,115,116,101,114,12,116,114,117,99,107,45,112,105, +99,107,117,112,12,114,101,99,116,97,110,103,108,101,45,97,100,4,97,110,107,104,10,98,111,111,107,45,98,105,98,108, +101,13,98,117,115,105,110,101,115,115,45,116,105,109,101,4,99,105,116,121,14,99,111,109,109,101,110,116,45,100,111,108, +108,97,114,15,99,111,109,109,101,110,116,115,45,100,111,108,108,97,114,5,99,114,111,115,115,12,100,104,97,114,109,97, +99,104,97,107,114,97,18,101,110,118,101,108,111,112,101,45,111,112,101,110,45,116,101,120,116,12,102,111,108,100,101,114, +45,109,105,110,117,115,11,102,111,108,100,101,114,45,112,108,117,115,20,102,105,108,116,101,114,45,99,105,114,99,108,101, +45,100,111,108,108,97,114,7,103,111,112,117,114,97,109,5,104,97,109,115,97,5,98,97,104,97,105,4,106,101,100,105, +19,98,111,111,107,45,106,111,117,114,110,97,108,45,119,104,105,108,108,115,5,107,97,97,98,97,6,107,104,97,110,100, +97,8,108,97,110,100,109,97,114,107,14,101,110,118,101,108,111,112,101,115,45,98,117,108,107,7,109,101,110,111,114,97, +104,6,109,111,115,113,117,101,2,111,109,24,115,112,97,103,104,101,116,116,105,45,109,111,110,115,116,101,114,45,102,108, +121,105,110,103,5,112,101,97,99,101,16,112,108,97,99,101,45,111,102,45,119,111,114,115,104,105,112,20,115,113,117,97, +114,101,45,112,111,108,108,45,118,101,114,116,105,99,97,108,22,115,113,117,97,114,101,45,112,111,108,108,45,104,111,114, +105,122,111,110,116,97,108,14,112,101,114,115,111,110,45,112,114,97,121,105,110,103,13,104,97,110,100,115,45,112,114,97, +121,105,110,103,10,98,111,111,107,45,113,117,114,97,110,23,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115, +45,100,111,108,108,97,114,25,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115,45,108,111,99,97,116,105,111, +110,5,115,111,99,107,115,20,115,113,117,97,114,101,45,114,111,111,116,45,118,97,114,105,97,98,108,101,17,115,116,97, +114,45,97,110,100,45,99,114,101,115,99,101,110,116,13,115,116,97,114,45,111,102,45,100,97,118,105,100,9,115,121,110, +97,103,111,103,117,101,12,115,99,114,111,108,108,45,116,111,114,97,104,10,116,111,114,105,105,45,103,97,116,101,6,118, +105,104,97,114,97,12,118,111,108,117,109,101,45,120,109,97,114,107,8,121,105,110,45,121,97,110,103,13,98,108,101,110, +100,101,114,45,112,104,111,110,101,10,98,111,111,107,45,115,107,117,108,108,10,99,97,109,112,103,114,111,117,110,100,3, +99,97,116,5,99,104,97,105,114,10,99,108,111,117,100,45,109,111,111,110,9,99,108,111,117,100,45,115,117,110,3,99, +111,119,8,100,105,99,101,45,100,50,48,7,100,105,99,101,45,100,54,3,100,111,103,6,100,114,97,103,111,110,14,100, +114,117,109,115,116,105,99,107,45,98,105,116,101,7,100,117,110,103,101,111,110,8,102,105,108,101,45,99,115,118,9,104, +97,110,100,45,102,105,115,116,5,103,104,111,115,116,6,104,97,109,109,101,114,8,104,97,110,117,107,105,97,104,10,104, +97,116,45,119,105,122,97,114,100,13,112,101,114,115,111,110,45,104,105,107,105,110,103,5,104,105,112,112,111,5,104,111, +114,115,101,19,104,111,117,115,101,45,99,104,105,109,110,101,121,45,99,114,97,99,107,12,104,114,121,118,110,105,97,45, +115,105,103,110,4,109,97,115,107,8,109,111,117,110,116,97,105,110,13,110,101,116,119,111,114,107,45,119,105,114,101,100, +5,111,116,116,101,114,4,114,105,110,103,14,112,101,114,115,111,110,45,114,117,110,110,105,110,103,6,115,99,114,111,108, +108,16,115,107,117,108,108,45,99,114,111,115,115,98,111,110,101,115,5,115,108,97,115,104,6,115,112,105,100,101,114,12, +116,111,105,108,101,116,45,112,97,112,101,114,7,116,114,97,99,116,111,114,12,117,115,101,114,45,105,110,106,117,114,101, +100,12,118,114,45,99,97,114,100,98,111,97,114,100,13,119,97,110,100,45,115,112,97,114,107,108,101,115,4,119,105,110, +100,11,119,105,110,101,45,98,111,116,116,108,101,14,99,108,111,117,100,45,109,101,97,116,98,97,108,108,15,99,108,111, +117,100,45,109,111,111,110,45,114,97,105,110,10,99,108,111,117,100,45,114,97,105,110,19,99,108,111,117,100,45,115,104, +111,119,101,114,115,45,104,101,97,118,121,14,99,108,111,117,100,45,115,117,110,45,114,97,105,110,8,100,101,109,111,99, +114,97,116,8,102,108,97,103,45,117,115,97,9,104,117,114,114,105,99,97,110,101,13,108,97,110,100,109,97,114,107,45, +100,111,109,101,6,109,101,116,101,111,114,12,112,101,114,115,111,110,45,98,111,111,116,104,9,112,111,111,45,115,116,111, +114,109,7,114,97,105,110,98,111,119,10,114,101,112,117,98,108,105,99,97,110,4,115,109,111,103,16,116,101,109,112,101, +114,97,116,117,114,101,45,104,105,103,104,15,116,101,109,112,101,114,97,116,117,114,101,45,108,111,119,10,99,108,111,117, +100,45,98,111,108,116,7,116,111,114,110,97,100,111,7,118,111,108,99,97,110,111,13,99,104,101,99,107,45,116,111,45, +115,108,111,116,5,119,97,116,101,114,4,98,97,98,121,13,98,97,98,121,45,99,97,114,114,105,97,103,101,9,98,105, +111,104,97,122,97,114,100,4,98,108,111,103,12,99,97,108,101,110,100,97,114,45,100,97,121,13,99,97,108,101,110,100, +97,114,45,119,101,101,107,10,99,97,110,100,121,45,99,97,110,101,6,99,97,114,114,111,116,13,99,97,115,104,45,114, +101,103,105,115,116,101,114,8,109,105,110,105,109,105,122,101,8,100,117,109,112,115,116,101,114,13,100,117,109,112,115,116, +101,114,45,102,105,114,101,8,101,116,104,101,114,110,101,116,5,103,105,102,116,115,17,99,104,97,109,112,97,103,110,101, +45,103,108,97,115,115,101,115,13,119,104,105,115,107,101,121,45,103,108,97,115,115,12,101,97,114,116,104,45,101,117,114, +111,112,101,10,103,114,105,112,45,108,105,110,101,115,19,103,114,105,112,45,108,105,110,101,115,45,118,101,114,116,105,99, +97,108,6,103,117,105,116,97,114,11,104,101,97,114,116,45,99,114,97,99,107,11,104,111,108,108,121,45,98,101,114,114, +121,10,104,111,114,115,101,45,104,101,97,100,7,105,99,105,99,108,101,115,5,105,103,108,111,111,6,109,105,116,116,101, +110,7,109,117,103,45,104,111,116,9,114,97,100,105,97,116,105,111,110,16,99,105,114,99,108,101,45,114,97,100,105,97, +116,105,111,110,8,114,101,115,116,114,111,111,109,9,115,97,116,101,108,108,105,116,101,14,115,97,116,101,108,108,105,116, +101,45,100,105,115,104,7,115,100,45,99,97,114,100,8,115,105,109,45,99,97,114,100,14,112,101,114,115,111,110,45,115, +107,97,116,105,110,103,13,112,101,114,115,111,110,45,115,107,105,105,110,103,20,112,101,114,115,111,110,45,115,107,105,105, +110,103,45,110,111,114,100,105,99,6,115,108,101,105,103,104,11,99,111,109,109,101,110,116,45,115,109,115,19,112,101,114, +115,111,110,45,115,110,111,119,98,111,97,114,100,105,110,103,7,115,110,111,119,109,97,110,8,115,110,111,119,112,108,111, +119,10,116,101,110,103,101,45,115,105,103,110,6,116,111,105,108,101,116,18,115,99,114,101,119,100,114,105,118,101,114,45, +119,114,101,110,99,104,9,99,97,98,108,101,45,99,97,114,17,102,105,114,101,45,102,108,97,109,101,45,99,117,114,118, +101,100,5,98,97,99,111,110,12,98,111,111,107,45,109,101,100,105,99,97,108,11,98,114,101,97,100,45,115,108,105,99, +101,6,99,104,101,101,115,101,21,104,111,117,115,101,45,99,104,105,109,110,101,121,45,109,101,100,105,99,97,108,14,99, +108,105,112,98,111,97,114,100,45,117,115,101,114,15,99,111,109,109,101,110,116,45,109,101,100,105,99,97,108,6,99,114, +117,116,99,104,7,100,105,115,101,97,115,101,3,101,103,103,11,102,111,108,100,101,114,45,116,114,101,101,6,98,117,114, +103,101,114,18,104,97,110,100,45,109,105,100,100,108,101,45,102,105,110,103,101,114,13,104,101,108,109,101,116,45,115,97, +102,101,116,121,13,104,111,115,112,105,116,97,108,45,117,115,101,114,6,104,111,116,100,111,103,9,105,99,101,45,99,114, +101,97,109,14,108,97,112,116,111,112,45,109,101,100,105,99,97,108,5,112,97,103,101,114,10,112,101,112,112,101,114,45, +104,111,116,11,112,105,122,122,97,45,115,108,105,99,101,11,115,97,99,107,45,100,111,108,108,97,114,11,98,111,111,107, +45,116,97,110,97,107,104,13,98,97,114,115,45,112,114,111,103,114,101,115,115,14,116,114,97,115,104,45,97,114,114,111, +119,45,117,112,18,116,114,97,115,104,45,99,97,110,45,97,114,114,111,119,45,117,112,10,117,115,101,114,45,110,117,114, +115,101,11,119,97,118,101,45,115,113,117,97,114,101,13,112,101,114,115,111,110,45,98,105,107,105,110,103,10,98,111,114, +100,101,114,45,97,108,108,11,98,111,114,100,101,114,45,110,111,110,101,15,98,111,114,100,101,114,45,116,111,112,45,108, +101,102,116,14,112,101,114,115,111,110,45,100,105,103,103,105,110,103,3,102,97,110,5,105,99,111,110,115,10,112,104,111, +110,101,45,102,108,105,112,17,115,113,117,97,114,101,45,112,104,111,110,101,45,102,108,105,112,10,112,104,111,116,111,45, +102,105,108,109,10,116,101,120,116,45,115,108,97,115,104,14,97,114,114,111,119,45,100,111,119,110,45,122,45,97,12,97, +114,114,111,119,45,117,112,45,122,45,97,21,97,114,114,111,119,45,100,111,119,110,45,115,104,111,114,116,45,119,105,100, +101,19,97,114,114,111,119,45,117,112,45,115,104,111,114,116,45,119,105,100,101,14,97,114,114,111,119,45,100,111,119,110, +45,57,45,49,12,97,114,114,111,119,45,117,112,45,57,45,49,11,115,112,101,108,108,45,99,104,101,99,107,9,118,111, +105,99,101,109,97,105,108,10,104,97,116,45,99,111,119,98,111,121,15,104,97,116,45,99,111,119,98,111,121,45,115,105, +100,101,14,99,111,109,112,117,116,101,114,45,109,111,117,115,101,5,114,97,100,105,111,12,114,101,99,111,114,100,45,118, +105,110,121,108,13,119,97,108,107,105,101,45,116,97,108,107,105,101,7,99,97,114,97,118,97,110,0,0, +}; diff --git a/Editor/ForceFieldWindow.cpp b/Editor/ForceFieldWindow.cpp index 67f31ee87..ac78e679f 100644 --- a/Editor/ForceFieldWindow.cpp +++ b/Editor/ForceFieldWindow.cpp @@ -9,60 +9,32 @@ using namespace wi::scene; void ForceFieldWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Force Field Window"); + wi::gui::Window::Create(ICON_FORCE " Force Field", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(420, 120)); - float x = 150; + closeButton.SetTooltip("Delete ForceFieldComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().forces.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 60; float y = 0; float hei = 18; float step = hei + 2; + float wid = 200; - addButton.Create("Add Force Field"); - addButton.SetSize(XMFLOAT2(150, hei)); - addButton.SetPos(XMFLOAT2(x, y)); - addButton.OnClick([=](wi::gui::EventArgs args) { - Entity entity = editor->GetCurrentScene().Entity_CreateForce("editorForce"); - ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); - if (force != nullptr) - { - switch (typeComboBox.GetSelected()) - { - case 0: - force->type = ENTITY_TYPE_FORCEFIELD_POINT; - break; - case 1: - force->type = ENTITY_TYPE_FORCEFIELD_PLANE; - break; - default: - assert(0); - break; - } - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - } - else - { - assert(0); - } - }); - addButton.SetEnabled(true); - addButton.SetTooltip("Add new Force Field to the simulation."); - AddWidget(&addButton); - - typeComboBox.Create("Force Field type: "); - typeComboBox.SetPos(XMFLOAT2(x, y += step)); - typeComboBox.SetSize(XMFLOAT2(200, hei)); + typeComboBox.Create("Type: "); + typeComboBox.SetPos(XMFLOAT2(x, y)); + typeComboBox.SetSize(XMFLOAT2(wid, hei)); typeComboBox.OnSelect([&](wi::gui::EventArgs args) { ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); if (force != nullptr && args.iValue >= 0) @@ -89,7 +61,7 @@ void ForceFieldWindow::Create(EditorComponent* _editor) gravitySlider.Create(-10, 10, 0, 100000, "Gravity: "); - gravitySlider.SetSize(XMFLOAT2(200, hei)); + gravitySlider.SetSize(XMFLOAT2(wid, hei)); gravitySlider.SetPos(XMFLOAT2(x, y += step)); gravitySlider.OnSlide([&](wi::gui::EventArgs args) { ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); @@ -104,7 +76,7 @@ void ForceFieldWindow::Create(EditorComponent* _editor) rangeSlider.Create(0.0f, 100.0f, 10, 100000, "Range: "); - rangeSlider.SetSize(XMFLOAT2(200, hei)); + rangeSlider.SetSize(XMFLOAT2(wid, hei)); rangeSlider.SetPos(XMFLOAT2(x, y += step)); rangeSlider.OnSlide([&](wi::gui::EventArgs args) { ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); @@ -119,7 +91,7 @@ void ForceFieldWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 720, 50, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -147,5 +119,4 @@ void ForceFieldWindow::SetEntity(Entity entity) rangeSlider.SetEnabled(false); } - addButton.SetEnabled(true); } diff --git a/Editor/ForceFieldWindow.h b/Editor/ForceFieldWindow.h index 9aa3b1099..0be55fec4 100644 --- a/Editor/ForceFieldWindow.h +++ b/Editor/ForceFieldWindow.h @@ -15,6 +15,5 @@ public: wi::gui::ComboBox typeComboBox; wi::gui::Slider gravitySlider; wi::gui::Slider rangeSlider; - wi::gui::Button addButton; }; diff --git a/Editor/HairParticleWindow.cpp b/Editor/HairParticleWindow.cpp index 3185bedfe..875648ebf 100644 --- a/Editor/HairParticleWindow.cpp +++ b/Editor/HairParticleWindow.cpp @@ -8,41 +8,32 @@ using namespace wi::scene; void HairParticleWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Hair Particle System Window"); + wi::gui::Window::Create(ICON_HAIR " Hair Particle System", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(600, 260)); - float x = 160; + closeButton.SetTooltip("Delete HairParticleSystem"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().hairs.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 120; float y = 0; float hei = 18; float step = hei + 2; - - - addButton.Create("Add Hair Particle System"); - addButton.SetPos(XMFLOAT2(x, y)); - addButton.SetSize(XMFLOAT2(200, hei)); - addButton.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - Entity entity = scene.Entity_CreateHair("editorHair"); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - addButton.SetTooltip("Add new hair particle system."); - AddWidget(&addButton); + float wid = 150; meshComboBox.Create("Mesh: "); - meshComboBox.SetSize(XMFLOAT2(300, hei)); - meshComboBox.SetPos(XMFLOAT2(x, y += step)); + meshComboBox.SetSize(XMFLOAT2(wid, hei)); + meshComboBox.SetPos(XMFLOAT2(x, y)); meshComboBox.SetEnabled(false); meshComboBox.OnSelect([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -63,7 +54,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&meshComboBox); countSlider.Create(0, 100000, 1000, 100000, "Strand Count: "); - countSlider.SetSize(XMFLOAT2(360, hei)); + countSlider.SetSize(XMFLOAT2(wid, hei)); countSlider.SetPos(XMFLOAT2(x, y += step)); countSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -76,8 +67,8 @@ void HairParticleWindow::Create(EditorComponent* _editor) countSlider.SetTooltip("Set hair strand count"); AddWidget(&countSlider); - lengthSlider.Create(0, 4, 1, 100000, "Particle Length: "); - lengthSlider.SetSize(XMFLOAT2(360, hei)); + lengthSlider.Create(0, 4, 1, 100000, "Length: "); + lengthSlider.SetSize(XMFLOAT2(wid, hei)); lengthSlider.SetPos(XMFLOAT2(x, y += step)); lengthSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -90,8 +81,8 @@ void HairParticleWindow::Create(EditorComponent* _editor) lengthSlider.SetTooltip("Set hair strand length"); AddWidget(&lengthSlider); - stiffnessSlider.Create(0, 20, 5, 100000, "Particle Stiffness: "); - stiffnessSlider.SetSize(XMFLOAT2(360, hei)); + stiffnessSlider.Create(0, 20, 5, 100000, "Stiffness: "); + stiffnessSlider.SetSize(XMFLOAT2(wid, hei)); stiffnessSlider.SetPos(XMFLOAT2(x, y += step)); stiffnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -104,8 +95,8 @@ void HairParticleWindow::Create(EditorComponent* _editor) stiffnessSlider.SetTooltip("Set hair strand stiffness, how much it tries to get back to rest position."); AddWidget(&stiffnessSlider); - randomnessSlider.Create(0, 1, 0.2f, 100000, "Particle Randomness: "); - randomnessSlider.SetSize(XMFLOAT2(360, hei)); + randomnessSlider.Create(0, 1, 0.2f, 100000, "Randomness: "); + randomnessSlider.SetSize(XMFLOAT2(wid, hei)); randomnessSlider.SetPos(XMFLOAT2(x, y += step)); randomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -119,7 +110,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&randomnessSlider); segmentcountSlider.Create(1, 10, 1, 9, "Segment Count: "); - segmentcountSlider.SetSize(XMFLOAT2(360, hei)); + segmentcountSlider.SetSize(XMFLOAT2(wid, hei)); segmentcountSlider.SetPos(XMFLOAT2(x, y += step)); segmentcountSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -133,7 +124,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&segmentcountSlider); randomSeedSlider.Create(1, 12345, 1, 12344, "Random seed: "); - randomSeedSlider.SetSize(XMFLOAT2(360, hei)); + randomSeedSlider.SetSize(XMFLOAT2(wid, hei)); randomSeedSlider.SetPos(XMFLOAT2(x, y += step)); randomSeedSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -147,7 +138,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&randomSeedSlider); viewDistanceSlider.Create(0, 1000, 100, 10000, "View distance: "); - viewDistanceSlider.SetSize(XMFLOAT2(360, hei)); + viewDistanceSlider.SetSize(XMFLOAT2(wid, hei)); viewDistanceSlider.SetPos(XMFLOAT2(x, y += step)); viewDistanceSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -176,7 +167,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&framesXInput); framesYInput.Create(""); - framesYInput.SetPos(XMFLOAT2(x + 250, y)); + framesYInput.SetPos(XMFLOAT2(x, y += step)); framesYInput.SetSize(XMFLOAT2(40, hei)); framesYInput.SetText(""); framesYInput.SetTooltip("How many vertical frames there are in the spritesheet."); @@ -208,7 +199,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&frameCountInput); frameStartInput.Create(""); - frameStartInput.SetPos(XMFLOAT2(x + 250, y)); + frameStartInput.SetPos(XMFLOAT2(x, y += step)); frameStartInput.SetSize(XMFLOAT2(40, hei)); frameStartInput.SetText(""); frameStartInput.SetTooltip("Specifies the first frame of the sheet that can be used."); @@ -225,7 +216,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(200, 50, 0)); + SetMinimized(true); SetVisible(false); SetEntity(entity); @@ -258,7 +249,6 @@ void HairParticleWindow::SetEntity(Entity entity) SetEnabled(false); } - addButton.SetEnabled(true); } wi::HairParticleSystem* HairParticleWindow::GetHair() diff --git a/Editor/HairParticleWindow.h b/Editor/HairParticleWindow.h index 346638adb..4cce0445f 100644 --- a/Editor/HairParticleWindow.h +++ b/Editor/HairParticleWindow.h @@ -18,7 +18,6 @@ public: wi::HairParticleSystem* GetHair(); - wi::gui::Button addButton; wi::gui::ComboBox meshComboBox; wi::gui::Slider lengthSlider; wi::gui::Slider stiffnessSlider; diff --git a/Editor/IKWindow.cpp b/Editor/IKWindow.cpp index 25f46af73..0e3ba0d66 100644 --- a/Editor/IKWindow.cpp +++ b/Editor/IKWindow.cpp @@ -9,24 +9,32 @@ using namespace wi::scene; void IKWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Inverse Kinematics (IK) Window"); - SetSize(XMFLOAT2(400, 150)); + wi::gui::Window::Create("Inverse Kinematics", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(400, 110)); + + closeButton.SetTooltip("Delete InverseKinematicsComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().inverse_kinematics.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 120; float y = 0; - float siz = 200; + float siz = 140; float hei = 18; float step = hei + 2; - createButton.Create("Create"); - createButton.SetTooltip("Create/Remove IK Component to selected entity"); - createButton.SetPos(XMFLOAT2(x, y)); - createButton.SetSize(XMFLOAT2(siz, hei)); - AddWidget(&createButton); - targetCombo.Create("Target: "); targetCombo.SetSize(XMFLOAT2(siz, hei)); - targetCombo.SetPos(XMFLOAT2(x, y += step)); + targetCombo.SetPos(XMFLOAT2(x, y)); targetCombo.SetEnabled(false); targetCombo.OnSelect([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -73,7 +81,7 @@ void IKWindow::Create(EditorComponent* _editor) }); AddWidget(&iterationCountSlider); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 740, 150, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -113,26 +121,4 @@ void IKWindow::SetEntity(Entity entity) SetEnabled(false); } - const TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - createButton.SetEnabled(true); - - if (ik == nullptr) - { - createButton.SetText("Create"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().inverse_kinematics.Create(entity).chain_length = 1; - SetEntity(entity); - }); - } - else - { - createButton.SetText("Remove"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().inverse_kinematics.Remove_KeepSorted(entity); - SetEntity(entity); - }); - } - } } diff --git a/Editor/IKWindow.h b/Editor/IKWindow.h index 4a3b216cd..1edcc8c3c 100644 --- a/Editor/IKWindow.h +++ b/Editor/IKWindow.h @@ -12,7 +12,6 @@ public: wi::ecs::Entity entity; void SetEntity(wi::ecs::Entity entity); - wi::gui::Button createButton; wi::gui::ComboBox targetCombo; wi::gui::CheckBox disabledCheckBox; wi::gui::Slider chainLengthSlider; diff --git a/Editor/IconDefinitions.h b/Editor/IconDefinitions.h new file mode 100644 index 000000000..f362f25d6 --- /dev/null +++ b/Editor/IconDefinitions.h @@ -0,0 +1,33 @@ +#pragma once +#include "IconsFontAwesome6.h" // icon descriptions, source: https://github.com/juliettef/IconFontCppHeaders + +// These map the Font Awesome icon definitions to editor: +// These definitions will help to change icons that are scattered throughout the editor codeL +#define ICON_LAYER ICON_FA_LAYER_GROUP +#define ICON_TRANSFORM ICON_FA_LOCATION_DOT +#define ICON_MESH ICON_FA_CUBE +#define ICON_OBJECT ICON_FA_CUBES +#define ICON_RIGIDBODY ICON_FA_CUBES_STACKED +#define ICON_SOFTBODY ICON_FA_FLAG +#define ICON_EMITTER ICON_FA_FIRE +#define ICON_HAIR ICON_FA_SEEDLING +#define ICON_FORCE ICON_FA_WIND +#define ICON_SOUND ICON_FA_VOLUME_HIGH +#define ICON_DECAL ICON_FA_NOTE_STICKY +#define ICON_CAMERA ICON_FA_VIDEO +#define ICON_ENVIRONMENTPROBE ICON_FA_EARTH_ASIA +#define ICON_ANIMATION ICON_FA_PLAY +#define ICON_ARMATURE ICON_FA_PERSON +#define ICON_POINTLIGHT ICON_FA_LIGHTBULB +#define ICON_SPOTLIGHT ICON_FA_LIGHTBULB // todo: find better one for spotlight +#define ICON_DIRECTIONALLIGHT ICON_FA_SUN +#define ICON_MATERIAL ICON_FA_FILL_DRIP +#define ICON_WEATHER ICON_FA_CLOUD + +#define ICON_TERRAIN ICON_FA_MOUNTAIN_SUN + +#define ICON_SAVE ICON_FA_FLOPPY_DISK +#define ICON_OPEN ICON_FA_FOLDER_OPEN +#define ICON_CLOSE ICON_FA_TRASH +#define ICON_HELP ICON_FA_CIRCLE_QUESTION +#define ICON_EXIT ICON_FA_CIRCLE_XMARK diff --git a/Editor/IconsFontAwesome6.h b/Editor/IconsFontAwesome6.h new file mode 100644 index 000000000..a56c5f5da --- /dev/null +++ b/Editor/IconsFontAwesome6.h @@ -0,0 +1,1396 @@ +// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++ +// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml +// for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-solid-900.ttf +#pragma once + +#define FONT_ICON_FILE_NAME_FAR "fa-regular-400.ttf" +#define FONT_ICON_FILE_NAME_FAS "fa-solid-900.ttf" + +#define ICON_MIN_FA 0xe005 +#define ICON_MAX_16_FA 0xf8ff +#define ICON_MAX_FA 0xf8ff +#define ICON_FA_0 "0" // U+0030 +#define ICON_FA_1 "1" // U+0031 +#define ICON_FA_2 "2" // U+0032 +#define ICON_FA_3 "3" // U+0033 +#define ICON_FA_4 "4" // U+0034 +#define ICON_FA_5 "5" // U+0035 +#define ICON_FA_6 "6" // U+0036 +#define ICON_FA_7 "7" // U+0037 +#define ICON_FA_8 "8" // U+0038 +#define ICON_FA_9 "9" // U+0039 +#define ICON_FA_A "A" // U+0041 +#define ICON_FA_ADDRESS_BOOK "\xef\x8a\xb9" // U+f2b9 +#define ICON_FA_ADDRESS_CARD "\xef\x8a\xbb" // U+f2bb +#define ICON_FA_ALIGN_CENTER "\xef\x80\xb7" // U+f037 +#define ICON_FA_ALIGN_JUSTIFY "\xef\x80\xb9" // U+f039 +#define ICON_FA_ALIGN_LEFT "\xef\x80\xb6" // U+f036 +#define ICON_FA_ALIGN_RIGHT "\xef\x80\xb8" // U+f038 +#define ICON_FA_ANCHOR "\xef\x84\xbd" // U+f13d +#define ICON_FA_ANCHOR_CIRCLE_CHECK "\xee\x92\xaa" // U+e4aa +#define ICON_FA_ANCHOR_CIRCLE_EXCLAMATION "\xee\x92\xab" // U+e4ab +#define ICON_FA_ANCHOR_CIRCLE_XMARK "\xee\x92\xac" // U+e4ac +#define ICON_FA_ANCHOR_LOCK "\xee\x92\xad" // U+e4ad +#define ICON_FA_ANGLE_DOWN "\xef\x84\x87" // U+f107 +#define ICON_FA_ANGLE_LEFT "\xef\x84\x84" // U+f104 +#define ICON_FA_ANGLE_RIGHT "\xef\x84\x85" // U+f105 +#define ICON_FA_ANGLE_UP "\xef\x84\x86" // U+f106 +#define ICON_FA_ANGLES_DOWN "\xef\x84\x83" // U+f103 +#define ICON_FA_ANGLES_LEFT "\xef\x84\x80" // U+f100 +#define ICON_FA_ANGLES_RIGHT "\xef\x84\x81" // U+f101 +#define ICON_FA_ANGLES_UP "\xef\x84\x82" // U+f102 +#define ICON_FA_ANKH "\xef\x99\x84" // U+f644 +#define ICON_FA_APPLE_WHOLE "\xef\x97\x91" // U+f5d1 +#define ICON_FA_ARCHWAY "\xef\x95\x97" // U+f557 +#define ICON_FA_ARROW_DOWN "\xef\x81\xa3" // U+f063 +#define ICON_FA_ARROW_DOWN_1_9 "\xef\x85\xa2" // U+f162 +#define ICON_FA_ARROW_DOWN_9_1 "\xef\xa2\x86" // U+f886 +#define ICON_FA_ARROW_DOWN_A_Z "\xef\x85\x9d" // U+f15d +#define ICON_FA_ARROW_DOWN_LONG "\xef\x85\xb5" // U+f175 +#define ICON_FA_ARROW_DOWN_SHORT_WIDE "\xef\xa2\x84" // U+f884 +#define ICON_FA_ARROW_DOWN_UP_ACROSS_LINE "\xee\x92\xaf" // U+e4af +#define ICON_FA_ARROW_DOWN_UP_LOCK "\xee\x92\xb0" // U+e4b0 +#define ICON_FA_ARROW_DOWN_WIDE_SHORT "\xef\x85\xa0" // U+f160 +#define ICON_FA_ARROW_DOWN_Z_A "\xef\xa2\x81" // U+f881 +#define ICON_FA_ARROW_LEFT "\xef\x81\xa0" // U+f060 +#define ICON_FA_ARROW_LEFT_LONG "\xef\x85\xb7" // U+f177 +#define ICON_FA_ARROW_POINTER "\xef\x89\x85" // U+f245 +#define ICON_FA_ARROW_RIGHT "\xef\x81\xa1" // U+f061 +#define ICON_FA_ARROW_RIGHT_ARROW_LEFT "\xef\x83\xac" // U+f0ec +#define ICON_FA_ARROW_RIGHT_FROM_BRACKET "\xef\x82\x8b" // U+f08b +#define ICON_FA_ARROW_RIGHT_LONG "\xef\x85\xb8" // U+f178 +#define ICON_FA_ARROW_RIGHT_TO_BRACKET "\xef\x82\x90" // U+f090 +#define ICON_FA_ARROW_RIGHT_TO_CITY "\xee\x92\xb3" // U+e4b3 +#define ICON_FA_ARROW_ROTATE_LEFT "\xef\x83\xa2" // U+f0e2 +#define ICON_FA_ARROW_ROTATE_RIGHT "\xef\x80\x9e" // U+f01e +#define ICON_FA_ARROW_TREND_DOWN "\xee\x82\x97" // U+e097 +#define ICON_FA_ARROW_TREND_UP "\xee\x82\x98" // U+e098 +#define ICON_FA_ARROW_TURN_DOWN "\xef\x85\x89" // U+f149 +#define ICON_FA_ARROW_TURN_UP "\xef\x85\x88" // U+f148 +#define ICON_FA_ARROW_UP "\xef\x81\xa2" // U+f062 +#define ICON_FA_ARROW_UP_1_9 "\xef\x85\xa3" // U+f163 +#define ICON_FA_ARROW_UP_9_1 "\xef\xa2\x87" // U+f887 +#define ICON_FA_ARROW_UP_A_Z "\xef\x85\x9e" // U+f15e +#define ICON_FA_ARROW_UP_FROM_BRACKET "\xee\x82\x9a" // U+e09a +#define ICON_FA_ARROW_UP_FROM_GROUND_WATER "\xee\x92\xb5" // U+e4b5 +#define ICON_FA_ARROW_UP_FROM_WATER_PUMP "\xee\x92\xb6" // U+e4b6 +#define ICON_FA_ARROW_UP_LONG "\xef\x85\xb6" // U+f176 +#define ICON_FA_ARROW_UP_RIGHT_DOTS "\xee\x92\xb7" // U+e4b7 +#define ICON_FA_ARROW_UP_RIGHT_FROM_SQUARE "\xef\x82\x8e" // U+f08e +#define ICON_FA_ARROW_UP_SHORT_WIDE "\xef\xa2\x85" // U+f885 +#define ICON_FA_ARROW_UP_WIDE_SHORT "\xef\x85\xa1" // U+f161 +#define ICON_FA_ARROW_UP_Z_A "\xef\xa2\x82" // U+f882 +#define ICON_FA_ARROWS_DOWN_TO_LINE "\xee\x92\xb8" // U+e4b8 +#define ICON_FA_ARROWS_DOWN_TO_PEOPLE "\xee\x92\xb9" // U+e4b9 +#define ICON_FA_ARROWS_LEFT_RIGHT "\xef\x81\xbe" // U+f07e +#define ICON_FA_ARROWS_LEFT_RIGHT_TO_LINE "\xee\x92\xba" // U+e4ba +#define ICON_FA_ARROWS_ROTATE "\xef\x80\xa1" // U+f021 +#define ICON_FA_ARROWS_SPIN "\xee\x92\xbb" // U+e4bb +#define ICON_FA_ARROWS_SPLIT_UP_AND_LEFT "\xee\x92\xbc" // U+e4bc +#define ICON_FA_ARROWS_TO_CIRCLE "\xee\x92\xbd" // U+e4bd +#define ICON_FA_ARROWS_TO_DOT "\xee\x92\xbe" // U+e4be +#define ICON_FA_ARROWS_TO_EYE "\xee\x92\xbf" // U+e4bf +#define ICON_FA_ARROWS_TURN_RIGHT "\xee\x93\x80" // U+e4c0 +#define ICON_FA_ARROWS_TURN_TO_DOTS "\xee\x93\x81" // U+e4c1 +#define ICON_FA_ARROWS_UP_DOWN "\xef\x81\xbd" // U+f07d +#define ICON_FA_ARROWS_UP_DOWN_LEFT_RIGHT "\xef\x81\x87" // U+f047 +#define ICON_FA_ARROWS_UP_TO_LINE "\xee\x93\x82" // U+e4c2 +#define ICON_FA_ASTERISK "*" // U+002a +#define ICON_FA_AT "@" // U+0040 +#define ICON_FA_ATOM "\xef\x97\x92" // U+f5d2 +#define ICON_FA_AUDIO_DESCRIPTION "\xef\x8a\x9e" // U+f29e +#define ICON_FA_AUSTRAL_SIGN "\xee\x82\xa9" // U+e0a9 +#define ICON_FA_AWARD "\xef\x95\x99" // U+f559 +#define ICON_FA_B "B" // U+0042 +#define ICON_FA_BABY "\xef\x9d\xbc" // U+f77c +#define ICON_FA_BABY_CARRIAGE "\xef\x9d\xbd" // U+f77d +#define ICON_FA_BACKWARD "\xef\x81\x8a" // U+f04a +#define ICON_FA_BACKWARD_FAST "\xef\x81\x89" // U+f049 +#define ICON_FA_BACKWARD_STEP "\xef\x81\x88" // U+f048 +#define ICON_FA_BACON "\xef\x9f\xa5" // U+f7e5 +#define ICON_FA_BACTERIA "\xee\x81\x99" // U+e059 +#define ICON_FA_BACTERIUM "\xee\x81\x9a" // U+e05a +#define ICON_FA_BAG_SHOPPING "\xef\x8a\x90" // U+f290 +#define ICON_FA_BAHAI "\xef\x99\xa6" // U+f666 +#define ICON_FA_BAHT_SIGN "\xee\x82\xac" // U+e0ac +#define ICON_FA_BAN "\xef\x81\x9e" // U+f05e +#define ICON_FA_BAN_SMOKING "\xef\x95\x8d" // U+f54d +#define ICON_FA_BANDAGE "\xef\x91\xa2" // U+f462 +#define ICON_FA_BARCODE "\xef\x80\xaa" // U+f02a +#define ICON_FA_BARS "\xef\x83\x89" // U+f0c9 +#define ICON_FA_BARS_PROGRESS "\xef\xa0\xa8" // U+f828 +#define ICON_FA_BARS_STAGGERED "\xef\x95\x90" // U+f550 +#define ICON_FA_BASEBALL "\xef\x90\xb3" // U+f433 +#define ICON_FA_BASEBALL_BAT_BALL "\xef\x90\xb2" // U+f432 +#define ICON_FA_BASKET_SHOPPING "\xef\x8a\x91" // U+f291 +#define ICON_FA_BASKETBALL "\xef\x90\xb4" // U+f434 +#define ICON_FA_BATH "\xef\x8b\x8d" // U+f2cd +#define ICON_FA_BATTERY_EMPTY "\xef\x89\x84" // U+f244 +#define ICON_FA_BATTERY_FULL "\xef\x89\x80" // U+f240 +#define ICON_FA_BATTERY_HALF "\xef\x89\x82" // U+f242 +#define ICON_FA_BATTERY_QUARTER "\xef\x89\x83" // U+f243 +#define ICON_FA_BATTERY_THREE_QUARTERS "\xef\x89\x81" // U+f241 +#define ICON_FA_BED "\xef\x88\xb6" // U+f236 +#define ICON_FA_BED_PULSE "\xef\x92\x87" // U+f487 +#define ICON_FA_BEER_MUG_EMPTY "\xef\x83\xbc" // U+f0fc +#define ICON_FA_BELL "\xef\x83\xb3" // U+f0f3 +#define ICON_FA_BELL_CONCIERGE "\xef\x95\xa2" // U+f562 +#define ICON_FA_BELL_SLASH "\xef\x87\xb6" // U+f1f6 +#define ICON_FA_BEZIER_CURVE "\xef\x95\x9b" // U+f55b +#define ICON_FA_BICYCLE "\xef\x88\x86" // U+f206 +#define ICON_FA_BINOCULARS "\xef\x87\xa5" // U+f1e5 +#define ICON_FA_BIOHAZARD "\xef\x9e\x80" // U+f780 +#define ICON_FA_BITCOIN_SIGN "\xee\x82\xb4" // U+e0b4 +#define ICON_FA_BLENDER "\xef\x94\x97" // U+f517 +#define ICON_FA_BLENDER_PHONE "\xef\x9a\xb6" // U+f6b6 +#define ICON_FA_BLOG "\xef\x9e\x81" // U+f781 +#define ICON_FA_BOLD "\xef\x80\xb2" // U+f032 +#define ICON_FA_BOLT "\xef\x83\xa7" // U+f0e7 +#define ICON_FA_BOLT_LIGHTNING "\xee\x82\xb7" // U+e0b7 +#define ICON_FA_BOMB "\xef\x87\xa2" // U+f1e2 +#define ICON_FA_BONE "\xef\x97\x97" // U+f5d7 +#define ICON_FA_BONG "\xef\x95\x9c" // U+f55c +#define ICON_FA_BOOK "\xef\x80\xad" // U+f02d +#define ICON_FA_BOOK_ATLAS "\xef\x95\x98" // U+f558 +#define ICON_FA_BOOK_BIBLE "\xef\x99\x87" // U+f647 +#define ICON_FA_BOOK_BOOKMARK "\xee\x82\xbb" // U+e0bb +#define ICON_FA_BOOK_JOURNAL_WHILLS "\xef\x99\xaa" // U+f66a +#define ICON_FA_BOOK_MEDICAL "\xef\x9f\xa6" // U+f7e6 +#define ICON_FA_BOOK_OPEN "\xef\x94\x98" // U+f518 +#define ICON_FA_BOOK_OPEN_READER "\xef\x97\x9a" // U+f5da +#define ICON_FA_BOOK_QURAN "\xef\x9a\x87" // U+f687 +#define ICON_FA_BOOK_SKULL "\xef\x9a\xb7" // U+f6b7 +#define ICON_FA_BOOKMARK "\xef\x80\xae" // U+f02e +#define ICON_FA_BORDER_ALL "\xef\xa1\x8c" // U+f84c +#define ICON_FA_BORDER_NONE "\xef\xa1\x90" // U+f850 +#define ICON_FA_BORDER_TOP_LEFT "\xef\xa1\x93" // U+f853 +#define ICON_FA_BORE_HOLE "\xee\x93\x83" // U+e4c3 +#define ICON_FA_BOTTLE_DROPLET "\xee\x93\x84" // U+e4c4 +#define ICON_FA_BOTTLE_WATER "\xee\x93\x85" // U+e4c5 +#define ICON_FA_BOWL_FOOD "\xee\x93\x86" // U+e4c6 +#define ICON_FA_BOWL_RICE "\xee\x8b\xab" // U+e2eb +#define ICON_FA_BOWLING_BALL "\xef\x90\xb6" // U+f436 +#define ICON_FA_BOX "\xef\x91\xa6" // U+f466 +#define ICON_FA_BOX_ARCHIVE "\xef\x86\x87" // U+f187 +#define ICON_FA_BOX_OPEN "\xef\x92\x9e" // U+f49e +#define ICON_FA_BOX_TISSUE "\xee\x81\x9b" // U+e05b +#define ICON_FA_BOXES_PACKING "\xee\x93\x87" // U+e4c7 +#define ICON_FA_BOXES_STACKED "\xef\x91\xa8" // U+f468 +#define ICON_FA_BRAILLE "\xef\x8a\xa1" // U+f2a1 +#define ICON_FA_BRAIN "\xef\x97\x9c" // U+f5dc +#define ICON_FA_BRAZILIAN_REAL_SIGN "\xee\x91\xac" // U+e46c +#define ICON_FA_BREAD_SLICE "\xef\x9f\xac" // U+f7ec +#define ICON_FA_BRIDGE "\xee\x93\x88" // U+e4c8 +#define ICON_FA_BRIDGE_CIRCLE_CHECK "\xee\x93\x89" // U+e4c9 +#define ICON_FA_BRIDGE_CIRCLE_EXCLAMATION "\xee\x93\x8a" // U+e4ca +#define ICON_FA_BRIDGE_CIRCLE_XMARK "\xee\x93\x8b" // U+e4cb +#define ICON_FA_BRIDGE_LOCK "\xee\x93\x8c" // U+e4cc +#define ICON_FA_BRIDGE_WATER "\xee\x93\x8e" // U+e4ce +#define ICON_FA_BRIEFCASE "\xef\x82\xb1" // U+f0b1 +#define ICON_FA_BRIEFCASE_MEDICAL "\xef\x91\xa9" // U+f469 +#define ICON_FA_BROOM "\xef\x94\x9a" // U+f51a +#define ICON_FA_BROOM_BALL "\xef\x91\x98" // U+f458 +#define ICON_FA_BRUSH "\xef\x95\x9d" // U+f55d +#define ICON_FA_BUCKET "\xee\x93\x8f" // U+e4cf +#define ICON_FA_BUG "\xef\x86\x88" // U+f188 +#define ICON_FA_BUG_SLASH "\xee\x92\x90" // U+e490 +#define ICON_FA_BUGS "\xee\x93\x90" // U+e4d0 +#define ICON_FA_BUILDING "\xef\x86\xad" // U+f1ad +#define ICON_FA_BUILDING_CIRCLE_ARROW_RIGHT "\xee\x93\x91" // U+e4d1 +#define ICON_FA_BUILDING_CIRCLE_CHECK "\xee\x93\x92" // U+e4d2 +#define ICON_FA_BUILDING_CIRCLE_EXCLAMATION "\xee\x93\x93" // U+e4d3 +#define ICON_FA_BUILDING_CIRCLE_XMARK "\xee\x93\x94" // U+e4d4 +#define ICON_FA_BUILDING_COLUMNS "\xef\x86\x9c" // U+f19c +#define ICON_FA_BUILDING_FLAG "\xee\x93\x95" // U+e4d5 +#define ICON_FA_BUILDING_LOCK "\xee\x93\x96" // U+e4d6 +#define ICON_FA_BUILDING_NGO "\xee\x93\x97" // U+e4d7 +#define ICON_FA_BUILDING_SHIELD "\xee\x93\x98" // U+e4d8 +#define ICON_FA_BUILDING_UN "\xee\x93\x99" // U+e4d9 +#define ICON_FA_BUILDING_USER "\xee\x93\x9a" // U+e4da +#define ICON_FA_BUILDING_WHEAT "\xee\x93\x9b" // U+e4db +#define ICON_FA_BULLHORN "\xef\x82\xa1" // U+f0a1 +#define ICON_FA_BULLSEYE "\xef\x85\x80" // U+f140 +#define ICON_FA_BURGER "\xef\xa0\x85" // U+f805 +#define ICON_FA_BURST "\xee\x93\x9c" // U+e4dc +#define ICON_FA_BUS "\xef\x88\x87" // U+f207 +#define ICON_FA_BUS_SIMPLE "\xef\x95\x9e" // U+f55e +#define ICON_FA_BUSINESS_TIME "\xef\x99\x8a" // U+f64a +#define ICON_FA_C "C" // U+0043 +#define ICON_FA_CAKE_CANDLES "\xef\x87\xbd" // U+f1fd +#define ICON_FA_CALCULATOR "\xef\x87\xac" // U+f1ec +#define ICON_FA_CALENDAR "\xef\x84\xb3" // U+f133 +#define ICON_FA_CALENDAR_CHECK "\xef\x89\xb4" // U+f274 +#define ICON_FA_CALENDAR_DAY "\xef\x9e\x83" // U+f783 +#define ICON_FA_CALENDAR_DAYS "\xef\x81\xb3" // U+f073 +#define ICON_FA_CALENDAR_MINUS "\xef\x89\xb2" // U+f272 +#define ICON_FA_CALENDAR_PLUS "\xef\x89\xb1" // U+f271 +#define ICON_FA_CALENDAR_WEEK "\xef\x9e\x84" // U+f784 +#define ICON_FA_CALENDAR_XMARK "\xef\x89\xb3" // U+f273 +#define ICON_FA_CAMERA "\xef\x80\xb0" // U+f030 +#define ICON_FA_CAMERA_RETRO "\xef\x82\x83" // U+f083 +#define ICON_FA_CAMERA_ROTATE "\xee\x83\x98" // U+e0d8 +#define ICON_FA_CAMPGROUND "\xef\x9a\xbb" // U+f6bb +#define ICON_FA_CANDY_CANE "\xef\x9e\x86" // U+f786 +#define ICON_FA_CANNABIS "\xef\x95\x9f" // U+f55f +#define ICON_FA_CAPSULES "\xef\x91\xab" // U+f46b +#define ICON_FA_CAR "\xef\x86\xb9" // U+f1b9 +#define ICON_FA_CAR_BATTERY "\xef\x97\x9f" // U+f5df +#define ICON_FA_CAR_BURST "\xef\x97\xa1" // U+f5e1 +#define ICON_FA_CAR_ON "\xee\x93\x9d" // U+e4dd +#define ICON_FA_CAR_REAR "\xef\x97\x9e" // U+f5de +#define ICON_FA_CAR_SIDE "\xef\x97\xa4" // U+f5e4 +#define ICON_FA_CAR_TUNNEL "\xee\x93\x9e" // U+e4de +#define ICON_FA_CARAVAN "\xef\xa3\xbf" // U+f8ff +#define ICON_FA_CARET_DOWN "\xef\x83\x97" // U+f0d7 +#define ICON_FA_CARET_LEFT "\xef\x83\x99" // U+f0d9 +#define ICON_FA_CARET_RIGHT "\xef\x83\x9a" // U+f0da +#define ICON_FA_CARET_UP "\xef\x83\x98" // U+f0d8 +#define ICON_FA_CARROT "\xef\x9e\x87" // U+f787 +#define ICON_FA_CART_ARROW_DOWN "\xef\x88\x98" // U+f218 +#define ICON_FA_CART_FLATBED "\xef\x91\xb4" // U+f474 +#define ICON_FA_CART_FLATBED_SUITCASE "\xef\x96\x9d" // U+f59d +#define ICON_FA_CART_PLUS "\xef\x88\x97" // U+f217 +#define ICON_FA_CART_SHOPPING "\xef\x81\xba" // U+f07a +#define ICON_FA_CASH_REGISTER "\xef\x9e\x88" // U+f788 +#define ICON_FA_CAT "\xef\x9a\xbe" // U+f6be +#define ICON_FA_CEDI_SIGN "\xee\x83\x9f" // U+e0df +#define ICON_FA_CENT_SIGN "\xee\x8f\xb5" // U+e3f5 +#define ICON_FA_CERTIFICATE "\xef\x82\xa3" // U+f0a3 +#define ICON_FA_CHAIR "\xef\x9b\x80" // U+f6c0 +#define ICON_FA_CHALKBOARD "\xef\x94\x9b" // U+f51b +#define ICON_FA_CHALKBOARD_USER "\xef\x94\x9c" // U+f51c +#define ICON_FA_CHAMPAGNE_GLASSES "\xef\x9e\x9f" // U+f79f +#define ICON_FA_CHARGING_STATION "\xef\x97\xa7" // U+f5e7 +#define ICON_FA_CHART_AREA "\xef\x87\xbe" // U+f1fe +#define ICON_FA_CHART_BAR "\xef\x82\x80" // U+f080 +#define ICON_FA_CHART_COLUMN "\xee\x83\xa3" // U+e0e3 +#define ICON_FA_CHART_GANTT "\xee\x83\xa4" // U+e0e4 +#define ICON_FA_CHART_LINE "\xef\x88\x81" // U+f201 +#define ICON_FA_CHART_PIE "\xef\x88\x80" // U+f200 +#define ICON_FA_CHART_SIMPLE "\xee\x91\xb3" // U+e473 +#define ICON_FA_CHECK "\xef\x80\x8c" // U+f00c +#define ICON_FA_CHECK_DOUBLE "\xef\x95\xa0" // U+f560 +#define ICON_FA_CHECK_TO_SLOT "\xef\x9d\xb2" // U+f772 +#define ICON_FA_CHEESE "\xef\x9f\xaf" // U+f7ef +#define ICON_FA_CHESS "\xef\x90\xb9" // U+f439 +#define ICON_FA_CHESS_BISHOP "\xef\x90\xba" // U+f43a +#define ICON_FA_CHESS_BOARD "\xef\x90\xbc" // U+f43c +#define ICON_FA_CHESS_KING "\xef\x90\xbf" // U+f43f +#define ICON_FA_CHESS_KNIGHT "\xef\x91\x81" // U+f441 +#define ICON_FA_CHESS_PAWN "\xef\x91\x83" // U+f443 +#define ICON_FA_CHESS_QUEEN "\xef\x91\x85" // U+f445 +#define ICON_FA_CHESS_ROOK "\xef\x91\x87" // U+f447 +#define ICON_FA_CHEVRON_DOWN "\xef\x81\xb8" // U+f078 +#define ICON_FA_CHEVRON_LEFT "\xef\x81\x93" // U+f053 +#define ICON_FA_CHEVRON_RIGHT "\xef\x81\x94" // U+f054 +#define ICON_FA_CHEVRON_UP "\xef\x81\xb7" // U+f077 +#define ICON_FA_CHILD "\xef\x86\xae" // U+f1ae +#define ICON_FA_CHILD_DRESS "\xee\x96\x9c" // U+e59c +#define ICON_FA_CHILD_REACHING "\xee\x96\x9d" // U+e59d +#define ICON_FA_CHILD_RIFLE "\xee\x93\xa0" // U+e4e0 +#define ICON_FA_CHILDREN "\xee\x93\xa1" // U+e4e1 +#define ICON_FA_CHURCH "\xef\x94\x9d" // U+f51d +#define ICON_FA_CIRCLE "\xef\x84\x91" // U+f111 +#define ICON_FA_CIRCLE_ARROW_DOWN "\xef\x82\xab" // U+f0ab +#define ICON_FA_CIRCLE_ARROW_LEFT "\xef\x82\xa8" // U+f0a8 +#define ICON_FA_CIRCLE_ARROW_RIGHT "\xef\x82\xa9" // U+f0a9 +#define ICON_FA_CIRCLE_ARROW_UP "\xef\x82\xaa" // U+f0aa +#define ICON_FA_CIRCLE_CHECK "\xef\x81\x98" // U+f058 +#define ICON_FA_CIRCLE_CHEVRON_DOWN "\xef\x84\xba" // U+f13a +#define ICON_FA_CIRCLE_CHEVRON_LEFT "\xef\x84\xb7" // U+f137 +#define ICON_FA_CIRCLE_CHEVRON_RIGHT "\xef\x84\xb8" // U+f138 +#define ICON_FA_CIRCLE_CHEVRON_UP "\xef\x84\xb9" // U+f139 +#define ICON_FA_CIRCLE_DOLLAR_TO_SLOT "\xef\x92\xb9" // U+f4b9 +#define ICON_FA_CIRCLE_DOT "\xef\x86\x92" // U+f192 +#define ICON_FA_CIRCLE_DOWN "\xef\x8d\x98" // U+f358 +#define ICON_FA_CIRCLE_EXCLAMATION "\xef\x81\xaa" // U+f06a +#define ICON_FA_CIRCLE_H "\xef\x91\xbe" // U+f47e +#define ICON_FA_CIRCLE_HALF_STROKE "\xef\x81\x82" // U+f042 +#define ICON_FA_CIRCLE_INFO "\xef\x81\x9a" // U+f05a +#define ICON_FA_CIRCLE_LEFT "\xef\x8d\x99" // U+f359 +#define ICON_FA_CIRCLE_MINUS "\xef\x81\x96" // U+f056 +#define ICON_FA_CIRCLE_NODES "\xee\x93\xa2" // U+e4e2 +#define ICON_FA_CIRCLE_NOTCH "\xef\x87\x8e" // U+f1ce +#define ICON_FA_CIRCLE_PAUSE "\xef\x8a\x8b" // U+f28b +#define ICON_FA_CIRCLE_PLAY "\xef\x85\x84" // U+f144 +#define ICON_FA_CIRCLE_PLUS "\xef\x81\x95" // U+f055 +#define ICON_FA_CIRCLE_QUESTION "\xef\x81\x99" // U+f059 +#define ICON_FA_CIRCLE_RADIATION "\xef\x9e\xba" // U+f7ba +#define ICON_FA_CIRCLE_RIGHT "\xef\x8d\x9a" // U+f35a +#define ICON_FA_CIRCLE_STOP "\xef\x8a\x8d" // U+f28d +#define ICON_FA_CIRCLE_UP "\xef\x8d\x9b" // U+f35b +#define ICON_FA_CIRCLE_USER "\xef\x8a\xbd" // U+f2bd +#define ICON_FA_CIRCLE_XMARK "\xef\x81\x97" // U+f057 +#define ICON_FA_CITY "\xef\x99\x8f" // U+f64f +#define ICON_FA_CLAPPERBOARD "\xee\x84\xb1" // U+e131 +#define ICON_FA_CLIPBOARD "\xef\x8c\xa8" // U+f328 +#define ICON_FA_CLIPBOARD_CHECK "\xef\x91\xac" // U+f46c +#define ICON_FA_CLIPBOARD_LIST "\xef\x91\xad" // U+f46d +#define ICON_FA_CLIPBOARD_QUESTION "\xee\x93\xa3" // U+e4e3 +#define ICON_FA_CLIPBOARD_USER "\xef\x9f\xb3" // U+f7f3 +#define ICON_FA_CLOCK "\xef\x80\x97" // U+f017 +#define ICON_FA_CLOCK_ROTATE_LEFT "\xef\x87\x9a" // U+f1da +#define ICON_FA_CLONE "\xef\x89\x8d" // U+f24d +#define ICON_FA_CLOSED_CAPTIONING "\xef\x88\x8a" // U+f20a +#define ICON_FA_CLOUD "\xef\x83\x82" // U+f0c2 +#define ICON_FA_CLOUD_ARROW_DOWN "\xef\x83\xad" // U+f0ed +#define ICON_FA_CLOUD_ARROW_UP "\xef\x83\xae" // U+f0ee +#define ICON_FA_CLOUD_BOLT "\xef\x9d\xac" // U+f76c +#define ICON_FA_CLOUD_MEATBALL "\xef\x9c\xbb" // U+f73b +#define ICON_FA_CLOUD_MOON "\xef\x9b\x83" // U+f6c3 +#define ICON_FA_CLOUD_MOON_RAIN "\xef\x9c\xbc" // U+f73c +#define ICON_FA_CLOUD_RAIN "\xef\x9c\xbd" // U+f73d +#define ICON_FA_CLOUD_SHOWERS_HEAVY "\xef\x9d\x80" // U+f740 +#define ICON_FA_CLOUD_SHOWERS_WATER "\xee\x93\xa4" // U+e4e4 +#define ICON_FA_CLOUD_SUN "\xef\x9b\x84" // U+f6c4 +#define ICON_FA_CLOUD_SUN_RAIN "\xef\x9d\x83" // U+f743 +#define ICON_FA_CLOVER "\xee\x84\xb9" // U+e139 +#define ICON_FA_CODE "\xef\x84\xa1" // U+f121 +#define ICON_FA_CODE_BRANCH "\xef\x84\xa6" // U+f126 +#define ICON_FA_CODE_COMMIT "\xef\x8e\x86" // U+f386 +#define ICON_FA_CODE_COMPARE "\xee\x84\xba" // U+e13a +#define ICON_FA_CODE_FORK "\xee\x84\xbb" // U+e13b +#define ICON_FA_CODE_MERGE "\xef\x8e\x87" // U+f387 +#define ICON_FA_CODE_PULL_REQUEST "\xee\x84\xbc" // U+e13c +#define ICON_FA_COINS "\xef\x94\x9e" // U+f51e +#define ICON_FA_COLON_SIGN "\xee\x85\x80" // U+e140 +#define ICON_FA_COMMENT "\xef\x81\xb5" // U+f075 +#define ICON_FA_COMMENT_DOLLAR "\xef\x99\x91" // U+f651 +#define ICON_FA_COMMENT_DOTS "\xef\x92\xad" // U+f4ad +#define ICON_FA_COMMENT_MEDICAL "\xef\x9f\xb5" // U+f7f5 +#define ICON_FA_COMMENT_SLASH "\xef\x92\xb3" // U+f4b3 +#define ICON_FA_COMMENT_SMS "\xef\x9f\x8d" // U+f7cd +#define ICON_FA_COMMENTS "\xef\x82\x86" // U+f086 +#define ICON_FA_COMMENTS_DOLLAR "\xef\x99\x93" // U+f653 +#define ICON_FA_COMPACT_DISC "\xef\x94\x9f" // U+f51f +#define ICON_FA_COMPASS "\xef\x85\x8e" // U+f14e +#define ICON_FA_COMPASS_DRAFTING "\xef\x95\xa8" // U+f568 +#define ICON_FA_COMPRESS "\xef\x81\xa6" // U+f066 +#define ICON_FA_COMPUTER "\xee\x93\xa5" // U+e4e5 +#define ICON_FA_COMPUTER_MOUSE "\xef\xa3\x8c" // U+f8cc +#define ICON_FA_COOKIE "\xef\x95\xa3" // U+f563 +#define ICON_FA_COOKIE_BITE "\xef\x95\xa4" // U+f564 +#define ICON_FA_COPY "\xef\x83\x85" // U+f0c5 +#define ICON_FA_COPYRIGHT "\xef\x87\xb9" // U+f1f9 +#define ICON_FA_COUCH "\xef\x92\xb8" // U+f4b8 +#define ICON_FA_COW "\xef\x9b\x88" // U+f6c8 +#define ICON_FA_CREDIT_CARD "\xef\x82\x9d" // U+f09d +#define ICON_FA_CROP "\xef\x84\xa5" // U+f125 +#define ICON_FA_CROP_SIMPLE "\xef\x95\xa5" // U+f565 +#define ICON_FA_CROSS "\xef\x99\x94" // U+f654 +#define ICON_FA_CROSSHAIRS "\xef\x81\x9b" // U+f05b +#define ICON_FA_CROW "\xef\x94\xa0" // U+f520 +#define ICON_FA_CROWN "\xef\x94\xa1" // U+f521 +#define ICON_FA_CRUTCH "\xef\x9f\xb7" // U+f7f7 +#define ICON_FA_CRUZEIRO_SIGN "\xee\x85\x92" // U+e152 +#define ICON_FA_CUBE "\xef\x86\xb2" // U+f1b2 +#define ICON_FA_CUBES "\xef\x86\xb3" // U+f1b3 +#define ICON_FA_CUBES_STACKED "\xee\x93\xa6" // U+e4e6 +#define ICON_FA_D "D" // U+0044 +#define ICON_FA_DATABASE "\xef\x87\x80" // U+f1c0 +#define ICON_FA_DELETE_LEFT "\xef\x95\x9a" // U+f55a +#define ICON_FA_DEMOCRAT "\xef\x9d\x87" // U+f747 +#define ICON_FA_DESKTOP "\xef\x8e\x90" // U+f390 +#define ICON_FA_DHARMACHAKRA "\xef\x99\x95" // U+f655 +#define ICON_FA_DIAGRAM_NEXT "\xee\x91\xb6" // U+e476 +#define ICON_FA_DIAGRAM_PREDECESSOR "\xee\x91\xb7" // U+e477 +#define ICON_FA_DIAGRAM_PROJECT "\xef\x95\x82" // U+f542 +#define ICON_FA_DIAGRAM_SUCCESSOR "\xee\x91\xba" // U+e47a +#define ICON_FA_DIAMOND "\xef\x88\x99" // U+f219 +#define ICON_FA_DIAMOND_TURN_RIGHT "\xef\x97\xab" // U+f5eb +#define ICON_FA_DICE "\xef\x94\xa2" // U+f522 +#define ICON_FA_DICE_D20 "\xef\x9b\x8f" // U+f6cf +#define ICON_FA_DICE_D6 "\xef\x9b\x91" // U+f6d1 +#define ICON_FA_DICE_FIVE "\xef\x94\xa3" // U+f523 +#define ICON_FA_DICE_FOUR "\xef\x94\xa4" // U+f524 +#define ICON_FA_DICE_ONE "\xef\x94\xa5" // U+f525 +#define ICON_FA_DICE_SIX "\xef\x94\xa6" // U+f526 +#define ICON_FA_DICE_THREE "\xef\x94\xa7" // U+f527 +#define ICON_FA_DICE_TWO "\xef\x94\xa8" // U+f528 +#define ICON_FA_DISEASE "\xef\x9f\xba" // U+f7fa +#define ICON_FA_DISPLAY "\xee\x85\xa3" // U+e163 +#define ICON_FA_DIVIDE "\xef\x94\xa9" // U+f529 +#define ICON_FA_DNA "\xef\x91\xb1" // U+f471 +#define ICON_FA_DOG "\xef\x9b\x93" // U+f6d3 +#define ICON_FA_DOLLAR_SIGN "$" // U+0024 +#define ICON_FA_DOLLY "\xef\x91\xb2" // U+f472 +#define ICON_FA_DONG_SIGN "\xee\x85\xa9" // U+e169 +#define ICON_FA_DOOR_CLOSED "\xef\x94\xaa" // U+f52a +#define ICON_FA_DOOR_OPEN "\xef\x94\xab" // U+f52b +#define ICON_FA_DOVE "\xef\x92\xba" // U+f4ba +#define ICON_FA_DOWN_LEFT_AND_UP_RIGHT_TO_CENTER "\xef\x90\xa2" // U+f422 +#define ICON_FA_DOWN_LONG "\xef\x8c\x89" // U+f309 +#define ICON_FA_DOWNLOAD "\xef\x80\x99" // U+f019 +#define ICON_FA_DRAGON "\xef\x9b\x95" // U+f6d5 +#define ICON_FA_DRAW_POLYGON "\xef\x97\xae" // U+f5ee +#define ICON_FA_DROPLET "\xef\x81\x83" // U+f043 +#define ICON_FA_DROPLET_SLASH "\xef\x97\x87" // U+f5c7 +#define ICON_FA_DRUM "\xef\x95\xa9" // U+f569 +#define ICON_FA_DRUM_STEELPAN "\xef\x95\xaa" // U+f56a +#define ICON_FA_DRUMSTICK_BITE "\xef\x9b\x97" // U+f6d7 +#define ICON_FA_DUMBBELL "\xef\x91\x8b" // U+f44b +#define ICON_FA_DUMPSTER "\xef\x9e\x93" // U+f793 +#define ICON_FA_DUMPSTER_FIRE "\xef\x9e\x94" // U+f794 +#define ICON_FA_DUNGEON "\xef\x9b\x99" // U+f6d9 +#define ICON_FA_E "E" // U+0045 +#define ICON_FA_EAR_DEAF "\xef\x8a\xa4" // U+f2a4 +#define ICON_FA_EAR_LISTEN "\xef\x8a\xa2" // U+f2a2 +#define ICON_FA_EARTH_AFRICA "\xef\x95\xbc" // U+f57c +#define ICON_FA_EARTH_AMERICAS "\xef\x95\xbd" // U+f57d +#define ICON_FA_EARTH_ASIA "\xef\x95\xbe" // U+f57e +#define ICON_FA_EARTH_EUROPE "\xef\x9e\xa2" // U+f7a2 +#define ICON_FA_EARTH_OCEANIA "\xee\x91\xbb" // U+e47b +#define ICON_FA_EGG "\xef\x9f\xbb" // U+f7fb +#define ICON_FA_EJECT "\xef\x81\x92" // U+f052 +#define ICON_FA_ELEVATOR "\xee\x85\xad" // U+e16d +#define ICON_FA_ELLIPSIS "\xef\x85\x81" // U+f141 +#define ICON_FA_ELLIPSIS_VERTICAL "\xef\x85\x82" // U+f142 +#define ICON_FA_ENVELOPE "\xef\x83\xa0" // U+f0e0 +#define ICON_FA_ENVELOPE_CIRCLE_CHECK "\xee\x93\xa8" // U+e4e8 +#define ICON_FA_ENVELOPE_OPEN "\xef\x8a\xb6" // U+f2b6 +#define ICON_FA_ENVELOPE_OPEN_TEXT "\xef\x99\x98" // U+f658 +#define ICON_FA_ENVELOPES_BULK "\xef\x99\xb4" // U+f674 +#define ICON_FA_EQUALS "=" // U+003d +#define ICON_FA_ERASER "\xef\x84\xad" // U+f12d +#define ICON_FA_ETHERNET "\xef\x9e\x96" // U+f796 +#define ICON_FA_EURO_SIGN "\xef\x85\x93" // U+f153 +#define ICON_FA_EXCLAMATION "!" // U+0021 +#define ICON_FA_EXPAND "\xef\x81\xa5" // U+f065 +#define ICON_FA_EXPLOSION "\xee\x93\xa9" // U+e4e9 +#define ICON_FA_EYE "\xef\x81\xae" // U+f06e +#define ICON_FA_EYE_DROPPER "\xef\x87\xbb" // U+f1fb +#define ICON_FA_EYE_LOW_VISION "\xef\x8a\xa8" // U+f2a8 +#define ICON_FA_EYE_SLASH "\xef\x81\xb0" // U+f070 +#define ICON_FA_F "F" // U+0046 +#define ICON_FA_FACE_ANGRY "\xef\x95\x96" // U+f556 +#define ICON_FA_FACE_DIZZY "\xef\x95\xa7" // U+f567 +#define ICON_FA_FACE_FLUSHED "\xef\x95\xb9" // U+f579 +#define ICON_FA_FACE_FROWN "\xef\x84\x99" // U+f119 +#define ICON_FA_FACE_FROWN_OPEN "\xef\x95\xba" // U+f57a +#define ICON_FA_FACE_GRIMACE "\xef\x95\xbf" // U+f57f +#define ICON_FA_FACE_GRIN "\xef\x96\x80" // U+f580 +#define ICON_FA_FACE_GRIN_BEAM "\xef\x96\x82" // U+f582 +#define ICON_FA_FACE_GRIN_BEAM_SWEAT "\xef\x96\x83" // U+f583 +#define ICON_FA_FACE_GRIN_HEARTS "\xef\x96\x84" // U+f584 +#define ICON_FA_FACE_GRIN_SQUINT "\xef\x96\x85" // U+f585 +#define ICON_FA_FACE_GRIN_SQUINT_TEARS "\xef\x96\x86" // U+f586 +#define ICON_FA_FACE_GRIN_STARS "\xef\x96\x87" // U+f587 +#define ICON_FA_FACE_GRIN_TEARS "\xef\x96\x88" // U+f588 +#define ICON_FA_FACE_GRIN_TONGUE "\xef\x96\x89" // U+f589 +#define ICON_FA_FACE_GRIN_TONGUE_SQUINT "\xef\x96\x8a" // U+f58a +#define ICON_FA_FACE_GRIN_TONGUE_WINK "\xef\x96\x8b" // U+f58b +#define ICON_FA_FACE_GRIN_WIDE "\xef\x96\x81" // U+f581 +#define ICON_FA_FACE_GRIN_WINK "\xef\x96\x8c" // U+f58c +#define ICON_FA_FACE_KISS "\xef\x96\x96" // U+f596 +#define ICON_FA_FACE_KISS_BEAM "\xef\x96\x97" // U+f597 +#define ICON_FA_FACE_KISS_WINK_HEART "\xef\x96\x98" // U+f598 +#define ICON_FA_FACE_LAUGH "\xef\x96\x99" // U+f599 +#define ICON_FA_FACE_LAUGH_BEAM "\xef\x96\x9a" // U+f59a +#define ICON_FA_FACE_LAUGH_SQUINT "\xef\x96\x9b" // U+f59b +#define ICON_FA_FACE_LAUGH_WINK "\xef\x96\x9c" // U+f59c +#define ICON_FA_FACE_MEH "\xef\x84\x9a" // U+f11a +#define ICON_FA_FACE_MEH_BLANK "\xef\x96\xa4" // U+f5a4 +#define ICON_FA_FACE_ROLLING_EYES "\xef\x96\xa5" // U+f5a5 +#define ICON_FA_FACE_SAD_CRY "\xef\x96\xb3" // U+f5b3 +#define ICON_FA_FACE_SAD_TEAR "\xef\x96\xb4" // U+f5b4 +#define ICON_FA_FACE_SMILE "\xef\x84\x98" // U+f118 +#define ICON_FA_FACE_SMILE_BEAM "\xef\x96\xb8" // U+f5b8 +#define ICON_FA_FACE_SMILE_WINK "\xef\x93\x9a" // U+f4da +#define ICON_FA_FACE_SURPRISE "\xef\x97\x82" // U+f5c2 +#define ICON_FA_FACE_TIRED "\xef\x97\x88" // U+f5c8 +#define ICON_FA_FAN "\xef\xa1\xa3" // U+f863 +#define ICON_FA_FAUCET "\xee\x80\x85" // U+e005 +#define ICON_FA_FAUCET_DRIP "\xee\x80\x86" // U+e006 +#define ICON_FA_FAX "\xef\x86\xac" // U+f1ac +#define ICON_FA_FEATHER "\xef\x94\xad" // U+f52d +#define ICON_FA_FEATHER_POINTED "\xef\x95\xab" // U+f56b +#define ICON_FA_FERRY "\xee\x93\xaa" // U+e4ea +#define ICON_FA_FILE "\xef\x85\x9b" // U+f15b +#define ICON_FA_FILE_ARROW_DOWN "\xef\x95\xad" // U+f56d +#define ICON_FA_FILE_ARROW_UP "\xef\x95\xb4" // U+f574 +#define ICON_FA_FILE_AUDIO "\xef\x87\x87" // U+f1c7 +#define ICON_FA_FILE_CIRCLE_CHECK "\xee\x92\x93" // U+e493 +#define ICON_FA_FILE_CIRCLE_EXCLAMATION "\xee\x93\xab" // U+e4eb +#define ICON_FA_FILE_CIRCLE_MINUS "\xee\x93\xad" // U+e4ed +#define ICON_FA_FILE_CIRCLE_PLUS "\xee\x93\xae" // U+e4ee +#define ICON_FA_FILE_CIRCLE_QUESTION "\xee\x93\xaf" // U+e4ef +#define ICON_FA_FILE_CIRCLE_XMARK "\xee\x92\x94" // U+e494 +#define ICON_FA_FILE_CODE "\xef\x87\x89" // U+f1c9 +#define ICON_FA_FILE_CONTRACT "\xef\x95\xac" // U+f56c +#define ICON_FA_FILE_CSV "\xef\x9b\x9d" // U+f6dd +#define ICON_FA_FILE_EXCEL "\xef\x87\x83" // U+f1c3 +#define ICON_FA_FILE_EXPORT "\xef\x95\xae" // U+f56e +#define ICON_FA_FILE_IMAGE "\xef\x87\x85" // U+f1c5 +#define ICON_FA_FILE_IMPORT "\xef\x95\xaf" // U+f56f +#define ICON_FA_FILE_INVOICE "\xef\x95\xb0" // U+f570 +#define ICON_FA_FILE_INVOICE_DOLLAR "\xef\x95\xb1" // U+f571 +#define ICON_FA_FILE_LINES "\xef\x85\x9c" // U+f15c +#define ICON_FA_FILE_MEDICAL "\xef\x91\xb7" // U+f477 +#define ICON_FA_FILE_PDF "\xef\x87\x81" // U+f1c1 +#define ICON_FA_FILE_PEN "\xef\x8c\x9c" // U+f31c +#define ICON_FA_FILE_POWERPOINT "\xef\x87\x84" // U+f1c4 +#define ICON_FA_FILE_PRESCRIPTION "\xef\x95\xb2" // U+f572 +#define ICON_FA_FILE_SHIELD "\xee\x93\xb0" // U+e4f0 +#define ICON_FA_FILE_SIGNATURE "\xef\x95\xb3" // U+f573 +#define ICON_FA_FILE_VIDEO "\xef\x87\x88" // U+f1c8 +#define ICON_FA_FILE_WAVEFORM "\xef\x91\xb8" // U+f478 +#define ICON_FA_FILE_WORD "\xef\x87\x82" // U+f1c2 +#define ICON_FA_FILE_ZIPPER "\xef\x87\x86" // U+f1c6 +#define ICON_FA_FILL "\xef\x95\xb5" // U+f575 +#define ICON_FA_FILL_DRIP "\xef\x95\xb6" // U+f576 +#define ICON_FA_FILM "\xef\x80\x88" // U+f008 +#define ICON_FA_FILTER "\xef\x82\xb0" // U+f0b0 +#define ICON_FA_FILTER_CIRCLE_DOLLAR "\xef\x99\xa2" // U+f662 +#define ICON_FA_FILTER_CIRCLE_XMARK "\xee\x85\xbb" // U+e17b +#define ICON_FA_FINGERPRINT "\xef\x95\xb7" // U+f577 +#define ICON_FA_FIRE "\xef\x81\xad" // U+f06d +#define ICON_FA_FIRE_BURNER "\xee\x93\xb1" // U+e4f1 +#define ICON_FA_FIRE_EXTINGUISHER "\xef\x84\xb4" // U+f134 +#define ICON_FA_FIRE_FLAME_CURVED "\xef\x9f\xa4" // U+f7e4 +#define ICON_FA_FIRE_FLAME_SIMPLE "\xef\x91\xaa" // U+f46a +#define ICON_FA_FISH "\xef\x95\xb8" // U+f578 +#define ICON_FA_FISH_FINS "\xee\x93\xb2" // U+e4f2 +#define ICON_FA_FLAG "\xef\x80\xa4" // U+f024 +#define ICON_FA_FLAG_CHECKERED "\xef\x84\x9e" // U+f11e +#define ICON_FA_FLAG_USA "\xef\x9d\x8d" // U+f74d +#define ICON_FA_FLASK "\xef\x83\x83" // U+f0c3 +#define ICON_FA_FLASK_VIAL "\xee\x93\xb3" // U+e4f3 +#define ICON_FA_FLOPPY_DISK "\xef\x83\x87" // U+f0c7 +#define ICON_FA_FLORIN_SIGN "\xee\x86\x84" // U+e184 +#define ICON_FA_FOLDER "\xef\x81\xbb" // U+f07b +#define ICON_FA_FOLDER_CLOSED "\xee\x86\x85" // U+e185 +#define ICON_FA_FOLDER_MINUS "\xef\x99\x9d" // U+f65d +#define ICON_FA_FOLDER_OPEN "\xef\x81\xbc" // U+f07c +#define ICON_FA_FOLDER_PLUS "\xef\x99\x9e" // U+f65e +#define ICON_FA_FOLDER_TREE "\xef\xa0\x82" // U+f802 +#define ICON_FA_FONT "\xef\x80\xb1" // U+f031 +#define ICON_FA_FONT_AWESOME "\xef\x8a\xb4" // U+f2b4 +#define ICON_FA_FOOTBALL "\xef\x91\x8e" // U+f44e +#define ICON_FA_FORWARD "\xef\x81\x8e" // U+f04e +#define ICON_FA_FORWARD_FAST "\xef\x81\x90" // U+f050 +#define ICON_FA_FORWARD_STEP "\xef\x81\x91" // U+f051 +#define ICON_FA_FRANC_SIGN "\xee\x86\x8f" // U+e18f +#define ICON_FA_FROG "\xef\x94\xae" // U+f52e +#define ICON_FA_FUTBOL "\xef\x87\xa3" // U+f1e3 +#define ICON_FA_G "G" // U+0047 +#define ICON_FA_GAMEPAD "\xef\x84\x9b" // U+f11b +#define ICON_FA_GAS_PUMP "\xef\x94\xaf" // U+f52f +#define ICON_FA_GAUGE "\xef\x98\xa4" // U+f624 +#define ICON_FA_GAUGE_HIGH "\xef\x98\xa5" // U+f625 +#define ICON_FA_GAUGE_SIMPLE "\xef\x98\xa9" // U+f629 +#define ICON_FA_GAUGE_SIMPLE_HIGH "\xef\x98\xaa" // U+f62a +#define ICON_FA_GAVEL "\xef\x83\xa3" // U+f0e3 +#define ICON_FA_GEAR "\xef\x80\x93" // U+f013 +#define ICON_FA_GEARS "\xef\x82\x85" // U+f085 +#define ICON_FA_GEM "\xef\x8e\xa5" // U+f3a5 +#define ICON_FA_GENDERLESS "\xef\x88\xad" // U+f22d +#define ICON_FA_GHOST "\xef\x9b\xa2" // U+f6e2 +#define ICON_FA_GIFT "\xef\x81\xab" // U+f06b +#define ICON_FA_GIFTS "\xef\x9e\x9c" // U+f79c +#define ICON_FA_GLASS_WATER "\xee\x93\xb4" // U+e4f4 +#define ICON_FA_GLASS_WATER_DROPLET "\xee\x93\xb5" // U+e4f5 +#define ICON_FA_GLASSES "\xef\x94\xb0" // U+f530 +#define ICON_FA_GLOBE "\xef\x82\xac" // U+f0ac +#define ICON_FA_GOLF_BALL_TEE "\xef\x91\x90" // U+f450 +#define ICON_FA_GOPURAM "\xef\x99\xa4" // U+f664 +#define ICON_FA_GRADUATION_CAP "\xef\x86\x9d" // U+f19d +#define ICON_FA_GREATER_THAN ">" // U+003e +#define ICON_FA_GREATER_THAN_EQUAL "\xef\x94\xb2" // U+f532 +#define ICON_FA_GRIP "\xef\x96\x8d" // U+f58d +#define ICON_FA_GRIP_LINES "\xef\x9e\xa4" // U+f7a4 +#define ICON_FA_GRIP_LINES_VERTICAL "\xef\x9e\xa5" // U+f7a5 +#define ICON_FA_GRIP_VERTICAL "\xef\x96\x8e" // U+f58e +#define ICON_FA_GROUP_ARROWS_ROTATE "\xee\x93\xb6" // U+e4f6 +#define ICON_FA_GUARANI_SIGN "\xee\x86\x9a" // U+e19a +#define ICON_FA_GUITAR "\xef\x9e\xa6" // U+f7a6 +#define ICON_FA_GUN "\xee\x86\x9b" // U+e19b +#define ICON_FA_H "H" // U+0048 +#define ICON_FA_HAMMER "\xef\x9b\xa3" // U+f6e3 +#define ICON_FA_HAMSA "\xef\x99\xa5" // U+f665 +#define ICON_FA_HAND "\xef\x89\x96" // U+f256 +#define ICON_FA_HAND_BACK_FIST "\xef\x89\x95" // U+f255 +#define ICON_FA_HAND_DOTS "\xef\x91\xa1" // U+f461 +#define ICON_FA_HAND_FIST "\xef\x9b\x9e" // U+f6de +#define ICON_FA_HAND_HOLDING "\xef\x92\xbd" // U+f4bd +#define ICON_FA_HAND_HOLDING_DOLLAR "\xef\x93\x80" // U+f4c0 +#define ICON_FA_HAND_HOLDING_DROPLET "\xef\x93\x81" // U+f4c1 +#define ICON_FA_HAND_HOLDING_HAND "\xee\x93\xb7" // U+e4f7 +#define ICON_FA_HAND_HOLDING_HEART "\xef\x92\xbe" // U+f4be +#define ICON_FA_HAND_HOLDING_MEDICAL "\xee\x81\x9c" // U+e05c +#define ICON_FA_HAND_LIZARD "\xef\x89\x98" // U+f258 +#define ICON_FA_HAND_MIDDLE_FINGER "\xef\xa0\x86" // U+f806 +#define ICON_FA_HAND_PEACE "\xef\x89\x9b" // U+f25b +#define ICON_FA_HAND_POINT_DOWN "\xef\x82\xa7" // U+f0a7 +#define ICON_FA_HAND_POINT_LEFT "\xef\x82\xa5" // U+f0a5 +#define ICON_FA_HAND_POINT_RIGHT "\xef\x82\xa4" // U+f0a4 +#define ICON_FA_HAND_POINT_UP "\xef\x82\xa6" // U+f0a6 +#define ICON_FA_HAND_POINTER "\xef\x89\x9a" // U+f25a +#define ICON_FA_HAND_SCISSORS "\xef\x89\x97" // U+f257 +#define ICON_FA_HAND_SPARKLES "\xee\x81\x9d" // U+e05d +#define ICON_FA_HAND_SPOCK "\xef\x89\x99" // U+f259 +#define ICON_FA_HANDCUFFS "\xee\x93\xb8" // U+e4f8 +#define ICON_FA_HANDS "\xef\x8a\xa7" // U+f2a7 +#define ICON_FA_HANDS_ASL_INTERPRETING "\xef\x8a\xa3" // U+f2a3 +#define ICON_FA_HANDS_BOUND "\xee\x93\xb9" // U+e4f9 +#define ICON_FA_HANDS_BUBBLES "\xee\x81\x9e" // U+e05e +#define ICON_FA_HANDS_CLAPPING "\xee\x86\xa8" // U+e1a8 +#define ICON_FA_HANDS_HOLDING "\xef\x93\x82" // U+f4c2 +#define ICON_FA_HANDS_HOLDING_CHILD "\xee\x93\xba" // U+e4fa +#define ICON_FA_HANDS_HOLDING_CIRCLE "\xee\x93\xbb" // U+e4fb +#define ICON_FA_HANDS_PRAYING "\xef\x9a\x84" // U+f684 +#define ICON_FA_HANDSHAKE "\xef\x8a\xb5" // U+f2b5 +#define ICON_FA_HANDSHAKE_ANGLE "\xef\x93\x84" // U+f4c4 +#define ICON_FA_HANDSHAKE_SIMPLE "\xef\x93\x86" // U+f4c6 +#define ICON_FA_HANDSHAKE_SIMPLE_SLASH "\xee\x81\x9f" // U+e05f +#define ICON_FA_HANDSHAKE_SLASH "\xee\x81\xa0" // U+e060 +#define ICON_FA_HANUKIAH "\xef\x9b\xa6" // U+f6e6 +#define ICON_FA_HARD_DRIVE "\xef\x82\xa0" // U+f0a0 +#define ICON_FA_HASHTAG "#" // U+0023 +#define ICON_FA_HAT_COWBOY "\xef\xa3\x80" // U+f8c0 +#define ICON_FA_HAT_COWBOY_SIDE "\xef\xa3\x81" // U+f8c1 +#define ICON_FA_HAT_WIZARD "\xef\x9b\xa8" // U+f6e8 +#define ICON_FA_HEAD_SIDE_COUGH "\xee\x81\xa1" // U+e061 +#define ICON_FA_HEAD_SIDE_COUGH_SLASH "\xee\x81\xa2" // U+e062 +#define ICON_FA_HEAD_SIDE_MASK "\xee\x81\xa3" // U+e063 +#define ICON_FA_HEAD_SIDE_VIRUS "\xee\x81\xa4" // U+e064 +#define ICON_FA_HEADING "\xef\x87\x9c" // U+f1dc +#define ICON_FA_HEADPHONES "\xef\x80\xa5" // U+f025 +#define ICON_FA_HEADPHONES_SIMPLE "\xef\x96\x8f" // U+f58f +#define ICON_FA_HEADSET "\xef\x96\x90" // U+f590 +#define ICON_FA_HEART "\xef\x80\x84" // U+f004 +#define ICON_FA_HEART_CIRCLE_BOLT "\xee\x93\xbc" // U+e4fc +#define ICON_FA_HEART_CIRCLE_CHECK "\xee\x93\xbd" // U+e4fd +#define ICON_FA_HEART_CIRCLE_EXCLAMATION "\xee\x93\xbe" // U+e4fe +#define ICON_FA_HEART_CIRCLE_MINUS "\xee\x93\xbf" // U+e4ff +#define ICON_FA_HEART_CIRCLE_PLUS "\xee\x94\x80" // U+e500 +#define ICON_FA_HEART_CIRCLE_XMARK "\xee\x94\x81" // U+e501 +#define ICON_FA_HEART_CRACK "\xef\x9e\xa9" // U+f7a9 +#define ICON_FA_HEART_PULSE "\xef\x88\x9e" // U+f21e +#define ICON_FA_HELICOPTER "\xef\x94\xb3" // U+f533 +#define ICON_FA_HELICOPTER_SYMBOL "\xee\x94\x82" // U+e502 +#define ICON_FA_HELMET_SAFETY "\xef\xa0\x87" // U+f807 +#define ICON_FA_HELMET_UN "\xee\x94\x83" // U+e503 +#define ICON_FA_HIGHLIGHTER "\xef\x96\x91" // U+f591 +#define ICON_FA_HILL_AVALANCHE "\xee\x94\x87" // U+e507 +#define ICON_FA_HILL_ROCKSLIDE "\xee\x94\x88" // U+e508 +#define ICON_FA_HIPPO "\xef\x9b\xad" // U+f6ed +#define ICON_FA_HOCKEY_PUCK "\xef\x91\x93" // U+f453 +#define ICON_FA_HOLLY_BERRY "\xef\x9e\xaa" // U+f7aa +#define ICON_FA_HORSE "\xef\x9b\xb0" // U+f6f0 +#define ICON_FA_HORSE_HEAD "\xef\x9e\xab" // U+f7ab +#define ICON_FA_HOSPITAL "\xef\x83\xb8" // U+f0f8 +#define ICON_FA_HOSPITAL_USER "\xef\xa0\x8d" // U+f80d +#define ICON_FA_HOT_TUB_PERSON "\xef\x96\x93" // U+f593 +#define ICON_FA_HOTDOG "\xef\xa0\x8f" // U+f80f +#define ICON_FA_HOTEL "\xef\x96\x94" // U+f594 +#define ICON_FA_HOURGLASS "\xef\x89\x94" // U+f254 +#define ICON_FA_HOURGLASS_EMPTY "\xef\x89\x92" // U+f252 +#define ICON_FA_HOURGLASS_END "\xef\x89\x93" // U+f253 +#define ICON_FA_HOURGLASS_START "\xef\x89\x91" // U+f251 +#define ICON_FA_HOUSE "\xef\x80\x95" // U+f015 +#define ICON_FA_HOUSE_CHIMNEY "\xee\x8e\xaf" // U+e3af +#define ICON_FA_HOUSE_CHIMNEY_CRACK "\xef\x9b\xb1" // U+f6f1 +#define ICON_FA_HOUSE_CHIMNEY_MEDICAL "\xef\x9f\xb2" // U+f7f2 +#define ICON_FA_HOUSE_CHIMNEY_USER "\xee\x81\xa5" // U+e065 +#define ICON_FA_HOUSE_CHIMNEY_WINDOW "\xee\x80\x8d" // U+e00d +#define ICON_FA_HOUSE_CIRCLE_CHECK "\xee\x94\x89" // U+e509 +#define ICON_FA_HOUSE_CIRCLE_EXCLAMATION "\xee\x94\x8a" // U+e50a +#define ICON_FA_HOUSE_CIRCLE_XMARK "\xee\x94\x8b" // U+e50b +#define ICON_FA_HOUSE_CRACK "\xee\x8e\xb1" // U+e3b1 +#define ICON_FA_HOUSE_FIRE "\xee\x94\x8c" // U+e50c +#define ICON_FA_HOUSE_FLAG "\xee\x94\x8d" // U+e50d +#define ICON_FA_HOUSE_FLOOD_WATER "\xee\x94\x8e" // U+e50e +#define ICON_FA_HOUSE_FLOOD_WATER_CIRCLE_ARROW_RIGHT "\xee\x94\x8f" // U+e50f +#define ICON_FA_HOUSE_LAPTOP "\xee\x81\xa6" // U+e066 +#define ICON_FA_HOUSE_LOCK "\xee\x94\x90" // U+e510 +#define ICON_FA_HOUSE_MEDICAL "\xee\x8e\xb2" // U+e3b2 +#define ICON_FA_HOUSE_MEDICAL_CIRCLE_CHECK "\xee\x94\x91" // U+e511 +#define ICON_FA_HOUSE_MEDICAL_CIRCLE_EXCLAMATION "\xee\x94\x92" // U+e512 +#define ICON_FA_HOUSE_MEDICAL_CIRCLE_XMARK "\xee\x94\x93" // U+e513 +#define ICON_FA_HOUSE_MEDICAL_FLAG "\xee\x94\x94" // U+e514 +#define ICON_FA_HOUSE_SIGNAL "\xee\x80\x92" // U+e012 +#define ICON_FA_HOUSE_TSUNAMI "\xee\x94\x95" // U+e515 +#define ICON_FA_HOUSE_USER "\xee\x86\xb0" // U+e1b0 +#define ICON_FA_HRYVNIA_SIGN "\xef\x9b\xb2" // U+f6f2 +#define ICON_FA_HURRICANE "\xef\x9d\x91" // U+f751 +#define ICON_FA_I "I" // U+0049 +#define ICON_FA_I_CURSOR "\xef\x89\x86" // U+f246 +#define ICON_FA_ICE_CREAM "\xef\xa0\x90" // U+f810 +#define ICON_FA_ICICLES "\xef\x9e\xad" // U+f7ad +#define ICON_FA_ICONS "\xef\xa1\xad" // U+f86d +#define ICON_FA_ID_BADGE "\xef\x8b\x81" // U+f2c1 +#define ICON_FA_ID_CARD "\xef\x8b\x82" // U+f2c2 +#define ICON_FA_ID_CARD_CLIP "\xef\x91\xbf" // U+f47f +#define ICON_FA_IGLOO "\xef\x9e\xae" // U+f7ae +#define ICON_FA_IMAGE "\xef\x80\xbe" // U+f03e +#define ICON_FA_IMAGE_PORTRAIT "\xef\x8f\xa0" // U+f3e0 +#define ICON_FA_IMAGES "\xef\x8c\x82" // U+f302 +#define ICON_FA_INBOX "\xef\x80\x9c" // U+f01c +#define ICON_FA_INDENT "\xef\x80\xbc" // U+f03c +#define ICON_FA_INDIAN_RUPEE_SIGN "\xee\x86\xbc" // U+e1bc +#define ICON_FA_INDUSTRY "\xef\x89\xb5" // U+f275 +#define ICON_FA_INFINITY "\xef\x94\xb4" // U+f534 +#define ICON_FA_INFO "\xef\x84\xa9" // U+f129 +#define ICON_FA_ITALIC "\xef\x80\xb3" // U+f033 +#define ICON_FA_J "J" // U+004a +#define ICON_FA_JAR "\xee\x94\x96" // U+e516 +#define ICON_FA_JAR_WHEAT "\xee\x94\x97" // U+e517 +#define ICON_FA_JEDI "\xef\x99\xa9" // U+f669 +#define ICON_FA_JET_FIGHTER "\xef\x83\xbb" // U+f0fb +#define ICON_FA_JET_FIGHTER_UP "\xee\x94\x98" // U+e518 +#define ICON_FA_JOINT "\xef\x96\x95" // U+f595 +#define ICON_FA_JUG_DETERGENT "\xee\x94\x99" // U+e519 +#define ICON_FA_K "K" // U+004b +#define ICON_FA_KAABA "\xef\x99\xab" // U+f66b +#define ICON_FA_KEY "\xef\x82\x84" // U+f084 +#define ICON_FA_KEYBOARD "\xef\x84\x9c" // U+f11c +#define ICON_FA_KHANDA "\xef\x99\xad" // U+f66d +#define ICON_FA_KIP_SIGN "\xee\x87\x84" // U+e1c4 +#define ICON_FA_KIT_MEDICAL "\xef\x91\xb9" // U+f479 +#define ICON_FA_KITCHEN_SET "\xee\x94\x9a" // U+e51a +#define ICON_FA_KIWI_BIRD "\xef\x94\xb5" // U+f535 +#define ICON_FA_L "L" // U+004c +#define ICON_FA_LAND_MINE_ON "\xee\x94\x9b" // U+e51b +#define ICON_FA_LANDMARK "\xef\x99\xaf" // U+f66f +#define ICON_FA_LANDMARK_DOME "\xef\x9d\x92" // U+f752 +#define ICON_FA_LANDMARK_FLAG "\xee\x94\x9c" // U+e51c +#define ICON_FA_LANGUAGE "\xef\x86\xab" // U+f1ab +#define ICON_FA_LAPTOP "\xef\x84\x89" // U+f109 +#define ICON_FA_LAPTOP_CODE "\xef\x97\xbc" // U+f5fc +#define ICON_FA_LAPTOP_FILE "\xee\x94\x9d" // U+e51d +#define ICON_FA_LAPTOP_MEDICAL "\xef\xa0\x92" // U+f812 +#define ICON_FA_LARI_SIGN "\xee\x87\x88" // U+e1c8 +#define ICON_FA_LAYER_GROUP "\xef\x97\xbd" // U+f5fd +#define ICON_FA_LEAF "\xef\x81\xac" // U+f06c +#define ICON_FA_LEFT_LONG "\xef\x8c\x8a" // U+f30a +#define ICON_FA_LEFT_RIGHT "\xef\x8c\xb7" // U+f337 +#define ICON_FA_LEMON "\xef\x82\x94" // U+f094 +#define ICON_FA_LESS_THAN "<" // U+003c +#define ICON_FA_LESS_THAN_EQUAL "\xef\x94\xb7" // U+f537 +#define ICON_FA_LIFE_RING "\xef\x87\x8d" // U+f1cd +#define ICON_FA_LIGHTBULB "\xef\x83\xab" // U+f0eb +#define ICON_FA_LINES_LEANING "\xee\x94\x9e" // U+e51e +#define ICON_FA_LINK "\xef\x83\x81" // U+f0c1 +#define ICON_FA_LINK_SLASH "\xef\x84\xa7" // U+f127 +#define ICON_FA_LIRA_SIGN "\xef\x86\x95" // U+f195 +#define ICON_FA_LIST "\xef\x80\xba" // U+f03a +#define ICON_FA_LIST_CHECK "\xef\x82\xae" // U+f0ae +#define ICON_FA_LIST_OL "\xef\x83\x8b" // U+f0cb +#define ICON_FA_LIST_UL "\xef\x83\x8a" // U+f0ca +#define ICON_FA_LITECOIN_SIGN "\xee\x87\x93" // U+e1d3 +#define ICON_FA_LOCATION_ARROW "\xef\x84\xa4" // U+f124 +#define ICON_FA_LOCATION_CROSSHAIRS "\xef\x98\x81" // U+f601 +#define ICON_FA_LOCATION_DOT "\xef\x8f\x85" // U+f3c5 +#define ICON_FA_LOCATION_PIN "\xef\x81\x81" // U+f041 +#define ICON_FA_LOCATION_PIN_LOCK "\xee\x94\x9f" // U+e51f +#define ICON_FA_LOCK "\xef\x80\xa3" // U+f023 +#define ICON_FA_LOCK_OPEN "\xef\x8f\x81" // U+f3c1 +#define ICON_FA_LOCUST "\xee\x94\xa0" // U+e520 +#define ICON_FA_LUNGS "\xef\x98\x84" // U+f604 +#define ICON_FA_LUNGS_VIRUS "\xee\x81\xa7" // U+e067 +#define ICON_FA_M "M" // U+004d +#define ICON_FA_MAGNET "\xef\x81\xb6" // U+f076 +#define ICON_FA_MAGNIFYING_GLASS "\xef\x80\x82" // U+f002 +#define ICON_FA_MAGNIFYING_GLASS_ARROW_RIGHT "\xee\x94\xa1" // U+e521 +#define ICON_FA_MAGNIFYING_GLASS_CHART "\xee\x94\xa2" // U+e522 +#define ICON_FA_MAGNIFYING_GLASS_DOLLAR "\xef\x9a\x88" // U+f688 +#define ICON_FA_MAGNIFYING_GLASS_LOCATION "\xef\x9a\x89" // U+f689 +#define ICON_FA_MAGNIFYING_GLASS_MINUS "\xef\x80\x90" // U+f010 +#define ICON_FA_MAGNIFYING_GLASS_PLUS "\xef\x80\x8e" // U+f00e +#define ICON_FA_MANAT_SIGN "\xee\x87\x95" // U+e1d5 +#define ICON_FA_MAP "\xef\x89\xb9" // U+f279 +#define ICON_FA_MAP_LOCATION "\xef\x96\x9f" // U+f59f +#define ICON_FA_MAP_LOCATION_DOT "\xef\x96\xa0" // U+f5a0 +#define ICON_FA_MAP_PIN "\xef\x89\xb6" // U+f276 +#define ICON_FA_MARKER "\xef\x96\xa1" // U+f5a1 +#define ICON_FA_MARS "\xef\x88\xa2" // U+f222 +#define ICON_FA_MARS_AND_VENUS "\xef\x88\xa4" // U+f224 +#define ICON_FA_MARS_AND_VENUS_BURST "\xee\x94\xa3" // U+e523 +#define ICON_FA_MARS_DOUBLE "\xef\x88\xa7" // U+f227 +#define ICON_FA_MARS_STROKE "\xef\x88\xa9" // U+f229 +#define ICON_FA_MARS_STROKE_RIGHT "\xef\x88\xab" // U+f22b +#define ICON_FA_MARS_STROKE_UP "\xef\x88\xaa" // U+f22a +#define ICON_FA_MARTINI_GLASS "\xef\x95\xbb" // U+f57b +#define ICON_FA_MARTINI_GLASS_CITRUS "\xef\x95\xa1" // U+f561 +#define ICON_FA_MARTINI_GLASS_EMPTY "\xef\x80\x80" // U+f000 +#define ICON_FA_MASK "\xef\x9b\xba" // U+f6fa +#define ICON_FA_MASK_FACE "\xee\x87\x97" // U+e1d7 +#define ICON_FA_MASK_VENTILATOR "\xee\x94\xa4" // U+e524 +#define ICON_FA_MASKS_THEATER "\xef\x98\xb0" // U+f630 +#define ICON_FA_MATTRESS_PILLOW "\xee\x94\xa5" // U+e525 +#define ICON_FA_MAXIMIZE "\xef\x8c\x9e" // U+f31e +#define ICON_FA_MEDAL "\xef\x96\xa2" // U+f5a2 +#define ICON_FA_MEMORY "\xef\x94\xb8" // U+f538 +#define ICON_FA_MENORAH "\xef\x99\xb6" // U+f676 +#define ICON_FA_MERCURY "\xef\x88\xa3" // U+f223 +#define ICON_FA_MESSAGE "\xef\x89\xba" // U+f27a +#define ICON_FA_METEOR "\xef\x9d\x93" // U+f753 +#define ICON_FA_MICROCHIP "\xef\x8b\x9b" // U+f2db +#define ICON_FA_MICROPHONE "\xef\x84\xb0" // U+f130 +#define ICON_FA_MICROPHONE_LINES "\xef\x8f\x89" // U+f3c9 +#define ICON_FA_MICROPHONE_LINES_SLASH "\xef\x94\xb9" // U+f539 +#define ICON_FA_MICROPHONE_SLASH "\xef\x84\xb1" // U+f131 +#define ICON_FA_MICROSCOPE "\xef\x98\x90" // U+f610 +#define ICON_FA_MILL_SIGN "\xee\x87\xad" // U+e1ed +#define ICON_FA_MINIMIZE "\xef\x9e\x8c" // U+f78c +#define ICON_FA_MINUS "\xef\x81\xa8" // U+f068 +#define ICON_FA_MITTEN "\xef\x9e\xb5" // U+f7b5 +#define ICON_FA_MOBILE "\xef\x8f\x8e" // U+f3ce +#define ICON_FA_MOBILE_BUTTON "\xef\x84\x8b" // U+f10b +#define ICON_FA_MOBILE_RETRO "\xee\x94\xa7" // U+e527 +#define ICON_FA_MOBILE_SCREEN "\xef\x8f\x8f" // U+f3cf +#define ICON_FA_MOBILE_SCREEN_BUTTON "\xef\x8f\x8d" // U+f3cd +#define ICON_FA_MONEY_BILL "\xef\x83\x96" // U+f0d6 +#define ICON_FA_MONEY_BILL_1 "\xef\x8f\x91" // U+f3d1 +#define ICON_FA_MONEY_BILL_1_WAVE "\xef\x94\xbb" // U+f53b +#define ICON_FA_MONEY_BILL_TRANSFER "\xee\x94\xa8" // U+e528 +#define ICON_FA_MONEY_BILL_TREND_UP "\xee\x94\xa9" // U+e529 +#define ICON_FA_MONEY_BILL_WAVE "\xef\x94\xba" // U+f53a +#define ICON_FA_MONEY_BILL_WHEAT "\xee\x94\xaa" // U+e52a +#define ICON_FA_MONEY_BILLS "\xee\x87\xb3" // U+e1f3 +#define ICON_FA_MONEY_CHECK "\xef\x94\xbc" // U+f53c +#define ICON_FA_MONEY_CHECK_DOLLAR "\xef\x94\xbd" // U+f53d +#define ICON_FA_MONUMENT "\xef\x96\xa6" // U+f5a6 +#define ICON_FA_MOON "\xef\x86\x86" // U+f186 +#define ICON_FA_MORTAR_PESTLE "\xef\x96\xa7" // U+f5a7 +#define ICON_FA_MOSQUE "\xef\x99\xb8" // U+f678 +#define ICON_FA_MOSQUITO "\xee\x94\xab" // U+e52b +#define ICON_FA_MOSQUITO_NET "\xee\x94\xac" // U+e52c +#define ICON_FA_MOTORCYCLE "\xef\x88\x9c" // U+f21c +#define ICON_FA_MOUND "\xee\x94\xad" // U+e52d +#define ICON_FA_MOUNTAIN "\xef\x9b\xbc" // U+f6fc +#define ICON_FA_MOUNTAIN_CITY "\xee\x94\xae" // U+e52e +#define ICON_FA_MOUNTAIN_SUN "\xee\x94\xaf" // U+e52f +#define ICON_FA_MUG_HOT "\xef\x9e\xb6" // U+f7b6 +#define ICON_FA_MUG_SAUCER "\xef\x83\xb4" // U+f0f4 +#define ICON_FA_MUSIC "\xef\x80\x81" // U+f001 +#define ICON_FA_N "N" // U+004e +#define ICON_FA_NAIRA_SIGN "\xee\x87\xb6" // U+e1f6 +#define ICON_FA_NETWORK_WIRED "\xef\x9b\xbf" // U+f6ff +#define ICON_FA_NEUTER "\xef\x88\xac" // U+f22c +#define ICON_FA_NEWSPAPER "\xef\x87\xaa" // U+f1ea +#define ICON_FA_NOT_EQUAL "\xef\x94\xbe" // U+f53e +#define ICON_FA_NOTE_STICKY "\xef\x89\x89" // U+f249 +#define ICON_FA_NOTES_MEDICAL "\xef\x92\x81" // U+f481 +#define ICON_FA_O "O" // U+004f +#define ICON_FA_OBJECT_GROUP "\xef\x89\x87" // U+f247 +#define ICON_FA_OBJECT_UNGROUP "\xef\x89\x88" // U+f248 +#define ICON_FA_OIL_CAN "\xef\x98\x93" // U+f613 +#define ICON_FA_OIL_WELL "\xee\x94\xb2" // U+e532 +#define ICON_FA_OM "\xef\x99\xb9" // U+f679 +#define ICON_FA_OTTER "\xef\x9c\x80" // U+f700 +#define ICON_FA_OUTDENT "\xef\x80\xbb" // U+f03b +#define ICON_FA_P "P" // U+0050 +#define ICON_FA_PAGER "\xef\xa0\x95" // U+f815 +#define ICON_FA_PAINT_ROLLER "\xef\x96\xaa" // U+f5aa +#define ICON_FA_PAINTBRUSH "\xef\x87\xbc" // U+f1fc +#define ICON_FA_PALETTE "\xef\x94\xbf" // U+f53f +#define ICON_FA_PALLET "\xef\x92\x82" // U+f482 +#define ICON_FA_PANORAMA "\xee\x88\x89" // U+e209 +#define ICON_FA_PAPER_PLANE "\xef\x87\x98" // U+f1d8 +#define ICON_FA_PAPERCLIP "\xef\x83\x86" // U+f0c6 +#define ICON_FA_PARACHUTE_BOX "\xef\x93\x8d" // U+f4cd +#define ICON_FA_PARAGRAPH "\xef\x87\x9d" // U+f1dd +#define ICON_FA_PASSPORT "\xef\x96\xab" // U+f5ab +#define ICON_FA_PASTE "\xef\x83\xaa" // U+f0ea +#define ICON_FA_PAUSE "\xef\x81\x8c" // U+f04c +#define ICON_FA_PAW "\xef\x86\xb0" // U+f1b0 +#define ICON_FA_PEACE "\xef\x99\xbc" // U+f67c +#define ICON_FA_PEN "\xef\x8c\x84" // U+f304 +#define ICON_FA_PEN_CLIP "\xef\x8c\x85" // U+f305 +#define ICON_FA_PEN_FANCY "\xef\x96\xac" // U+f5ac +#define ICON_FA_PEN_NIB "\xef\x96\xad" // U+f5ad +#define ICON_FA_PEN_RULER "\xef\x96\xae" // U+f5ae +#define ICON_FA_PEN_TO_SQUARE "\xef\x81\x84" // U+f044 +#define ICON_FA_PENCIL "\xef\x8c\x83" // U+f303 +#define ICON_FA_PEOPLE_ARROWS_LEFT_RIGHT "\xee\x81\xa8" // U+e068 +#define ICON_FA_PEOPLE_CARRY_BOX "\xef\x93\x8e" // U+f4ce +#define ICON_FA_PEOPLE_GROUP "\xee\x94\xb3" // U+e533 +#define ICON_FA_PEOPLE_LINE "\xee\x94\xb4" // U+e534 +#define ICON_FA_PEOPLE_PULLING "\xee\x94\xb5" // U+e535 +#define ICON_FA_PEOPLE_ROBBERY "\xee\x94\xb6" // U+e536 +#define ICON_FA_PEOPLE_ROOF "\xee\x94\xb7" // U+e537 +#define ICON_FA_PEPPER_HOT "\xef\xa0\x96" // U+f816 +#define ICON_FA_PERCENT "%" // U+0025 +#define ICON_FA_PERSON "\xef\x86\x83" // U+f183 +#define ICON_FA_PERSON_ARROW_DOWN_TO_LINE "\xee\x94\xb8" // U+e538 +#define ICON_FA_PERSON_ARROW_UP_FROM_LINE "\xee\x94\xb9" // U+e539 +#define ICON_FA_PERSON_BIKING "\xef\xa1\x8a" // U+f84a +#define ICON_FA_PERSON_BOOTH "\xef\x9d\x96" // U+f756 +#define ICON_FA_PERSON_BREASTFEEDING "\xee\x94\xba" // U+e53a +#define ICON_FA_PERSON_BURST "\xee\x94\xbb" // U+e53b +#define ICON_FA_PERSON_CANE "\xee\x94\xbc" // U+e53c +#define ICON_FA_PERSON_CHALKBOARD "\xee\x94\xbd" // U+e53d +#define ICON_FA_PERSON_CIRCLE_CHECK "\xee\x94\xbe" // U+e53e +#define ICON_FA_PERSON_CIRCLE_EXCLAMATION "\xee\x94\xbf" // U+e53f +#define ICON_FA_PERSON_CIRCLE_MINUS "\xee\x95\x80" // U+e540 +#define ICON_FA_PERSON_CIRCLE_PLUS "\xee\x95\x81" // U+e541 +#define ICON_FA_PERSON_CIRCLE_QUESTION "\xee\x95\x82" // U+e542 +#define ICON_FA_PERSON_CIRCLE_XMARK "\xee\x95\x83" // U+e543 +#define ICON_FA_PERSON_DIGGING "\xef\xa1\x9e" // U+f85e +#define ICON_FA_PERSON_DOTS_FROM_LINE "\xef\x91\xb0" // U+f470 +#define ICON_FA_PERSON_DRESS "\xef\x86\x82" // U+f182 +#define ICON_FA_PERSON_DRESS_BURST "\xee\x95\x84" // U+e544 +#define ICON_FA_PERSON_DROWNING "\xee\x95\x85" // U+e545 +#define ICON_FA_PERSON_FALLING "\xee\x95\x86" // U+e546 +#define ICON_FA_PERSON_FALLING_BURST "\xee\x95\x87" // U+e547 +#define ICON_FA_PERSON_HALF_DRESS "\xee\x95\x88" // U+e548 +#define ICON_FA_PERSON_HARASSING "\xee\x95\x89" // U+e549 +#define ICON_FA_PERSON_HIKING "\xef\x9b\xac" // U+f6ec +#define ICON_FA_PERSON_MILITARY_POINTING "\xee\x95\x8a" // U+e54a +#define ICON_FA_PERSON_MILITARY_RIFLE "\xee\x95\x8b" // U+e54b +#define ICON_FA_PERSON_MILITARY_TO_PERSON "\xee\x95\x8c" // U+e54c +#define ICON_FA_PERSON_PRAYING "\xef\x9a\x83" // U+f683 +#define ICON_FA_PERSON_PREGNANT "\xee\x8c\x9e" // U+e31e +#define ICON_FA_PERSON_RAYS "\xee\x95\x8d" // U+e54d +#define ICON_FA_PERSON_RIFLE "\xee\x95\x8e" // U+e54e +#define ICON_FA_PERSON_RUNNING "\xef\x9c\x8c" // U+f70c +#define ICON_FA_PERSON_SHELTER "\xee\x95\x8f" // U+e54f +#define ICON_FA_PERSON_SKATING "\xef\x9f\x85" // U+f7c5 +#define ICON_FA_PERSON_SKIING "\xef\x9f\x89" // U+f7c9 +#define ICON_FA_PERSON_SKIING_NORDIC "\xef\x9f\x8a" // U+f7ca +#define ICON_FA_PERSON_SNOWBOARDING "\xef\x9f\x8e" // U+f7ce +#define ICON_FA_PERSON_SWIMMING "\xef\x97\x84" // U+f5c4 +#define ICON_FA_PERSON_THROUGH_WINDOW "\xee\x90\xb3" // U+e433 +#define ICON_FA_PERSON_WALKING "\xef\x95\x94" // U+f554 +#define ICON_FA_PERSON_WALKING_ARROW_LOOP_LEFT "\xee\x95\x91" // U+e551 +#define ICON_FA_PERSON_WALKING_ARROW_RIGHT "\xee\x95\x92" // U+e552 +#define ICON_FA_PERSON_WALKING_DASHED_LINE_ARROW_RIGHT "\xee\x95\x93" // U+e553 +#define ICON_FA_PERSON_WALKING_LUGGAGE "\xee\x95\x94" // U+e554 +#define ICON_FA_PERSON_WALKING_WITH_CANE "\xef\x8a\x9d" // U+f29d +#define ICON_FA_PESETA_SIGN "\xee\x88\xa1" // U+e221 +#define ICON_FA_PESO_SIGN "\xee\x88\xa2" // U+e222 +#define ICON_FA_PHONE "\xef\x82\x95" // U+f095 +#define ICON_FA_PHONE_FLIP "\xef\xa1\xb9" // U+f879 +#define ICON_FA_PHONE_SLASH "\xef\x8f\x9d" // U+f3dd +#define ICON_FA_PHONE_VOLUME "\xef\x8a\xa0" // U+f2a0 +#define ICON_FA_PHOTO_FILM "\xef\xa1\xbc" // U+f87c +#define ICON_FA_PIGGY_BANK "\xef\x93\x93" // U+f4d3 +#define ICON_FA_PILLS "\xef\x92\x84" // U+f484 +#define ICON_FA_PIZZA_SLICE "\xef\xa0\x98" // U+f818 +#define ICON_FA_PLACE_OF_WORSHIP "\xef\x99\xbf" // U+f67f +#define ICON_FA_PLANE "\xef\x81\xb2" // U+f072 +#define ICON_FA_PLANE_ARRIVAL "\xef\x96\xaf" // U+f5af +#define ICON_FA_PLANE_CIRCLE_CHECK "\xee\x95\x95" // U+e555 +#define ICON_FA_PLANE_CIRCLE_EXCLAMATION "\xee\x95\x96" // U+e556 +#define ICON_FA_PLANE_CIRCLE_XMARK "\xee\x95\x97" // U+e557 +#define ICON_FA_PLANE_DEPARTURE "\xef\x96\xb0" // U+f5b0 +#define ICON_FA_PLANE_LOCK "\xee\x95\x98" // U+e558 +#define ICON_FA_PLANE_SLASH "\xee\x81\xa9" // U+e069 +#define ICON_FA_PLANE_UP "\xee\x88\xad" // U+e22d +#define ICON_FA_PLANT_WILT "\xee\x90\xbb" // U+e43b +#define ICON_FA_PLATE_WHEAT "\xee\x95\x9a" // U+e55a +#define ICON_FA_PLAY "\xef\x81\x8b" // U+f04b +#define ICON_FA_PLUG "\xef\x87\xa6" // U+f1e6 +#define ICON_FA_PLUG_CIRCLE_BOLT "\xee\x95\x9b" // U+e55b +#define ICON_FA_PLUG_CIRCLE_CHECK "\xee\x95\x9c" // U+e55c +#define ICON_FA_PLUG_CIRCLE_EXCLAMATION "\xee\x95\x9d" // U+e55d +#define ICON_FA_PLUG_CIRCLE_MINUS "\xee\x95\x9e" // U+e55e +#define ICON_FA_PLUG_CIRCLE_PLUS "\xee\x95\x9f" // U+e55f +#define ICON_FA_PLUG_CIRCLE_XMARK "\xee\x95\xa0" // U+e560 +#define ICON_FA_PLUS "+" // U+002b +#define ICON_FA_PLUS_MINUS "\xee\x90\xbc" // U+e43c +#define ICON_FA_PODCAST "\xef\x8b\x8e" // U+f2ce +#define ICON_FA_POO "\xef\x8b\xbe" // U+f2fe +#define ICON_FA_POO_STORM "\xef\x9d\x9a" // U+f75a +#define ICON_FA_POOP "\xef\x98\x99" // U+f619 +#define ICON_FA_POWER_OFF "\xef\x80\x91" // U+f011 +#define ICON_FA_PRESCRIPTION "\xef\x96\xb1" // U+f5b1 +#define ICON_FA_PRESCRIPTION_BOTTLE "\xef\x92\x85" // U+f485 +#define ICON_FA_PRESCRIPTION_BOTTLE_MEDICAL "\xef\x92\x86" // U+f486 +#define ICON_FA_PRINT "\xef\x80\xaf" // U+f02f +#define ICON_FA_PUMP_MEDICAL "\xee\x81\xaa" // U+e06a +#define ICON_FA_PUMP_SOAP "\xee\x81\xab" // U+e06b +#define ICON_FA_PUZZLE_PIECE "\xef\x84\xae" // U+f12e +#define ICON_FA_Q "Q" // U+0051 +#define ICON_FA_QRCODE "\xef\x80\xa9" // U+f029 +#define ICON_FA_QUESTION "?" // U+003f +#define ICON_FA_QUOTE_LEFT "\xef\x84\x8d" // U+f10d +#define ICON_FA_QUOTE_RIGHT "\xef\x84\x8e" // U+f10e +#define ICON_FA_R "R" // U+0052 +#define ICON_FA_RADIATION "\xef\x9e\xb9" // U+f7b9 +#define ICON_FA_RADIO "\xef\xa3\x97" // U+f8d7 +#define ICON_FA_RAINBOW "\xef\x9d\x9b" // U+f75b +#define ICON_FA_RANKING_STAR "\xee\x95\xa1" // U+e561 +#define ICON_FA_RECEIPT "\xef\x95\x83" // U+f543 +#define ICON_FA_RECORD_VINYL "\xef\xa3\x99" // U+f8d9 +#define ICON_FA_RECTANGLE_AD "\xef\x99\x81" // U+f641 +#define ICON_FA_RECTANGLE_LIST "\xef\x80\xa2" // U+f022 +#define ICON_FA_RECTANGLE_XMARK "\xef\x90\x90" // U+f410 +#define ICON_FA_RECYCLE "\xef\x86\xb8" // U+f1b8 +#define ICON_FA_REGISTERED "\xef\x89\x9d" // U+f25d +#define ICON_FA_REPEAT "\xef\x8d\xa3" // U+f363 +#define ICON_FA_REPLY "\xef\x8f\xa5" // U+f3e5 +#define ICON_FA_REPLY_ALL "\xef\x84\xa2" // U+f122 +#define ICON_FA_REPUBLICAN "\xef\x9d\x9e" // U+f75e +#define ICON_FA_RESTROOM "\xef\x9e\xbd" // U+f7bd +#define ICON_FA_RETWEET "\xef\x81\xb9" // U+f079 +#define ICON_FA_RIBBON "\xef\x93\x96" // U+f4d6 +#define ICON_FA_RIGHT_FROM_BRACKET "\xef\x8b\xb5" // U+f2f5 +#define ICON_FA_RIGHT_LEFT "\xef\x8d\xa2" // U+f362 +#define ICON_FA_RIGHT_LONG "\xef\x8c\x8b" // U+f30b +#define ICON_FA_RIGHT_TO_BRACKET "\xef\x8b\xb6" // U+f2f6 +#define ICON_FA_RING "\xef\x9c\x8b" // U+f70b +#define ICON_FA_ROAD "\xef\x80\x98" // U+f018 +#define ICON_FA_ROAD_BARRIER "\xee\x95\xa2" // U+e562 +#define ICON_FA_ROAD_BRIDGE "\xee\x95\xa3" // U+e563 +#define ICON_FA_ROAD_CIRCLE_CHECK "\xee\x95\xa4" // U+e564 +#define ICON_FA_ROAD_CIRCLE_EXCLAMATION "\xee\x95\xa5" // U+e565 +#define ICON_FA_ROAD_CIRCLE_XMARK "\xee\x95\xa6" // U+e566 +#define ICON_FA_ROAD_LOCK "\xee\x95\xa7" // U+e567 +#define ICON_FA_ROAD_SPIKES "\xee\x95\xa8" // U+e568 +#define ICON_FA_ROBOT "\xef\x95\x84" // U+f544 +#define ICON_FA_ROCKET "\xef\x84\xb5" // U+f135 +#define ICON_FA_ROTATE "\xef\x8b\xb1" // U+f2f1 +#define ICON_FA_ROTATE_LEFT "\xef\x8b\xaa" // U+f2ea +#define ICON_FA_ROTATE_RIGHT "\xef\x8b\xb9" // U+f2f9 +#define ICON_FA_ROUTE "\xef\x93\x97" // U+f4d7 +#define ICON_FA_RSS "\xef\x82\x9e" // U+f09e +#define ICON_FA_RUBLE_SIGN "\xef\x85\x98" // U+f158 +#define ICON_FA_RUG "\xee\x95\xa9" // U+e569 +#define ICON_FA_RULER "\xef\x95\x85" // U+f545 +#define ICON_FA_RULER_COMBINED "\xef\x95\x86" // U+f546 +#define ICON_FA_RULER_HORIZONTAL "\xef\x95\x87" // U+f547 +#define ICON_FA_RULER_VERTICAL "\xef\x95\x88" // U+f548 +#define ICON_FA_RUPEE_SIGN "\xef\x85\x96" // U+f156 +#define ICON_FA_RUPIAH_SIGN "\xee\x88\xbd" // U+e23d +#define ICON_FA_S "S" // U+0053 +#define ICON_FA_SACK_DOLLAR "\xef\xa0\x9d" // U+f81d +#define ICON_FA_SACK_XMARK "\xee\x95\xaa" // U+e56a +#define ICON_FA_SAILBOAT "\xee\x91\x85" // U+e445 +#define ICON_FA_SATELLITE "\xef\x9e\xbf" // U+f7bf +#define ICON_FA_SATELLITE_DISH "\xef\x9f\x80" // U+f7c0 +#define ICON_FA_SCALE_BALANCED "\xef\x89\x8e" // U+f24e +#define ICON_FA_SCALE_UNBALANCED "\xef\x94\x95" // U+f515 +#define ICON_FA_SCALE_UNBALANCED_FLIP "\xef\x94\x96" // U+f516 +#define ICON_FA_SCHOOL "\xef\x95\x89" // U+f549 +#define ICON_FA_SCHOOL_CIRCLE_CHECK "\xee\x95\xab" // U+e56b +#define ICON_FA_SCHOOL_CIRCLE_EXCLAMATION "\xee\x95\xac" // U+e56c +#define ICON_FA_SCHOOL_CIRCLE_XMARK "\xee\x95\xad" // U+e56d +#define ICON_FA_SCHOOL_FLAG "\xee\x95\xae" // U+e56e +#define ICON_FA_SCHOOL_LOCK "\xee\x95\xaf" // U+e56f +#define ICON_FA_SCISSORS "\xef\x83\x84" // U+f0c4 +#define ICON_FA_SCREWDRIVER "\xef\x95\x8a" // U+f54a +#define ICON_FA_SCREWDRIVER_WRENCH "\xef\x9f\x99" // U+f7d9 +#define ICON_FA_SCROLL "\xef\x9c\x8e" // U+f70e +#define ICON_FA_SCROLL_TORAH "\xef\x9a\xa0" // U+f6a0 +#define ICON_FA_SD_CARD "\xef\x9f\x82" // U+f7c2 +#define ICON_FA_SECTION "\xee\x91\x87" // U+e447 +#define ICON_FA_SEEDLING "\xef\x93\x98" // U+f4d8 +#define ICON_FA_SERVER "\xef\x88\xb3" // U+f233 +#define ICON_FA_SHAPES "\xef\x98\x9f" // U+f61f +#define ICON_FA_SHARE "\xef\x81\xa4" // U+f064 +#define ICON_FA_SHARE_FROM_SQUARE "\xef\x85\x8d" // U+f14d +#define ICON_FA_SHARE_NODES "\xef\x87\xa0" // U+f1e0 +#define ICON_FA_SHEET_PLASTIC "\xee\x95\xb1" // U+e571 +#define ICON_FA_SHEKEL_SIGN "\xef\x88\x8b" // U+f20b +#define ICON_FA_SHIELD "\xef\x84\xb2" // U+f132 +#define ICON_FA_SHIELD_CAT "\xee\x95\xb2" // U+e572 +#define ICON_FA_SHIELD_DOG "\xee\x95\xb3" // U+e573 +#define ICON_FA_SHIELD_HALVED "\xef\x8f\xad" // U+f3ed +#define ICON_FA_SHIELD_HEART "\xee\x95\xb4" // U+e574 +#define ICON_FA_SHIELD_VIRUS "\xee\x81\xac" // U+e06c +#define ICON_FA_SHIP "\xef\x88\x9a" // U+f21a +#define ICON_FA_SHIRT "\xef\x95\x93" // U+f553 +#define ICON_FA_SHOE_PRINTS "\xef\x95\x8b" // U+f54b +#define ICON_FA_SHOP "\xef\x95\x8f" // U+f54f +#define ICON_FA_SHOP_LOCK "\xee\x92\xa5" // U+e4a5 +#define ICON_FA_SHOP_SLASH "\xee\x81\xb0" // U+e070 +#define ICON_FA_SHOWER "\xef\x8b\x8c" // U+f2cc +#define ICON_FA_SHRIMP "\xee\x91\x88" // U+e448 +#define ICON_FA_SHUFFLE "\xef\x81\xb4" // U+f074 +#define ICON_FA_SHUTTLE_SPACE "\xef\x86\x97" // U+f197 +#define ICON_FA_SIGN_HANGING "\xef\x93\x99" // U+f4d9 +#define ICON_FA_SIGNAL "\xef\x80\x92" // U+f012 +#define ICON_FA_SIGNATURE "\xef\x96\xb7" // U+f5b7 +#define ICON_FA_SIGNS_POST "\xef\x89\xb7" // U+f277 +#define ICON_FA_SIM_CARD "\xef\x9f\x84" // U+f7c4 +#define ICON_FA_SINK "\xee\x81\xad" // U+e06d +#define ICON_FA_SITEMAP "\xef\x83\xa8" // U+f0e8 +#define ICON_FA_SKULL "\xef\x95\x8c" // U+f54c +#define ICON_FA_SKULL_CROSSBONES "\xef\x9c\x94" // U+f714 +#define ICON_FA_SLASH "\xef\x9c\x95" // U+f715 +#define ICON_FA_SLEIGH "\xef\x9f\x8c" // U+f7cc +#define ICON_FA_SLIDERS "\xef\x87\x9e" // U+f1de +#define ICON_FA_SMOG "\xef\x9d\x9f" // U+f75f +#define ICON_FA_SMOKING "\xef\x92\x8d" // U+f48d +#define ICON_FA_SNOWFLAKE "\xef\x8b\x9c" // U+f2dc +#define ICON_FA_SNOWMAN "\xef\x9f\x90" // U+f7d0 +#define ICON_FA_SNOWPLOW "\xef\x9f\x92" // U+f7d2 +#define ICON_FA_SOAP "\xee\x81\xae" // U+e06e +#define ICON_FA_SOCKS "\xef\x9a\x96" // U+f696 +#define ICON_FA_SOLAR_PANEL "\xef\x96\xba" // U+f5ba +#define ICON_FA_SORT "\xef\x83\x9c" // U+f0dc +#define ICON_FA_SORT_DOWN "\xef\x83\x9d" // U+f0dd +#define ICON_FA_SORT_UP "\xef\x83\x9e" // U+f0de +#define ICON_FA_SPA "\xef\x96\xbb" // U+f5bb +#define ICON_FA_SPAGHETTI_MONSTER_FLYING "\xef\x99\xbb" // U+f67b +#define ICON_FA_SPELL_CHECK "\xef\xa2\x91" // U+f891 +#define ICON_FA_SPIDER "\xef\x9c\x97" // U+f717 +#define ICON_FA_SPINNER "\xef\x84\x90" // U+f110 +#define ICON_FA_SPLOTCH "\xef\x96\xbc" // U+f5bc +#define ICON_FA_SPOON "\xef\x8b\xa5" // U+f2e5 +#define ICON_FA_SPRAY_CAN "\xef\x96\xbd" // U+f5bd +#define ICON_FA_SPRAY_CAN_SPARKLES "\xef\x97\x90" // U+f5d0 +#define ICON_FA_SQUARE "\xef\x83\x88" // U+f0c8 +#define ICON_FA_SQUARE_ARROW_UP_RIGHT "\xef\x85\x8c" // U+f14c +#define ICON_FA_SQUARE_CARET_DOWN "\xef\x85\x90" // U+f150 +#define ICON_FA_SQUARE_CARET_LEFT "\xef\x86\x91" // U+f191 +#define ICON_FA_SQUARE_CARET_RIGHT "\xef\x85\x92" // U+f152 +#define ICON_FA_SQUARE_CARET_UP "\xef\x85\x91" // U+f151 +#define ICON_FA_SQUARE_CHECK "\xef\x85\x8a" // U+f14a +#define ICON_FA_SQUARE_ENVELOPE "\xef\x86\x99" // U+f199 +#define ICON_FA_SQUARE_FULL "\xef\x91\x9c" // U+f45c +#define ICON_FA_SQUARE_H "\xef\x83\xbd" // U+f0fd +#define ICON_FA_SQUARE_MINUS "\xef\x85\x86" // U+f146 +#define ICON_FA_SQUARE_NFI "\xee\x95\xb6" // U+e576 +#define ICON_FA_SQUARE_PARKING "\xef\x95\x80" // U+f540 +#define ICON_FA_SQUARE_PEN "\xef\x85\x8b" // U+f14b +#define ICON_FA_SQUARE_PERSON_CONFINED "\xee\x95\xb7" // U+e577 +#define ICON_FA_SQUARE_PHONE "\xef\x82\x98" // U+f098 +#define ICON_FA_SQUARE_PHONE_FLIP "\xef\xa1\xbb" // U+f87b +#define ICON_FA_SQUARE_PLUS "\xef\x83\xbe" // U+f0fe +#define ICON_FA_SQUARE_POLL_HORIZONTAL "\xef\x9a\x82" // U+f682 +#define ICON_FA_SQUARE_POLL_VERTICAL "\xef\x9a\x81" // U+f681 +#define ICON_FA_SQUARE_ROOT_VARIABLE "\xef\x9a\x98" // U+f698 +#define ICON_FA_SQUARE_RSS "\xef\x85\x83" // U+f143 +#define ICON_FA_SQUARE_SHARE_NODES "\xef\x87\xa1" // U+f1e1 +#define ICON_FA_SQUARE_UP_RIGHT "\xef\x8d\xa0" // U+f360 +#define ICON_FA_SQUARE_VIRUS "\xee\x95\xb8" // U+e578 +#define ICON_FA_SQUARE_XMARK "\xef\x8b\x93" // U+f2d3 +#define ICON_FA_STAFF_AESCULAPIUS "\xee\x95\xb9" // U+e579 +#define ICON_FA_STAIRS "\xee\x8a\x89" // U+e289 +#define ICON_FA_STAMP "\xef\x96\xbf" // U+f5bf +#define ICON_FA_STAR "\xef\x80\x85" // U+f005 +#define ICON_FA_STAR_AND_CRESCENT "\xef\x9a\x99" // U+f699 +#define ICON_FA_STAR_HALF "\xef\x82\x89" // U+f089 +#define ICON_FA_STAR_HALF_STROKE "\xef\x97\x80" // U+f5c0 +#define ICON_FA_STAR_OF_DAVID "\xef\x9a\x9a" // U+f69a +#define ICON_FA_STAR_OF_LIFE "\xef\x98\xa1" // U+f621 +#define ICON_FA_STERLING_SIGN "\xef\x85\x94" // U+f154 +#define ICON_FA_STETHOSCOPE "\xef\x83\xb1" // U+f0f1 +#define ICON_FA_STOP "\xef\x81\x8d" // U+f04d +#define ICON_FA_STOPWATCH "\xef\x8b\xb2" // U+f2f2 +#define ICON_FA_STOPWATCH_20 "\xee\x81\xaf" // U+e06f +#define ICON_FA_STORE "\xef\x95\x8e" // U+f54e +#define ICON_FA_STORE_SLASH "\xee\x81\xb1" // U+e071 +#define ICON_FA_STREET_VIEW "\xef\x88\x9d" // U+f21d +#define ICON_FA_STRIKETHROUGH "\xef\x83\x8c" // U+f0cc +#define ICON_FA_STROOPWAFEL "\xef\x95\x91" // U+f551 +#define ICON_FA_SUBSCRIPT "\xef\x84\xac" // U+f12c +#define ICON_FA_SUITCASE "\xef\x83\xb2" // U+f0f2 +#define ICON_FA_SUITCASE_MEDICAL "\xef\x83\xba" // U+f0fa +#define ICON_FA_SUITCASE_ROLLING "\xef\x97\x81" // U+f5c1 +#define ICON_FA_SUN "\xef\x86\x85" // U+f185 +#define ICON_FA_SUN_PLANT_WILT "\xee\x95\xba" // U+e57a +#define ICON_FA_SUPERSCRIPT "\xef\x84\xab" // U+f12b +#define ICON_FA_SWATCHBOOK "\xef\x97\x83" // U+f5c3 +#define ICON_FA_SYNAGOGUE "\xef\x9a\x9b" // U+f69b +#define ICON_FA_SYRINGE "\xef\x92\x8e" // U+f48e +#define ICON_FA_T "T" // U+0054 +#define ICON_FA_TABLE "\xef\x83\x8e" // U+f0ce +#define ICON_FA_TABLE_CELLS "\xef\x80\x8a" // U+f00a +#define ICON_FA_TABLE_CELLS_LARGE "\xef\x80\x89" // U+f009 +#define ICON_FA_TABLE_COLUMNS "\xef\x83\x9b" // U+f0db +#define ICON_FA_TABLE_LIST "\xef\x80\x8b" // U+f00b +#define ICON_FA_TABLE_TENNIS_PADDLE_BALL "\xef\x91\x9d" // U+f45d +#define ICON_FA_TABLET "\xef\x8f\xbb" // U+f3fb +#define ICON_FA_TABLET_BUTTON "\xef\x84\x8a" // U+f10a +#define ICON_FA_TABLET_SCREEN_BUTTON "\xef\x8f\xba" // U+f3fa +#define ICON_FA_TABLETS "\xef\x92\x90" // U+f490 +#define ICON_FA_TACHOGRAPH_DIGITAL "\xef\x95\xa6" // U+f566 +#define ICON_FA_TAG "\xef\x80\xab" // U+f02b +#define ICON_FA_TAGS "\xef\x80\xac" // U+f02c +#define ICON_FA_TAPE "\xef\x93\x9b" // U+f4db +#define ICON_FA_TARP "\xee\x95\xbb" // U+e57b +#define ICON_FA_TARP_DROPLET "\xee\x95\xbc" // U+e57c +#define ICON_FA_TAXI "\xef\x86\xba" // U+f1ba +#define ICON_FA_TEETH "\xef\x98\xae" // U+f62e +#define ICON_FA_TEETH_OPEN "\xef\x98\xaf" // U+f62f +#define ICON_FA_TEMPERATURE_ARROW_DOWN "\xee\x80\xbf" // U+e03f +#define ICON_FA_TEMPERATURE_ARROW_UP "\xee\x81\x80" // U+e040 +#define ICON_FA_TEMPERATURE_EMPTY "\xef\x8b\x8b" // U+f2cb +#define ICON_FA_TEMPERATURE_FULL "\xef\x8b\x87" // U+f2c7 +#define ICON_FA_TEMPERATURE_HALF "\xef\x8b\x89" // U+f2c9 +#define ICON_FA_TEMPERATURE_HIGH "\xef\x9d\xa9" // U+f769 +#define ICON_FA_TEMPERATURE_LOW "\xef\x9d\xab" // U+f76b +#define ICON_FA_TEMPERATURE_QUARTER "\xef\x8b\x8a" // U+f2ca +#define ICON_FA_TEMPERATURE_THREE_QUARTERS "\xef\x8b\x88" // U+f2c8 +#define ICON_FA_TENGE_SIGN "\xef\x9f\x97" // U+f7d7 +#define ICON_FA_TENT "\xee\x95\xbd" // U+e57d +#define ICON_FA_TENT_ARROW_DOWN_TO_LINE "\xee\x95\xbe" // U+e57e +#define ICON_FA_TENT_ARROW_LEFT_RIGHT "\xee\x95\xbf" // U+e57f +#define ICON_FA_TENT_ARROW_TURN_LEFT "\xee\x96\x80" // U+e580 +#define ICON_FA_TENT_ARROWS_DOWN "\xee\x96\x81" // U+e581 +#define ICON_FA_TENTS "\xee\x96\x82" // U+e582 +#define ICON_FA_TERMINAL "\xef\x84\xa0" // U+f120 +#define ICON_FA_TEXT_HEIGHT "\xef\x80\xb4" // U+f034 +#define ICON_FA_TEXT_SLASH "\xef\xa1\xbd" // U+f87d +#define ICON_FA_TEXT_WIDTH "\xef\x80\xb5" // U+f035 +#define ICON_FA_THERMOMETER "\xef\x92\x91" // U+f491 +#define ICON_FA_THUMBS_DOWN "\xef\x85\xa5" // U+f165 +#define ICON_FA_THUMBS_UP "\xef\x85\xa4" // U+f164 +#define ICON_FA_THUMBTACK "\xef\x82\x8d" // U+f08d +#define ICON_FA_TICKET "\xef\x85\x85" // U+f145 +#define ICON_FA_TICKET_SIMPLE "\xef\x8f\xbf" // U+f3ff +#define ICON_FA_TIMELINE "\xee\x8a\x9c" // U+e29c +#define ICON_FA_TOGGLE_OFF "\xef\x88\x84" // U+f204 +#define ICON_FA_TOGGLE_ON "\xef\x88\x85" // U+f205 +#define ICON_FA_TOILET "\xef\x9f\x98" // U+f7d8 +#define ICON_FA_TOILET_PAPER "\xef\x9c\x9e" // U+f71e +#define ICON_FA_TOILET_PAPER_SLASH "\xee\x81\xb2" // U+e072 +#define ICON_FA_TOILET_PORTABLE "\xee\x96\x83" // U+e583 +#define ICON_FA_TOILETS_PORTABLE "\xee\x96\x84" // U+e584 +#define ICON_FA_TOOLBOX "\xef\x95\x92" // U+f552 +#define ICON_FA_TOOTH "\xef\x97\x89" // U+f5c9 +#define ICON_FA_TORII_GATE "\xef\x9a\xa1" // U+f6a1 +#define ICON_FA_TORNADO "\xef\x9d\xaf" // U+f76f +#define ICON_FA_TOWER_BROADCAST "\xef\x94\x99" // U+f519 +#define ICON_FA_TOWER_CELL "\xee\x96\x85" // U+e585 +#define ICON_FA_TOWER_OBSERVATION "\xee\x96\x86" // U+e586 +#define ICON_FA_TRACTOR "\xef\x9c\xa2" // U+f722 +#define ICON_FA_TRADEMARK "\xef\x89\x9c" // U+f25c +#define ICON_FA_TRAFFIC_LIGHT "\xef\x98\xb7" // U+f637 +#define ICON_FA_TRAILER "\xee\x81\x81" // U+e041 +#define ICON_FA_TRAIN "\xef\x88\xb8" // U+f238 +#define ICON_FA_TRAIN_SUBWAY "\xef\x88\xb9" // U+f239 +#define ICON_FA_TRAIN_TRAM "\xef\x9f\x9a" // U+f7da +#define ICON_FA_TRANSGENDER "\xef\x88\xa5" // U+f225 +#define ICON_FA_TRASH "\xef\x87\xb8" // U+f1f8 +#define ICON_FA_TRASH_ARROW_UP "\xef\xa0\xa9" // U+f829 +#define ICON_FA_TRASH_CAN "\xef\x8b\xad" // U+f2ed +#define ICON_FA_TRASH_CAN_ARROW_UP "\xef\xa0\xaa" // U+f82a +#define ICON_FA_TREE "\xef\x86\xbb" // U+f1bb +#define ICON_FA_TREE_CITY "\xee\x96\x87" // U+e587 +#define ICON_FA_TRIANGLE_EXCLAMATION "\xef\x81\xb1" // U+f071 +#define ICON_FA_TROPHY "\xef\x82\x91" // U+f091 +#define ICON_FA_TROWEL "\xee\x96\x89" // U+e589 +#define ICON_FA_TROWEL_BRICKS "\xee\x96\x8a" // U+e58a +#define ICON_FA_TRUCK "\xef\x83\x91" // U+f0d1 +#define ICON_FA_TRUCK_ARROW_RIGHT "\xee\x96\x8b" // U+e58b +#define ICON_FA_TRUCK_DROPLET "\xee\x96\x8c" // U+e58c +#define ICON_FA_TRUCK_FAST "\xef\x92\x8b" // U+f48b +#define ICON_FA_TRUCK_FIELD "\xee\x96\x8d" // U+e58d +#define ICON_FA_TRUCK_FIELD_UN "\xee\x96\x8e" // U+e58e +#define ICON_FA_TRUCK_FRONT "\xee\x8a\xb7" // U+e2b7 +#define ICON_FA_TRUCK_MEDICAL "\xef\x83\xb9" // U+f0f9 +#define ICON_FA_TRUCK_MONSTER "\xef\x98\xbb" // U+f63b +#define ICON_FA_TRUCK_MOVING "\xef\x93\x9f" // U+f4df +#define ICON_FA_TRUCK_PICKUP "\xef\x98\xbc" // U+f63c +#define ICON_FA_TRUCK_PLANE "\xee\x96\x8f" // U+e58f +#define ICON_FA_TRUCK_RAMP_BOX "\xef\x93\x9e" // U+f4de +#define ICON_FA_TTY "\xef\x87\xa4" // U+f1e4 +#define ICON_FA_TURKISH_LIRA_SIGN "\xee\x8a\xbb" // U+e2bb +#define ICON_FA_TURN_DOWN "\xef\x8e\xbe" // U+f3be +#define ICON_FA_TURN_UP "\xef\x8e\xbf" // U+f3bf +#define ICON_FA_TV "\xef\x89\xac" // U+f26c +#define ICON_FA_U "U" // U+0055 +#define ICON_FA_UMBRELLA "\xef\x83\xa9" // U+f0e9 +#define ICON_FA_UMBRELLA_BEACH "\xef\x97\x8a" // U+f5ca +#define ICON_FA_UNDERLINE "\xef\x83\x8d" // U+f0cd +#define ICON_FA_UNIVERSAL_ACCESS "\xef\x8a\x9a" // U+f29a +#define ICON_FA_UNLOCK "\xef\x82\x9c" // U+f09c +#define ICON_FA_UNLOCK_KEYHOLE "\xef\x84\xbe" // U+f13e +#define ICON_FA_UP_DOWN "\xef\x8c\xb8" // U+f338 +#define ICON_FA_UP_DOWN_LEFT_RIGHT "\xef\x82\xb2" // U+f0b2 +#define ICON_FA_UP_LONG "\xef\x8c\x8c" // U+f30c +#define ICON_FA_UP_RIGHT_AND_DOWN_LEFT_FROM_CENTER "\xef\x90\xa4" // U+f424 +#define ICON_FA_UP_RIGHT_FROM_SQUARE "\xef\x8d\x9d" // U+f35d +#define ICON_FA_UPLOAD "\xef\x82\x93" // U+f093 +#define ICON_FA_USER "\xef\x80\x87" // U+f007 +#define ICON_FA_USER_ASTRONAUT "\xef\x93\xbb" // U+f4fb +#define ICON_FA_USER_CHECK "\xef\x93\xbc" // U+f4fc +#define ICON_FA_USER_CLOCK "\xef\x93\xbd" // U+f4fd +#define ICON_FA_USER_DOCTOR "\xef\x83\xb0" // U+f0f0 +#define ICON_FA_USER_GEAR "\xef\x93\xbe" // U+f4fe +#define ICON_FA_USER_GRADUATE "\xef\x94\x81" // U+f501 +#define ICON_FA_USER_GROUP "\xef\x94\x80" // U+f500 +#define ICON_FA_USER_INJURED "\xef\x9c\xa8" // U+f728 +#define ICON_FA_USER_LARGE "\xef\x90\x86" // U+f406 +#define ICON_FA_USER_LARGE_SLASH "\xef\x93\xba" // U+f4fa +#define ICON_FA_USER_LOCK "\xef\x94\x82" // U+f502 +#define ICON_FA_USER_MINUS "\xef\x94\x83" // U+f503 +#define ICON_FA_USER_NINJA "\xef\x94\x84" // U+f504 +#define ICON_FA_USER_NURSE "\xef\xa0\xaf" // U+f82f +#define ICON_FA_USER_PEN "\xef\x93\xbf" // U+f4ff +#define ICON_FA_USER_PLUS "\xef\x88\xb4" // U+f234 +#define ICON_FA_USER_SECRET "\xef\x88\x9b" // U+f21b +#define ICON_FA_USER_SHIELD "\xef\x94\x85" // U+f505 +#define ICON_FA_USER_SLASH "\xef\x94\x86" // U+f506 +#define ICON_FA_USER_TAG "\xef\x94\x87" // U+f507 +#define ICON_FA_USER_TIE "\xef\x94\x88" // U+f508 +#define ICON_FA_USER_XMARK "\xef\x88\xb5" // U+f235 +#define ICON_FA_USERS "\xef\x83\x80" // U+f0c0 +#define ICON_FA_USERS_BETWEEN_LINES "\xee\x96\x91" // U+e591 +#define ICON_FA_USERS_GEAR "\xef\x94\x89" // U+f509 +#define ICON_FA_USERS_LINE "\xee\x96\x92" // U+e592 +#define ICON_FA_USERS_RAYS "\xee\x96\x93" // U+e593 +#define ICON_FA_USERS_RECTANGLE "\xee\x96\x94" // U+e594 +#define ICON_FA_USERS_SLASH "\xee\x81\xb3" // U+e073 +#define ICON_FA_USERS_VIEWFINDER "\xee\x96\x95" // U+e595 +#define ICON_FA_UTENSILS "\xef\x8b\xa7" // U+f2e7 +#define ICON_FA_V "V" // U+0056 +#define ICON_FA_VAN_SHUTTLE "\xef\x96\xb6" // U+f5b6 +#define ICON_FA_VAULT "\xee\x8b\x85" // U+e2c5 +#define ICON_FA_VECTOR_SQUARE "\xef\x97\x8b" // U+f5cb +#define ICON_FA_VENUS "\xef\x88\xa1" // U+f221 +#define ICON_FA_VENUS_DOUBLE "\xef\x88\xa6" // U+f226 +#define ICON_FA_VENUS_MARS "\xef\x88\xa8" // U+f228 +#define ICON_FA_VEST "\xee\x82\x85" // U+e085 +#define ICON_FA_VEST_PATCHES "\xee\x82\x86" // U+e086 +#define ICON_FA_VIAL "\xef\x92\x92" // U+f492 +#define ICON_FA_VIAL_CIRCLE_CHECK "\xee\x96\x96" // U+e596 +#define ICON_FA_VIAL_VIRUS "\xee\x96\x97" // U+e597 +#define ICON_FA_VIALS "\xef\x92\x93" // U+f493 +#define ICON_FA_VIDEO "\xef\x80\xbd" // U+f03d +#define ICON_FA_VIDEO_SLASH "\xef\x93\xa2" // U+f4e2 +#define ICON_FA_VIHARA "\xef\x9a\xa7" // U+f6a7 +#define ICON_FA_VIRUS "\xee\x81\xb4" // U+e074 +#define ICON_FA_VIRUS_COVID "\xee\x92\xa8" // U+e4a8 +#define ICON_FA_VIRUS_COVID_SLASH "\xee\x92\xa9" // U+e4a9 +#define ICON_FA_VIRUS_SLASH "\xee\x81\xb5" // U+e075 +#define ICON_FA_VIRUSES "\xee\x81\xb6" // U+e076 +#define ICON_FA_VOICEMAIL "\xef\xa2\x97" // U+f897 +#define ICON_FA_VOLCANO "\xef\x9d\xb0" // U+f770 +#define ICON_FA_VOLLEYBALL "\xef\x91\x9f" // U+f45f +#define ICON_FA_VOLUME_HIGH "\xef\x80\xa8" // U+f028 +#define ICON_FA_VOLUME_LOW "\xef\x80\xa7" // U+f027 +#define ICON_FA_VOLUME_OFF "\xef\x80\xa6" // U+f026 +#define ICON_FA_VOLUME_XMARK "\xef\x9a\xa9" // U+f6a9 +#define ICON_FA_VR_CARDBOARD "\xef\x9c\xa9" // U+f729 +#define ICON_FA_W "W" // U+0057 +#define ICON_FA_WALKIE_TALKIE "\xef\xa3\xaf" // U+f8ef +#define ICON_FA_WALLET "\xef\x95\x95" // U+f555 +#define ICON_FA_WAND_MAGIC "\xef\x83\x90" // U+f0d0 +#define ICON_FA_WAND_MAGIC_SPARKLES "\xee\x8b\x8a" // U+e2ca +#define ICON_FA_WAND_SPARKLES "\xef\x9c\xab" // U+f72b +#define ICON_FA_WAREHOUSE "\xef\x92\x94" // U+f494 +#define ICON_FA_WATER "\xef\x9d\xb3" // U+f773 +#define ICON_FA_WATER_LADDER "\xef\x97\x85" // U+f5c5 +#define ICON_FA_WAVE_SQUARE "\xef\xa0\xbe" // U+f83e +#define ICON_FA_WEIGHT_HANGING "\xef\x97\x8d" // U+f5cd +#define ICON_FA_WEIGHT_SCALE "\xef\x92\x96" // U+f496 +#define ICON_FA_WHEAT_AWN "\xee\x8b\x8d" // U+e2cd +#define ICON_FA_WHEAT_AWN_CIRCLE_EXCLAMATION "\xee\x96\x98" // U+e598 +#define ICON_FA_WHEELCHAIR "\xef\x86\x93" // U+f193 +#define ICON_FA_WHEELCHAIR_MOVE "\xee\x8b\x8e" // U+e2ce +#define ICON_FA_WHISKEY_GLASS "\xef\x9e\xa0" // U+f7a0 +#define ICON_FA_WIFI "\xef\x87\xab" // U+f1eb +#define ICON_FA_WIND "\xef\x9c\xae" // U+f72e +#define ICON_FA_WINDOW_MAXIMIZE "\xef\x8b\x90" // U+f2d0 +#define ICON_FA_WINDOW_MINIMIZE "\xef\x8b\x91" // U+f2d1 +#define ICON_FA_WINDOW_RESTORE "\xef\x8b\x92" // U+f2d2 +#define ICON_FA_WINE_BOTTLE "\xef\x9c\xaf" // U+f72f +#define ICON_FA_WINE_GLASS "\xef\x93\xa3" // U+f4e3 +#define ICON_FA_WINE_GLASS_EMPTY "\xef\x97\x8e" // U+f5ce +#define ICON_FA_WON_SIGN "\xef\x85\x99" // U+f159 +#define ICON_FA_WORM "\xee\x96\x99" // U+e599 +#define ICON_FA_WRENCH "\xef\x82\xad" // U+f0ad +#define ICON_FA_X "X" // U+0058 +#define ICON_FA_X_RAY "\xef\x92\x97" // U+f497 +#define ICON_FA_XMARK "\xef\x80\x8d" // U+f00d +#define ICON_FA_XMARKS_LINES "\xee\x96\x9a" // U+e59a +#define ICON_FA_Y "Y" // U+0059 +#define ICON_FA_YEN_SIGN "\xef\x85\x97" // U+f157 +#define ICON_FA_YIN_YANG "\xef\x9a\xad" // U+f6ad +#define ICON_FA_Z "Z" // U+005a diff --git a/Editor/LayerWindow.cpp b/Editor/LayerWindow.cpp index ab30cd44f..777cfae9b 100644 --- a/Editor/LayerWindow.cpp +++ b/Editor/LayerWindow.cpp @@ -9,18 +9,33 @@ using namespace wi::scene; void LayerWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Layer Window"); - SetSize(XMFLOAT2(420, 290)); + wi::gui::Window::Create(ICON_LAYER " Layer", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 350)); + + closeButton.SetTooltip("Delete LayerComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().layers.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 30; float y = 0; float step = 25; float siz = 20; + float wid = 250; label.Create("LayerWindowLabel"); label.SetText("The layer is a 32-bit mask (uint32_t), which can be used for filtering by multiple systems (visibility, collision, picking, etc.).\n- If all bits are disabled, it means the layer will be inactive in most systems.\n- For ray tracing, the lower 8 bits will be used as instance inclusion mask."); label.SetPos(XMFLOAT2(x, y)); - label.SetSize(XMFLOAT2(370, 120)); + label.SetSize(XMFLOAT2(wid, 100)); label.SetColor(wi::Color::Transparent()); AddWidget(&label); y += label.GetScale().y + 5; @@ -29,7 +44,7 @@ void LayerWindow::Create(EditorComponent* _editor) { layers[i].Create(""); layers[i].SetText(std::to_string(i) + ": "); - layers[i].SetPos(XMFLOAT2(x + (i % 8) * 50, y + (i / 8) * step)); + layers[i].SetPos(XMFLOAT2(x + 20 + (i % 5) * 50, y + (i / 5) * step)); layers[i].OnClick([=](wi::gui::EventArgs args) { LayerComponent* layer = editor->GetCurrentScene().layers.GetComponent(entity); @@ -51,7 +66,7 @@ void LayerWindow::Create(EditorComponent* _editor) AddWidget(&layers[i]); } - y += step * 4; + y += step * 7; enableAllButton.Create("Enable ALL"); enableAllButton.SetPos(XMFLOAT2(x, y)); @@ -81,7 +96,7 @@ void LayerWindow::Create(EditorComponent* _editor) }); AddWidget(&enableNoneButton); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 450, 300, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/LightWindow.cpp b/Editor/LightWindow.cpp index 1a056c38d..00804d335 100644 --- a/Editor/LightWindow.cpp +++ b/Editor/LightWindow.cpp @@ -12,16 +12,51 @@ using namespace wi::scene; void LightWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Light Window"); - SetSize(XMFLOAT2(650, 300)); + wi::gui::Window::Create(ICON_POINTLIGHT " Light", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(650, 700)); - float x = 450; + closeButton.SetTooltip("Delete LightComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().lights.Remove(entity); + editor->GetCurrentScene().aabb_lights.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 130; float y = 0; float hei = 18; float step = hei + 2; + float wid = 130; + + + float mod_x = 10; + + colorPicker.Create("Light Color", wi::gui::Window::WindowControls::NONE); + colorPicker.SetPos(XMFLOAT2(mod_x, y)); + colorPicker.SetVisible(true); + colorPicker.SetEnabled(false); + colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { + LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); + if (light != nullptr) + { + light->color = args.color.toFloat3(); + } + }); + AddWidget(&colorPicker); + + float mod_wid = colorPicker.GetScale().x; + y += colorPicker.GetScale().y + 5; intensitySlider.Create(0, 1000, 0, 100000, "Intensity: "); - intensitySlider.SetSize(XMFLOAT2(100, hei)); + intensitySlider.SetSize(XMFLOAT2(wid, hei)); intensitySlider.SetPos(XMFLOAT2(x, y)); intensitySlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -35,7 +70,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&intensitySlider); rangeSlider.Create(1, 1000, 0, 100000, "Range: "); - rangeSlider.SetSize(XMFLOAT2(100, hei)); + rangeSlider.SetSize(XMFLOAT2(wid, hei)); rangeSlider.SetPos(XMFLOAT2(x, y += step)); rangeSlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -49,7 +84,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&rangeSlider); outerConeAngleSlider.Create(0.1f, XM_PIDIV2 - 0.01f, 0, 100000, "Outer Cone Angle: "); - outerConeAngleSlider.SetSize(XMFLOAT2(100, hei)); + outerConeAngleSlider.SetSize(XMFLOAT2(wid, hei)); outerConeAngleSlider.SetPos(XMFLOAT2(x, y += step)); outerConeAngleSlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -63,7 +98,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&outerConeAngleSlider); innerConeAngleSlider.Create(0, XM_PI - 0.01f, 0, 100000, "Inner Cone Angle: "); - innerConeAngleSlider.SetSize(XMFLOAT2(100, hei)); + innerConeAngleSlider.SetSize(XMFLOAT2(wid, hei)); innerConeAngleSlider.SetPos(XMFLOAT2(x, y += step)); innerConeAngleSlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -132,68 +167,8 @@ void LightWindow::Create(EditorComponent* _editor) staticCheckBox.SetTooltip("Static lights will only be used for baking into lightmaps."); AddWidget(&staticCheckBox); - addLightButton.Create("Add Light"); - addLightButton.SetPos(XMFLOAT2(x, y += step)); - addLightButton.SetSize(XMFLOAT2(150, hei)); - addLightButton.OnClick([=](wi::gui::EventArgs args) { - Entity entity = editor->GetCurrentScene().Entity_CreateLight("editorLight", XMFLOAT3(0, 3, 0), XMFLOAT3(1, 1, 1), 2, 60); - LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); - if (light != nullptr) - { - light->type = (LightComponent::LightType)typeSelectorComboBox.GetSelected(); - - switch (light->type) - { - case LightComponent::LightType::DIRECTIONAL: - light->intensity = 10; - break; - case LightComponent::LightType::SPOT: - light->intensity = 100; - break; - case LightComponent::LightType::POINT: - light->intensity = 20; - break; - default: - break; - } - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - } - else - { - assert(0); - } - }); - addLightButton.SetTooltip("Add a light to the scene."); - AddWidget(&addLightButton); - - - colorPicker.Create("Light Color", false); - colorPicker.SetPos(XMFLOAT2(10, 0)); - colorPicker.SetVisible(true); - colorPicker.SetEnabled(false); - colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { - LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); - if (light != nullptr) - { - light->color = args.color.toFloat3(); - } - }); - AddWidget(&colorPicker); - typeSelectorComboBox.Create("Type: "); - typeSelectorComboBox.SetSize(XMFLOAT2(150, hei)); + typeSelectorComboBox.SetSize(XMFLOAT2(wid, hei)); typeSelectorComboBox.SetPos(XMFLOAT2(x, y += step)); typeSelectorComboBox.OnSelect([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -206,17 +181,13 @@ void LightWindow::Create(EditorComponent* _editor) typeSelectorComboBox.AddItem("Directional"); typeSelectorComboBox.AddItem("Point"); typeSelectorComboBox.AddItem("Spot"); - //typeSelectorComboBox.AddItem("Sphere"); - //typeSelectorComboBox.AddItem("Disc"); - //typeSelectorComboBox.AddItem("Rectangle"); - //typeSelectorComboBox.AddItem("Tube"); typeSelectorComboBox.SetTooltip("Choose the light source type..."); typeSelectorComboBox.SetSelected((int)LightComponent::POINT); AddWidget(&typeSelectorComboBox); shadowResolutionComboBox.Create("Shadow resolution: "); shadowResolutionComboBox.SetTooltip("You can force a fixed resolution for this light's shadow map to avoid dynamic scaling.\nIf you leave it as dynamic, the resolution will be scaled between 0 and the max shadow resolution in the renderer for this light type, based on light's distance and size."); - shadowResolutionComboBox.SetSize(XMFLOAT2(150, hei)); + shadowResolutionComboBox.SetSize(XMFLOAT2(wid, hei)); shadowResolutionComboBox.SetPos(XMFLOAT2(x, y += step)); shadowResolutionComboBox.AddItem("Dynamic", uint64_t(-1)); shadowResolutionComboBox.AddItem("32", 32); @@ -235,12 +206,11 @@ void LightWindow::Create(EditorComponent* _editor) shadowResolutionComboBox.SetSelected(0); AddWidget(&shadowResolutionComboBox); - y += step; - x -= 100; + y += step * 0.5f; lensflare_Label.Create("Lens flare textures: "); - lensflare_Label.SetPos(XMFLOAT2(x, y += step)); - lensflare_Label.SetSize(XMFLOAT2(140, hei)); + lensflare_Label.SetPos(XMFLOAT2(mod_x, y += step)); + lensflare_Label.SetSize(XMFLOAT2(wid, hei)); AddWidget(&lensflare_Label); for (size_t i = 0; i < arraysize(lensflare_Button); ++i) @@ -248,8 +218,8 @@ void LightWindow::Create(EditorComponent* _editor) lensflare_Button[i].Create("LensFlareSlot"); lensflare_Button[i].SetText(""); lensflare_Button[i].SetTooltip("Load a lensflare texture to this slot"); - lensflare_Button[i].SetPos(XMFLOAT2(x, y += step)); - lensflare_Button[i].SetSize(XMFLOAT2(260, hei)); + lensflare_Button[i].SetPos(XMFLOAT2(mod_x, y += step)); + lensflare_Button[i].SetSize(XMFLOAT2(mod_wid, hei)); lensflare_Button[i].OnClick([=](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); if (light == nullptr) @@ -285,8 +255,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&lensflare_Button[i]); } - - Translate(XMFLOAT3(120, 30, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/LightWindow.h b/Editor/LightWindow.h index 75c2a3775..6bd2aa16b 100644 --- a/Editor/LightWindow.h +++ b/Editor/LightWindow.h @@ -25,7 +25,6 @@ public: wi::gui::CheckBox haloCheckBox; wi::gui::CheckBox volumetricsCheckBox; wi::gui::CheckBox staticCheckBox; - wi::gui::Button addLightButton; wi::gui::ColorPicker colorPicker; wi::gui::ComboBox typeSelectorComboBox; wi::gui::ComboBox shadowResolutionComboBox; diff --git a/Editor/MaterialWindow.cpp b/Editor/MaterialWindow.cpp index 7864a0ba2..ba6964f5e 100644 --- a/Editor/MaterialWindow.cpp +++ b/Editor/MaterialWindow.cpp @@ -9,16 +9,31 @@ using namespace wi::scene; void MaterialWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Material Window"); - SetSize(XMFLOAT2(730, 620)); + wi::gui::Window::Create(ICON_MATERIAL " Material", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 1200)); + + closeButton.SetTooltip("Delete MaterialComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().materials.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float hei = 18; float step = hei + 2; - float x = 670, y = 0; + float x = 150, y = 0; + float wid = 130; shadowReceiveCheckBox.Create("Receive Shadow: "); shadowReceiveCheckBox.SetTooltip("Receives shadow or not?"); - shadowReceiveCheckBox.SetPos(XMFLOAT2(540, y)); + shadowReceiveCheckBox.SetPos(XMFLOAT2(x, y)); shadowReceiveCheckBox.SetSize(XMFLOAT2(hei, hei)); shadowReceiveCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -29,7 +44,7 @@ void MaterialWindow::Create(EditorComponent* _editor) shadowCasterCheckBox.Create("Cast Shadow: "); shadowCasterCheckBox.SetTooltip("The subset will contribute to the scene shadows if enabled."); - shadowCasterCheckBox.SetPos(XMFLOAT2(670, y)); + shadowCasterCheckBox.SetPos(XMFLOAT2(x, y += step)); shadowCasterCheckBox.SetSize(XMFLOAT2(hei, hei)); shadowCasterCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -40,7 +55,7 @@ void MaterialWindow::Create(EditorComponent* _editor) useVertexColorsCheckBox.Create("Use vertex colors: "); useVertexColorsCheckBox.SetTooltip("Enable if you want to render the mesh with vertex colors (must have appropriate vertex buffer)"); - useVertexColorsCheckBox.SetPos(XMFLOAT2(670, y += step)); + useVertexColorsCheckBox.SetPos(XMFLOAT2(x, y += step)); useVertexColorsCheckBox.SetSize(XMFLOAT2(hei, hei)); useVertexColorsCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -49,9 +64,9 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&useVertexColorsCheckBox); - specularGlossinessCheckBox.Create("Specular-glossiness workflow: "); + specularGlossinessCheckBox.Create("Spec-gloss workflow: "); specularGlossinessCheckBox.SetTooltip("If enabled, surface map will be viewed like it contains specular color (RGB) and smoothness (A)"); - specularGlossinessCheckBox.SetPos(XMFLOAT2(670, y += step)); + specularGlossinessCheckBox.SetPos(XMFLOAT2(x, y += step)); specularGlossinessCheckBox.SetSize(XMFLOAT2(hei, hei)); specularGlossinessCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -61,9 +76,9 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&specularGlossinessCheckBox); - occlusionPrimaryCheckBox.Create("Occlusion - Primary: "); + occlusionPrimaryCheckBox.Create("Occlusion 1: "); occlusionPrimaryCheckBox.SetTooltip("If enabled, surface map's RED channel will be used as occlusion map"); - occlusionPrimaryCheckBox.SetPos(XMFLOAT2(670, y += step)); + occlusionPrimaryCheckBox.SetPos(XMFLOAT2(x, y += step)); occlusionPrimaryCheckBox.SetSize(XMFLOAT2(hei, hei)); occlusionPrimaryCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -72,9 +87,9 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&occlusionPrimaryCheckBox); - occlusionSecondaryCheckBox.Create("Occlusion - Secondary: "); + occlusionSecondaryCheckBox.Create("Occlusion 2: "); occlusionSecondaryCheckBox.SetTooltip("If enabled, occlusion map's RED channel will be used as occlusion map"); - occlusionSecondaryCheckBox.SetPos(XMFLOAT2(670, y += step)); + occlusionSecondaryCheckBox.SetPos(XMFLOAT2(x, y += step)); occlusionSecondaryCheckBox.SetSize(XMFLOAT2(hei, hei)); occlusionSecondaryCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -85,7 +100,7 @@ void MaterialWindow::Create(EditorComponent* _editor) windCheckBox.Create("Wind: "); windCheckBox.SetTooltip("If enabled, vertex wind weights will affect how much wind offset affects the subset."); - windCheckBox.SetPos(XMFLOAT2(670, y += step)); + windCheckBox.SetPos(XMFLOAT2(x, y += step)); windCheckBox.SetSize(XMFLOAT2(hei, hei)); windCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -96,7 +111,7 @@ void MaterialWindow::Create(EditorComponent* _editor) doubleSidedCheckBox.Create("Double sided: "); doubleSidedCheckBox.SetTooltip("Decide whether to render both sides of the material (It's also possible to set this behaviour per mesh)."); - doubleSidedCheckBox.SetPos(XMFLOAT2(540, y)); + doubleSidedCheckBox.SetPos(XMFLOAT2(x, y += step)); doubleSidedCheckBox.SetSize(XMFLOAT2(hei, hei)); doubleSidedCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -106,11 +121,6 @@ void MaterialWindow::Create(EditorComponent* _editor) AddWidget(&doubleSidedCheckBox); - - x = 520; - float wid = 170; - - shaderTypeComboBox.Create("Shader: "); shaderTypeComboBox.SetTooltip("Select a shader for this material. \nCustom shaders (*) will also show up here (see wi::renderer:RegisterCustomShader() for more info.)\nNote that custom shaders (*) can't select between blend modes, as they are created with an explicit blend mode."); shaderTypeComboBox.SetPos(XMFLOAT2(x, y += step)); @@ -133,12 +143,12 @@ void MaterialWindow::Create(EditorComponent* _editor) } }); shaderTypeComboBox.AddItem("PBR", MaterialComponent::SHADERTYPE_PBR); - shaderTypeComboBox.AddItem("PBR + Planar reflections", MaterialComponent::SHADERTYPE_PBR_PLANARREFLECTION); - shaderTypeComboBox.AddItem("PBR + Par. occl. mapping", MaterialComponent::SHADERTYPE_PBR_PARALLAXOCCLUSIONMAPPING); - shaderTypeComboBox.AddItem("PBR + Anisotropic", MaterialComponent::SHADERTYPE_PBR_ANISOTROPIC); - shaderTypeComboBox.AddItem("PBR + Cloth", MaterialComponent::SHADERTYPE_PBR_CLOTH); - shaderTypeComboBox.AddItem("PBR + Clear coat", MaterialComponent::SHADERTYPE_PBR_CLEARCOAT); - shaderTypeComboBox.AddItem("PBR + Cloth + Clear coat", MaterialComponent::SHADERTYPE_PBR_CLOTH_CLEARCOAT); + shaderTypeComboBox.AddItem("Planar reflections", MaterialComponent::SHADERTYPE_PBR_PLANARREFLECTION); + shaderTypeComboBox.AddItem("Par. occl. mapping", MaterialComponent::SHADERTYPE_PBR_PARALLAXOCCLUSIONMAPPING); + shaderTypeComboBox.AddItem("Anisotropic", MaterialComponent::SHADERTYPE_PBR_ANISOTROPIC); + shaderTypeComboBox.AddItem("Cloth", MaterialComponent::SHADERTYPE_PBR_CLOTH); + shaderTypeComboBox.AddItem("Clear coat", MaterialComponent::SHADERTYPE_PBR_CLEARCOAT); + shaderTypeComboBox.AddItem("Cloth + Clear coat", MaterialComponent::SHADERTYPE_PBR_CLOTH_CLEARCOAT); shaderTypeComboBox.AddItem("Water", MaterialComponent::SHADERTYPE_WATER); shaderTypeComboBox.AddItem("Cartoon", MaterialComponent::SHADERTYPE_CARTOON); shaderTypeComboBox.AddItem("Unlit", MaterialComponent::SHADERTYPE_UNLIT); @@ -195,7 +205,6 @@ void MaterialWindow::Create(EditorComponent* _editor) // Sliders: - wid = 150; normalMapSlider.Create(0, 4, 1, 4000, "Normalmap: "); normalMapSlider.SetTooltip("How much the normal map should distort the face normals (bumpiness)."); @@ -285,8 +294,7 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&refractionSlider); - pomSlider.Create(0, 0.1f, 0.0f, 1000, "Parallax Occlusion Mapping: "); - pomSlider.SetTooltip("Adjust how much the bump map should modulate the surface parallax effect. \nOnly works with PBR + Parallax shader."); + pomSlider.Create(0, 0.1f, 0.0f, 1000, "Par Occl Mapping: "); pomSlider.SetSize(XMFLOAT2(wid, hei)); pomSlider.SetPos(XMFLOAT2(x, y += step)); pomSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -296,7 +304,7 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&pomSlider); - displacementMappingSlider.Create(0, 0.1f, 0.0f, 1000, "Displacement Mapping: "); + displacementMappingSlider.Create(0, 0.1f, 0.0f, 1000, "Displacement: "); displacementMappingSlider.SetTooltip("Adjust how much the bump map should modulate the geometry when using tessellation."); displacementMappingSlider.SetSize(XMFLOAT2(wid, hei)); displacementMappingSlider.SetPos(XMFLOAT2(x, y += step)); @@ -430,11 +438,10 @@ void MaterialWindow::Create(EditorComponent* _editor) hei = 20; step = hei + 2; x = 10; - y = 0; materialNameField.Create("MaterialName"); materialNameField.SetTooltip("Set a name for the material..."); - materialNameField.SetPos(XMFLOAT2(10, y)); + materialNameField.SetPos(XMFLOAT2(10, y += step)); materialNameField.SetSize(XMFLOAT2(300, hei)); materialNameField.OnInputAccepted([=](wi::gui::EventArgs args) { NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); @@ -447,28 +454,6 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&materialNameField); - newMaterialButton.Create("New Material"); - newMaterialButton.SetPos(XMFLOAT2(10 + 5 + 300, y)); - newMaterialButton.SetSize(XMFLOAT2(100, hei)); - newMaterialButton.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - Entity entity = scene.Entity_CreateMaterial("editorMaterial"); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - editor->RefreshEntityTree(); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - SetEntity(entity); - }); - AddWidget(&newMaterialButton); - colorComboBox.Create("Color picker mode: "); colorComboBox.SetSize(XMFLOAT2(120, hei)); colorComboBox.SetPos(XMFLOAT2(x + 150, y += step)); @@ -480,7 +465,7 @@ void MaterialWindow::Create(EditorComponent* _editor) colorComboBox.SetTooltip("Choose the destination data of the color picker."); AddWidget(&colorComboBox); - colorPicker.Create("Color", false); + colorPicker.Create("Color", wi::gui::Window::WindowControls::NONE); colorPicker.SetPos(XMFLOAT2(10, y += step)); colorPicker.SetVisible(true); colorPicker.SetEnabled(true); @@ -689,7 +674,7 @@ void MaterialWindow::Create(EditorComponent* _editor) AddWidget(&textureSlotUvsetField); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 880, 120, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -708,9 +693,19 @@ void MaterialWindow::SetEntity(Entity entity) { SetEnabled(true); - const NameComponent& name = *scene.names.GetComponent(entity); - - materialNameField.SetValue(name.name); + const NameComponent* name = scene.names.GetComponent(entity); + if (name == nullptr) + { + materialNameField.SetValue("[no_name] " + std::to_string(entity)); + } + else if (name->name.empty()) + { + materialNameField.SetValue("[name_empty] " + std::to_string(entity)); + } + else + { + materialNameField.SetValue(name->name); + } shadowReceiveCheckBox.SetCheck(material->IsReceiveShadow()); shadowCasterCheckBox.SetCheck(material->IsCastingShadow()); useVertexColorsCheckBox.SetCheck(material->IsUsingVertexColors()); @@ -777,8 +772,8 @@ void MaterialWindow::SetEntity(Entity entity) pomSlider.SetRange(0, 0.99f); break; case MaterialComponent::SHADERTYPE_PBR_PARALLAXOCCLUSIONMAPPING: - pomSlider.SetText("Parallax Occlusion Mapping: "); - pomSlider.SetTooltip("Adjust how much the bump map should modulate the surface parallax effect. \nOnly works with PBR + Parallax shader."); + pomSlider.SetText("Par Occl Mapping: "); + pomSlider.SetTooltip("[Parallax Occlusion Mapping] Adjust how much the bump map should modulate the surface parallax effect. \nOnly works with PBR + Parallax shader."); pomSlider.SetRange(0, 0.1f); break; default: @@ -833,5 +828,4 @@ void MaterialWindow::SetEntity(Entity entity) textureSlotUvsetField.SetText(""); } - newMaterialButton.SetEnabled(true); } diff --git a/Editor/MaterialWindow.h b/Editor/MaterialWindow.h index d58203c7e..4620b3115 100644 --- a/Editor/MaterialWindow.h +++ b/Editor/MaterialWindow.h @@ -13,7 +13,6 @@ public: void SetEntity(wi::ecs::Entity entity); wi::gui::TextInputField materialNameField; - wi::gui::Button newMaterialButton; wi::gui::CheckBox shadowReceiveCheckBox; wi::gui::CheckBox shadowCasterCheckBox; wi::gui::CheckBox useVertexColorsCheckBox; diff --git a/Editor/MeshWindow.cpp b/Editor/MeshWindow.cpp index 975e89a22..6e77422cf 100644 --- a/Editor/MeshWindow.cpp +++ b/Editor/MeshWindow.cpp @@ -14,25 +14,26 @@ using namespace wi::scene; void MeshWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Mesh Window"); - SetSize(XMFLOAT2(580, 380)); + wi::gui::Window::Create(ICON_MESH " Mesh", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(580, 720)); - float x = 150; + float x = 95; float y = 0; float hei = 18; float step = hei + 2; + float wid = 170; float infolabel_height = 190; meshInfoLabel.Create("Mesh Info"); - meshInfoLabel.SetPos(XMFLOAT2(x - 50, y)); - meshInfoLabel.SetSize(XMFLOAT2(450, infolabel_height)); + meshInfoLabel.SetPos(XMFLOAT2(20, y)); + meshInfoLabel.SetSize(XMFLOAT2(260, infolabel_height)); meshInfoLabel.SetColor(wi::Color::Transparent()); AddWidget(&meshInfoLabel); // Left side: y = infolabel_height + 5; - subsetComboBox.Create("Selected subset: "); + subsetComboBox.Create("Select subset: "); subsetComboBox.SetSize(XMFLOAT2(40, hei)); subsetComboBox.SetPos(XMFLOAT2(x, y)); subsetComboBox.SetEnabled(false); @@ -48,7 +49,7 @@ void MeshWindow::Create(EditorComponent* _editor) } } }); - subsetComboBox.SetTooltip("Select a subset. A subset can also be selected by picking it in the 3D scene."); + subsetComboBox.SetTooltip("Select a subset. A subset can also be selected by picking it in the 3D scene.\nLook at the material window when a subset is selected to edit it."); AddWidget(&subsetComboBox); doubleSidedCheckBox.Create("Double Sided: "); @@ -101,7 +102,7 @@ void MeshWindow::Create(EditorComponent* _editor) massSlider.Create(0, 10, 1, 100000, "Mass: "); massSlider.SetTooltip("Set the mass amount for the physics engine."); - massSlider.SetSize(XMFLOAT2(100, hei)); + massSlider.SetSize(XMFLOAT2(wid, hei)); massSlider.SetPos(XMFLOAT2(x, y += step)); massSlider.OnSlide([&](wi::gui::EventArgs args) { SoftBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().softbodies.GetComponent(entity); @@ -114,7 +115,7 @@ void MeshWindow::Create(EditorComponent* _editor) frictionSlider.Create(0, 1, 0.5f, 100000, "Friction: "); frictionSlider.SetTooltip("Set the friction amount for the physics engine."); - frictionSlider.SetSize(XMFLOAT2(100, hei)); + frictionSlider.SetSize(XMFLOAT2(wid, hei)); frictionSlider.SetPos(XMFLOAT2(x, y += step)); frictionSlider.OnSlide([&](wi::gui::EventArgs args) { SoftBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().softbodies.GetComponent(entity); @@ -127,7 +128,7 @@ void MeshWindow::Create(EditorComponent* _editor) restitutionSlider.Create(0, 1, 0, 100000, "Restitution: "); restitutionSlider.SetTooltip("Set the restitution amount for the physics engine."); - restitutionSlider.SetSize(XMFLOAT2(100, hei)); + restitutionSlider.SetSize(XMFLOAT2(wid, hei)); restitutionSlider.SetPos(XMFLOAT2(x, y += step)); restitutionSlider.OnSlide([&](wi::gui::EventArgs args) { SoftBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().softbodies.GetComponent(entity); @@ -140,8 +141,8 @@ void MeshWindow::Create(EditorComponent* _editor) impostorCreateButton.Create("Create Impostor"); impostorCreateButton.SetTooltip("Create an impostor image of the mesh. The mesh will be replaced by this image when far away, to render faster."); - impostorCreateButton.SetSize(XMFLOAT2(200, hei)); - impostorCreateButton.SetPos(XMFLOAT2(x - 50, y += step)); + impostorCreateButton.SetSize(XMFLOAT2(wid, hei)); + impostorCreateButton.SetPos(XMFLOAT2(x, y += step)); impostorCreateButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); ImpostorComponent* impostor = scene.impostors.GetComponent(entity); @@ -158,9 +159,9 @@ void MeshWindow::Create(EditorComponent* _editor) }); AddWidget(&impostorCreateButton); - impostorDistanceSlider.Create(0, 1000, 100, 10000, "Impostor Distance: "); + impostorDistanceSlider.Create(0, 1000, 100, 10000, "Impostor Dist: "); impostorDistanceSlider.SetTooltip("Assign the distance where the mesh geometry should be switched to the impostor image."); - impostorDistanceSlider.SetSize(XMFLOAT2(100, hei)); + impostorDistanceSlider.SetSize(XMFLOAT2(wid, hei)); impostorDistanceSlider.SetPos(XMFLOAT2(x, y += step)); impostorDistanceSlider.OnSlide([&](wi::gui::EventArgs args) { ImpostorComponent* impostor = editor->GetCurrentScene().impostors.GetComponent(entity); @@ -171,9 +172,9 @@ void MeshWindow::Create(EditorComponent* _editor) }); AddWidget(&impostorDistanceSlider); - tessellationFactorSlider.Create(0, 100, 0, 10000, "Tessellation Factor: "); + tessellationFactorSlider.Create(0, 100, 0, 10000, "Tess Factor: "); tessellationFactorSlider.SetTooltip("Set the dynamic tessellation amount. Tessellation should be enabled in the Renderer window and your GPU must support it!"); - tessellationFactorSlider.SetSize(XMFLOAT2(100, hei)); + tessellationFactorSlider.SetSize(XMFLOAT2(wid, hei)); tessellationFactorSlider.SetPos(XMFLOAT2(x, y += step)); tessellationFactorSlider.OnSlide([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); @@ -184,10 +185,13 @@ void MeshWindow::Create(EditorComponent* _editor) }); AddWidget(&tessellationFactorSlider); + float mod_x = x - 20; + float mod_wid = wid + 40; + flipCullingButton.Create("Flip Culling"); flipCullingButton.SetTooltip("Flip faces to reverse triangle culling order."); - flipCullingButton.SetSize(XMFLOAT2(200, hei)); - flipCullingButton.SetPos(XMFLOAT2(x - 50, y += step)); + flipCullingButton.SetSize(XMFLOAT2(mod_wid, hei)); + flipCullingButton.SetPos(XMFLOAT2(mod_x, y += step)); flipCullingButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -200,8 +204,8 @@ void MeshWindow::Create(EditorComponent* _editor) flipNormalsButton.Create("Flip Normals"); flipNormalsButton.SetTooltip("Flip surface normals."); - flipNormalsButton.SetSize(XMFLOAT2(200, hei)); - flipNormalsButton.SetPos(XMFLOAT2(x - 50, y += step)); + flipNormalsButton.SetSize(XMFLOAT2(mod_wid, hei)); + flipNormalsButton.SetPos(XMFLOAT2(mod_x, y += step)); flipNormalsButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -214,8 +218,8 @@ void MeshWindow::Create(EditorComponent* _editor) computeNormalsSmoothButton.Create("Compute Normals [SMOOTH]"); computeNormalsSmoothButton.SetTooltip("Compute surface normals of the mesh. Resulting normals will be unique per vertex. This can reduce vertex count, but is slow."); - computeNormalsSmoothButton.SetSize(XMFLOAT2(200, hei)); - computeNormalsSmoothButton.SetPos(XMFLOAT2(x - 50, y += step)); + computeNormalsSmoothButton.SetSize(XMFLOAT2(mod_wid, hei)); + computeNormalsSmoothButton.SetPos(XMFLOAT2(mod_x, y += step)); computeNormalsSmoothButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -228,8 +232,8 @@ void MeshWindow::Create(EditorComponent* _editor) computeNormalsHardButton.Create("Compute Normals [HARD]"); computeNormalsHardButton.SetTooltip("Compute surface normals of the mesh. Resulting normals will be unique per face. This can increase vertex count."); - computeNormalsHardButton.SetSize(XMFLOAT2(200, hei)); - computeNormalsHardButton.SetPos(XMFLOAT2(x - 50, y += step)); + computeNormalsHardButton.SetSize(XMFLOAT2(mod_wid, hei)); + computeNormalsHardButton.SetPos(XMFLOAT2(mod_x, y += step)); computeNormalsHardButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -242,8 +246,8 @@ void MeshWindow::Create(EditorComponent* _editor) recenterButton.Create("Recenter"); recenterButton.SetTooltip("Recenter mesh to AABB center."); - recenterButton.SetSize(XMFLOAT2(200, hei)); - recenterButton.SetPos(XMFLOAT2(x - 50, y += step)); + recenterButton.SetSize(XMFLOAT2(mod_wid, hei)); + recenterButton.SetPos(XMFLOAT2(mod_x, y += step)); recenterButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -256,8 +260,8 @@ void MeshWindow::Create(EditorComponent* _editor) recenterToBottomButton.Create("RecenterToBottom"); recenterToBottomButton.SetTooltip("Recenter mesh to AABB bottom."); - recenterToBottomButton.SetSize(XMFLOAT2(200, hei)); - recenterToBottomButton.SetPos(XMFLOAT2(x - 50, y += step)); + recenterToBottomButton.SetSize(XMFLOAT2(mod_wid, hei)); + recenterToBottomButton.SetPos(XMFLOAT2(mod_x, y += step)); recenterToBottomButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -270,8 +274,8 @@ void MeshWindow::Create(EditorComponent* _editor) mergeButton.Create("Merge Selected"); mergeButton.SetTooltip("Merges selected objects/meshes into one."); - mergeButton.SetSize(XMFLOAT2(200, hei)); - mergeButton.SetPos(XMFLOAT2(x - 50, y += step)); + mergeButton.SetSize(XMFLOAT2(mod_wid, hei)); + mergeButton.SetPos(XMFLOAT2(mod_x, y += step)); mergeButton.OnClick([=](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); MeshComponent merged_mesh; @@ -452,8 +456,8 @@ void MeshWindow::Create(EditorComponent* _editor) optimizeButton.Create("Optimize"); optimizeButton.SetTooltip("Run the meshoptimizer library."); - optimizeButton.SetSize(XMFLOAT2(200, hei)); - optimizeButton.SetPos(XMFLOAT2(x - 50, y += step)); + optimizeButton.SetSize(XMFLOAT2(mod_wid, hei)); + optimizeButton.SetPos(XMFLOAT2(mod_x, y += step)); optimizeButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -476,15 +480,9 @@ void MeshWindow::Create(EditorComponent* _editor) - - - // Right side: - x = 150; - y = infolabel_height + 5; - - subsetMaterialComboBox.Create("Subset Material: "); - subsetMaterialComboBox.SetSize(XMFLOAT2(200, hei)); - subsetMaterialComboBox.SetPos(XMFLOAT2(x + 180, y)); + subsetMaterialComboBox.Create("Material: "); + subsetMaterialComboBox.SetSize(XMFLOAT2(wid, hei)); + subsetMaterialComboBox.SetPos(XMFLOAT2(x, y += step)); subsetMaterialComboBox.SetEnabled(false); subsetMaterialComboBox.OnSelect([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -508,8 +506,8 @@ void MeshWindow::Create(EditorComponent* _editor) morphTargetCombo.Create("Morph Target:"); - morphTargetCombo.SetSize(XMFLOAT2(100, hei)); - morphTargetCombo.SetPos(XMFLOAT2(x + 280, y += step)); + morphTargetCombo.SetSize(XMFLOAT2(wid, hei)); + morphTargetCombo.SetPos(XMFLOAT2(x, y += step)); morphTargetCombo.OnSelect([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr && args.iValue < (int)mesh->targets.size()) @@ -522,8 +520,8 @@ void MeshWindow::Create(EditorComponent* _editor) morphTargetSlider.Create(0, 1, 0, 100000, "Weight: "); morphTargetSlider.SetTooltip("Set the weight for morph target"); - morphTargetSlider.SetSize(XMFLOAT2(100, hei)); - morphTargetSlider.SetPos(XMFLOAT2(x + 280, y += step)); + morphTargetSlider.SetSize(XMFLOAT2(wid, hei)); + morphTargetSlider.SetPos(XMFLOAT2(x, y += step)); morphTargetSlider.OnSlide([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr && morphTargetCombo.GetSelected() < (int)mesh->targets.size()) @@ -536,8 +534,8 @@ void MeshWindow::Create(EditorComponent* _editor) lodgenButton.Create("LOD Gen"); lodgenButton.SetTooltip("Generate LODs (levels of detail)."); - lodgenButton.SetSize(XMFLOAT2(200, hei)); - lodgenButton.SetPos(XMFLOAT2(x + 180, y += step)); + lodgenButton.SetSize(XMFLOAT2(wid, hei)); + lodgenButton.SetPos(XMFLOAT2(x, y += step)); lodgenButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -648,29 +646,30 @@ void MeshWindow::Create(EditorComponent* _editor) lodCountSlider.Create(2, 10, 6, 8, "LOD Count: "); lodCountSlider.SetTooltip("This is how many levels of detail will be created."); - lodCountSlider.SetSize(XMFLOAT2(100, hei)); - lodCountSlider.SetPos(XMFLOAT2(x + 280, y += step)); + lodCountSlider.SetSize(XMFLOAT2(wid, hei)); + lodCountSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodCountSlider); lodQualitySlider.Create(0.1f, 1.0f, 0.5f, 10000, "LOD Quality: "); lodQualitySlider.SetTooltip("Lower values will make LODs more agressively simplified."); - lodQualitySlider.SetSize(XMFLOAT2(100, hei)); - lodQualitySlider.SetPos(XMFLOAT2(x + 280, y += step)); + lodQualitySlider.SetSize(XMFLOAT2(wid, hei)); + lodQualitySlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodQualitySlider); lodErrorSlider.Create(0.01f, 0.1f, 0.03f, 10000, "LOD Error: "); lodErrorSlider.SetTooltip("Lower values will make more precise levels of detail."); - lodErrorSlider.SetSize(XMFLOAT2(100, hei)); - lodErrorSlider.SetPos(XMFLOAT2(x + 280, y += step)); + lodErrorSlider.SetSize(XMFLOAT2(wid, hei)); + lodErrorSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodErrorSlider); lodSloppyCheckBox.Create("Sloppy LOD: "); lodSloppyCheckBox.SetTooltip("Use the sloppy simplification algorithm, which is faster but doesn't preserve shape well."); lodSloppyCheckBox.SetSize(XMFLOAT2(hei, hei)); - lodSloppyCheckBox.SetPos(XMFLOAT2(x + 280, y += step)); + lodSloppyCheckBox.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodSloppyCheckBox); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 1000, 80, 0)); + + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY, -1); @@ -697,16 +696,18 @@ void MeshWindow::SetEntity(Entity entity, int subset) ss += "Index count: " + std::to_string(mesh->indices.size()) + "\n"; ss += "Subset count: " + std::to_string(mesh->subsets.size()) + " (" + std::to_string(mesh->GetLODCount()) + " LODs)\n"; ss += "GPU memory: " + std::to_string((mesh->generalBuffer.GetDesc().size + mesh->streamoutBuffer.GetDesc().size) / 1024.0f / 1024.0f) + " MB\n"; - ss += "\nVertex buffers: "; - if (mesh->vb_pos_nor_wind.IsValid()) ss += "position; "; - if (mesh->vb_uvs.IsValid()) ss += "uvsets; "; - if (mesh->vb_atl.IsValid()) ss += "atlas; "; - if (mesh->vb_col.IsValid()) ss += "color; "; - if (mesh->so_pre.IsValid()) ss += "previous_position; "; - if (mesh->vb_bon.IsValid()) ss += "bone; "; - if (mesh->vb_tan.IsValid()) ss += "tangent; "; - if (mesh->so_pos_nor_wind.IsValid()) ss += "streamout_position; "; - if (mesh->so_tan.IsValid()) ss += "streamout_tangents; "; + ss += "\nVertex buffers:\n"; + if (!mesh->vertex_positions.empty()) ss += "\tposition;\n"; + if (!mesh->vertex_normals.empty()) ss += "\tnormal;\n"; + if (!mesh->vertex_windweights.empty()) ss += "\twind;\n"; + if (mesh->vb_uvs.IsValid()) ss += "\tuvsets;\n"; + if (mesh->vb_atl.IsValid()) ss += "\tatlas;\n"; + if (mesh->vb_col.IsValid()) ss += "\tcolor;\n"; + if (mesh->so_pre.IsValid()) ss += "\tprevious_position;\n"; + if (mesh->vb_bon.IsValid()) ss += "\tbone;\n"; + if (mesh->vb_tan.IsValid()) ss += "\ttangent;\n"; + if (mesh->so_pos_nor_wind.IsValid()) ss += "\tstreamout_position;\n"; + if (mesh->so_tan.IsValid()) ss += "\tstreamout_tangents;\n"; meshInfoLabel.SetText(ss); subsetComboBox.ClearItems(); diff --git a/Editor/NameWindow.cpp b/Editor/NameWindow.cpp index 5d09c2194..e54ccaab3 100644 --- a/Editor/NameWindow.cpp +++ b/Editor/NameWindow.cpp @@ -9,13 +9,27 @@ using namespace wi::scene; void NameWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Name Window"); - SetSize(XMFLOAT2(360, 80)); + wi::gui::Window::Create("Name", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(360, 60)); + + closeButton.SetTooltip("Delete NameComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().names.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 60; float y = 0; float step = 25; - float siz = 280; + float siz = 250; float hei = 20; nameInput.Create(""); @@ -34,7 +48,7 @@ void NameWindow::Create(EditorComponent* _editor) }); AddWidget(&nameInput); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 450, 200, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -60,3 +74,9 @@ void NameWindow::SetEntity(Entity entity) nameInput.SetValue("Select entity to modify name..."); } } + +void NameWindow::Update() +{ + nameInput.SetPos(XMFLOAT2(60, 0)); + nameInput.SetSize(XMFLOAT2(GetSize().x - 65, nameInput.GetSize().y)); +} diff --git a/Editor/NameWindow.h b/Editor/NameWindow.h index a9636b9c2..bf7bf0afa 100644 --- a/Editor/NameWindow.h +++ b/Editor/NameWindow.h @@ -13,5 +13,7 @@ public: void SetEntity(wi::ecs::Entity entity); wi::gui::TextInputField nameInput; + + void Update(); }; diff --git a/Editor/ObjectWindow.cpp b/Editor/ObjectWindow.cpp index 0d9adfa1e..77cdad1c7 100644 --- a/Editor/ObjectWindow.cpp +++ b/Editor/ObjectWindow.cpp @@ -260,18 +260,19 @@ void ObjectWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Object Window"); - SetSize(XMFLOAT2(670, 320)); + wi::gui::Window::Create(ICON_OBJECT " Object", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(670, 860)); - float x = 200; + float x = 140; float y = 0; float hei = 18; float step = hei + 2; + float wid = 130; nameLabel.Create("NAMELABEL"); nameLabel.SetText(""); - nameLabel.SetPos(XMFLOAT2(x - 30, y)); - nameLabel.SetSize(XMFLOAT2(150, hei)); + nameLabel.SetPos(XMFLOAT2(x, y)); + nameLabel.SetSize(XMFLOAT2(wid, hei)); AddWidget(&nameLabel); renderableCheckBox.Create("Renderable: "); @@ -304,7 +305,7 @@ void ObjectWindow::Create(EditorComponent* _editor) ditherSlider.Create(0, 1, 0, 1000, "Transparency: "); ditherSlider.SetTooltip("Adjust transparency of the object. Opaque materials will use dithered transparency in this case!"); - ditherSlider.SetSize(XMFLOAT2(100, hei)); + ditherSlider.SetSize(XMFLOAT2(wid, hei)); ditherSlider.SetPos(XMFLOAT2(x, y += step)); ditherSlider.OnSlide([&](wi::gui::EventArgs args) { ObjectComponent* object = editor->GetCurrentScene().objects.GetComponent(entity); @@ -317,7 +318,7 @@ void ObjectWindow::Create(EditorComponent* _editor) cascadeMaskSlider.Create(0, 3, 0, 3, "Cascade Mask: "); cascadeMaskSlider.SetTooltip("How many shadow cascades to skip when rendering this object into shadow maps? (0: skip none, it will be in all cascades, 1: skip first (biggest cascade), ...etc..."); - cascadeMaskSlider.SetSize(XMFLOAT2(100, hei)); + cascadeMaskSlider.SetSize(XMFLOAT2(wid, hei)); cascadeMaskSlider.SetPos(XMFLOAT2(x, y += step)); cascadeMaskSlider.OnSlide([&](wi::gui::EventArgs args) { ObjectComponent* object = editor->GetCurrentScene().objects.GetComponent(entity); @@ -330,7 +331,7 @@ void ObjectWindow::Create(EditorComponent* _editor) lodSlider.Create(0.001f, 10, 1, 10000, "LOD Multiplier: "); lodSlider.SetTooltip("How much the distance to camera will affect LOD selection. (If the mesh has lods)"); - lodSlider.SetSize(XMFLOAT2(100, hei)); + lodSlider.SetSize(XMFLOAT2(wid, hei)); lodSlider.SetPos(XMFLOAT2(x, y += step)); lodSlider.OnSlide([&](wi::gui::EventArgs args) { ObjectComponent* object = editor->GetCurrentScene().objects.GetComponent(entity); @@ -345,13 +346,13 @@ void ObjectWindow::Create(EditorComponent* _editor) physicsLabel.Create("PHYSICSLABEL"); physicsLabel.SetText("PHYSICS SETTINGS"); - physicsLabel.SetPos(XMFLOAT2(x - 30, y += step)); - physicsLabel.SetSize(XMFLOAT2(150, hei)); + physicsLabel.SetPos(XMFLOAT2(x, y += step)); + physicsLabel.SetSize(XMFLOAT2(wid, hei)); AddWidget(&physicsLabel); collisionShapeComboBox.Create("Collision Shape: "); - collisionShapeComboBox.SetSize(XMFLOAT2(100, hei)); + collisionShapeComboBox.SetSize(XMFLOAT2(wid, hei)); collisionShapeComboBox.SetPos(XMFLOAT2(x, y += step)); collisionShapeComboBox.AddItem("DISABLED"); collisionShapeComboBox.AddItem("Box"); @@ -462,7 +463,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&collisionShapeComboBox); XSlider.Create(0, 10, 1, 100000, "X: "); - XSlider.SetSize(XMFLOAT2(100, hei)); + XSlider.SetSize(XMFLOAT2(wid, hei)); XSlider.SetPos(XMFLOAT2(x, y += step)); XSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -487,7 +488,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&XSlider); YSlider.Create(0, 10, 1, 100000, "Y: "); - YSlider.SetSize(XMFLOAT2(100, hei)); + YSlider.SetSize(XMFLOAT2(wid, hei)); YSlider.SetPos(XMFLOAT2(x, y += step)); YSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -509,7 +510,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&YSlider); ZSlider.Create(0, 10, 1, 100000, "Z: "); - ZSlider.SetSize(XMFLOAT2(100, hei)); + ZSlider.SetSize(XMFLOAT2(wid, hei)); ZSlider.SetPos(XMFLOAT2(x, y += step)); ZSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -529,7 +530,7 @@ void ObjectWindow::Create(EditorComponent* _editor) massSlider.Create(0, 10, 1, 100000, "Mass: "); massSlider.SetTooltip("Set the mass amount for the physics engine."); - massSlider.SetSize(XMFLOAT2(100, hei)); + massSlider.SetSize(XMFLOAT2(wid, hei)); massSlider.SetPos(XMFLOAT2(x, y += step)); massSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -542,7 +543,7 @@ void ObjectWindow::Create(EditorComponent* _editor) frictionSlider.Create(0, 1, 0.5f, 100000, "Friction: "); frictionSlider.SetTooltip("Set the friction amount for the physics engine."); - frictionSlider.SetSize(XMFLOAT2(100, hei)); + frictionSlider.SetSize(XMFLOAT2(wid, hei)); frictionSlider.SetPos(XMFLOAT2(x, y += step)); frictionSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -555,7 +556,7 @@ void ObjectWindow::Create(EditorComponent* _editor) restitutionSlider.Create(0, 1, 0, 100000, "Restitution: "); restitutionSlider.SetTooltip("Set the restitution amount for the physics engine."); - restitutionSlider.SetSize(XMFLOAT2(100, hei)); + restitutionSlider.SetSize(XMFLOAT2(wid, hei)); restitutionSlider.SetPos(XMFLOAT2(x, y += step)); restitutionSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -568,7 +569,7 @@ void ObjectWindow::Create(EditorComponent* _editor) lineardampingSlider.Create(0, 1, 0, 100000, "Linear Damping: "); lineardampingSlider.SetTooltip("Set the linear damping amount for the physics engine."); - lineardampingSlider.SetSize(XMFLOAT2(100, hei)); + lineardampingSlider.SetSize(XMFLOAT2(wid, hei)); lineardampingSlider.SetPos(XMFLOAT2(x, y += step)); lineardampingSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -581,7 +582,7 @@ void ObjectWindow::Create(EditorComponent* _editor) angulardampingSlider.Create(0, 1, 0, 100000, "Angular Damping: "); angulardampingSlider.SetTooltip("Set the angular damping amount for the physics engine."); - angulardampingSlider.SetSize(XMFLOAT2(100, hei)); + angulardampingSlider.SetSize(XMFLOAT2(wid, hei)); angulardampingSlider.SetPos(XMFLOAT2(x, y += step)); angulardampingSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -594,7 +595,7 @@ void ObjectWindow::Create(EditorComponent* _editor) physicsMeshLODSlider.Create(0, 6, 0, 6, "Physics Mesh LOD: "); physicsMeshLODSlider.SetTooltip("Specify which LOD to use for triangle mesh physics."); - physicsMeshLODSlider.SetSize(XMFLOAT2(100, hei)); + physicsMeshLODSlider.SetSize(XMFLOAT2(wid, hei)); physicsMeshLODSlider.SetPos(XMFLOAT2(x, y += step)); physicsMeshLODSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -644,7 +645,7 @@ void ObjectWindow::Create(EditorComponent* _editor) lightmapResolutionSlider.Create(32, 1024, 128, 1024 - 32, "Lightmap resolution: "); lightmapResolutionSlider.SetTooltip("Set the approximate resolution for this object's lightmap. This will be packed into the larger global lightmap later."); - lightmapResolutionSlider.SetSize(XMFLOAT2(100, hei)); + lightmapResolutionSlider.SetSize(XMFLOAT2(wid, hei)); lightmapResolutionSlider.SetPos(XMFLOAT2(x, y += step)); lightmapResolutionSlider.OnSlide([&](wi::gui::EventArgs args) { // unfortunately, we must be pow2 with full float lightmap format, otherwise it could be unlimited (but accumulation blending would suffer then) @@ -654,7 +655,8 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&lightmapResolutionSlider); lightmapSourceUVSetComboBox.Create("UV Set: "); - lightmapSourceUVSetComboBox.SetPos(XMFLOAT2(x - 130, y += step)); + lightmapSourceUVSetComboBox.SetPos(XMFLOAT2(x, y += step)); + lightmapSourceUVSetComboBox.SetSize(XMFLOAT2(wid, hei)); lightmapSourceUVSetComboBox.AddItem("Copy UV 0"); lightmapSourceUVSetComboBox.AddItem("Copy UV 1"); lightmapSourceUVSetComboBox.AddItem("Keep Atlas"); @@ -665,8 +667,8 @@ void ObjectWindow::Create(EditorComponent* _editor) generateLightmapButton.Create("Generate Lightmap"); generateLightmapButton.SetTooltip("Render the lightmap for only this object. It will automatically combined with the global lightmap."); - generateLightmapButton.SetPos(XMFLOAT2(x, y)); - generateLightmapButton.SetSize(XMFLOAT2(140, hei)); + generateLightmapButton.SetPos(XMFLOAT2(x, y += step)); + generateLightmapButton.SetSize(XMFLOAT2(wid, hei)); generateLightmapButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -747,7 +749,7 @@ void ObjectWindow::Create(EditorComponent* _editor) stopLightmapGenButton.Create("Stop Lightmap Gen"); stopLightmapGenButton.SetTooltip("Stop the lightmap rendering and save the lightmap."); stopLightmapGenButton.SetPos(XMFLOAT2(x, y += step)); - stopLightmapGenButton.SetSize(XMFLOAT2(140, hei)); + stopLightmapGenButton.SetSize(XMFLOAT2(wid, hei)); stopLightmapGenButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -768,7 +770,7 @@ void ObjectWindow::Create(EditorComponent* _editor) clearLightmapButton.Create("Clear Lightmap"); clearLightmapButton.SetTooltip("Clear the lightmap from this object."); clearLightmapButton.SetPos(XMFLOAT2(x, y += step)); - clearLightmapButton.SetSize(XMFLOAT2(140, hei)); + clearLightmapButton.SetSize(XMFLOAT2(wid, hei)); clearLightmapButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -785,18 +787,18 @@ void ObjectWindow::Create(EditorComponent* _editor) }); AddWidget(&clearLightmapButton); - y = 10; + y += step; colorComboBox.Create("Color picker mode: "); - colorComboBox.SetSize(XMFLOAT2(120, hei)); - colorComboBox.SetPos(XMFLOAT2(x + 300, y += step)); + colorComboBox.SetSize(XMFLOAT2(wid, hei)); + colorComboBox.SetPos(XMFLOAT2(x, y += step)); colorComboBox.AddItem("Base color"); colorComboBox.AddItem("Emissive color"); colorComboBox.SetTooltip("Choose the destination data of the color picker."); AddWidget(&colorComboBox); - colorPicker.Create("Object Color", false); - colorPicker.SetPos(XMFLOAT2(350, y += step)); + colorPicker.Create("Object Color", wi::gui::Window::WindowControls::NONE); + colorPicker.SetPos(XMFLOAT2(5, y += step)); colorPicker.SetVisible(true); colorPicker.SetEnabled(true); colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { @@ -821,7 +823,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&colorPicker); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 720, 120, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/PaintToolWindow.cpp b/Editor/PaintToolWindow.cpp index 617c47bc9..2baa1c66e 100644 --- a/Editor/PaintToolWindow.cpp +++ b/Editor/PaintToolWindow.cpp @@ -13,18 +13,22 @@ void PaintToolWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Paint Tool Window"); - SetSize(XMFLOAT2(360, 540)); + wi::gui::Window::Create("Paint Tool", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(360, 560)); float x = 105; float y = 0; float hei = 20; float step = hei + 4; + float wid = 160; + + colorPicker.Create("Color", wi::gui::Window::WindowControls::NONE); + float mod_wid = colorPicker.GetScale().x; modeComboBox.Create("Mode: "); modeComboBox.SetTooltip("Choose paint tool mode"); modeComboBox.SetPos(XMFLOAT2(x, y)); - modeComboBox.SetSize(XMFLOAT2(200, hei)); + modeComboBox.SetSize(XMFLOAT2(wid, hei)); modeComboBox.AddItem("Disabled"); modeComboBox.AddItem("Texture"); modeComboBox.AddItem("Vertexcolor"); @@ -80,8 +84,8 @@ void PaintToolWindow::Create(EditorComponent* _editor) y += step + 5; infoLabel.Create("Paint Tool is disabled."); - infoLabel.SetSize(XMFLOAT2(GetScale().x - 20, 100)); - infoLabel.SetPos(XMFLOAT2(10, y)); + infoLabel.SetSize(XMFLOAT2(mod_wid - 10, 100)); + infoLabel.SetPos(XMFLOAT2(5, y)); infoLabel.SetColor(wi::Color::Transparent()); AddWidget(&infoLabel); @@ -89,50 +93,49 @@ void PaintToolWindow::Create(EditorComponent* _editor) radiusSlider.Create(1.0f, 500.0f, 50, 10000, "Brush Radius: "); radiusSlider.SetTooltip("Set the brush radius in pixel units"); - radiusSlider.SetSize(XMFLOAT2(200, hei)); + radiusSlider.SetSize(XMFLOAT2(wid, hei)); radiusSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&radiusSlider); amountSlider.Create(0, 1, 1, 10000, "Brush Amount: "); amountSlider.SetTooltip("Set the brush amount. 0 = minimum affection, 1 = maximum affection"); - amountSlider.SetSize(XMFLOAT2(200, hei)); + amountSlider.SetSize(XMFLOAT2(wid, hei)); amountSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&amountSlider); falloffSlider.Create(0, 16, 0, 10000, "Brush Falloff: "); falloffSlider.SetTooltip("Set the brush power. 0 = no falloff, 1 = linear falloff, more = falloff power"); - falloffSlider.SetSize(XMFLOAT2(200, hei)); + falloffSlider.SetSize(XMFLOAT2(wid, hei)); falloffSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&falloffSlider); spacingSlider.Create(0, 500, 1, 500, "Brush Spacing: "); spacingSlider.SetTooltip("Brush spacing means how much brush movement (in pixels) starts a new stroke. 0 = new stroke every frame, 100 = every 100 pixel movement since last stroke will start a new stroke."); - spacingSlider.SetSize(XMFLOAT2(200, hei)); + spacingSlider.SetSize(XMFLOAT2(wid, hei)); spacingSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&spacingSlider); backfaceCheckBox.Create("Backfaces: "); backfaceCheckBox.SetTooltip("Set whether to paint on backfaces of geometry or not"); backfaceCheckBox.SetSize(XMFLOAT2(hei, hei)); - backfaceCheckBox.SetPos(XMFLOAT2(x, y += step)); + backfaceCheckBox.SetPos(XMFLOAT2(x - 20, y += step)); AddWidget(&backfaceCheckBox); wireCheckBox.Create("Wireframe: "); wireCheckBox.SetTooltip("Set whether to draw wireframe on top of geometry or not"); wireCheckBox.SetSize(XMFLOAT2(hei, hei)); - wireCheckBox.SetPos(XMFLOAT2(x + 100, y)); + wireCheckBox.SetPos(XMFLOAT2(x - 20 + 100, y)); wireCheckBox.SetCheck(true); AddWidget(&wireCheckBox); pressureCheckBox.Create("Pressure: "); pressureCheckBox.SetTooltip("Set whether to use pressure sensitivity (for example pen tablet)"); pressureCheckBox.SetSize(XMFLOAT2(hei, hei)); - pressureCheckBox.SetPos(XMFLOAT2(x + 200, y)); + pressureCheckBox.SetPos(XMFLOAT2(x - 20 + 200, y)); pressureCheckBox.SetCheck(false); AddWidget(&pressureCheckBox); - colorPicker.Create("Color", false); - colorPicker.SetPos(XMFLOAT2(10, y += step)); + colorPicker.SetPos(XMFLOAT2(5, y += step)); AddWidget(&colorPicker); y += colorPicker.GetScale().y; @@ -140,7 +143,7 @@ void PaintToolWindow::Create(EditorComponent* _editor) textureSlotComboBox.Create("Texture Slot: "); textureSlotComboBox.SetTooltip("Choose texture slot of the selected material to paint (texture paint mode only)"); textureSlotComboBox.SetPos(XMFLOAT2(x, y += step)); - textureSlotComboBox.SetSize(XMFLOAT2(200, hei)); + textureSlotComboBox.SetSize(XMFLOAT2(wid, hei)); textureSlotComboBox.AddItem("BaseColor (RGBA)", MaterialComponent::BASECOLORMAP); textureSlotComboBox.AddItem("Normal (RGB)", MaterialComponent::NORMALMAP); textureSlotComboBox.AddItem("SurfaceMap (RGBA)", MaterialComponent::SURFACEMAP); @@ -158,7 +161,7 @@ void PaintToolWindow::Create(EditorComponent* _editor) saveTextureButton.Create("Save Texture"); saveTextureButton.SetTooltip("Save edited texture."); - saveTextureButton.SetSize(XMFLOAT2(200, hei)); + saveTextureButton.SetSize(XMFLOAT2(wid, hei)); saveTextureButton.SetPos(XMFLOAT2(x, y += step)); saveTextureButton.OnClick([this] (wi::gui::EventArgs args) { @@ -255,7 +258,8 @@ void PaintToolWindow::Create(EditorComponent* _editor) AddWidget(&revealTextureButton); Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 550, 50, 0)); - SetVisible(false); + + SetMinimized(true); } void PaintToolWindow::Update(float dt) diff --git a/Editor/PostprocessWindow.cpp b/Editor/PostprocessWindow.cpp index dcbabe5bf..38a9daac3 100644 --- a/Editor/PostprocessWindow.cpp +++ b/Editor/PostprocessWindow.cpp @@ -9,18 +9,20 @@ using namespace wi::graphics; void PostprocessWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("PostProcess Window"); - SetSize(XMFLOAT2(420, 400)); + wi::gui::Window::Create("PostProcess", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(420, 500)); - float x = 150; + float x = 110; float y = 0; float hei = 18; float step = hei + 2; + float wid = 140; + float mod_wid = 60; exposureSlider.Create(0.0f, 3.0f, 1, 10000, "Exposure: "); exposureSlider.SetTooltip("Set the tonemap exposure value"); exposureSlider.SetScriptTip("RenderPath3D::SetExposure(float value)"); - exposureSlider.SetSize(XMFLOAT2(100, hei)); + exposureSlider.SetSize(XMFLOAT2(wid, hei)); exposureSlider.SetPos(XMFLOAT2(x, y)); exposureSlider.SetValue(editor->renderPath->getExposure()); exposureSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -53,7 +55,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoComboBox.Create("AO: "); aoComboBox.SetTooltip("Choose Ambient Occlusion type. RTAO is only available if hardware supports ray tracing"); aoComboBox.SetScriptTip("RenderPath3D::SetAO(int value)"); - aoComboBox.SetSize(XMFLOAT2(150, hei)); + aoComboBox.SetSize(XMFLOAT2(wid, hei)); aoComboBox.SetPos(XMFLOAT2(x, y += step)); aoComboBox.AddItem("Disabled"); aoComboBox.AddItem("SSAO"); @@ -93,7 +95,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoPowerSlider.Create(0.25f, 8.0f, 2, 1000, "Power: "); aoPowerSlider.SetTooltip("Set SSAO Power. Higher values produce darker, more pronounced effect"); - aoPowerSlider.SetSize(XMFLOAT2(100, hei)); + aoPowerSlider.SetSize(XMFLOAT2(mod_wid, hei)); aoPowerSlider.SetPos(XMFLOAT2(x + 100, y += step)); aoPowerSlider.SetValue((float)editor->renderPath->getAOPower()); aoPowerSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -103,7 +105,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoRangeSlider.Create(1.0f, 100.0f, 1, 1000, "Range: "); aoRangeSlider.SetTooltip("Set AO ray length. Only for SSAO and RTAO"); - aoRangeSlider.SetSize(XMFLOAT2(100, hei)); + aoRangeSlider.SetSize(XMFLOAT2(mod_wid, hei)); aoRangeSlider.SetPos(XMFLOAT2(x + 100, y += step)); aoRangeSlider.SetValue((float)editor->renderPath->getAOPower()); aoRangeSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -113,7 +115,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoSampleCountSlider.Create(1, 16, 9, 15, "Sample Count: "); aoSampleCountSlider.SetTooltip("Set AO ray count. Only for SSAO"); - aoSampleCountSlider.SetSize(XMFLOAT2(100, hei)); + aoSampleCountSlider.SetSize(XMFLOAT2(mod_wid, hei)); aoSampleCountSlider.SetPos(XMFLOAT2(x + 100, y += step)); aoSampleCountSlider.SetValue((float)editor->renderPath->getAOPower()); aoSampleCountSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -132,11 +134,11 @@ void PostprocessWindow::Create(EditorComponent* _editor) }); AddWidget(&ssrCheckBox); - raytracedReflectionsCheckBox.Create("Ray Traced Reflections: "); + raytracedReflectionsCheckBox.Create("RT Reflections: "); raytracedReflectionsCheckBox.SetTooltip("Enable Ray Traced Reflections. Only if GPU supports raytracing."); raytracedReflectionsCheckBox.SetScriptTip("RenderPath3D::SetRaytracedReflectionsEnabled(bool value)"); raytracedReflectionsCheckBox.SetSize(XMFLOAT2(hei, hei)); - raytracedReflectionsCheckBox.SetPos(XMFLOAT2(x + 200, y)); + raytracedReflectionsCheckBox.SetPos(XMFLOAT2(x + 140, y)); raytracedReflectionsCheckBox.SetCheck(editor->renderPath->getRaytracedReflectionEnabled()); raytracedReflectionsCheckBox.OnClick([=](wi::gui::EventArgs args) { editor->renderPath->setRaytracedReflectionsEnabled(args.bValue); @@ -156,7 +158,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) screenSpaceShadowsRangeSlider.Create(0.1f, 10.0f, 1, 1000, "Range: "); screenSpaceShadowsRangeSlider.SetTooltip("Range of contact shadows"); - screenSpaceShadowsRangeSlider.SetSize(XMFLOAT2(100, hei)); + screenSpaceShadowsRangeSlider.SetSize(XMFLOAT2(mod_wid, hei)); screenSpaceShadowsRangeSlider.SetPos(XMFLOAT2(x + 100, y)); screenSpaceShadowsRangeSlider.SetValue((float)editor->renderPath->getScreenSpaceShadowRange()); screenSpaceShadowsRangeSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -166,7 +168,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) screenSpaceShadowsStepCountSlider.Create(4, 128, 16, 128 - 4, "Sample Count: "); screenSpaceShadowsStepCountSlider.SetTooltip("Sample count of contact shadows. Higher values are better quality but slower."); - screenSpaceShadowsStepCountSlider.SetSize(XMFLOAT2(100, hei)); + screenSpaceShadowsStepCountSlider.SetSize(XMFLOAT2(mod_wid, hei)); screenSpaceShadowsStepCountSlider.SetPos(XMFLOAT2(x + 100, y += step)); screenSpaceShadowsStepCountSlider.SetValue((float)editor->renderPath->getScreenSpaceShadowSampleCount()); screenSpaceShadowsStepCountSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -186,7 +188,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) eyeAdaptionKeySlider.Create(0.01f, 0.5f, 0.1f, 10000, "Key: "); eyeAdaptionKeySlider.SetTooltip("Set the key value for eye adaption."); - eyeAdaptionKeySlider.SetSize(XMFLOAT2(100, hei)); + eyeAdaptionKeySlider.SetSize(XMFLOAT2(mod_wid, hei)); eyeAdaptionKeySlider.SetPos(XMFLOAT2(x + 100, y)); eyeAdaptionKeySlider.SetValue(editor->renderPath->getEyeAdaptionKey()); eyeAdaptionKeySlider.OnSlide([=](wi::gui::EventArgs args) { @@ -196,7 +198,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) eyeAdaptionRateSlider.Create(0.01f, 4, 0.5f, 10000, "Rate: "); eyeAdaptionRateSlider.SetTooltip("Set the eye adaption rate (speed of adjustment)"); - eyeAdaptionRateSlider.SetSize(XMFLOAT2(100, hei)); + eyeAdaptionRateSlider.SetSize(XMFLOAT2(mod_wid, hei)); eyeAdaptionRateSlider.SetPos(XMFLOAT2(x + 100, y += step)); eyeAdaptionRateSlider.SetValue(editor->renderPath->getEyeAdaptionRate()); eyeAdaptionRateSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -218,7 +220,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) motionBlurStrengthSlider.Create(0.1f, 400, 100, 10000, "Strength: "); motionBlurStrengthSlider.SetTooltip("Set the camera shutter speed for motion blur (higher value means stronger blur)."); motionBlurStrengthSlider.SetScriptTip("RenderPath3D::SetMotionBlurStrength(float value)"); - motionBlurStrengthSlider.SetSize(XMFLOAT2(100, hei)); + motionBlurStrengthSlider.SetSize(XMFLOAT2(mod_wid, hei)); motionBlurStrengthSlider.SetPos(XMFLOAT2(x + 100, y)); motionBlurStrengthSlider.SetValue(editor->renderPath->getMotionBlurStrength()); motionBlurStrengthSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -240,7 +242,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) depthOfFieldScaleSlider.Create(1.0f, 20, 100, 1000, "Strength: "); depthOfFieldScaleSlider.SetTooltip("Set depth of field strength. This is used to scale the Camera's ApertureSize setting"); depthOfFieldScaleSlider.SetScriptTip("RenderPath3D::SetDepthOfFieldStrength(float value)"); - depthOfFieldScaleSlider.SetSize(XMFLOAT2(100, hei)); + depthOfFieldScaleSlider.SetSize(XMFLOAT2(mod_wid, hei)); depthOfFieldScaleSlider.SetPos(XMFLOAT2(x + 100, y)); depthOfFieldScaleSlider.SetValue(editor->renderPath->getDepthOfFieldStrength()); depthOfFieldScaleSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -261,7 +263,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) bloomStrengthSlider.Create(0.0f, 10, 1, 1000, "Threshold: "); bloomStrengthSlider.SetTooltip("Set bloom threshold. The values below this will not glow on the screen."); - bloomStrengthSlider.SetSize(XMFLOAT2(100, hei)); + bloomStrengthSlider.SetSize(XMFLOAT2(mod_wid, hei)); bloomStrengthSlider.SetPos(XMFLOAT2(x + 100, y)); bloomStrengthSlider.SetValue(editor->renderPath->getBloomThreshold()); bloomStrengthSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -314,7 +316,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) sharpenFilterAmountSlider.Create(0, 4, 1, 1000, "Amount: "); sharpenFilterAmountSlider.SetTooltip("Set sharpness filter strength."); sharpenFilterAmountSlider.SetScriptTip("RenderPath3D::SetSharpenFilterAmount(float value)"); - sharpenFilterAmountSlider.SetSize(XMFLOAT2(100, hei)); + sharpenFilterAmountSlider.SetSize(XMFLOAT2(mod_wid, hei)); sharpenFilterAmountSlider.SetPos(XMFLOAT2(x + 100, y)); sharpenFilterAmountSlider.SetValue(editor->renderPath->getSharpenFilterAmount()); sharpenFilterAmountSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -334,7 +336,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) outlineThresholdSlider.Create(0, 1, 0.1f, 1000, "Threshold: "); outlineThresholdSlider.SetTooltip("Outline edge detection threshold. Increase if not enough otlines are detected, decrease if too many outlines are detected."); - outlineThresholdSlider.SetSize(XMFLOAT2(100, hei)); + outlineThresholdSlider.SetSize(XMFLOAT2(mod_wid, hei)); outlineThresholdSlider.SetPos(XMFLOAT2(x + 100, y)); outlineThresholdSlider.SetValue(editor->renderPath->getOutlineThreshold()); outlineThresholdSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -344,7 +346,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) outlineThicknessSlider.Create(0, 4, 1, 1000, "Thickness: "); outlineThicknessSlider.SetTooltip("Set outline thickness."); - outlineThicknessSlider.SetSize(XMFLOAT2(100, hei)); + outlineThicknessSlider.SetSize(XMFLOAT2(mod_wid, hei)); outlineThicknessSlider.SetPos(XMFLOAT2(x + 100, y += step)); outlineThicknessSlider.SetValue(editor->renderPath->getOutlineThickness()); outlineThicknessSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -352,7 +354,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) }); AddWidget(&outlineThicknessSlider); - chromaticaberrationCheckBox.Create("Chromatic Aberration: "); + chromaticaberrationCheckBox.Create("Chromatic A.: "); chromaticaberrationCheckBox.SetTooltip("Toggle the full screen chromatic aberration effect. This simulates lens distortion at screen edges."); chromaticaberrationCheckBox.SetSize(XMFLOAT2(hei, hei)); chromaticaberrationCheckBox.SetPos(XMFLOAT2(x, y += step)); @@ -364,7 +366,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) chromaticaberrationSlider.Create(0, 4, 1.0f, 1000, "Amount: "); chromaticaberrationSlider.SetTooltip("The lens distortion amount."); - chromaticaberrationSlider.SetSize(XMFLOAT2(100, hei)); + chromaticaberrationSlider.SetSize(XMFLOAT2(mod_wid, hei)); chromaticaberrationSlider.SetPos(XMFLOAT2(x + 100, y)); chromaticaberrationSlider.SetValue(editor->renderPath->getChromaticAberrationAmount()); chromaticaberrationSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -384,7 +386,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) fsrSlider.Create(0, 2, 1.0f, 1000, "Sharpness: "); fsrSlider.SetTooltip("The sharpening amount to apply for FSR upscaling."); - fsrSlider.SetSize(XMFLOAT2(100, hei)); + fsrSlider.SetSize(XMFLOAT2(mod_wid, hei)); fsrSlider.SetPos(XMFLOAT2(x + 100, y)); fsrSlider.SetValue(editor->renderPath->getFSRSharpness()); fsrSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -394,6 +396,6 @@ void PostprocessWindow::Create(EditorComponent* _editor) Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 500, 80, 0)); - SetVisible(false); + SetMinimized(true); } diff --git a/Editor/RendererWindow.cpp b/Editor/RendererWindow.cpp index 6f0e84360..517fa14a4 100644 --- a/Editor/RendererWindow.cpp +++ b/Editor/RendererWindow.cpp @@ -6,16 +6,19 @@ void RendererWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Renderer Window"); + wi::gui::Window::Create("Renderer", wi::gui::Window::WindowControls::COLLAPSE); wi::renderer::SetToDrawDebugEnvProbes(true); wi::renderer::SetToDrawGridHelper(true); wi::renderer::SetToDrawDebugCameras(true); - SetSize(XMFLOAT2(580, 400)); + SetSize(XMFLOAT2(580, 1120)); - float step = 20, itemheight = 18; - float x = 220, y = 0; + float step = 20; + float itemheight = 18; + float x = 160; + float y = 0; + float wid = 110; vsyncCheckBox.Create("VSync: "); vsyncCheckBox.SetTooltip("Toggle vertical sync"); @@ -29,7 +32,7 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&vsyncCheckBox); swapchainComboBox.Create("Swapchain format: "); - swapchainComboBox.SetSize(XMFLOAT2(100, itemheight)); + swapchainComboBox.SetSize(XMFLOAT2(wid, itemheight)); swapchainComboBox.SetPos(XMFLOAT2(x, y += step)); swapchainComboBox.SetTooltip("Choose between different display output formats.\nIf the display doesn't support the selected format, it will switch back to a reasonable default.\nHDR formats will be only selectable when the current display supports HDR output"); AddWidget(&swapchainComboBox); @@ -48,7 +51,7 @@ void RendererWindow::Create(EditorComponent* _editor) visibilityComputeShadingCheckBox.Create("VCS: "); visibilityComputeShadingCheckBox.SetTooltip("Visibility Compute Shading (experimental)\nThis will shade the scene in compute shaders instead of pixel shaders\nThis has a higher initial performance cost, but it will be faster in high polygon scenes"); - visibilityComputeShadingCheckBox.SetPos(XMFLOAT2(x + 120, y)); + visibilityComputeShadingCheckBox.SetPos(XMFLOAT2(x, y += step)); visibilityComputeShadingCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); visibilityComputeShadingCheckBox.OnClick([=](wi::gui::EventArgs args) { if (args.bValue) @@ -65,7 +68,7 @@ void RendererWindow::Create(EditorComponent* _editor) resolutionScaleSlider.Create(0.25f, 2.0f, 1.0f, 7.0f, "Resolution Scale: "); resolutionScaleSlider.SetTooltip("Adjust the internal rendering resolution."); - resolutionScaleSlider.SetSize(XMFLOAT2(100, itemheight)); + resolutionScaleSlider.SetSize(XMFLOAT2(wid, itemheight)); resolutionScaleSlider.SetPos(XMFLOAT2(x, y += step)); resolutionScaleSlider.SetValue(editor->resolutionScale); resolutionScaleSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -80,7 +83,7 @@ void RendererWindow::Create(EditorComponent* _editor) GIBoostSlider.Create(1, 10, 1.0f, 1000.0f, "GI Boost: "); GIBoostSlider.SetTooltip("Adjust the strength of GI.\nNote that values other than 1.0 will cause mismatch with path tracing reference!"); - GIBoostSlider.SetSize(XMFLOAT2(100, itemheight)); + GIBoostSlider.SetSize(XMFLOAT2(wid, itemheight)); GIBoostSlider.SetPos(XMFLOAT2(x, y += step)); GIBoostSlider.SetValue(wi::renderer::GetGIBoost()); GIBoostSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -136,7 +139,7 @@ void RendererWindow::Create(EditorComponent* _editor) ddgiRayCountSlider.Create(32, DDGI_MAX_RAYCOUNT, 64, DDGI_MAX_RAYCOUNT - 32, "DDGI RayCount: "); ddgiRayCountSlider.SetTooltip("Adjust the ray count per DDGI probe."); - ddgiRayCountSlider.SetSize(XMFLOAT2(100, itemheight)); + ddgiRayCountSlider.SetSize(XMFLOAT2(wid, itemheight)); ddgiRayCountSlider.SetPos(XMFLOAT2(x, y += step)); ddgiRayCountSlider.SetValue((float)wi::renderer::GetDDGIRayCount()); ddgiRayCountSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -164,7 +167,7 @@ void RendererWindow::Create(EditorComponent* _editor) voxelRadianceDebugCheckBox.SetCheck(wi::renderer::GetToDrawVoxelHelper()); AddWidget(&voxelRadianceDebugCheckBox); - voxelRadianceSecondaryBounceCheckBox.Create("Secondary Light Bounce: "); + voxelRadianceSecondaryBounceCheckBox.Create("Voxel GI 2nd Bounce: "); voxelRadianceSecondaryBounceCheckBox.SetTooltip("Toggle secondary light bounce computation for Voxel GI."); voxelRadianceSecondaryBounceCheckBox.SetPos(XMFLOAT2(x, y += step)); voxelRadianceSecondaryBounceCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); @@ -186,7 +189,7 @@ void RendererWindow::Create(EditorComponent* _editor) voxelRadianceVoxelSizeSlider.Create(0.25, 2, 1, 7, "Voxel GI Voxel Size: "); voxelRadianceVoxelSizeSlider.SetTooltip("Adjust the voxel size for Voxel GI calculations."); - voxelRadianceVoxelSizeSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceVoxelSizeSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceVoxelSizeSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceVoxelSizeSlider.SetValue(wi::renderer::GetVoxelRadianceVoxelSize()); voxelRadianceVoxelSizeSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -196,7 +199,7 @@ void RendererWindow::Create(EditorComponent* _editor) voxelRadianceConeTracingSlider.Create(1, 16, 8, 15, "Voxel GI NumCones: "); voxelRadianceConeTracingSlider.SetTooltip("Adjust the number of cones sampled in the radiance gathering phase."); - voxelRadianceConeTracingSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceConeTracingSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceConeTracingSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceConeTracingSlider.SetValue((float)wi::renderer::GetVoxelRadianceNumCones()); voxelRadianceConeTracingSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -204,9 +207,9 @@ void RendererWindow::Create(EditorComponent* _editor) }); AddWidget(&voxelRadianceConeTracingSlider); - voxelRadianceRayStepSizeSlider.Create(0.5f, 2.0f, 0.5f, 10000, "Voxel GI Ray Step Size: "); + voxelRadianceRayStepSizeSlider.Create(0.5f, 2.0f, 0.5f, 10000, "Voxel GI Ray Step: "); voxelRadianceRayStepSizeSlider.SetTooltip("Adjust the precision of ray marching for cone tracing step. Lower values = more precision but slower performance."); - voxelRadianceRayStepSizeSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceRayStepSizeSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceRayStepSizeSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceRayStepSizeSlider.SetValue(wi::renderer::GetVoxelRadianceRayStepSize()); voxelRadianceRayStepSizeSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -214,9 +217,9 @@ void RendererWindow::Create(EditorComponent* _editor) }); AddWidget(&voxelRadianceRayStepSizeSlider); - voxelRadianceMaxDistanceSlider.Create(0, 100, 10, 10000, "Voxel GI Max Distance: "); + voxelRadianceMaxDistanceSlider.Create(0, 100, 10, 10000, "Voxel GI Distance: "); voxelRadianceMaxDistanceSlider.SetTooltip("Adjust max raymarching distance for voxel GI."); - voxelRadianceMaxDistanceSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceMaxDistanceSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceMaxDistanceSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceMaxDistanceSlider.SetValue(wi::renderer::GetVoxelRadianceMaxDistance()); voxelRadianceMaxDistanceSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -290,7 +293,7 @@ void RendererWindow::Create(EditorComponent* _editor) speedMultiplierSlider.Create(0, 4, 1, 100000, "Speed: "); speedMultiplierSlider.SetTooltip("Adjust the global speed (time multiplier)"); - speedMultiplierSlider.SetSize(XMFLOAT2(100, itemheight)); + speedMultiplierSlider.SetSize(XMFLOAT2(wid, itemheight)); speedMultiplierSlider.SetPos(XMFLOAT2(x, y += step)); speedMultiplierSlider.SetValue(wi::renderer::GetGameSpeed()); speedMultiplierSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -333,8 +336,8 @@ void RendererWindow::Create(EditorComponent* _editor) shadowTypeComboBox.SetTooltip("Choose between shadowmaps and ray traced shadows (if available).\n(ray traced shadows need hardware raytracing support)"); AddWidget(&shadowTypeComboBox); - shadowProps2DComboBox.Create("2D Shadowmap resolution: "); - shadowProps2DComboBox.SetSize(XMFLOAT2(100, itemheight)); + shadowProps2DComboBox.Create("2D Shadowmap res: "); + shadowProps2DComboBox.SetSize(XMFLOAT2(wid, itemheight)); shadowProps2DComboBox.SetPos(XMFLOAT2(x, y += step)); shadowProps2DComboBox.AddItem("Off"); shadowProps2DComboBox.AddItem("128"); @@ -377,8 +380,8 @@ void RendererWindow::Create(EditorComponent* _editor) shadowProps2DComboBox.SetScriptTip("SetShadowProps2D(int resolution, int count, int softShadowQuality)"); AddWidget(&shadowProps2DComboBox); - shadowPropsCubeComboBox.Create("Cube Shadowmap resolution: "); - shadowPropsCubeComboBox.SetSize(XMFLOAT2(100, itemheight)); + shadowPropsCubeComboBox.Create("Cube Shadowmap res: "); + shadowPropsCubeComboBox.SetSize(XMFLOAT2(wid, itemheight)); shadowPropsCubeComboBox.SetPos(XMFLOAT2(x, y += step)); shadowPropsCubeComboBox.AddItem("Off"); shadowPropsCubeComboBox.AddItem("128"); @@ -417,7 +420,7 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&shadowPropsCubeComboBox); MSAAComboBox.Create("MSAA: "); - MSAAComboBox.SetSize(XMFLOAT2(100, itemheight)); + MSAAComboBox.SetSize(XMFLOAT2(wid, itemheight)); MSAAComboBox.SetPos(XMFLOAT2(x, y += step)); MSAAComboBox.AddItem("Off"); MSAAComboBox.AddItem("2"); @@ -469,7 +472,7 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&temporalAADebugCheckBox); textureQualityComboBox.Create("Texture Quality: "); - textureQualityComboBox.SetSize(XMFLOAT2(100, itemheight)); + textureQualityComboBox.SetSize(XMFLOAT2(wid, itemheight)); textureQualityComboBox.SetPos(XMFLOAT2(x, y += step)); textureQualityComboBox.AddItem("Nearest"); textureQualityComboBox.AddItem("Bilinear"); @@ -505,7 +508,7 @@ void RendererWindow::Create(EditorComponent* _editor) mipLodBiasSlider.Create(-2, 2, 0, 100000, "MipLOD Bias: "); mipLodBiasSlider.SetTooltip("Bias the rendered mip map level of the material textures."); - mipLodBiasSlider.SetSize(XMFLOAT2(100, itemheight)); + mipLodBiasSlider.SetSize(XMFLOAT2(wid, itemheight)); mipLodBiasSlider.SetPos(XMFLOAT2(x, y += step)); mipLodBiasSlider.OnSlide([&](wi::gui::EventArgs args) { wi::graphics::SamplerDesc desc = wi::renderer::GetSampler(wi::enums::SAMPLER_OBJECTSHADER)->GetDesc(); @@ -516,7 +519,7 @@ void RendererWindow::Create(EditorComponent* _editor) raytraceBounceCountSlider.Create(1, 10, 1, 9, "Raytrace Bounces: "); raytraceBounceCountSlider.SetTooltip("How many light bounces to compute when doing ray tracing."); - raytraceBounceCountSlider.SetSize(XMFLOAT2(100, itemheight)); + raytraceBounceCountSlider.SetSize(XMFLOAT2(wid, itemheight)); raytraceBounceCountSlider.SetPos(XMFLOAT2(x, y += step)); raytraceBounceCountSlider.SetValue((float)wi::renderer::GetRaytraceBounceCount()); raytraceBounceCountSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -527,11 +530,11 @@ void RendererWindow::Create(EditorComponent* _editor) // Visualizer toggles: - x = 540, y = 0; + y += step; nameDebugCheckBox.Create("Name visualizer: "); nameDebugCheckBox.SetTooltip("Visualize the entity names in the scene"); - nameDebugCheckBox.SetPos(XMFLOAT2(x, y)); + nameDebugCheckBox.SetPos(XMFLOAT2(x, y += step)); nameDebugCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); AddWidget(&nameDebugCheckBox); @@ -589,7 +592,7 @@ void RendererWindow::Create(EditorComponent* _editor) debugForceFieldsCheckBox.SetCheck(wi::renderer::GetToDrawDebugForceFields()); AddWidget(&debugForceFieldsCheckBox); - debugRaytraceBVHCheckBox.Create("Raytrace BVH visualizer: "); + debugRaytraceBVHCheckBox.Create("RT BVH visualizer: "); debugRaytraceBVHCheckBox.SetTooltip("Visualize scene BVH if raytracing is enabled"); debugRaytraceBVHCheckBox.SetPos(XMFLOAT2(x, y += step)); debugRaytraceBVHCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); @@ -609,7 +612,7 @@ void RendererWindow::Create(EditorComponent* _editor) envProbesCheckBox.SetCheck(wi::renderer::GetToDrawDebugEnvProbes()); AddWidget(&envProbesCheckBox); - cameraVisCheckBox.Create("Camera Proxy visualizer: "); + cameraVisCheckBox.Create("Camera visualizer: "); cameraVisCheckBox.SetTooltip("Toggle visualization of camera proxies in the scene"); cameraVisCheckBox.SetPos(XMFLOAT2(x, y += step)); cameraVisCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); @@ -630,9 +633,12 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&gridHelperCheckBox); + y += step; + + pickTypeObjectCheckBox.Create("Pick Objects: "); pickTypeObjectCheckBox.SetTooltip("Enable if you want to pick objects with the pointer"); - pickTypeObjectCheckBox.SetPos(XMFLOAT2(x, y += step * 2)); + pickTypeObjectCheckBox.SetPos(XMFLOAT2(x, y += step)); pickTypeObjectCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); pickTypeObjectCheckBox.SetCheck(true); AddWidget(&pickTypeObjectCheckBox); @@ -701,10 +707,12 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&pickTypeSoundCheckBox); + step++; + freezeCullingCameraCheckBox.Create("Freeze culling camera: "); freezeCullingCameraCheckBox.SetTooltip("Freeze culling camera update. Scene culling will not be updated with the view"); - freezeCullingCameraCheckBox.SetPos(XMFLOAT2(x, y += step * 2)); + freezeCullingCameraCheckBox.SetPos(XMFLOAT2(x, y += step)); freezeCullingCameraCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); freezeCullingCameraCheckBox.OnClick([](wi::gui::EventArgs args) { wi::renderer::SetFreezeCullingCameraEnabled(args.bValue); @@ -738,7 +746,7 @@ void RendererWindow::Create(EditorComponent* _editor) Translate(XMFLOAT3(100, 50, 0)); - SetVisible(false); + SetMinimized(true); } uint32_t RendererWindow::GetPickType() const diff --git a/Editor/SoundWindow.cpp b/Editor/SoundWindow.cpp index 591debca6..03a7bbb93 100644 --- a/Editor/SoundWindow.cpp +++ b/Editor/SoundWindow.cpp @@ -10,20 +10,164 @@ using namespace wi::scene; void SoundWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Sound Window"); + wi::gui::Window::Create(ICON_SOUND " Sound", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(440, 220)); - float x = 20; + closeButton.SetTooltip("Delete SoundComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().sounds.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 60; float y = 0; float hei = 18; float step = hei + 2; + float wid = 200; + + + openButton.Create("Open File"); + openButton.SetPos(XMFLOAT2(x, y)); + openButton.SetSize(XMFLOAT2(wid, hei)); + openButton.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Sound"; + params.extensions = wi::resourcemanager::GetSupportedSoundExtensions(); + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + sound->filename = fileName; + sound->soundResource = wi::resourcemanager::Load(fileName, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + }); + }); + } + }); + AddWidget(&openButton); + + filenameLabel.Create("Filename"); + filenameLabel.SetPos(XMFLOAT2(x, y += step)); + filenameLabel.SetSize(XMFLOAT2(wid, hei)); + filenameLabel.font.params.h_align = wi::font::WIFALIGN_RIGHT; + AddWidget(&filenameLabel); + + playstopButton.Create("Play"); + playstopButton.SetTooltip("Play/Stop selected sound instance."); + playstopButton.SetPos(XMFLOAT2(x, y += step)); + playstopButton.SetSize(XMFLOAT2(wid, hei)); + playstopButton.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + if (sound->IsPlaying()) + { + sound->Stop(); + playstopButton.SetText("Play"); + } + else + { + sound->Play(); + playstopButton.SetText("Stop"); + } + } + }); + AddWidget(&playstopButton); + playstopButton.SetEnabled(false); + + loopedCheckbox.Create("Looped: "); + loopedCheckbox.SetTooltip("Enable looping for the selected sound instance."); + loopedCheckbox.SetPos(XMFLOAT2(x, y += step)); + loopedCheckbox.SetSize(XMFLOAT2(hei, hei)); + loopedCheckbox.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->SetLooped(args.bValue); + } + }); + AddWidget(&loopedCheckbox); + loopedCheckbox.SetEnabled(false); + + reverbCheckbox.Create("Reverb: "); + reverbCheckbox.SetTooltip("Enable/disable reverb."); + reverbCheckbox.SetPos(XMFLOAT2(x, y += step)); + reverbCheckbox.SetSize(XMFLOAT2(hei, hei)); + reverbCheckbox.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->soundinstance.SetEnableReverb(args.bValue); + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + } + }); + AddWidget(&reverbCheckbox); + reverbCheckbox.SetEnabled(false); + + disable3dCheckbox.Create("2D: "); + disable3dCheckbox.SetTooltip("Sounds in the scene are 3D spatial by default. Select this to disable 3D effect."); + disable3dCheckbox.SetPos(XMFLOAT2(x, y += step)); + disable3dCheckbox.SetSize(XMFLOAT2(hei, hei)); + disable3dCheckbox.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->SetDisable3D(args.bValue); + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + } + }); + AddWidget(&disable3dCheckbox); + loopedCheckbox.SetEnabled(false); + + volumeSlider.Create(0, 1, 1, 1000, "Volume: "); + volumeSlider.SetTooltip("Set volume level for the selected sound instance."); + volumeSlider.SetPos(XMFLOAT2(x, y += step)); + volumeSlider.SetSize(XMFLOAT2(wid, hei)); + volumeSlider.OnSlide([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->volume = args.fValue; + } + }); + AddWidget(&volumeSlider); + volumeSlider.SetEnabled(false); + + submixComboBox.Create("Submix: "); + submixComboBox.SetPos(XMFLOAT2(x, y += step)); + submixComboBox.SetSize(XMFLOAT2(wid, hei)); + submixComboBox.OnSelect([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->soundinstance.type = (wi::audio::SUBMIX_TYPE)args.iValue; + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + } + }); + submixComboBox.AddItem("SOUNDEFFECT"); + submixComboBox.AddItem("MUSIC"); + submixComboBox.AddItem("USER0"); + submixComboBox.AddItem("USER1"); + submixComboBox.SetTooltip("Set the submix channel of the sound. \nSound properties like volume can be set per sound, or per submix channel."); + submixComboBox.SetScriptTip("SoundInstance::SetSubmixType(int submixType)"); + AddWidget(&submixComboBox); reverbComboBox.Create("Reverb: "); - reverbComboBox.SetPos(XMFLOAT2(x + 80, y)); - reverbComboBox.SetSize(XMFLOAT2(180, hei)); + reverbComboBox.SetPos(XMFLOAT2(x, y += step)); + reverbComboBox.SetSize(XMFLOAT2(wid, hei)); reverbComboBox.OnSelect([&](wi::gui::EventArgs args) { wi::audio::SetReverb((wi::audio::REVERB_PRESET)args.iValue); - }); + }); reverbComboBox.AddItem("DEFAULT"); reverbComboBox.AddItem("GENERIC"); reverbComboBox.AddItem("FOREST"); @@ -57,161 +201,8 @@ void SoundWindow::Create(EditorComponent* _editor) reverbComboBox.SetTooltip("Set the global reverb setting. Sound instances need to enable reverb to take effect!"); AddWidget(&reverbComboBox); - y += step; - addButton.Create("Add Sound"); - addButton.SetTooltip("Add a sound file to the scene."); - addButton.SetPos(XMFLOAT2(x, y += step)); - addButton.SetSize(XMFLOAT2(80, hei)); - addButton.OnClick([=](wi::gui::EventArgs args) { - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::OPEN; - params.description = "Sound"; - params.extensions = wi::resourcemanager::GetSupportedSoundExtensions(); - wi::helper::FileDialog(params, [=](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - Entity entity = editor->GetCurrentScene().Entity_CreateSound("editorSound", fileName); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - }); - }); - AddWidget(&addButton); - - filenameLabel.Create("Filename"); - filenameLabel.SetPos(XMFLOAT2(x, y += step)); - filenameLabel.SetSize(XMFLOAT2(400, hei)); - AddWidget(&filenameLabel); - - nameField.Create("SoundName"); - nameField.SetTooltip("Enter a sound name to identify this entity..."); - nameField.SetPos(XMFLOAT2(x, y += step)); - nameField.SetSize(XMFLOAT2(300, hei)); - nameField.OnInputAccepted([=](wi::gui::EventArgs args) { - NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); - if (name == nullptr) - { - name = &editor->GetCurrentScene().names.Create(entity); - } - *name = args.sValue; - - editor->RefreshEntityTree(); - }); - AddWidget(&nameField); - nameField.SetEnabled(false); - - playstopButton.Create("Play"); - playstopButton.SetTooltip("Play/Stop selected sound instance."); - playstopButton.SetPos(XMFLOAT2(x, y += step)); - playstopButton.SetSize(XMFLOAT2(80, hei)); - playstopButton.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - if (sound->IsPlaying()) - { - sound->Stop(); - playstopButton.SetText("Play"); - } - else - { - sound->Play(); - playstopButton.SetText("Stop"); - } - } - }); - AddWidget(&playstopButton); - playstopButton.SetEnabled(false); - - loopedCheckbox.Create("Looped: "); - loopedCheckbox.SetTooltip("Enable looping for the selected sound instance."); - loopedCheckbox.SetPos(XMFLOAT2(x + 150, y)); - loopedCheckbox.SetSize(XMFLOAT2(hei, hei)); - loopedCheckbox.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->SetLooped(args.bValue); - } - }); - AddWidget(&loopedCheckbox); - loopedCheckbox.SetEnabled(false); - - reverbCheckbox.Create("Reverb: "); - reverbCheckbox.SetTooltip("Enable/disable reverb."); - reverbCheckbox.SetPos(XMFLOAT2(x + 240, y)); - reverbCheckbox.SetSize(XMFLOAT2(hei, hei)); - reverbCheckbox.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->soundinstance.SetEnableReverb(args.bValue); - wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); - } - }); - AddWidget(&reverbCheckbox); - reverbCheckbox.SetEnabled(false); - - disable3dCheckbox.Create("2D: "); - disable3dCheckbox.SetTooltip("Sounds in the scene are 3D spatial by default. Select this to disable 3D effect."); - disable3dCheckbox.SetPos(XMFLOAT2(x + 300, y)); - disable3dCheckbox.SetSize(XMFLOAT2(hei, hei)); - disable3dCheckbox.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->SetDisable3D(args.bValue); - wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); - } - }); - AddWidget(&disable3dCheckbox); - loopedCheckbox.SetEnabled(false); - - volumeSlider.Create(0, 1, 1, 1000, "Volume: "); - volumeSlider.SetTooltip("Set volume level for the selected sound instance."); - volumeSlider.SetPos(XMFLOAT2(x + 60, y += step)); - volumeSlider.SetSize(XMFLOAT2(240, hei)); - volumeSlider.OnSlide([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->volume = args.fValue; - } - }); - AddWidget(&volumeSlider); - volumeSlider.SetEnabled(false); - - submixComboBox.Create("Submix: "); - submixComboBox.SetPos(XMFLOAT2(x + 80, y += step)); - submixComboBox.SetSize(XMFLOAT2(180, hei)); - submixComboBox.OnSelect([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->soundinstance.type = (wi::audio::SUBMIX_TYPE)args.iValue; - wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); - } - }); - submixComboBox.AddItem("SOUNDEFFECT"); - submixComboBox.AddItem("MUSIC"); - submixComboBox.AddItem("USER0"); - submixComboBox.AddItem("USER1"); - submixComboBox.SetTooltip("Set the submix channel of the sound. \nSound properties like volume can be set per sound, or per submix channel."); - submixComboBox.SetScriptTip("SoundInstance::SetSubmixType(int submixType)"); - AddWidget(&submixComboBox); - - Translate(XMFLOAT3(400, 120, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -230,15 +221,6 @@ void SoundWindow::SetEntity(Entity entity) if (sound != nullptr) { filenameLabel.SetText(sound->filename); - if (name == nullptr) - { - nameField.SetText("Enter a sound name..."); - } - else - { - nameField.SetText(name->name); - } - nameField.SetEnabled(true); playstopButton.SetEnabled(true); loopedCheckbox.SetEnabled(true); loopedCheckbox.SetCheck(sound->IsLooped()); @@ -265,8 +247,6 @@ void SoundWindow::SetEntity(Entity entity) else { filenameLabel.SetText(""); - nameField.SetText(""); - nameField.SetEnabled(false); playstopButton.SetEnabled(false); loopedCheckbox.SetEnabled(false); reverbCheckbox.SetEnabled(false); diff --git a/Editor/SoundWindow.h b/Editor/SoundWindow.h index 137aa85ee..81557a37b 100644 --- a/Editor/SoundWindow.h +++ b/Editor/SoundWindow.h @@ -12,10 +12,9 @@ public: wi::ecs::Entity entity = wi::ecs::INVALID_ENTITY; void SetEntity(wi::ecs::Entity entity); + wi::gui::Button openButton; wi::gui::ComboBox reverbComboBox; - wi::gui::Button addButton; wi::gui::Label filenameLabel; - wi::gui::TextInputField nameField; wi::gui::Button playstopButton; wi::gui::CheckBox loopedCheckbox; wi::gui::CheckBox reverbCheckbox; diff --git a/Editor/SpringWindow.cpp b/Editor/SpringWindow.cpp index 8f3d53f67..130a1d76f 100644 --- a/Editor/SpringWindow.cpp +++ b/Editor/SpringWindow.cpp @@ -9,24 +9,32 @@ using namespace wi::scene; void SpringWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Spring Window"); - SetSize(XMFLOAT2(460, 200)); + wi::gui::Window::Create("Spring", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(460, 180)); - float x = 150; + closeButton.SetTooltip("Delete SpringComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().springs.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 120; float y = 0; - float siz = 200; + float siz = 140; float hei = 18; float step = hei + 2; - createButton.Create("Create"); - createButton.SetTooltip("Create/Remove Spring Component to selected entity"); - createButton.SetPos(XMFLOAT2(x, y)); - createButton.SetSize(XMFLOAT2(siz, hei)); - AddWidget(&createButton); - debugCheckBox.Create("DEBUG: "); debugCheckBox.SetTooltip("Enabling this will visualize springs as small yellow X-es in the scene"); - debugCheckBox.SetPos(XMFLOAT2(x, y += step)); + debugCheckBox.SetPos(XMFLOAT2(x, y)); debugCheckBox.SetSize(XMFLOAT2(hei, hei)); AddWidget(&debugCheckBox); @@ -84,7 +92,8 @@ void SpringWindow::Create(EditorComponent* _editor) }); AddWidget(&windSlider); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 700, 80, 0)); + + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -112,28 +121,5 @@ void SpringWindow::SetEntity(Entity entity) SetEnabled(false); } - const TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - createButton.SetEnabled(true); - - if (spring == nullptr) - { - createButton.SetText("Create"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().springs.Create(entity); - SetEntity(entity); - }); - } - else - { - createButton.SetText("Remove"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().springs.Remove_KeepSorted(entity); - SetEntity(entity); - }); - } - } - debugCheckBox.SetEnabled(true); } diff --git a/Editor/SpringWindow.h b/Editor/SpringWindow.h index 00f828367..9d7cfc3fa 100644 --- a/Editor/SpringWindow.h +++ b/Editor/SpringWindow.h @@ -12,7 +12,6 @@ public: wi::ecs::Entity entity; void SetEntity(wi::ecs::Entity entity); - wi::gui::Button createButton; wi::gui::CheckBox debugCheckBox; wi::gui::CheckBox disabledCheckBox; wi::gui::CheckBox stretchCheckBox; diff --git a/Editor/TerrainGenerator.cpp b/Editor/TerrainGenerator.cpp index 4e8237f08..5fe097916 100644 --- a/Editor/TerrainGenerator.cpp +++ b/Editor/TerrainGenerator.cpp @@ -15,6 +15,403 @@ enum PRESET PRESET_ARCTIC, }; +void TerrainGenerator::Create() +{ + RemoveWidgets(); + ClearTransform(); + + wi::gui::Window::Create("Terrain Generator", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(420, 750)); + + float x = 140; + float y = 0; + float step = 25; + float hei = 20; + float wid = 120; + + centerToCamCheckBox.Create("Center to Cam: "); + centerToCamCheckBox.SetTooltip("Automatically generate chunks around camera. This sets the center chunk to camera position."); + centerToCamCheckBox.SetSize(XMFLOAT2(hei, hei)); + centerToCamCheckBox.SetPos(XMFLOAT2(x, y)); + centerToCamCheckBox.SetCheck(true); + AddWidget(¢erToCamCheckBox); + + removalCheckBox.Create("Removal: "); + removalCheckBox.SetTooltip("Automatically remove chunks that are farther than generation distance around center chunk."); + removalCheckBox.SetSize(XMFLOAT2(hei, hei)); + removalCheckBox.SetPos(XMFLOAT2(x + 100, y)); + removalCheckBox.SetCheck(true); + AddWidget(&removalCheckBox); + + grassCheckBox.Create("Grass: "); + grassCheckBox.SetTooltip("Specify whether grass generation is enabled."); + grassCheckBox.SetSize(XMFLOAT2(hei, hei)); + grassCheckBox.SetPos(XMFLOAT2(x, y += step)); + grassCheckBox.SetCheck(true); + AddWidget(&grassCheckBox); + + lodSlider.Create(0.0001f, 0.01f, 0.005f, 10000, "Mesh LOD Distance: "); + lodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier.\nLow values increase LOD detail in distance"); + lodSlider.SetSize(XMFLOAT2(wid, hei)); + lodSlider.SetPos(XMFLOAT2(x, y += step)); + lodSlider.OnSlide([this](wi::gui::EventArgs args) { + for (auto& it : chunks) + { + const ChunkData& chunk_data = it.second; + if (chunk_data.entity != INVALID_ENTITY) + { + ObjectComponent* object = scene->objects.GetComponent(chunk_data.entity); + if (object != nullptr) + { + object->lod_distance_multiplier = args.fValue; + } + } + } + }); + AddWidget(&lodSlider); + + texlodSlider.Create(0.001f, 0.05f, 0.01f, 10000, "Tex LOD Distance: "); + texlodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier for virtual textures.\nLow values increase LOD detail in distance"); + texlodSlider.SetSize(XMFLOAT2(wid, hei)); + texlodSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&texlodSlider); + + generationSlider.Create(0, 16, 12, 16, "Generation Distance: "); + generationSlider.SetTooltip("How far out chunks will be generated (value is in number of chunks)"); + generationSlider.SetSize(XMFLOAT2(wid, hei)); + generationSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&generationSlider); + + propSlider.Create(0, 16, 10, 16, "Prop Distance: "); + propSlider.SetTooltip("How far out props will be generated (value is in number of chunks)"); + propSlider.SetSize(XMFLOAT2(wid, hei)); + propSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&propSlider); + + propDensitySlider.Create(0, 10, 1, 1000, "Prop Density: "); + propDensitySlider.SetTooltip("Modifies overall prop density."); + propDensitySlider.SetSize(XMFLOAT2(wid, hei)); + propDensitySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&propDensitySlider); + + grassDensitySlider.Create(0, 4, 1, 1000, "Grass Density: "); + grassDensitySlider.SetTooltip("Modifies overall grass density."); + grassDensitySlider.SetSize(XMFLOAT2(wid, hei)); + grassDensitySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&grassDensitySlider); + + presetCombo.Create("Preset: "); + presetCombo.SetTooltip("Select a terrain preset"); + presetCombo.SetSize(XMFLOAT2(wid, hei)); + presetCombo.SetPos(XMFLOAT2(x, y += step)); + presetCombo.AddItem("Hills", PRESET_HILLS); + presetCombo.AddItem("Islands", PRESET_ISLANDS); + presetCombo.AddItem("Mountains", PRESET_MOUNTAINS); + presetCombo.AddItem("Arctic", PRESET_ARCTIC); + presetCombo.OnSelect([=](wi::gui::EventArgs args) { + switch (args.userdata) + { + default: + case PRESET_HILLS: + seedSlider.SetValue(5333); + bottomLevelSlider.SetValue(-60); + topLevelSlider.SetValue(380); + perlinBlendSlider.SetValue(0.5f); + perlinFrequencySlider.SetValue(0.0008f); + perlinOctavesSlider.SetValue(6); + voronoiBlendSlider.SetValue(0.5f); + voronoiFrequencySlider.SetValue(0.001f); + voronoiFadeSlider.SetValue(2.59f); + voronoiShapeSlider.SetValue(0.7f); + voronoiFalloffSlider.SetValue(6); + voronoiPerturbationSlider.SetValue(0.1f); + region1Slider.SetValue(1); + region2Slider.SetValue(2); + region3Slider.SetValue(8); + break; + case PRESET_ISLANDS: + seedSlider.SetValue(4691); + bottomLevelSlider.SetValue(-79); + topLevelSlider.SetValue(520); + perlinBlendSlider.SetValue(0.5f); + perlinFrequencySlider.SetValue(0.000991f); + perlinOctavesSlider.SetValue(6); + voronoiBlendSlider.SetValue(0.5f); + voronoiFrequencySlider.SetValue(0.000317f); + voronoiFadeSlider.SetValue(8.2f); + voronoiShapeSlider.SetValue(0.126f); + voronoiFalloffSlider.SetValue(1.392f); + voronoiPerturbationSlider.SetValue(0.126f); + region1Slider.SetValue(8); + region2Slider.SetValue(0.7f); + region3Slider.SetValue(8); + break; + case PRESET_MOUNTAINS: + seedSlider.SetValue(8863); + bottomLevelSlider.SetValue(0); + topLevelSlider.SetValue(2960); + perlinBlendSlider.SetValue(0.5f); + perlinFrequencySlider.SetValue(0.00279f); + perlinOctavesSlider.SetValue(8); + voronoiBlendSlider.SetValue(0.5f); + voronoiFrequencySlider.SetValue(0.000496f); + voronoiFadeSlider.SetValue(5.2f); + voronoiShapeSlider.SetValue(0.412f); + voronoiFalloffSlider.SetValue(1.456f); + voronoiPerturbationSlider.SetValue(0.092f); + region1Slider.SetValue(1); + region2Slider.SetValue(1); + region3Slider.SetValue(0.8f); + break; + case PRESET_ARCTIC: + seedSlider.SetValue(2124); + bottomLevelSlider.SetValue(-50); + topLevelSlider.SetValue(40); + perlinBlendSlider.SetValue(1); + perlinFrequencySlider.SetValue(0.002f); + perlinOctavesSlider.SetValue(4); + voronoiBlendSlider.SetValue(1); + voronoiFrequencySlider.SetValue(0.004f); + voronoiFadeSlider.SetValue(1.8f); + voronoiShapeSlider.SetValue(0.518f); + voronoiFalloffSlider.SetValue(0.2f); + voronoiPerturbationSlider.SetValue(0.298f); + region1Slider.SetValue(8); + region2Slider.SetValue(8); + region3Slider.SetValue(0); + break; + } + Generation_Restart(); + }); + AddWidget(&presetCombo); + + scaleSlider.Create(1, 10, 1, 9, "Chunk Scale: "); + scaleSlider.SetTooltip("Size of one chunk in horizontal directions.\nLarger chunk scale will cover larger distance, but will have less detail per unit."); + scaleSlider.SetSize(XMFLOAT2(wid, hei)); + scaleSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&scaleSlider); + + seedSlider.Create(1, 12345, 3926, 12344, "Seed: "); + seedSlider.SetTooltip("Seed for terrain randomness"); + seedSlider.SetSize(XMFLOAT2(wid, hei)); + seedSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&seedSlider); + + bottomLevelSlider.Create(-100, 0, -60, 10000, "Bottom Level: "); + bottomLevelSlider.SetTooltip("Terrain mesh grid lowest level"); + bottomLevelSlider.SetSize(XMFLOAT2(wid, hei)); + bottomLevelSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&bottomLevelSlider); + + topLevelSlider.Create(0, 5000, 380, 10000, "Top Level: "); + topLevelSlider.SetTooltip("Terrain mesh grid topmost level"); + topLevelSlider.SetSize(XMFLOAT2(wid, hei)); + topLevelSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&topLevelSlider); + + perlinBlendSlider.Create(0, 1, 0.5f, 10000, "Perlin Blend: "); + perlinBlendSlider.SetTooltip("Amount of perlin noise to use"); + perlinBlendSlider.SetSize(XMFLOAT2(wid, hei)); + perlinBlendSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&perlinBlendSlider); + + perlinFrequencySlider.Create(0.0001f, 0.01f, 0.0008f, 10000, "Perlin Frequency: "); + perlinFrequencySlider.SetTooltip("Frequency for the perlin noise"); + perlinFrequencySlider.SetSize(XMFLOAT2(wid, hei)); + perlinFrequencySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&perlinFrequencySlider); + + perlinOctavesSlider.Create(1, 8, 6, 7, "Perlin Octaves: "); + perlinOctavesSlider.SetTooltip("Octave count for the perlin noise"); + perlinOctavesSlider.SetSize(XMFLOAT2(wid, hei)); + perlinOctavesSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&perlinOctavesSlider); + + voronoiBlendSlider.Create(0, 1, 0.5f, 10000, "Voronoi Blend: "); + voronoiBlendSlider.SetTooltip("Amount of voronoi to use for elevation"); + voronoiBlendSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiBlendSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiBlendSlider); + + voronoiFrequencySlider.Create(0.0001f, 0.01f, 0.001f, 10000, "Voronoi Frequency: "); + voronoiFrequencySlider.SetTooltip("Voronoi can create distinctly elevated areas, the more cells there are, smaller the consecutive areas"); + voronoiFrequencySlider.SetSize(XMFLOAT2(wid, hei)); + voronoiFrequencySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiFrequencySlider); + + voronoiFadeSlider.Create(0, 100, 2.59f, 10000, "Voronoi Fade: "); + voronoiFadeSlider.SetTooltip("Fade out voronoi regions by distance from cell's center"); + voronoiFadeSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiFadeSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiFadeSlider); + + voronoiShapeSlider.Create(0, 1, 0.7f, 10000, "Voronoi Shape: "); + voronoiShapeSlider.SetTooltip("How much the voronoi shape will be kept"); + voronoiShapeSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiShapeSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiShapeSlider); + + voronoiFalloffSlider.Create(0, 8, 6, 10000, "Voronoi Falloff: "); + voronoiFalloffSlider.SetTooltip("Controls the falloff of the voronoi distance fade effect"); + voronoiFalloffSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiFalloffSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiFalloffSlider); + + voronoiPerturbationSlider.Create(0, 1, 0.1f, 10000, "Voronoi Perturbation: "); + voronoiPerturbationSlider.SetTooltip("Controls the random look of voronoi region edges"); + voronoiPerturbationSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiPerturbationSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiPerturbationSlider); + + saveHeightmapButton.Create("Save Heightmap..."); + saveHeightmapButton.SetTooltip("Save a heightmap texture from the currently generated terrain, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be normalized into 8bit PNG format which can result in precision loss!"); + saveHeightmapButton.SetSize(XMFLOAT2(wid, hei)); + saveHeightmapButton.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&saveHeightmapButton); + + heightmapButton.Create("Load Heightmap..."); + heightmapButton.SetTooltip("Load a heightmap texture, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be placed in the world center."); + heightmapButton.SetSize(XMFLOAT2(wid, hei)); + heightmapButton.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&heightmapButton); + + heightmapBlendSlider.Create(0, 1, 1, 10000, "Heightmap Blend: "); + heightmapBlendSlider.SetTooltip("Amount of displacement coming from the heightmap texture"); + heightmapBlendSlider.SetSize(XMFLOAT2(wid, hei)); + heightmapBlendSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&heightmapBlendSlider); + + region1Slider.Create(0, 8, 1, 10000, "Slope Region: "); + region1Slider.SetTooltip("The region's falloff power"); + region1Slider.SetSize(XMFLOAT2(wid, hei)); + region1Slider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(®ion1Slider); + + region2Slider.Create(0, 8, 2, 10000, "Low Altitude Region: "); + region2Slider.SetTooltip("The region's falloff power"); + region2Slider.SetSize(XMFLOAT2(wid, hei)); + region2Slider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(®ion2Slider); + + region3Slider.Create(0, 8, 8, 10000, "High Altitude Region: "); + region3Slider.SetTooltip("The region's falloff power"); + region3Slider.SetSize(XMFLOAT2(wid, hei)); + region3Slider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(®ion3Slider); + + + auto generate_callback = [=](wi::gui::EventArgs args) { + Generation_Restart(); + }; + scaleSlider.OnSlide(generate_callback); + seedSlider.OnSlide(generate_callback); + bottomLevelSlider.OnSlide(generate_callback); + topLevelSlider.OnSlide(generate_callback); + perlinFrequencySlider.OnSlide(generate_callback); + perlinBlendSlider.OnSlide(generate_callback); + perlinOctavesSlider.OnSlide(generate_callback); + voronoiBlendSlider.OnSlide(generate_callback); + voronoiFrequencySlider.OnSlide(generate_callback); + voronoiFadeSlider.OnSlide(generate_callback); + voronoiShapeSlider.OnSlide(generate_callback); + voronoiFalloffSlider.OnSlide(generate_callback); + voronoiPerturbationSlider.OnSlide(generate_callback); + heightmapBlendSlider.OnSlide(generate_callback); + region1Slider.OnSlide(generate_callback); + region2Slider.OnSlide(generate_callback); + region3Slider.OnSlide(generate_callback); + + saveHeightmapButton.OnClick([=](wi::gui::EventArgs args) { + + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::SAVE; + params.description = "PNG"; + params.extensions = { "PNG" }; + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + + wi::primitive::AABB aabb; + for (auto& chunk : chunks) + { + const wi::primitive::AABB* object_aabb = scene->aabb_objects.GetComponent(chunk.second.entity); + if (object_aabb != nullptr) + { + aabb = wi::primitive::AABB::Merge(aabb, *object_aabb); + } + } + + HeightmapTexture saved_heightmap; + saved_heightmap.width = int(aabb.getHalfWidth().x * 2 + 1); + saved_heightmap.height = int(aabb.getHalfWidth().z * 2 + 1); + saved_heightmap.data.resize(saved_heightmap.width * saved_heightmap.height); + std::fill(saved_heightmap.data.begin(), saved_heightmap.data.end(), 0u); + + for (auto& chunk : chunks) + { + const ObjectComponent* object = scene->objects.GetComponent(chunk.second.entity); + if (object != nullptr) + { + const MeshComponent* mesh = scene->meshes.GetComponent(object->meshID); + if (mesh != nullptr) + { + const XMMATRIX W = XMLoadFloat4x4(&object->worldMatrix); + for (auto& x : mesh->vertex_positions) + { + XMVECTOR P = XMLoadFloat3(&x); + P = XMVector3Transform(P, W); + XMFLOAT3 p; + XMStoreFloat3(&p, P); + p.x -= aabb._min.x; + p.z -= aabb._min.z; + int coord = int(p.x) + int(p.z) * saved_heightmap.width; + saved_heightmap.data[coord] = uint8_t(wi::math::InverseLerp(aabb._min.y, aabb._max.y, p.y) * 255u); + } + } + } + } + + wi::graphics::TextureDesc desc; + desc.width = uint32_t(saved_heightmap.width); + desc.height = uint32_t(saved_heightmap.height); + desc.format = wi::graphics::Format::R8_UNORM; + bool success = wi::helper::saveTextureToFile(saved_heightmap.data, desc, wi::helper::ReplaceExtension(fileName, "PNG")); + assert(success); + + }); + }); + }); + + heightmapButton.OnClick([=](wi::gui::EventArgs args) { + + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Texture"; + params.extensions = wi::resourcemanager::GetSupportedImageExtensions(); + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + + heightmap = {}; + int bpp = 0; + stbi_uc* rgba = stbi_load(fileName.c_str(), &heightmap.width, &heightmap.height, &bpp, 1); + if (rgba != nullptr) + { + heightmap.data.resize(heightmap.width * heightmap.height); + for (int i = 0; i < heightmap.width * heightmap.height; ++i) + { + heightmap.data[i] = rgba[i]; + } + stbi_image_free(rgba); + Generation_Restart(); + } + }); + }); + }); + + heightmap = {}; + + SetCollapsed(true); +} + void TerrainGenerator::init() { terrainEntity = CreateEntity(); @@ -158,401 +555,6 @@ void TerrainGenerator::init() lods[lod].indexCount = (uint32_t)indices.size() - lods[lod].indexOffset; } - RemoveWidgets(); - ClearTransform(); - - wi::gui::Window::Create("TerraGen (Preview version)"); - SetSize(XMFLOAT2(420, 300)); - - float x = 160; - float y = 0; - float step = 25; - float hei = 20; - - centerToCamCheckBox.Create("Center to Cam: "); - centerToCamCheckBox.SetTooltip("Automatically generate chunks around camera. This sets the center chunk to camera position."); - centerToCamCheckBox.SetSize(XMFLOAT2(hei, hei)); - centerToCamCheckBox.SetPos(XMFLOAT2(x, y)); - centerToCamCheckBox.SetCheck(true); - AddWidget(¢erToCamCheckBox); - - removalCheckBox.Create("Removal: "); - removalCheckBox.SetTooltip("Automatically remove chunks that are farther than generation distance around center chunk."); - removalCheckBox.SetSize(XMFLOAT2(hei, hei)); - removalCheckBox.SetPos(XMFLOAT2(x + 100, y)); - removalCheckBox.SetCheck(true); - AddWidget(&removalCheckBox); - - grassCheckBox.Create("Grass: "); - grassCheckBox.SetTooltip("Specify whether grass generation is enabled."); - grassCheckBox.SetSize(XMFLOAT2(hei, hei)); - grassCheckBox.SetPos(XMFLOAT2(x + 200, y)); - grassCheckBox.SetCheck(true); - AddWidget(&grassCheckBox); - - lodSlider.Create(0.0001f, 0.01f, 0.005f, 10000, "Mesh LOD Distance: "); - lodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier.\nLow values increase LOD detail in distance"); - lodSlider.SetSize(XMFLOAT2(200, hei)); - lodSlider.SetPos(XMFLOAT2(x, y += step)); - lodSlider.OnSlide([this](wi::gui::EventArgs args) { - for (auto& it : chunks) - { - const ChunkData& chunk_data = it.second; - if (chunk_data.entity != INVALID_ENTITY) - { - ObjectComponent* object = scene->objects.GetComponent(chunk_data.entity); - if (object != nullptr) - { - object->lod_distance_multiplier = args.fValue; - } - } - } - }); - AddWidget(&lodSlider); - - texlodSlider.Create(0.001f, 0.05f, 0.01f, 10000, "Texture LOD Distance: "); - texlodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier.\nLow values increase LOD detail in distance"); - texlodSlider.SetSize(XMFLOAT2(200, hei)); - texlodSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&texlodSlider); - - generationSlider.Create(0, 16, 12, 16, "Generation Distance: "); - generationSlider.SetTooltip("How far out chunks will be generated (value is in number of chunks)"); - generationSlider.SetSize(XMFLOAT2(200, hei)); - generationSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&generationSlider); - - propSlider.Create(0, 16, 10, 16, "Prop Distance: "); - propSlider.SetTooltip("How far out props will be generated (value is in number of chunks)"); - propSlider.SetSize(XMFLOAT2(200, hei)); - propSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&propSlider); - - propDensitySlider.Create(0, 10, 1, 1000, "Prop Density: "); - propDensitySlider.SetTooltip("Modifies overall prop density."); - propDensitySlider.SetSize(XMFLOAT2(200, hei)); - propDensitySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&propDensitySlider); - - grassDensitySlider.Create(0, 4, 1, 1000, "Grass Density: "); - grassDensitySlider.SetTooltip("Modifies overall grass density."); - grassDensitySlider.SetSize(XMFLOAT2(200, hei)); - grassDensitySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&grassDensitySlider); - - presetCombo.Create("Preset: "); - presetCombo.SetTooltip("Select a terrain preset"); - presetCombo.SetSize(XMFLOAT2(200, hei)); - presetCombo.SetPos(XMFLOAT2(x, y += step)); - presetCombo.AddItem("Hills", PRESET_HILLS); - presetCombo.AddItem("Islands", PRESET_ISLANDS); - presetCombo.AddItem("Mountains", PRESET_MOUNTAINS); - presetCombo.AddItem("Arctic", PRESET_ARCTIC); - presetCombo.OnSelect([=](wi::gui::EventArgs args) { - switch (args.userdata) - { - default: - case PRESET_HILLS: - seedSlider.SetValue(5333); - bottomLevelSlider.SetValue(-60); - topLevelSlider.SetValue(380); - perlinBlendSlider.SetValue(0.5f); - perlinFrequencySlider.SetValue(0.0008f); - perlinOctavesSlider.SetValue(6); - voronoiBlendSlider.SetValue(0.5f); - voronoiFrequencySlider.SetValue(0.001f); - voronoiFadeSlider.SetValue(2.59f); - voronoiShapeSlider.SetValue(0.7f); - voronoiFalloffSlider.SetValue(6); - voronoiPerturbationSlider.SetValue(0.1f); - region1Slider.SetValue(1); - region2Slider.SetValue(2); - region3Slider.SetValue(8); - break; - case PRESET_ISLANDS: - seedSlider.SetValue(4691); - bottomLevelSlider.SetValue(-79); - topLevelSlider.SetValue(520); - perlinBlendSlider.SetValue(0.5f); - perlinFrequencySlider.SetValue(0.000991f); - perlinOctavesSlider.SetValue(6); - voronoiBlendSlider.SetValue(0.5f); - voronoiFrequencySlider.SetValue(0.000317f); - voronoiFadeSlider.SetValue(8.2f); - voronoiShapeSlider.SetValue(0.126f); - voronoiFalloffSlider.SetValue(1.392f); - voronoiPerturbationSlider.SetValue(0.126f); - region1Slider.SetValue(8); - region2Slider.SetValue(0.7f); - region3Slider.SetValue(8); - break; - case PRESET_MOUNTAINS: - seedSlider.SetValue(8863); - bottomLevelSlider.SetValue(0); - topLevelSlider.SetValue(2960); - perlinBlendSlider.SetValue(0.5f); - perlinFrequencySlider.SetValue(0.00279f); - perlinOctavesSlider.SetValue(8); - voronoiBlendSlider.SetValue(0.5f); - voronoiFrequencySlider.SetValue(0.000496f); - voronoiFadeSlider.SetValue(5.2f); - voronoiShapeSlider.SetValue(0.412f); - voronoiFalloffSlider.SetValue(1.456f); - voronoiPerturbationSlider.SetValue(0.092f); - region1Slider.SetValue(1); - region2Slider.SetValue(1); - region3Slider.SetValue(0.8f); - break; - case PRESET_ARCTIC: - seedSlider.SetValue(2124); - bottomLevelSlider.SetValue(-50); - topLevelSlider.SetValue(40); - perlinBlendSlider.SetValue(1); - perlinFrequencySlider.SetValue(0.002f); - perlinOctavesSlider.SetValue(4); - voronoiBlendSlider.SetValue(1); - voronoiFrequencySlider.SetValue(0.004f); - voronoiFadeSlider.SetValue(1.8f); - voronoiShapeSlider.SetValue(0.518f); - voronoiFalloffSlider.SetValue(0.2f); - voronoiPerturbationSlider.SetValue(0.298f); - region1Slider.SetValue(8); - region2Slider.SetValue(8); - region3Slider.SetValue(0); - break; - } - Generation_Restart(); - }); - AddWidget(&presetCombo); - - scaleSlider.Create(1, 10, 1, 9, "Chunk Scale: "); - scaleSlider.SetTooltip("Size of one chunk in horizontal directions.\nLarger chunk scale will cover larger distance, but will have less detail per unit."); - scaleSlider.SetSize(XMFLOAT2(200, hei)); - scaleSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&scaleSlider); - - seedSlider.Create(1, 12345, 3926, 12344, "Seed: "); - seedSlider.SetTooltip("Seed for terrain randomness"); - seedSlider.SetSize(XMFLOAT2(200, hei)); - seedSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&seedSlider); - - bottomLevelSlider.Create(-100, 0, -60, 10000, "Bottom Level: "); - bottomLevelSlider.SetTooltip("Terrain mesh grid lowest level"); - bottomLevelSlider.SetSize(XMFLOAT2(200, hei)); - bottomLevelSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&bottomLevelSlider); - - topLevelSlider.Create(0, 5000, 380, 10000, "Top Level: "); - topLevelSlider.SetTooltip("Terrain mesh grid topmost level"); - topLevelSlider.SetSize(XMFLOAT2(200, hei)); - topLevelSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&topLevelSlider); - - perlinBlendSlider.Create(0, 1, 0.5f, 10000, "Perlin Blend: "); - perlinBlendSlider.SetTooltip("Amount of perlin noise to use"); - perlinBlendSlider.SetSize(XMFLOAT2(200, hei)); - perlinBlendSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&perlinBlendSlider); - - perlinFrequencySlider.Create(0.0001f, 0.01f, 0.0008f, 10000, "Perlin Frequency: "); - perlinFrequencySlider.SetTooltip("Frequency for the perlin noise"); - perlinFrequencySlider.SetSize(XMFLOAT2(200, hei)); - perlinFrequencySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&perlinFrequencySlider); - - perlinOctavesSlider.Create(1, 8, 6, 7, "Perlin Octaves: "); - perlinOctavesSlider.SetTooltip("Octave count for the perlin noise"); - perlinOctavesSlider.SetSize(XMFLOAT2(200, hei)); - perlinOctavesSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&perlinOctavesSlider); - - voronoiBlendSlider.Create(0, 1, 0.5f, 10000, "Voronoi Blend: "); - voronoiBlendSlider.SetTooltip("Amount of voronoi to use for elevation"); - voronoiBlendSlider.SetSize(XMFLOAT2(200, hei)); - voronoiBlendSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiBlendSlider); - - voronoiFrequencySlider.Create(0.0001f, 0.01f, 0.001f, 10000, "Voronoi Frequency: "); - voronoiFrequencySlider.SetTooltip("Voronoi can create distinctly elevated areas, the more cells there are, smaller the consecutive areas"); - voronoiFrequencySlider.SetSize(XMFLOAT2(200, hei)); - voronoiFrequencySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiFrequencySlider); - - voronoiFadeSlider.Create(0, 100, 2.59f, 10000, "Voronoi Fade: "); - voronoiFadeSlider.SetTooltip("Fade out voronoi regions by distance from cell's center"); - voronoiFadeSlider.SetSize(XMFLOAT2(200, hei)); - voronoiFadeSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiFadeSlider); - - voronoiShapeSlider.Create(0, 1, 0.7f, 10000, "Voronoi Shape: "); - voronoiShapeSlider.SetTooltip("How much the voronoi shape will be kept"); - voronoiShapeSlider.SetSize(XMFLOAT2(200, hei)); - voronoiShapeSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiShapeSlider); - - voronoiFalloffSlider.Create(0, 8, 6, 10000, "Voronoi Falloff: "); - voronoiFalloffSlider.SetTooltip("Controls the falloff of the voronoi distance fade effect"); - voronoiFalloffSlider.SetSize(XMFLOAT2(200, hei)); - voronoiFalloffSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiFalloffSlider); - - voronoiPerturbationSlider.Create(0, 1, 0.1f, 10000, "Voronoi Perturbation: "); - voronoiPerturbationSlider.SetTooltip("Controls the random look of voronoi region edges"); - voronoiPerturbationSlider.SetSize(XMFLOAT2(200, hei)); - voronoiPerturbationSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiPerturbationSlider); - - saveHeightmapButton.Create("Save Heightmap..."); - saveHeightmapButton.SetTooltip("Save a heightmap texture from the currently generated terrain, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be normalized into 8bit PNG format which can result in precision loss!"); - saveHeightmapButton.SetSize(XMFLOAT2(200, hei)); - saveHeightmapButton.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&saveHeightmapButton); - - heightmapButton.Create("Load Heightmap..."); - heightmapButton.SetTooltip("Load a heightmap texture, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be placed in the world center."); - heightmapButton.SetSize(XMFLOAT2(200, hei)); - heightmapButton.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&heightmapButton); - - heightmapBlendSlider.Create(0, 1, 1, 10000, "Heightmap Blend: "); - heightmapBlendSlider.SetTooltip("Amount of displacement coming from the heightmap texture"); - heightmapBlendSlider.SetSize(XMFLOAT2(200, hei)); - heightmapBlendSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&heightmapBlendSlider); - - region1Slider.Create(0, 8, 1, 10000, "Slope Region: "); - region1Slider.SetTooltip("The region's falloff power"); - region1Slider.SetSize(XMFLOAT2(200, hei)); - region1Slider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(®ion1Slider); - - region2Slider.Create(0, 8, 2, 10000, "Low Altitude Region: "); - region2Slider.SetTooltip("The region's falloff power"); - region2Slider.SetSize(XMFLOAT2(200, hei)); - region2Slider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(®ion2Slider); - - region3Slider.Create(0, 8, 8, 10000, "High Altitude Region: "); - region3Slider.SetTooltip("The region's falloff power"); - region3Slider.SetSize(XMFLOAT2(200, hei)); - region3Slider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(®ion3Slider); - - - auto generate_callback = [=](wi::gui::EventArgs args) { - Generation_Restart(); - }; - scaleSlider.OnSlide(generate_callback); - seedSlider.OnSlide(generate_callback); - bottomLevelSlider.OnSlide(generate_callback); - topLevelSlider.OnSlide(generate_callback); - perlinFrequencySlider.OnSlide(generate_callback); - perlinBlendSlider.OnSlide(generate_callback); - perlinOctavesSlider.OnSlide(generate_callback); - voronoiBlendSlider.OnSlide(generate_callback); - voronoiFrequencySlider.OnSlide(generate_callback); - voronoiFadeSlider.OnSlide(generate_callback); - voronoiShapeSlider.OnSlide(generate_callback); - voronoiFalloffSlider.OnSlide(generate_callback); - voronoiPerturbationSlider.OnSlide(generate_callback); - heightmapBlendSlider.OnSlide(generate_callback); - region1Slider.OnSlide(generate_callback); - region2Slider.OnSlide(generate_callback); - region3Slider.OnSlide(generate_callback); - - saveHeightmapButton.OnClick([=](wi::gui::EventArgs args) { - - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::SAVE; - params.description = "PNG"; - params.extensions = { "PNG" }; - wi::helper::FileDialog(params, [=](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - - wi::primitive::AABB aabb; - for (auto& chunk : chunks) - { - const wi::primitive::AABB* object_aabb = scene->aabb_objects.GetComponent(chunk.second.entity); - if (object_aabb != nullptr) - { - aabb = wi::primitive::AABB::Merge(aabb, *object_aabb); - } - } - - HeightmapTexture saved_heightmap; - saved_heightmap.width = int(aabb.getHalfWidth().x * 2 + 1); - saved_heightmap.height = int(aabb.getHalfWidth().z * 2 + 1); - saved_heightmap.data.resize(saved_heightmap.width * saved_heightmap.height); - std::fill(saved_heightmap.data.begin(), saved_heightmap.data.end(), 0u); - - for (auto& chunk : chunks) - { - const ObjectComponent* object = scene->objects.GetComponent(chunk.second.entity); - if (object != nullptr) - { - const MeshComponent* mesh = scene->meshes.GetComponent(object->meshID); - if (mesh != nullptr) - { - const XMMATRIX W = XMLoadFloat4x4(&object->worldMatrix); - for (auto& x : mesh->vertex_positions) - { - XMVECTOR P = XMLoadFloat3(&x); - P = XMVector3Transform(P, W); - XMFLOAT3 p; - XMStoreFloat3(&p, P); - p.x -= aabb._min.x; - p.z -= aabb._min.z; - int coord = int(p.x) + int(p.z) * saved_heightmap.width; - saved_heightmap.data[coord] = uint8_t(wi::math::InverseLerp(aabb._min.y, aabb._max.y, p.y) * 255u); - } - } - } - } - - wi::graphics::TextureDesc desc; - desc.width = uint32_t(saved_heightmap.width); - desc.height = uint32_t(saved_heightmap.height); - desc.format = wi::graphics::Format::R8_UNORM; - bool success = wi::helper::saveTextureToFile(saved_heightmap.data, desc, wi::helper::ReplaceExtension(fileName, "PNG")); - assert(success); - - }); - }); - }); - - heightmapButton.OnClick([=](wi::gui::EventArgs args) { - - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::OPEN; - params.description = "Texture"; - params.extensions = wi::resourcemanager::GetSupportedImageExtensions(); - wi::helper::FileDialog(params, [=](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - - heightmap = {}; - int bpp = 0; - stbi_uc* rgba = stbi_load(fileName.c_str(), &heightmap.width, &heightmap.height, &bpp, 1); - if (rgba != nullptr) - { - heightmap.data.resize(heightmap.width * heightmap.height); - for (int i = 0; i < heightmap.width * heightmap.height; ++i) - { - heightmap.data[i] = rgba[i]; - } - stbi_image_free(rgba); - Generation_Restart(); - } - }); - }); - }); - - heightmap = {}; - - SetPos(XMFLOAT2(50, 110)); - SetVisible(false); - SetEnabled(true); - presetCombo.SetSelectedByUserdata(PRESET_HILLS); } diff --git a/Editor/TerrainGenerator.h b/Editor/TerrainGenerator.h index 837e7d4a5..412ee4362 100644 --- a/Editor/TerrainGenerator.h +++ b/Editor/TerrainGenerator.h @@ -143,6 +143,8 @@ struct TerrainGenerator : public wi::gui::Window wi::gui::Slider region2Slider; wi::gui::Slider region3Slider; + void Create(); + // This needs to be called at least once before using the terrain generator void init(); diff --git a/Editor/TransformWindow.cpp b/Editor/TransformWindow.cpp index e53b5b890..99be41707 100644 --- a/Editor/TransformWindow.cpp +++ b/Editor/TransformWindow.cpp @@ -9,58 +9,62 @@ using namespace wi::scene; void TransformWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Transform Window"); - SetSize(XMFLOAT2(480, 200)); + wi::gui::Window::Create(ICON_TRANSFORM " Transform" , wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(480, 360)); - float x = 100; + closeButton.SetTooltip("Delete TransformComponent\nNote that a lot of components won't work correctly without a TransformComponent!"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().transforms.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 80; + float xx = x; float y = 0; float step = 25; float siz = 50; float hei = 20; - - createButton.Create("Create New Transform"); - createButton.SetTooltip("Create a new entity with only a trasform component"); - createButton.SetPos(XMFLOAT2(x, y)); - createButton.SetSize(XMFLOAT2(350, hei)); - createButton.OnClick([=](wi::gui::EventArgs args) { - Entity entity = CreateEntity(); - editor->GetCurrentScene().transforms.Create(entity); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - AddWidget(&createButton); + float wid = 200; clearButton.Create("Clear Transform"); clearButton.SetTooltip("Reset transform to identity"); - clearButton.SetPos(XMFLOAT2(x, y += step)); - clearButton.SetSize(XMFLOAT2(350, hei)); + clearButton.SetPos(XMFLOAT2(x, y)); + clearButton.SetSize(XMFLOAT2(wid + hei + 1, hei)); clearButton.OnClick([=](wi::gui::EventArgs args) { TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); if (transform != nullptr) { + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + transform->ClearTransform(); + transform->UpdateTransform(); + + editor->RecordEntity(archive, entity); } }); AddWidget(&clearButton); parentCombo.Create("Parent: "); - parentCombo.SetSize(XMFLOAT2(330, hei)); + parentCombo.SetSize(XMFLOAT2(wid, hei)); parentCombo.SetPos(XMFLOAT2(x, y += step)); parentCombo.SetEnabled(false); parentCombo.OnSelect([&](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + Scene& scene = editor->GetCurrentScene(); if (args.iValue == 0) { scene.Component_Detach(entity); @@ -70,13 +74,15 @@ void TransformWindow::Create(EditorComponent* _editor) scene.Component_Attach(entity, (Entity)args.userdata); } + editor->RecordEntity(archive, entity); + }); parentCombo.SetTooltip("Choose a parent entity (also works if selected entity has no transform)"); AddWidget(&parentCombo); txInput.Create(""); txInput.SetValue(0); - txInput.SetDescription("Translation X: "); + txInput.SetDescription("Position X: "); txInput.SetPos(XMFLOAT2(x, y += step)); txInput.SetSize(XMFLOAT2(siz, hei)); txInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -91,7 +97,7 @@ void TransformWindow::Create(EditorComponent* _editor) tyInput.Create(""); tyInput.SetValue(0); - tyInput.SetDescription("Translation Y: "); + tyInput.SetDescription("Position Y: "); tyInput.SetPos(XMFLOAT2(x, y += step)); tyInput.SetSize(XMFLOAT2(siz, hei)); tyInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -106,7 +112,7 @@ void TransformWindow::Create(EditorComponent* _editor) tzInput.Create(""); tzInput.SetValue(0); - tzInput.SetDescription("Translation Z: "); + tzInput.SetDescription("Position Z: "); tzInput.SetPos(XMFLOAT2(x, y += step)); tzInput.SetSize(XMFLOAT2(siz, hei)); tzInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -119,10 +125,56 @@ void TransformWindow::Create(EditorComponent* _editor) }); AddWidget(&tzInput); - - x = 250; - y = step * 2; + y = step; + + sxInput.Create(""); + sxInput.SetValue(1); + sxInput.SetDescription("Scale X: "); + sxInput.SetPos(XMFLOAT2(x, y += step)); + sxInput.SetSize(XMFLOAT2(siz, hei)); + sxInput.OnInputAccepted([&](wi::gui::EventArgs args) { + TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->scale_local.x = args.fValue; + transform->SetDirty(); + } + }); + AddWidget(&sxInput); + + syInput.Create(""); + syInput.SetValue(1); + syInput.SetDescription("Scale Y: "); + syInput.SetPos(XMFLOAT2(x, y += step)); + syInput.SetSize(XMFLOAT2(siz, hei)); + syInput.OnInputAccepted([&](wi::gui::EventArgs args) { + TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->scale_local.y = args.fValue; + transform->SetDirty(); + } + }); + AddWidget(&syInput); + + szInput.Create(""); + szInput.SetValue(1); + szInput.SetDescription("Scale Z: "); + szInput.SetPos(XMFLOAT2(x, y += step)); + szInput.SetSize(XMFLOAT2(siz, hei)); + szInput.OnInputAccepted([&](wi::gui::EventArgs args) { + TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->scale_local.z = args.fValue; + transform->SetDirty(); + } + }); + AddWidget(&szInput); + + x = xx; + y = step * 4.5f; rollInput.Create(""); @@ -188,13 +240,13 @@ void TransformWindow::Create(EditorComponent* _editor) }); AddWidget(&yawInput); - - y += step * 0.5f; + x = 250; + y = step * 4.5f; rxInput.Create(""); rxInput.SetValue(0); rxInput.SetDescription("Quaternion X: "); - rxInput.SetTooltip("Rotation Quaternion.X [After input of this value, quaternion will be renormalized]"); + rxInput.SetTooltip("Rotation Quaternion.X"); rxInput.SetPos(XMFLOAT2(x, y += step)); rxInput.SetSize(XMFLOAT2(siz, hei)); rxInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -202,7 +254,7 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.x = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); @@ -211,7 +263,7 @@ void TransformWindow::Create(EditorComponent* _editor) ryInput.Create(""); ryInput.SetValue(0); ryInput.SetDescription("Quaternion Y: "); - ryInput.SetTooltip("Rotation Quaternion.Y [After input of this value, quaternion will be renormalized]"); + ryInput.SetTooltip("Rotation Quaternion.Y"); ryInput.SetPos(XMFLOAT2(x, y += step)); ryInput.SetSize(XMFLOAT2(siz, hei)); ryInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -219,7 +271,7 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.y = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); @@ -228,7 +280,7 @@ void TransformWindow::Create(EditorComponent* _editor) rzInput.Create(""); rzInput.SetValue(0); rzInput.SetDescription("Quaternion Z: "); - rzInput.SetTooltip("Rotation Quaternion.Z [After input of this value, quaternion will be renormalized]"); + rzInput.SetTooltip("Rotation Quaternion.Z"); rzInput.SetPos(XMFLOAT2(x, y += step)); rzInput.SetSize(XMFLOAT2(siz, hei)); rzInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -236,7 +288,7 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.z = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); @@ -245,7 +297,7 @@ void TransformWindow::Create(EditorComponent* _editor) rwInput.Create(""); rwInput.SetValue(1); rwInput.SetDescription("Quaternion W: "); - rwInput.SetTooltip("Rotation Quaternion.W [After input of this value, quaternion will be renormalized]"); + rwInput.SetTooltip("Rotation Quaternion.W"); rwInput.SetPos(XMFLOAT2(x, y += step)); rwInput.SetSize(XMFLOAT2(siz, hei)); rwInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -253,71 +305,21 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.w = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); AddWidget(&rwInput); + x = xx; + y += step * 0.5f; - - x = 400; - y = step * 2; - - - sxInput.Create(""); - sxInput.SetValue(1); - sxInput.SetDescription("Scale X: "); - sxInput.SetPos(XMFLOAT2(x, y += step)); - sxInput.SetSize(XMFLOAT2(siz, hei)); - sxInput.OnInputAccepted([&](wi::gui::EventArgs args) { - TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->scale_local.x = args.fValue; - transform->SetDirty(); - } - }); - AddWidget(&sxInput); - - syInput.Create(""); - syInput.SetValue(1); - syInput.SetDescription("Scale Y: "); - syInput.SetPos(XMFLOAT2(x, y += step)); - syInput.SetSize(XMFLOAT2(siz, hei)); - syInput.OnInputAccepted([&](wi::gui::EventArgs args) { - TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->scale_local.y = args.fValue; - transform->SetDirty(); - } - }); - AddWidget(&syInput); - - szInput.Create(""); - szInput.SetValue(1); - szInput.SetDescription("Scale Z: "); - szInput.SetPos(XMFLOAT2(x, y += step)); - szInput.SetSize(XMFLOAT2(siz, hei)); - szInput.OnInputAccepted([&](wi::gui::EventArgs args) { - TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->scale_local.z = args.fValue; - transform->SetDirty(); - } - }); - AddWidget(&szInput); - - - x = 400; - y += step * 5; + x = 250; snapScaleInput.Create(""); snapScaleInput.SetValue(1); - snapScaleInput.SetDescription("Snap mode unit for Scale: "); + snapScaleInput.SetDescription("Snap mode Scale: "); snapScaleInput.SetPos(XMFLOAT2(x, y += step)); snapScaleInput.SetSize(XMFLOAT2(siz, hei)); snapScaleInput.SetValue(editor->translator.scale_snap); @@ -328,7 +330,7 @@ void TransformWindow::Create(EditorComponent* _editor) snapRotateInput.Create(""); snapRotateInput.SetValue(1); - snapRotateInput.SetDescription("Snap mode angle for Rotate (in degrees): "); + snapRotateInput.SetDescription("Snap mode Rotate (in degrees): "); snapRotateInput.SetPos(XMFLOAT2(x, y += step)); snapRotateInput.SetSize(XMFLOAT2(siz, hei)); snapRotateInput.SetValue(editor->translator.rotate_snap / XM_PI * 180); @@ -339,7 +341,7 @@ void TransformWindow::Create(EditorComponent* _editor) snapTranslateInput.Create(""); snapTranslateInput.SetValue(1); - snapTranslateInput.SetDescription("Snap mode unit for Translate: "); + snapTranslateInput.SetDescription("Snap mode Translate: "); snapTranslateInput.SetPos(XMFLOAT2(x, y += step)); snapTranslateInput.SetSize(XMFLOAT2(siz, hei)); snapTranslateInput.SetValue(editor->translator.translate_snap); @@ -348,7 +350,8 @@ void TransformWindow::Create(EditorComponent* _editor) }); AddWidget(&snapTranslateInput); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 750, 100, 0)); + + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -389,8 +392,6 @@ void TransformWindow::SetEntity(Entity entity) SetEnabled(false); } - createButton.SetEnabled(true); - parentCombo.SetEnabled(true); parentCombo.ClearItems(); parentCombo.AddItem("NO PARENT"); diff --git a/Editor/TransformWindow.h b/Editor/TransformWindow.h index 86876bd64..4240885bc 100644 --- a/Editor/TransformWindow.h +++ b/Editor/TransformWindow.h @@ -12,7 +12,6 @@ public: wi::ecs::Entity entity; void SetEntity(wi::ecs::Entity entity); - wi::gui::Button createButton; wi::gui::Button clearButton; wi::gui::ComboBox parentCombo; diff --git a/Editor/WeatherWindow.cpp b/Editor/WeatherWindow.cpp index 94a149851..298fd0a6a 100644 --- a/Editor/WeatherWindow.cpp +++ b/Editor/WeatherWindow.cpp @@ -9,18 +9,96 @@ using namespace wi::graphics; void WeatherWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Weather Window"); - SetSize(XMFLOAT2(660, 300)); + wi::gui::Window::Create(ICON_WEATHER " Weather", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(660, 1300)); - float x = 180; + closeButton.SetTooltip("Delete WeatherComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().weathers.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 150; float y = 0; float hei = 18; float step = hei + 2; + float wid = 110; + float mod_x = 10; + + primaryButton.Create("Set as primary weather"); + primaryButton.SetTooltip("This will be set as the primary weather used in rendering"); + primaryButton.SetPos(XMFLOAT2(mod_x, y)); + primaryButton.OnClick([=](wi::gui::EventArgs args) { + + Scene& scene = editor->GetCurrentScene(); + if (!scene.weathers.Contains(entity)) + return; + size_t current = scene.weathers.GetIndex(entity); + scene.weathers.MoveItem(current, 0); + + // Also, we invalidate all environment probes to reflect the sky changes. + InvalidateProbes(); + + }); + AddWidget(&primaryButton); + + colorComboBox.Create("Color picker mode: "); + colorComboBox.SetPos(XMFLOAT2(x, y += step)); + colorComboBox.AddItem("Ambient color"); + colorComboBox.AddItem("Horizon color"); + colorComboBox.AddItem("Zenith color"); + colorComboBox.AddItem("Ocean color"); + colorComboBox.AddItem("V. Cloud color"); + colorComboBox.SetTooltip("Choose the destination data of the color picker."); + AddWidget(&colorComboBox); + + colorPicker.Create("Color", wi::gui::Window::WindowControls::NONE); + colorPicker.SetPos(XMFLOAT2(mod_x, y += step)); + colorPicker.SetVisible(false); + colorPicker.SetEnabled(true); + colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + switch (colorComboBox.GetSelected()) + { + default: + case 0: + weather.ambient = args.color.toFloat3(); + break; + case 1: + weather.horizon = args.color.toFloat3(); + break; + case 2: + weather.zenith = args.color.toFloat3(); + break; + case 3: + weather.oceanParameters.waterColor = args.color.toFloat4(); + break; + case 4: + weather.volumetricCloudParameters.Albedo = args.color.toFloat3(); + break; + } + }); + AddWidget(&colorPicker); + + y += colorPicker.GetScale().y + 5; + + float mod_wid = colorPicker.GetScale().x; + colorComboBox.SetSize(XMFLOAT2(mod_wid - x + mod_x - hei - 1, hei)); + primaryButton.SetSize(XMFLOAT2(mod_wid, hei)); + heightFogCheckBox.Create("Height fog: "); heightFogCheckBox.SetSize(XMFLOAT2(hei, hei)); - heightFogCheckBox.SetPos(XMFLOAT2(x + 100, y)); + heightFogCheckBox.SetPos(XMFLOAT2(x, y)); heightFogCheckBox.OnClick([&](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.SetHeightFog(args.bValue); @@ -28,7 +106,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&heightFogCheckBox); fogStartSlider.Create(0, 5000, 0, 100000, "Fog Start: "); - fogStartSlider.SetSize(XMFLOAT2(100, hei)); + fogStartSlider.SetSize(XMFLOAT2(wid, hei)); fogStartSlider.SetPos(XMFLOAT2(x, y += step)); fogStartSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogStart = args.fValue; @@ -36,7 +114,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogStartSlider); fogEndSlider.Create(1, 5000, 1000, 10000, "Fog End: "); - fogEndSlider.SetSize(XMFLOAT2(100, hei)); + fogEndSlider.SetSize(XMFLOAT2(wid, hei)); fogEndSlider.SetPos(XMFLOAT2(x, y += step)); fogEndSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogEnd = args.fValue; @@ -44,7 +122,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogEndSlider); fogHeightStartSlider.Create(-100, 100, 1, 10000, "Fog Height Start: "); - fogHeightStartSlider.SetSize(XMFLOAT2(100, hei)); + fogHeightStartSlider.SetSize(XMFLOAT2(wid, hei)); fogHeightStartSlider.SetPos(XMFLOAT2(x, y += step)); fogHeightStartSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogHeightStart = args.fValue; @@ -52,7 +130,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogHeightStartSlider); fogHeightEndSlider.Create(-100, 100, 3, 10000, "Fog Height End: "); - fogHeightEndSlider.SetSize(XMFLOAT2(100, hei)); + fogHeightEndSlider.SetSize(XMFLOAT2(wid, hei)); fogHeightEndSlider.SetPos(XMFLOAT2(x, y += step)); fogHeightEndSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogHeightEnd = args.fValue; @@ -60,7 +138,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogHeightEndSlider); fogHeightSkySlider.Create(0, 1, 0, 10000, "Fog Height Sky: "); - fogHeightSkySlider.SetSize(XMFLOAT2(100, hei)); + fogHeightSkySlider.SetSize(XMFLOAT2(wid, hei)); fogHeightSkySlider.SetPos(XMFLOAT2(x, y += step)); fogHeightSkySlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogHeightSky = args.fValue; @@ -68,7 +146,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogHeightSkySlider); cloudinessSlider.Create(0, 1, 0.0f, 10000, "Cloudiness: "); - cloudinessSlider.SetSize(XMFLOAT2(100, hei)); + cloudinessSlider.SetSize(XMFLOAT2(wid, hei)); cloudinessSlider.SetPos(XMFLOAT2(x, y += step)); cloudinessSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloudiness = args.fValue; @@ -76,7 +154,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudinessSlider); cloudScaleSlider.Create(0.00005f, 0.001f, 0.0005f, 10000, "Cloud Scale: "); - cloudScaleSlider.SetSize(XMFLOAT2(100, hei)); + cloudScaleSlider.SetSize(XMFLOAT2(wid, hei)); cloudScaleSlider.SetPos(XMFLOAT2(x, y += step)); cloudScaleSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloudScale = args.fValue; @@ -84,15 +162,15 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudScaleSlider); cloudSpeedSlider.Create(0.001f, 0.2f, 0.1f, 10000, "Cloud Speed: "); - cloudSpeedSlider.SetSize(XMFLOAT2(100, hei)); + cloudSpeedSlider.SetSize(XMFLOAT2(wid, hei)); cloudSpeedSlider.SetPos(XMFLOAT2(x, y += step)); cloudSpeedSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloudSpeed = args.fValue; }); AddWidget(&cloudSpeedSlider); - cloudShadowAmountSlider.Create(0, 1, 0, 10000, "Cloud Shadow Amount: "); - cloudShadowAmountSlider.SetSize(XMFLOAT2(100, hei)); + cloudShadowAmountSlider.Create(0, 1, 0, 10000, "Cloud Shadow: "); + cloudShadowAmountSlider.SetSize(XMFLOAT2(wid, hei)); cloudShadowAmountSlider.SetPos(XMFLOAT2(x, y += step)); cloudShadowAmountSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloud_shadow_amount = args.fValue; @@ -100,7 +178,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudShadowAmountSlider); cloudShadowSpeedSlider.Create(0, 1, 0.2f, 10000, "Cloud Shadow Speed: "); - cloudShadowSpeedSlider.SetSize(XMFLOAT2(100, hei)); + cloudShadowSpeedSlider.SetSize(XMFLOAT2(wid, hei)); cloudShadowSpeedSlider.SetPos(XMFLOAT2(x, y += step)); cloudShadowSpeedSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloud_shadow_speed = args.fValue; @@ -108,7 +186,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudShadowSpeedSlider); cloudShadowScaleSlider.Create(0.0001f, 0.02f, 0.005f, 10000, "Cloud Shadow Scale: "); - cloudShadowScaleSlider.SetSize(XMFLOAT2(100, hei)); + cloudShadowScaleSlider.SetSize(XMFLOAT2(wid, hei)); cloudShadowScaleSlider.SetPos(XMFLOAT2(x, y += step)); cloudShadowScaleSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloud_shadow_scale = args.fValue; @@ -116,7 +194,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudShadowScaleSlider); windSpeedSlider.Create(0.0f, 4.0f, 1.0f, 10000, "Wind Speed: "); - windSpeedSlider.SetSize(XMFLOAT2(100, hei)); + windSpeedSlider.SetSize(XMFLOAT2(wid, hei)); windSpeedSlider.SetPos(XMFLOAT2(x, y += step)); windSpeedSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().windSpeed = args.fValue; @@ -124,7 +202,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windSpeedSlider); windMagnitudeSlider.Create(0.0f, 0.2f, 0.0f, 10000, "Wind Magnitude: "); - windMagnitudeSlider.SetSize(XMFLOAT2(100, hei)); + windMagnitudeSlider.SetSize(XMFLOAT2(wid, hei)); windMagnitudeSlider.SetPos(XMFLOAT2(x, y += step)); windMagnitudeSlider.OnSlide([&](wi::gui::EventArgs args) { UpdateWind(); @@ -132,7 +210,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windMagnitudeSlider); windDirectionSlider.Create(0, 1, 0, 10000, "Wind Direction: "); - windDirectionSlider.SetSize(XMFLOAT2(100, hei)); + windDirectionSlider.SetSize(XMFLOAT2(wid, hei)); windDirectionSlider.SetPos(XMFLOAT2(x, y += step)); windDirectionSlider.OnSlide([&](wi::gui::EventArgs args) { UpdateWind(); @@ -140,7 +218,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windDirectionSlider); windWaveSizeSlider.Create(0, 1, 0, 10000, "Wind Wave Size: "); - windWaveSizeSlider.SetSize(XMFLOAT2(100, hei)); + windWaveSizeSlider.SetSize(XMFLOAT2(wid, hei)); windWaveSizeSlider.SetPos(XMFLOAT2(x, y += step)); windWaveSizeSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().windWaveSize = args.fValue; @@ -148,7 +226,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windWaveSizeSlider); windRandomnessSlider.Create(0, 10, 5, 10000, "Wind Randomness: "); - windRandomnessSlider.SetSize(XMFLOAT2(100, hei)); + windRandomnessSlider.SetSize(XMFLOAT2(wid, hei)); windRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); windRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().windRandomness = args.fValue; @@ -156,7 +234,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windRandomnessSlider); skyExposureSlider.Create(0, 4, 1, 10000, "Sky Exposure: "); - skyExposureSlider.SetSize(XMFLOAT2(100, hei)); + skyExposureSlider.SetSize(XMFLOAT2(wid, hei)); skyExposureSlider.SetPos(XMFLOAT2(x, y += step)); skyExposureSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().skyExposure = args.fValue; @@ -165,7 +243,7 @@ void WeatherWindow::Create(EditorComponent* _editor) starsSlider.Create(0, 1, 0.5f, 10000, "Stars: "); starsSlider.SetTooltip("Amount of stars in the night sky (0 to disable). \nIt will only work with the realistic sky enabled. \nThey will be more visible at night time."); - starsSlider.SetSize(XMFLOAT2(100, hei)); + starsSlider.SetSize(XMFLOAT2(wid, hei)); starsSlider.SetPos(XMFLOAT2(x, y += step)); starsSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().stars = args.fValue; @@ -189,7 +267,7 @@ void WeatherWindow::Create(EditorComponent* _editor) realisticskyCheckBox.Create("Realistic sky: "); realisticskyCheckBox.SetTooltip("Physically based sky rendering model."); realisticskyCheckBox.SetSize(XMFLOAT2(hei, hei)); - realisticskyCheckBox.SetPos(XMFLOAT2(x + 120, y)); + realisticskyCheckBox.SetPos(XMFLOAT2(x, y += step)); realisticskyCheckBox.OnClick([&](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.SetRealisticSky(args.bValue); @@ -200,10 +278,39 @@ void WeatherWindow::Create(EditorComponent* _editor) }); AddWidget(&realisticskyCheckBox); + + volumetricCloudsCheckBox.Create("Volumetric clouds: "); + volumetricCloudsCheckBox.SetTooltip("Enable volumetric cloud rendering, which is separate from the simple cloud parameters."); + volumetricCloudsCheckBox.SetSize(XMFLOAT2(hei, hei)); + volumetricCloudsCheckBox.SetPos(XMFLOAT2(x, y += step)); + volumetricCloudsCheckBox.OnClick([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + weather.SetVolumetricClouds(args.bValue); + }); + AddWidget(&volumetricCloudsCheckBox); + + coverageAmountSlider.Create(0, 10, 0, 1000, "Coverage amount: "); + coverageAmountSlider.SetSize(XMFLOAT2(wid, hei)); + coverageAmountSlider.SetPos(XMFLOAT2(x, y += step)); + coverageAmountSlider.OnSlide([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + weather.volumetricCloudParameters.CoverageAmount = args.fValue; + }); + AddWidget(&coverageAmountSlider); + + coverageMinimumSlider.Create(1, 2, 1, 1000, "Coverage minimmum: "); + coverageMinimumSlider.SetSize(XMFLOAT2(wid, hei)); + coverageMinimumSlider.SetPos(XMFLOAT2(x, y += step)); + coverageMinimumSlider.OnSlide([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + weather.volumetricCloudParameters.CoverageMinimum = args.fValue; + }); + AddWidget(&coverageMinimumSlider); + skyButton.Create("Load Sky"); skyButton.SetTooltip("Load a skybox cubemap texture..."); - skyButton.SetSize(XMFLOAT2(240, hei)); - skyButton.SetPos(XMFLOAT2(x-100, y += step)); + skyButton.SetSize(XMFLOAT2(mod_wid, hei)); + skyButton.SetPos(XMFLOAT2(mod_x, y += step)); skyButton.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -237,8 +344,8 @@ void WeatherWindow::Create(EditorComponent* _editor) colorgradingButton.Create("Load Color Grading LUT"); colorgradingButton.SetTooltip("Load a color grading lookup texture. It must be a 256x16 RGBA image!"); - colorgradingButton.SetSize(XMFLOAT2(240, hei)); - colorgradingButton.SetPos(XMFLOAT2(x - 100, y += step)); + colorgradingButton.SetSize(XMFLOAT2(mod_wid, hei)); + colorgradingButton.SetPos(XMFLOAT2(mod_x, y += step)); colorgradingButton.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -270,9 +377,9 @@ void WeatherWindow::Create(EditorComponent* _editor) // Ocean params: - ocean_enabledCheckBox.Create("Ocean simulation enabled: "); + ocean_enabledCheckBox.Create("Ocean simulation: "); ocean_enabledCheckBox.SetSize(XMFLOAT2(hei, hei)); - ocean_enabledCheckBox.SetPos(XMFLOAT2(x + 100, y += step)); + ocean_enabledCheckBox.SetPos(XMFLOAT2(x, y += step)); ocean_enabledCheckBox.OnClick([&](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.SetOceanEnabled(args.bValue); @@ -285,7 +392,7 @@ void WeatherWindow::Create(EditorComponent* _editor) ocean_patchSizeSlider.Create(1, 1000, 1000, 100000, "Patch size: "); - ocean_patchSizeSlider.SetSize(XMFLOAT2(100, hei)); + ocean_patchSizeSlider.SetSize(XMFLOAT2(wid, hei)); ocean_patchSizeSlider.SetPos(XMFLOAT2(x, y += step)); ocean_patchSizeSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.patch_length); ocean_patchSizeSlider.SetTooltip("Adjust water tiling patch size"); @@ -297,7 +404,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_patchSizeSlider); ocean_waveAmplitudeSlider.Create(0, 1000, 1000, 100000, "Wave amplitude: "); - ocean_waveAmplitudeSlider.SetSize(XMFLOAT2(100, hei)); + ocean_waveAmplitudeSlider.SetSize(XMFLOAT2(wid, hei)); ocean_waveAmplitudeSlider.SetPos(XMFLOAT2(x, y += step)); ocean_waveAmplitudeSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.wave_amplitude); ocean_waveAmplitudeSlider.SetTooltip("Adjust wave size"); @@ -309,7 +416,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_waveAmplitudeSlider); ocean_choppyScaleSlider.Create(0, 10, 1000, 100000, "Choppiness: "); - ocean_choppyScaleSlider.SetSize(XMFLOAT2(100, hei)); + ocean_choppyScaleSlider.SetSize(XMFLOAT2(wid, hei)); ocean_choppyScaleSlider.SetPos(XMFLOAT2(x, y += step)); ocean_choppyScaleSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.choppy_scale); ocean_choppyScaleSlider.SetTooltip("Adjust wave choppiness"); @@ -320,7 +427,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_choppyScaleSlider); ocean_windDependencySlider.Create(0, 1, 1000, 100000, "Wind dependency: "); - ocean_windDependencySlider.SetSize(XMFLOAT2(100, hei)); + ocean_windDependencySlider.SetSize(XMFLOAT2(wid, hei)); ocean_windDependencySlider.SetPos(XMFLOAT2(x, y += step)); ocean_windDependencySlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.wind_dependency); ocean_windDependencySlider.SetTooltip("Adjust wind contribution"); @@ -332,7 +439,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_windDependencySlider); ocean_timeScaleSlider.Create(0, 4, 1000, 100000, "Time scale: "); - ocean_timeScaleSlider.SetSize(XMFLOAT2(100, hei)); + ocean_timeScaleSlider.SetSize(XMFLOAT2(wid, hei)); ocean_timeScaleSlider.SetPos(XMFLOAT2(x, y += step)); ocean_timeScaleSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.time_scale); ocean_timeScaleSlider.SetTooltip("Adjust simulation speed"); @@ -343,7 +450,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_timeScaleSlider); ocean_heightSlider.Create(-100, 100, 0, 100000, "Water level: "); - ocean_heightSlider.SetSize(XMFLOAT2(100, hei)); + ocean_heightSlider.SetSize(XMFLOAT2(wid, hei)); ocean_heightSlider.SetPos(XMFLOAT2(x, y += step)); ocean_heightSlider.SetValue(0); ocean_heightSlider.SetTooltip("Adjust water level"); @@ -354,7 +461,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_heightSlider); ocean_detailSlider.Create(1, 10, 0, 9, "Surface Detail: "); - ocean_detailSlider.SetSize(XMFLOAT2(100, hei)); + ocean_detailSlider.SetSize(XMFLOAT2(wid, hei)); ocean_detailSlider.SetPos(XMFLOAT2(x, y += step)); ocean_detailSlider.SetValue(4); ocean_detailSlider.SetTooltip("Adjust surface tessellation resolution. High values can decrease performance."); @@ -364,8 +471,8 @@ void WeatherWindow::Create(EditorComponent* _editor) }); AddWidget(&ocean_detailSlider); - ocean_toleranceSlider.Create(1, 10, 0, 1000, "Displacement Tolerance: "); - ocean_toleranceSlider.SetSize(XMFLOAT2(100, hei)); + ocean_toleranceSlider.Create(1, 10, 0, 1000, "Tolerance: "); + ocean_toleranceSlider.SetSize(XMFLOAT2(wid, hei)); ocean_toleranceSlider.SetPos(XMFLOAT2(x, y += step)); ocean_toleranceSlider.SetValue(2); ocean_toleranceSlider.SetTooltip("Big waves can introduce glitches on screen borders, this can fix that but surface detail will decrease."); @@ -376,10 +483,10 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_toleranceSlider); - ocean_resetButton.Create("Reset Ocean to default"); + ocean_resetButton.Create("Reset Ocean"); ocean_resetButton.SetTooltip("Reset ocean to default values."); - ocean_resetButton.SetSize(XMFLOAT2(240, hei)); - ocean_resetButton.SetPos(XMFLOAT2(x - 100, y += step)); + ocean_resetButton.SetSize(XMFLOAT2(mod_wid, hei)); + ocean_resetButton.SetPos(XMFLOAT2(mod_x, y += step)); ocean_resetButton.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.oceanParameters = wi::Ocean::OceanParameters(); @@ -388,99 +495,14 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_resetButton); - - - - - - - - - x = 340; - y = 0; - - colorComboBox.Create("Color picker mode: "); - colorComboBox.SetSize(XMFLOAT2(120, hei)); - colorComboBox.SetPos(XMFLOAT2(x + 150, y)); - colorComboBox.AddItem("Ambient color"); - colorComboBox.AddItem("Horizon color"); - colorComboBox.AddItem("Zenith color"); - colorComboBox.AddItem("Ocean color"); - colorComboBox.AddItem("V. Cloud color"); - colorComboBox.SetTooltip("Choose the destination data of the color picker."); - AddWidget(&colorComboBox); - - y += 10; - - colorPicker.Create("Color", false); - colorPicker.SetPos(XMFLOAT2(x, y += step)); - colorPicker.SetVisible(false); - colorPicker.SetEnabled(true); - colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - switch (colorComboBox.GetSelected()) - { - default: - case 0: - weather.ambient = args.color.toFloat3(); - break; - case 1: - weather.horizon = args.color.toFloat3(); - break; - case 2: - weather.zenith = args.color.toFloat3(); - break; - case 3: - weather.oceanParameters.waterColor = args.color.toFloat4(); - break; - case 4: - weather.volumetricCloudParameters.Albedo = args.color.toFloat3(); - break; - } - }); - AddWidget(&colorPicker); - - y += colorPicker.GetScale().y; - - - volumetricCloudsCheckBox.Create("Volumetric clouds: "); - volumetricCloudsCheckBox.SetTooltip("Enable volumetric cloud rendering, which is separate from the simple cloud parameters."); - volumetricCloudsCheckBox.SetSize(XMFLOAT2(hei, hei)); - volumetricCloudsCheckBox.SetPos(XMFLOAT2(x + 280, y += step)); - volumetricCloudsCheckBox.OnClick([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - weather.SetVolumetricClouds(args.bValue); - }); - AddWidget(&volumetricCloudsCheckBox); - - coverageAmountSlider.Create(0, 10, 0, 1000, "Coverage amount: "); - coverageAmountSlider.SetSize(XMFLOAT2(100, hei)); - coverageAmountSlider.SetPos(XMFLOAT2(x + 150, y += step)); - coverageAmountSlider.OnSlide([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - weather.volumetricCloudParameters.CoverageAmount = args.fValue; - }); - AddWidget(&coverageAmountSlider); - - coverageMinimumSlider.Create(1, 2, 1, 1000, "Coverage minimmum: "); - coverageMinimumSlider.SetSize(XMFLOAT2(100, hei)); - coverageMinimumSlider.SetPos(XMFLOAT2(x + 150, y += step)); - coverageMinimumSlider.OnSlide([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - weather.volumetricCloudParameters.CoverageMinimum = args.fValue; - }); - AddWidget(&coverageMinimumSlider); - - preset0Button.Create("WeatherPreset - Default"); preset0Button.SetTooltip("Apply this weather preset to the world."); - preset0Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset0Button.SetPos(XMFLOAT2(x, y += step)); + preset0Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset0Button.SetPos(XMFLOAT2(mod_x, y += step)); preset0Button.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - scene.weathers.Clear(); - scene.weather = WeatherComponent(); + auto& weather = GetWeather(); + weather = WeatherComponent(); InvalidateProbes(); @@ -489,8 +511,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset1Button.Create("WeatherPreset - Daytime"); preset1Button.SetTooltip("Apply this weather preset to the world."); - preset1Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset1Button.SetPos(XMFLOAT2(x, y += step)); + preset1Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset1Button.SetPos(XMFLOAT2(mod_x, y += step)); preset1Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -509,8 +531,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset2Button.Create("WeatherPreset - Sunset"); preset2Button.SetTooltip("Apply this weather preset to the world."); - preset2Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset2Button.SetPos(XMFLOAT2(x, y += step)); + preset2Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset2Button.SetPos(XMFLOAT2(mod_x, y += step)); preset2Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -529,8 +551,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset3Button.Create("WeatherPreset - Cloudy"); preset3Button.SetTooltip("Apply this weather preset to the world."); - preset3Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset3Button.SetPos(XMFLOAT2(x, y += step)); + preset3Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset3Button.SetPos(XMFLOAT2(mod_x, y += step)); preset3Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -549,8 +571,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset4Button.Create("WeatherPreset - Night"); preset4Button.SetTooltip("Apply this weather preset to the world."); - preset4Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset4Button.SetPos(XMFLOAT2(x, y += step)); + preset4Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset4Button.SetPos(XMFLOAT2(mod_x, y += step)); preset4Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -569,8 +591,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset5Button.Create("WeatherPreset - White Furnace"); preset5Button.SetTooltip("The white furnace mode sets the environment to fully white, it is useful to test energy conservation of light and materials. \nIf you don't see it as fully white, it is because the tone mapping."); - preset5Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset5Button.SetPos(XMFLOAT2(x, y += step)); + preset5Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset5Button.SetPos(XMFLOAT2(mod_x, y += step)); preset5Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -591,8 +613,8 @@ void WeatherWindow::Create(EditorComponent* _editor) eliminateCoarseCascadesButton.Create("EliminateCoarseCascades"); eliminateCoarseCascadesButton.SetTooltip("Eliminate the coarse cascade mask for every object in the scene."); - eliminateCoarseCascadesButton.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - eliminateCoarseCascadesButton.SetPos(XMFLOAT2(x, y += step * 2)); + eliminateCoarseCascadesButton.SetSize(XMFLOAT2(mod_wid, hei)); + eliminateCoarseCascadesButton.SetPos(XMFLOAT2(mod_x, y += step * 2)); eliminateCoarseCascadesButton.OnClick([=](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -607,8 +629,8 @@ void WeatherWindow::Create(EditorComponent* _editor) ktxConvButton.Create("KTX2 Convert"); ktxConvButton.SetTooltip("All material textures in the scene will be converted to KTX2 format.\nTHIS MIGHT TAKE LONG, SO GET YOURSELF A COFFEE OR TEA!"); - ktxConvButton.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - ktxConvButton.SetPos(XMFLOAT2(x, y += step)); + ktxConvButton.SetSize(XMFLOAT2(mod_wid, hei)); + ktxConvButton.SetPos(XMFLOAT2(mod_x, y += step)); ktxConvButton.OnClick([=](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -659,16 +681,26 @@ void WeatherWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(130, 30, 0)); + SetMinimized(true); SetVisible(false); } +void WeatherWindow::SetEntity(wi::ecs::Entity entity) +{ + this->entity = entity; + Scene& scene = editor->GetCurrentScene(); + if (!scene.weathers.Contains(entity)) + { + this->entity = INVALID_ENTITY; + } +} + void WeatherWindow::Update() { Scene& scene = editor->GetCurrentScene(); if (scene.weathers.GetCount() > 0) { - auto& weather = scene.weathers[0]; + auto& weather = GetWeather(); if (!weather.skyMapName.empty()) { @@ -741,11 +773,11 @@ void WeatherWindow::Update() WeatherComponent& WeatherWindow::GetWeather() const { Scene& scene = editor->GetCurrentScene(); - if (scene.weathers.GetCount() == 0) + if (!scene.weathers.Contains(entity)) { - scene.weathers.Create(CreateEntity()); + return scene.weather; } - return scene.weathers[0]; + return *scene.weathers.GetComponent(entity); } void WeatherWindow::InvalidateProbes() const diff --git a/Editor/WeatherWindow.h b/Editor/WeatherWindow.h index eaea29b01..5db68977a 100644 --- a/Editor/WeatherWindow.h +++ b/Editor/WeatherWindow.h @@ -13,9 +13,12 @@ public: EditorComponent* editor = nullptr; + wi::ecs::Entity entity = wi::ecs::INVALID_ENTITY; + void SetEntity(wi::ecs::Entity entity); wi::scene::WeatherComponent& GetWeather() const; void InvalidateProbes() const; + wi::gui::Button primaryButton; wi::gui::CheckBox heightFogCheckBox; wi::gui::Slider fogStartSlider; wi::gui::Slider fogEndSlider; diff --git a/Editor/images/armature.dds b/Editor/images/armature.dds deleted file mode 100644 index 89a5d6b11924968677db556010be6b0ab5b65390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65664 zcmeHQ30xFsmajf&yBp|kITQsI6P|KTt9boj!%>qa2gETRj`0wVfMY%gM}wjq<8e>pAyFL3Y&?=F3)Q}? zF>r{Ala-RBR~iFCIFV9Gk}?_t$Z1NVq~4zxuqA+dLl=sk*BIbDmXqQ0T&a@3t`o|Q z()W`Da%SWEuAJz2zK;3L&jtL=F&_VNJZ$&|NV5mZGD^OP$X!hG%%0<;IoU;8nfYPh zaROi`H&Z~S_oqSJc`s#MK~-Q3Iq&V9lu;EB%$=rOe5m&`1$cM1lY6KpO}*u>BKY@E zfIQE633maFjQ*m-+j$`;t0dMhI{cmAU#8GnPIk-(G7{`B4t$6Q zpH8#3~EjWdKvg5YG_~3|BVXn^3+h@f~k%EszmM|qP^)a&iM2A4)d_0O!&xOvkLiu z+^?5%)#;9Tu0+<#tRrs;WTj-)RC<5;LGJnz#rv*bN#n@sGd3EsOYP&R0|SrMcGybJhXNDq{G{XZeNJzr=K%pC;y53N%LhESAV zudn!Je3G?s=}?t&gfGhKQTdc_QsY|zN#p#KAXBdnPs+Hp#Cg#>k<9xq%^OlM^;UrM z!qpJ_f%CJcg#!Ks`hJujqwfjc2YOnM3Gv_8MJzkHyVoY2f9np3{6&KI z5G}(8L>}2&%nvU;4|oTDcy}s;PxIv$lD0SJEK=WU8m`ovk2=$H>wb8}ouZm7a=*5H zQi?9E9F_zh-eg&~p-oCrf4WH(2hcR#WO*m@UHEr;qtzeDsM^xHa*he)B?ZqnKvcNN z@7AnSjf;ZqhgSQ9zX+WOm zO7wp>1xOrvV#xcVF-^WY`#D1e08UN|Aykt`rm+dWsk1%$~?e7!FQl5 zBNINb$NQ_%mHAaGE^1i)Y>rB~X;PHWIDFw&6Gc^oI!mjp#?!ak0nl_qg$nRZIpObk z*go(+i!|(yY_j6jY%j=&)|KQ~jOr%KF)wpPsLI@a zVh00n`lE)2f%kjm5BhMe)CgaerU&gYn&35c72sEUs@g(PhS|9-nK7)sm-{h%kUGYW z4?-9|C?t6Ia6*3I@vj7b!Mdx+%#A0Eud5@T$c+ZPK4$a(S-&5N;*A9h-%yrwPsq)w zvPVu#8^Ql`U6BvY6FE5;Wgh>3A6r*iQDHBx1K#h(5C8R3 z!PNwYpuRkcd|*vo^?brs?WrcqY8~>yl4zC>`i)@igW*1HhrwSU_CbKlb-+K*2Rixn z!yO`fz&%c~Z8EW!SbNJ6FW~0evyQ(<{r#1a%1t?up5TGAM^9y5_Y?vCV|wJ}qzLf8 zAe!X^Hr{6ToMY9kiOQ(Hu-y_E66mUu-3@P#`}s=iq#u7xUjs(amm?oorht9$eNo#- z4Re)-*=bp`!U5j`{Ks@hna976>iXf>3|{{`OWQ;;;~%UJ{fZm!NB#UApHH3y`^!^q zpP;?(4L{ts27BMr5V_WklYLzxyQj2XCHj73-)xYt6M4_5%94^wOZWGdQi!Dq5U7C`v>p=kAHdBZS}5SZ%F3GSE6u_``F_wSwC>#j~f}=>r;-uNBz9*@h@|& zSBL6kk=#=V)J1xxL}qI_d0Ys{0zUY9Qst(Zd2725{=}Dxii!%nX}#G@x9(^>(|(rUIyxjR%UHW$5a7M6$b8HT{R6|aXs^ru zLj3noUPk@j#*L>^a{X}p_x`b*{HW)HMVtM*47 z!T*FX@%bN80sKSOx;Hkh)&;`BBm2Pjgs!9 zltx@%1o)f2nDEoC_)BZz2Y-^GOHWTv8y#FGi`}_~>`&{f1$pzDA>4R6OLvOSV?4lt ze{OW(^$Ej2;0gD;kT1Z<6on})%z^w)6@Rc+B%c{`L?kyhh-JI|E7ZDL@&WAieTo0b ze!lDfIi3XX7y17#(wJ-^-u*SLS?-aZ2JZgG1Tiwn`yM=B^PFe<9zYioNm z{aMj%n)bOUmC7VfyZ*n~iQZ0oALP5*+S){OGJyZmuK2u@t95BW0R2XPt<%5{H-3G! z0RGJ~V(&Xk)7C^8dD($~Zlr9lk2(GkZ!(3P>^G4pVDn4QAtc}3Sqk~>p~p$SxX!7L zt_qDIvPYMsrLf**Ep$&xT1jJAyTQc>S@RSU#;}59R)YK(2&nyGSwy?9Sz{WHZtKz#c*YM`s~yZ z{$Tu<@&3K9Yg*9|fz0Uty}Jk>IPlNSw8s&mLMi>*L;WaahhLQYnA&e(NOAcuQg zxjHpx(iA%( zwczG2v>P?mmQQDxYK>X14c=MPaXlqr(Kw1qPc`U=c&CNmC_5a_jhDA7Exe=bFu}W0 zvRNA|IRB*CyU*JFLVk>5VLhK8qk(+bP0@V*OD|{4cjxotBRx^(_rs0x2mFT~SM6fr z!+P_}5wO2y#dtNF4{r{S`31Yb#bqAGk7;V*^933764yc{lW$_UIWd^Qer#Hm) zym1WnuM)h5XvO*LJ-gfhe&F%1k%{?1q5ym0tk7OCDHpAaUc}8;jXXR%C3{N=C;Pcv z$x6xIMC1gY3&;mVUKV{NYkAI=D%`*034}mT?{!rjv#}%{^6#b2p%s_FGoahiKZv^s z*L>pm;13-%oltO7*GymAMo}i?Ph&P8uwMT*cxyw3E-P)eVREonXv4nGhdwFC6H=Yv3+x04+2_JLvgT|AM-^t|}Ia=h8W;Vi<$`Qc2vc@q;6~~)9E1rp3bbCnGDhPYRh}e+xo+LQhEDf9DJJo@~Hk@czwBT*C~?% z_OpCCW6mWL^~1PH-(bG_;7?%x+nn5%1<@@2+3V{Kq<-V za@?n%9IiB1M1|7Z-kvOx`2yarZNq%n4tnA`c0Jkl33pi^qxb7%MtEy8eR>0vpPCN& zXfw3?<1RA!sit3zu%_HvQh4z95Mc)OlRkX_=Bx7dL4voK4?;9zxrY+%1A)DuVD``P z^UDRCfpvU<(@T9NE2pyLtnKcp(5~lOUIG2j$rJp~10V2mP6B%#^Jjq$^ylWileMX` zwD~RYmz^tsABv>4k^?$zGyP%+r4ALWC)%!fm+`qheb!m?N{V{3(-EpHec-@BK%3Q$r^a1s;hfMD|e5ci~|RcHBn3LzeVe{XVmD%cI{ zsqlFBbuBmz^;5|Gc2^eQd?E8gBVRQ_s81wa+-p_mh4v+^Z#+TuRA9gR{E_g(Jx|Dw zkwyygWBNjVjJsfcd{i*x$Nb3W%UQ+`@x=A>^o!?wLqlCv9rXA=2TVN8tdHUH_}%8~ z-Okfro1}?wb2Q!9WW?7c*LSsLSa=+QI!R>T1?05a3$n5pWT-Yyf$bE^)Uw1CV z`3uvRwHE}>Z_u6l;n9B}&(~80{>Uy~R%`2(i`J(ug^y;A9^fD3)bMzZ^t=H60`EVh zJcoS1#}8hcaK0ruW)q1g-d<8nkOlbmb4C5XjNsi(={2n5gLy=DQkT}MO8%4R zN42aVqcM}$&srJi>p&jQo=)QWM?NYsegj-lpY!qKPw$`q;SBypuWnah@`2Af17{VHZG*#w6K0cd>@E6dGq=t%w23x`lxaL6K_vy?!-TUUx0sq9f12s9a#?>)emGr{)}Z3o-c;^9N_2b8X5}v{xpmKCbTaf zqJ7&;o8SZJx6)*9!fP{~xfu7m-cB!=3j5p28$rM6fgm`0;keCSm=OxkOAt>O(F@}V zg6Hi9_Jx2C`nWRw1J4hxb(gD_s3yWkGKZU=7sL~vE9d0+zO6cl9}v7Rh==&0V141* zf*4yq0h3Q;%O_y@5{B!($BX`;R@%>`IZ!N&UwG{S4lnL{l7<=IVyk32; z{`>vDAMr2r|C#mi7*B$CUsp(m70lm6KagYi^|GenLtuS;%bz}i{pEpC73L~fAHV%s z(S>FjNATy5hkw&q@M8jcxSYL^$=VCmmeC<-FZ^u^YcJ%T1bzT}VaZTK`F~ zi9F+ZM!yqz(J&UzoIYNkR7W?i_*8Xy2I5yA`uEf%D-AOGmwJ7tx^sS#wd#BTmEQ{S zB?u_dD}@{AS}MSU|A)|W2JI=ob5gEMBl}_hm;w0D zYcoW=K3o~)>ACTo^>z*Y7hEsc+8~wPe?Ad?iIUb*Y7*nOa{c>8r^AnfPu%kx`QZ>HWL`(@$(!+MML@%SJ+JV%PoVkGGoK{g+d(o5=E*?LG&Kj8q>Ln_H*ls(#W9?bq7>LWvL=9o!PpVN7f zO@E~?cmedEAm1S;1=dT>|0mIRyO-u=caQnnZP7Si3gEx7!TOg2w@(z^Zl+%?2l(H2 zKB46{{bK>$Uc=<;0{*|q{0Z{)iaG|t>I33GcM|O1?aAXkBf$#%rb=Q*1Ktyd@$oL4 zNWC1-;@^+8kIWm!fqq_^r1{NMSPMr$ZKcT*vnqJoa1H0bytyf!rDOG9p zYCH!jpvf|54~yT0ws>&0#Th^40ps^UU(dRVlKq2{MK;qBuVXwVHDa$U7V?=!hroKs zv}vg!o}1T13GyAgD#ZDZ5{1WvkKu<5s1x~({pB%}B?<+^1C8F?U8B>yziuyr|IccL&wS+T=fDqZS$?Rt7~zKK9c7ID&;;w5Xg@6Nl-4GNSazd53hp9x zJQMuSio%1}wz2&1R(9p$P3Hn6wtNV~;nyp33{XD^=Z_~4K*KEnKm0KJi6!@sf4JYb z<|n=NI!yzg!O`+-*sQZxd*;=07XMqa+R&a!!sh|_HNUtY^D)LmXD&wB9NzjO-2aM7 z75Z~}{ZT2sxUOK+HeA1z`{|FWsiMyM6G2eVtlAPX4)yaD>q2~DaKv3?NbWJm^WFFX z#t-;us|UM2YO1wP(rMc^?~30J^%h%{?F`%N3(uzKYw7p*!;)s78Bem z{l~2gKQz;yv;M`-Nq;_5te{F;VZU65iE7_f*V#BXw%Ob7 zEk`_G@8s~D-wG7<*z0He=W(y{^-hMo_ANI(Rj@7rc5ole~j6gKwGZ`M+?{pw%jKiK2%ag$-a)}9X(V+DMm zl57*{dnfmKkWZ^5{)3-0bH14yk0?(D|Ab#A28iXwgSXX#ztM>6RU1J;wM=I1g^wWr zjIkG%g1vC1xCHCxQqukv^mlk=%)fmy^6dbhC7eBR3GSSaPgPqOl6_$MlZ|(D(3!;E z4#%N-VAscs!SR?~kJaDn82*F1GtnpUCIh0H>1n7*TIejyhnSUs`W(dBwjgJS1HZ|BA7!L{SLKeg8!aM!25?=&T{Ab>lpl#^NBuUKA1jW z+vKGJf8)2q&l@4W(EKv^pHaXMozs1;POT}qjrlAPU(nNU!j(OADd@jLd;!)Y(Vi;{ zvgNxya)07+!^`7-KP{qngc9H=PFy~==Je=AxTS10wmaPVK&SkLsOm|I|at=0kGx*F`4g2Z>@^gv5P7EqDHL)8`NSez1Rrx5$4uqg*7g7t~VV z13^BWyVIVQS87TKAE3Pe`k(N@Ko8a);KnnlFC&xl83P%9ApBE4_DWVsP3i53*L|r_ zGsG9>xEqrTww#Rvey5y|n(0!wlDlpa+UGn!aQpcmX1;>$8$4$E^5?@pJJN0felrt_qYssL24np7HIQcwVq}8nNg*izK;*B?<`cy8GH5F53I3?|J|EVdL#dyFS_rl)b%BtVrYrkg*pa z9>B>xx}d$l^Fy#kjQ?0KF+WTS5}#if!^${6qF{d1jK7jqMVHDdX@`{#@PhgwEuetcyih;(NCh2?)*9;L7h{W$94!BV z;4?Mc1ac?AZ&DD8cW!>f_XfG5le~XmcN54okwbJKm(%3$`#3XvK+bnlfc_WYU8YHz zj`jg}eWe8WKyW?K?{LzE=o<#_0)6+S;qg)5@16F-X^b~|bK{Tkg;#QTKIkgnjeJ1( z!AHfMC-wvQ6A(Y(&&T!LHd$y-Ob!;y3t~!`^M1e&W|)6_lEA+J`vGS!@`H7jJH#WA zA0QstAN-3q;Lf%cZ)&D-2cx=z{vPjCr^b9E_{I6>)2H~kaMIF!X3 zXme&ifgy~M2_9bvK$+LavEC^2_zm+A<2g`+c;@lmOT}KF9Sn-};8%&Fr*o!BxE|rt zg8o1EJl*7Cd!d&~%m?=TFtjJ)pXZB-L1KCCAXeu1VcjT}A8@?_`Qgg6ZCRV>(sQ_; zsXhw+#>-S~QqGp!vtT`tk{;00>*3DMZfLBwpvC%}`8e7W6QzY1?}syO*HM2m`B8Zo zse0h`#4q6W3)X39nz?>1y%j#C{shFge*^ae_VzN$w{SllydCY z{x{m&8B@k{taB>_C&;PEU`gj6O;DS>`234ras0+}*8@C|Md2Z0Rs1KJD3ehATmeIT$eqP-aWlk=ndu1CHga$1Ii-cm5B= zJGa96AFTgZTcBJ|;Std6g1vnL{ClFGC5m$aDr$)U zzi!l5B7Feh7Rb+weBNe_({$GyW{=aE<`~L=auislC*#8&g3Vcw`$H(u) zv)JC&puH`?H=~~g`dgw1j1lW+H>y^EU#Jh}z%w_Q@bwAP$4}b*-sxYQQ6?$){6{6k zAKt1dJ;yx~S7}K-tXI&S+*85iLzQsyKo87^IJT zv34&1Z_pl4{|`d{1O7Jv{-GZz9DmKYRD|_w{eRxL|F4G6XHnvQVSYcb zR*La29{-4Ev3>?TQ$l-togJRRnHJ#tNt+*z`{ib~?e!VsBaBZ9=Pzqd@c9l>*PgP- zdNpL%vPXc1*)N&G$z%JqLVa<5KjoU_n6BNk*LI%*)j1IVH3a{<*B_MrAI0c@7XS6> zSg&_YJnlEd{QqgsrxisB>T`y9V*V;$ztdfw79RU9pU(#Q>k&}DM__+D@XS41=JgrF zgM$x6PoGjt#QS@Fp?QF?zsSg7v22={4fuy24*xe<{ohQ(`oaU~Cj$2W2EhL)PXB*C zQ;h$}$>Mt5As*uWz*;$MW)bWUmUeN}>lZz72i`@)@vQT~edFJz|8alWgVO&(`=7&q z_i9%EPm09-X?%Z(p=a{d^>fL!pg_9R0hw=jXsb84326 zXUreM{g5LS@`co54 z#t+8-$M`?N|EbxW|Ifz%(*{AXZ!=%7CZe0TevO9{H0v!})6RWAs9!bgt0$;_jRT+D zle4`(WB7c~&mZv){m%&ARTAuXqE~aH+(VHE{Sf$ie^K4?a+Zhl{Zi5gLj5m+{MO7o zPeaU)ZmlcX`2Qyz82>wPyUFtT$_MBF^XvcS1q}YJ-1^`Aq2hXVvEE|Yhwa}@>H(^- zf487MAdJToRp0tS&j-i#xS9WS@Qb}Yk9bcs$qTt}sb=ub_c!Y1#PmBN{So?W89pHL z1b^TIsPDu5{qm97dCLX$|9)K3UQ&`{(d0ut5VN@=)NDObbGvf~BqjbKd4`c`H7JJXP6iW^(-^^dX~>= zp+1;Ec8B`b)-wM5o%QY=e84?x=GCEZMZ@v9@g-3<}!56od6_`Ffzky%GO~WIX(x znR?emmh0^MUARZ6N_ELNmUuAZ`~LsEKl9@@KOFbNK1cHZC!Eii`6%dT3V4?T+9W@0PHB7yE zzn;ES7iw$~>dUyu5Evhz#a zKThbcD)$#cE(>1n!6H%R@-%G;H zs#{G^FS8<4N^k!|B5oe9wz$m0{%3c?w+ECvb_~7I?mJjrh(FpcI zn&CMyA4GYgJ;2)wK1#8D;35UNOxOO@GwzB;fsj=NnspgeBj|+DvLA*89yh)|xhtvZm1c zwGC{)W<&avAoLG-{71Nn@$aQz_~8`yeAE)=Jl6VQ4%px0`js?})Yov}ksBG?>oaZ- z*zipT1?0Ju=^YY}Q%UMT|MK|lDy!=h>hoSo=szwvAJ!G|&%b|kZ!!MoJ`eJh|0MXY z8V~jDKm5)O>jN=(Us7q&^zw!NVlRdO-l?CgCm>dbM}8~wNB0@8``_`%4gtjTuzu%m zTm7M0R>po|`B-n~zUu|se|}pB{UiJRK58(*2hbVU{bMI<_oiQj`aEDD)5rA{^Fe#J^gqErt|tiNi%JQ^BljI3>y0o!9P5iX&$#0W;{z7oB7Yo$?eaz3*HKEK zzw?UeBwnlmd<*q8^mi8FJqYkEJRj2?@Gijfcz=)uc+VIFco+2Bc{>T}?XUQoCUY^w z-_d@bSJzo`Wssy4>Pwm{`b+7(e~7?)!}a$^VZUEu>I+_j`t#T^jWW`|q!i^_CnYpN zJs!k+<#OMdjn*9j6QS-_I@I6!%d4StOQ7D++TTI{Kr_@EdIR|2KyeDwEd}_1=c9+y zAA#OiD>cD-0@Dx2L{V4u?0N!@C$1;VA0&QnT*!CwR_FiTZ7{+mg!8nv-SUx>{ZtQ^)j#;F5-Q0l4;PoiqZgXM*Lzt)E`>G z*H1r{9-R$*0QE^B9)W!DTPlL;R;;eJC`V9I*+Z{aO8;sy6F_toMLv1P;K)_ z#(qP{2XiCA9uTZ2B=i*XK>))CJU{$%J_v{2k?i5H54e%Ay*^@ofafvSJK8vsyDKH; z%Lww}+!ZME_z%>8EXbdW>xnWSZ#N7;KH%;5-zI|nzhb)Pz2&}WuUFiH^|h*)Bt{zoFj7djA!G?+aGrcE(%QtO*`7r zc`cZxSL?8!%+jH3{VnuIQsE0u>5uid_OYR;?@)1iNy7UNlh#tOh3u; zfiVL810L`3|BMfy-!?a&RHmLKVzO3F{?!4SuKR6oJ&#Nu{ zMj*Z~TQBWk@%?!8o3q8|Mse{u`WFG~#{U!1}#r zL4B>!ed_x)2;?w#znfUAJeB)RBtSEFjIf1itC@$IrAOp zzq;v9xLyJ6n9W~8GYq;D>zQLcQ0aZw8?xs+dwI=mF5locQ;`pnTUb88Pe=P;4)Vba zSFje?!^Q_hX8eVDJYTrWp+CDoR!XcRX@ShHFGP^|5bKXR@(;N2ebDPI&>v7;u9HP_ z*YDz4uRQ3ri^yRfd3nnP_Q1^NK;Oq)bPEiD=MVmP=lIH!oK~Z{v58$zJKkw*x()p$ zX?ps}N8yj#&tH4_YpkbBUxRx0OucU-JspB z&aaHWz|bCtF)|1-a^v%$ z@$jr&Pbq=@ZcyTe8&7o)opYqu8iN05pUCbhmaD`bcy~x$$;!%&-Cr%w(3v+zMbW!@ z7$x!uh$p>Tu98U~`uww>kM^?NdYg$Zgl}frJEX~i6~9fnx6^8$yU}(n81sG5U;npZ zUY}xpJj@3|yiW}l<2$CCSnlhLc<1}axyhlQR2yIaS}D;DY50KG{}M&OkVUKI-0)IN z|J6LcA9EKkrr#oouSU3`{^$LH$w6ZI?UB*h*l+domC!#8`CzeZvM_$guO~1b%R_t~ zHh&?vOm@noOl*SwAZQ;<`HbZQjAy|5;_Uf@#C$NSw>W+f!mc+Gf1w-Z9|-&hHRdB_ zXisqi$nb%iBmaOKkNf2-sS=dGK>zo25!bu&9Sme3;Dg%4ytUoo$8t177YN5ctg!j* zFKCbEw@MyB{abrH|L?M`-^E{WB;*i}vp@zc#NVO+Yk6670@F{fCD-urxU`A4taR`+ z$OpiFkYK+~O03_t*gxt6Uf)Z)gcy>y`4W8( z`LonlqI&gr^j{VAV|I~VFs2Cb?yY3>e--z92YH~(^MO7@ERXr9r+;CwVl4J2X5xp- zU_IgY#Rin2AG>XR@z6udHvqob%JxHTvY6ne>3=J;Bx4ecDqW!Tu$n zgO;VyEWV-pE5?J;N80g0kOuM2=O4N`;rb*mL;k_Ygnj-U-1sp50hBo7DZuOX<< z(O$;>7E}Axi~RASJy7QH8?3>8k-Wa{uBeX{>US5Zm=A3I;%d3^0KDH*e;JIoitCZq ztN-1!Ad$PCOfy5&f4R4c>CaC1Af}rb|7rcj@}aR|+0Z|+`4IRoXdh(W`tOG>fWc4@X-!GkukDz)*cbS~ zkUqG_KLGE1evyy*9|L1Eib#Hevvl9C4kKUx0OJLXPjG+kN6j}91t@<({aep2ty%8b zeEsWCk1JQ9{(TNSI_8-9Tv#^rzo^1~ZyRBLb-u9uswR6=Roum6UZ8F&KEeKb6E)Gz zYf9IX_Q$l-Z zebz9*FVwTg_!!39QwNCgJ-nB=A8eQ#Q~#Ruqv@>zSx^tZt6VIruwR^j51?NhD0fl6 zxCdGf`_BGpJ!OTa1!HZ)O=)GU|If*N)aOO^z~Js;{7<*zgMGjU=r3SDRmNXfDrNiy zHv5pX4}QM>sdSS`YNX_lZ|!r@Xo8+ZW3WEKn)X{w$Gm2zEXGW87Fa6JVcuOUDS z%D#-pyIfORtb!6p+;~8JlhCiA#0e)qYCJt@pD$6=E`0Ni1x9ZCwDQ)hlmb5fTC&lC6n`knCg$)R5wW8ZW4r`>jL&Fyb#@elo+?4>5kgexuHLn`Kct z?T@9cmuF-djmG2wWla5IxEsolI&E5zI}|e%)H`+3GWE>__+K;ZEBN8Y=jVQ2Px|NK zd>aWZzq#>KNyA^wspR8R?h3K~>FWypz6Jj1Krg007U`#x=nwfVIeb6A7y3&RUlFW- zjU52-aDhBJi0KbY^z+bO#iD+4xSl4&KjK@6f9(GX_CEQ0SLk;k!UyOt;0}WOUth4owhA)&5-Su7eiWFjJXpBKz&0f zX@>UQv}vh^Aa|^HEQ{ryp9BBgNZ4NQGhg7J_@kouluF9ro#4Bx(>5dEpTt|d)#Cnp z{#wBQ3ckNqkh>K0KlE_49YOBY`-SEFdUycS-&xQP7W+F3`b~K<_!jh=lZo+ucYHrx z{VtFXMD{_K3{kwGt6Xd!_`94J`3rG95&yhBkRBoCgM$;no~z{J2Xv;aUKO*kD!&yv zAcB8Kqo$P>OK2K1BB*=LPo&?&d@5yRlV#8z@b`@0j@f)5{`wcejj$e*n>O1pIw-BE zt?V$tdw>pQzQ2h^zEc~!lb0omHDLcc>YH--x?g+bPCkI(vZ$Zd`T5vioBKRxse3)( z-Nxn=rIAZfzn|mI>tOv`sQ*ERe7GHi4>U5<2L}cH-J!qp7-7Fjz;|PZbv=1M^mn$? z-%l65@AdiF_<-1NO39V1zy*p2;@621j{AJ<=Fd#8nW>^nyKne}!7S-=O*vb3Th zJ9m-utpD$b|8sb|*ZFg=@5gwRIDT#4pL3mp64|Sb_Oe`jex02x?(gjACrO?x`^#PI zJy;)KkSOx!0RIAi&Qoz-WDoSyiRDCJG5%*nm5TC{vnOnuEX-Fn&0+05wAVKRKm2L| zm3RpF9q}v$xnO$z*oN|D3Fyybzv351==PZf{Rzi~c$J&?eNONk>WTdfKPUQM+5PKj X$)$Y$k5YnsP(#i$@&Bi2{qKJO^z+?b diff --git a/Editor/images/camera.dds b/Editor/images/camera.dds deleted file mode 100644 index 7764daa086fe2a34956cd390e8e2b1de77d01b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65664 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 f%@46V-2LJ151|L#@u0KJd~< diff --git a/Editor/images/directional_light.dds b/Editor/images/directional_light.dds deleted file mode 100644 index b2e5d5b8e0b327865528c9f76caea028e5a25a48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65684 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 diff --git a/Editor/images/emitter.dds b/Editor/images/emitter.dds deleted file mode 100644 index b159e02d0c35c3222a9c4838713c7bc7efd2b088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65664 zcmeHw3tUrIw)Z&+gd~s$AP+?aG=QiP5drZKbZEb_rB4aHXneq1J zfVPxcM6Hg!ULRAn1utc)@pGmv)7~l54o*MmC(cxBr*#Te5kbkmYn`yqBb^yP$Jf}N z^Fx!Blbpvo`@i?vd;iyePoA6;^EAUS0Y){$u*%bVj8ITYb%3U#fH zX@12d+Fx+R6lkF~98bqoy}VIuH!JpAMK+vY_ZhVrxjgW$;NHmoko_U{zzvoM#CKF$ zzJ(r=RjK?QIWa1Y+B#*!n)+e)YN;KjYAC56_P&PNQJRJ)noS8j{sa3m`y#)Z9nEuL=vr~G*?oOt*pV6gS-)9Vu|Nh##)s@5SJpPA;cCI;O7Vw|Z zx8aFHXVQ55j~QSsX#QM9565KmE6KhxFmMU|ASu-IX_pA^(b`MLz&=3t`x!&sQv8Em zZJa^(bJxFL*Gz4>{PLdgzLDz#sY7IcNc_R7(()&zE#&d2Q`D_4N;;#bU-II85pR!* zK>XWy{5ujmAs(>n;}RLhX0xTfI@;=Kd8$EU{8_BpX6x2=O}2hVYR6gTwH6p{Hp2YB zG1l)gFO@Yp&d!JZd6)ANJvmnvu0OCCY8?2zBO{{ySXY67|7b1RWq+X8qf@lM1$Gm) zS(VHD+1hbOsV(E5_k{P2T;8P)k^Ld@2ekJ~o_%krnSQ7WYgF%x+{3s3$)R<{MM(nw zA0Aw{x~k}`{%i)~wJDWY8@lHvWic&eQDRdn^bW3kK)lv`2KhxYkj=g1i^aG7OKQ}Ug*Ck=!=V1w9ex3 zZjDb~nbUfTw`X=`8QQb-XV$c?HR@pV#q*8YBhD$l>aL2L8RZgdKO8j=^=vPZ2 z+VE~MIC*Sk>BdgCieEW>YFZo0?9COzUmfp_YV;D%-5{TWdZ@5lX?|NaBXfd6l^`2If0?JSQd-Vnv%-<+Cyqj>lI zJ(=nlP=fQq;Yhe7HZ;xZOX#a`F>&RZx`e0IYr(`^S`XCse7tPOQ4FmhMFg`yk zwR2hJ>3F_4IVKf%EI%`nKmG{_{(s$2ef72D6V$0qO*Zm#_^QgNBm{fx%Il5?p7aos zN!kMmd1NZXxSi+H+VV0z7ZT>R&R09~?6xs|a?O|a92-wBsE<0=(6#+7-VR{4fqjIp zAAV@%LB1dQlitI~z=!HckM#ToZiIy(Du(i*<`>OUHb*xgAFMA7f&e zq77FMcf1cV`#2j}4bM&SvZ;k^NA?>bvl+&+mn59*z!Ah}Y*#b3%_QW4X-(?{^{R*L zw)tK!h6E|<_C_K zyZw1%d*56u%)e{c;@53lR4hw=E`**M<@6qxer=c+&bR9zVW#h;(`)H)-@{e^<;-B)(LOAm(Ki4!iCcA!yQl`*dJQ8 z)P7=D(;UO-Simd5)t*0@*}vhjd6~x|8Kwq4$WLP?AFOFj@QY=bwP5EYHm0FHAHMGZ z+tRmj)WN;2Jf4RbjAM?A>wBii>j63k}pBgyV7P!g%}x@x?G7cSeuxBfzJEOs(4#b;zmQ0(h@U z)#riFRSXR+;;5SG%~q ze|h*(#ZdZnm|qm$a_?kY>JZr<|JMG%cpvyT3+P3L_!URwBnR{Jal^x4{!J7QJUX&C zq9}c3D8~0q6=7jyMQq85noMUm{i!vpI9T~p9LN3QST|0ira{P?-i5$w$gFsrJaPFj&bB>7Lg+T>gLT&jaxf?f)eDR6_g^?;GsY z9ub}nb{KCv)6#?Og%w3_B*!peVHHi}X+LQHjcg0~aE<~3fLqtz)AHgSO(4W;la;5G zoGW+6NC;A9@ec~R^rzfH`j0yVx&|j%pWw92JWkVPo9RypkY8={u z7WKp!v|W#mEGf9MFmU}8Zv4`A`GEw$y9oc|dV4TGfXDwJ9cS}+5A#P`s1GzO@`nw7 zp#J3QgSB%05cS889e;QF{xSZaD;obZC_9{?$rVNP`3yF;Iz!V1+djCpExWL?635TN znqa&=JHe?uP#$#{#^*FT|C>G^?^~ac_wmZKF@zxF-{t<|g|~K9l zh53Rso5F$f2TkTcQfhr1J2Ne0N@7zI!&H9m`p#Q}yt%ppKHq z`~Y50!u&y=8|)b+1teFOk9-4LUK{ftsn9>zyZ#R!&cX3cd#*Ja;|n3)7@|j8z`uVl zE`Lbq9|VMcq}f?6*xdN5oIeCE_il1LKs|9={NWw{o8L@Ns%2Z-LW(LXsU5BPwk^A; zlD92UUrOwT^rG|ioz+)!-3rTSFtkN+$4@xFNfBR6|+A%H-90oUXv zZ@Wszt=@S0WQSj@Gk10qd9$J05FP_~1^#~=%LwC-{~90I_x!##Dfmu#nF)gWWL+|( z3ott~JUN+r4JSU`JRj==$36WpKWIJQ-VY4Ci1`D&tyh38$sgE{`9re404;Db{;4Ot zueaGBtg2D_;=094=tYG1ee29A-c(QRME#eivWo=U8og6uA50roSWl|2&e}OaJr3i8 zEGA!ZWYg6a=$|uzH8%1j94WLM=I5W!hIh6y#J6<>j301k@VwXse4GkDW=jXQ?@!x2 zN@12eZ<@57T!u#en_q)ewE6g9e4ou(V7E{&<_xOJT7IbND$Wfb;XefAUag6-+VO_F+5^{DR-GPCPat zzgod6;mtMX3vc!Q){8WM=(Xc6xSWfVVEpewsizw9jqUb_9FwCVe<)wTd$jf&n2!)_ zIe!S8CfqMKM3Osvxa`zrcV!B zLHFnW&S*H3rH33{Q*3Hn+$|qpywUog;7VDW8va@cmp|mp8V1RNkRn9yC(a097vVin zA+_c5O+D4~dYjAl58eMT-iLacypz$6Vodx8I6q}M@d2OjgZaBHWP7i_MrEf&KeM;0;fZ?lAs*l{TCn2;Jx$2p z1^n}LS;l0L)&~QEW=ixm`>IiIQ<#tMrG|W8lg3KD&{q$9gY-Z1`3B=-&jbF2`NmC_ z^bPj9%Bp3L#;Q|Ofp72<{8DLz{{Jr^Mo`>#zJYK3@$Cg}HZhuz2Y(M&=DIrNtAUvp zzevFP%Hf!8pAv)l!$N*wv{srw$ms`sy@Ssul<`4JM$hX_#>WrMzu(6@B(ny;G?*|6qNoPhs(2S9#qTsljSH+``6@p@5y?u?;;f8f{9 zZE9S}Cnp95-bd}sDA3m&82AXalaOC0;?IQ-aP3-esv1f6kBmtU&PiU$_x}r0lL~Wy zZ-Ci*9N%D0f2Z<%`P_M}J0g`j-5u`_kUU2FfvapB>W8`A&fF(Q&_T}^?{(jQ<~O5 znxA@5yE_~Ca7|{%Jx~9ydzqM%(WI=DfeTlAzz-$-<@Io z3)!c$w2&_%VYZHOkDK`yQe!y25`Kevn{$VF^>&dz1jGA|OcTei-$4B{+*JJViqn1? zYLB=-QhA_JyPn#crloHvs;jDB_9*86!x>g7^4UY>t5L59(*J9^2qYg_KjHF^;5Rp& zk4zqg{9#Mk_-e=(W|&i}J{Y@eCh>fckoz9A_rO28uYaWZxF}yZE(rAlg#07D67q+? znUqQI2j>5Veg-Lo)V|yCa<^SS;xS6)w}kqi4FEB#K32Z}8>p~8Q*Rd9KZCNNq}e3s zS@{{I{a>RW;6cPE*C~KMF3KlSvoj0GLV-UD`6D`ah}*Zm_=n}eTYm`ox@z{hs;a`G zPVGD)tYA{Nx?Z-j(lX#4uca@S4gQQCHQ1`Nv8iAdug}Nu$f_ zTZk3(Jv6p6T)bWe^#jKz+Vc@7AGp=X)gJ(8QVrjCJK&O0Pvn%1EMZhl?X8(u|1oWO zwwEVjKHw9XAI^zkRsr5;4m1uqF2c9j;MEU+qi|c8Kj;VS74iqw?Diw$+rQvDQ26{| zJcb`nz1#3}w_PvHZ|6^1C*WPHXsE7C67;0Q{2~4o=~=`Ef-TaQ9~{i-S@H4k&@hO9 zMf&nXLb>%NEIp5(G3f}#zkK}?8G!jC0{&sWiHVR;c7T2#)|(j1Zq9fL(c1-^W6 z?Y)Svuh2KD5A@jq=<#mxI?T^M!{cRItTbQ0dqP8X%aNjp=9AD~H>H|?-t@s%fG2F{ z3N)CodyD7O+q>v|c~pxFPM6!p>F*Y;X+0K+`n!eq;QAZuH(fsY5) zgJ+F5T77FU|b-1y>5*ij=KfwFB`P7*^DfPZs?2Kg$`ewvq#g!QH%pJb3Xe?+l33GzoC)2;XF zQ`^3pI=~z6Vzda~pPdpaU0*`o_a(Pgw7yJ`0{COw1^y_fFRvKO_YW~&XUV!HyXgId z`(r+?ke{C#2KoCU{1>Kxen(Mz2-m(s!Y+9@xs8p;2mb1!M4d*dyw!NW*73J_O4_y( zY?PNhYH=~lH;YUDlG$F?)qJwRXtUcLFD!)dhGmCzr(@86O<_-5ajDF64g-JiSS0Fw zf89#;f8RNd;mWnncdh;8xv!KLf!|Ad_`SAGkS|$Ls@_{V z)U7a6J4#&`mebM3*I$FqkA?RB`K|_5=&A-qeZaGck-B)T{a1mtuGZR6t zq6_)#Ko4CtG5TDJm>&-O(1GIo5Doh^=u4M%((7jfjLKyAqjvwmH)(1xs&YdEH{9@5b6cS#oc_pZ{PF# z+TTt)Pi9qjnFC7W|{oTs0b;&Ud=nc(E>Lta0u-|ULzrgolRR_(@2j%vk zme<>j{{W^q%np#C=a14z@iHzN?7s@_Cz%9zDc%r@^*!)S;(W`)joQTC$dzx*AH(uJ z4f&zlN;`Y{2X>Pl_2z~4B~Ymfm@=dG!OmZrd%Q^ht3cdepJ(;o-E*pOhLZchPjxp26(yY?Ip=`>xaVn5`=($9Tf0sgL6wWfd7T~pAGZH zCWDj@=F1O-{5-`_x0dh!_fdC9_;Ta>wYKS#!}$60stLfKDXy$SwhYkcD#)AQ289v& z{}(pHyF1RG@x>pha2dKz84|X1#HyXEavkL5L(Yhj4WKUo>wVmU=iz&PUz(<{V+8yIpN}6O1bt9!|K<4K3%}crf9Nk4 z?0s)3-~W#cKz^yfFB{bx^eja7tLf?I?RA^#KVBWf#HH3Wk>@C0KE^ipy7A(jkKXu8 z)Wd||yU1i$Sw`EZ2^fz9Jv4910N{g&^yFiMaQsN%hrsx;p=;X?QG4Q2Kg$SuUH-lL zlqQSj$5VPizJ9WhKlA7ajz3dng7Hd_>#>mqDkqy%9#{?I?MkKQy7lsX@o}T}>sL{K zzZ3HNhb{p3SdJI&8h53em{vl*AM$5f3yaQIbylB#?KtQQ;Pt--UW7?k)El}L{6FD& z!FgaK_qoct+CBw+LC8N|<;a_Eg86_QAM^N**TM4>%?Icd@Vvejo}ah>FOT)MR_kL$;FN8P2p2WUO8P`We@Y|1)26qmK|zzfuGK zaghft>pL%ekudfw_V*q3l~WtjYHLVB9JH_C9@}y&W>YA`FiHM=QA#NhZEs?*0jR!-6WgQezdDK6Z4JSr=GSKB>|rg=KJaM z$_U5#K7r5ECjjb$Jwkn;X167cmhgM_W4?vl{^Mi9?Y84zn$NCPfS#48z3;09eGA~1 zdM}P)()vj4*(1DqHyEE+K>2%a`Ww#5y6P5OEheztX8U!4vbecn>uKb-Z6`L{%L|Ni zVLgci)Q36+1$f!a+>b|}J2oEc6Oga4-Jb%TMUg&jQXlC5i)?N0>PF2O0q=ndTz^*3 zlhP=xo+D3LXVB~Q4{cP7`F(?e3t{|UnE#(L2$E|=^MjAxf1b;?iG}-Vg6rulOvd`) z>Xnldyz6IFGBM15mRDhX0(V$*5tKCvDT99<@4`8+n@>m9;FZ1z{8-fcaOaX~?iaf* zUEuif?x*u?kEejX{=U}CDS&UR53LF1X$SZHjpxVQld#bO_~-Kn^M-A11U-Sz@#>K8 zb2)Pu=nri@Jr>sUPHKnxA)9Gr4^_kb;OQ7f*=>8Q5ib3H6^!5FjO;fy0yX0x1p2)=y`*Q5hJg!uq-Z@^2kFrRK6F2&D+ zX~_{Q5{3OM=hsCYN_tRV0Ob+jl)8GMXTgE^V(ZZ?S%t&{S5z9TMXf72zBKp@|h>9W~81zB?ePtcx2{fG78wDgFls-j3DcdLU2mcCa6=2O{ie z1O7ToyLtFgdVb(*$b3HP41B%g_y@ipENMkANv8xpOuEoM#s*1kOFt=Jt}q?&1nb*) z`KiD+vjJbW=q&5y1H2nZR(6&Y!NHL)VmrbxFMF7BXiR|bIzdhF^HoH-jN5OWYTE|( z15!Q7XE{B|vZm?4XXo_eP)`!-2lxrMnZuvKe40n7JuDp8%M|i+?&*(s7x?>6rFhrh z!trTtJ)W5jTbt7tv1_0`2Rgr!JmuvtYyrJI8_W`t*E0g}*aY~wJK?p_bByEbV*ln_ z{CqEg`7f^?rp*HOE5Og$W>_*0^lfbRRm_f6dp{lzd^zv=?72_oMD7!>mpLmL;^iH} z_*hyb@@0j1Ihw#!E0sjyW(ESlAIR8Gu)+wMqfcS*&XH|*sTSH^q zf~^Sp3_^Tr-|6x$pPzpc+#Brwzu2hd=gT8h#ejdI{Z8psEaA&8F$11py}LzRd)Sov zKo8%Hpnfdy&A#iP{F61UNC&vy{;%)%i39W`T|xOM!WV-><})6EUbDn~zxCIUpaoceK>akgt~f9}2KcYXB5QO?=5jZ^UdP#+ z%a`d{f8!a{!&JlhfFI*@G264-b285u|27|$Z#?5n>~{ET|<=HjQvi9Y;0l6zH|S#G$D`E(CC zoX&@>h<^=_|K(E~*3_Ht)kCz6?Ry28S669BItB5_qD0ig>>|^9*5CU3$M>y&ZnjPG z+LRfL!HxBg! zz5aDQOziK8$JD6qx^ZC-^2MSC6zAO4{$m_3fNai{+<_o|#A< z4czF>H?Yrse{n!-ZS1ecNu=K z_xXA8E?SRX1z>O7#gCT-DX_mQ=viR?UcIP4oWQMDE#&u1>I?Dyx3hRY{n9ZI4}3dI z&y9yS*=#G{`=IRVUy?wTdU3KwbNl(G+dbrbbV(b`hp#odVS9enPZR|B<2c)GhwW-{ z1L|P{A0~#Wk?>(!$nA(vuD3oR55VGlUzNi6Kg0tLNACRz&>s--8wUhQ`Houl>ryd) z_Ik^U{QbMTe)xX-4&oM#YJNOSkL%Hk@^$-Zr1^ToLpmjT7Tow)oG?B%eTtsg~zKVSiZ;Lo4T|F7D& z|8^S3>w#|u{DZm;p&1*ZP68k9ZqUPYw1ODsn{C>8tuYMHd7aaTO7$=YBHvNOpVe}D zcmjW3#`E2c=j(lbfdBbXqWpHyvxyRq*Y(v%^)1rFaQs_{@AC&iJn*<(@14(TO1(PX zx`iBBrseX(QNP9x`ZmAvW7eSl1Pp*f{x~7O)LBrk*=G9*)BTIO4XcmbU;obWW09$0 zO|yRskpSr|yXxheT|fWtT6pi_oB8$dPh6y+yv*|*>c;^e#^JCp&nw?QePz{eXesbK zeB^voUFENFz8jkVrfVJlPVaxf^QKe#db#E>j1OkP0)6)kMde8u=de(%|gEDOWDb@oKknT;VZzP2t|7gsU+ zcininGGMK?t_BZZHy`-?CGK*f328nFzjxU@C6}gc8qSU1xq<)olS#StC)!B@vImiW z;+Tl@--2F##q?o?_L9naT<@OK!z_oRaC(^2L7D2#>tS+wJB(ip`Wvpy{nf;_Ow_|f z{($45+4hP3rFxkCG`R-gKl6M?HS;R)>EGmS8PDKF@phNt`Ffup&euJ=Zs{(1%i#gV zz{d&Z^I6k+L;kLauk-mR7!QN>VO~2P3;E%Yulpf89Dhs5JI8Ovc-W@y*Dr#edmxTy z=Vm#bo~O<8>wz4)2Ijxbz=t8LnBl-TGojucqv*Dg<#6(on}Gt*!#B$Xki+~kxBiuc zZ?=}>n?0H&<(o~3_wrxq{ZEJoe#=t={uiX6UjC+foS%f@3LD9ZcS3(<^%{t;19j%q zTdjZhkK>6JoP&1(-#MtQJPG*n$0FVNPREjAx#q6DGdVsTbYE;Ky^t>}=wXKWBmY^j zSyew6{}=R5uDATi-=`&~=k+eDFHqkC@^$voyHH0+^W8`Fhx|QA*`xd0Cvy4ipa;w4 zx8C&rI{7(c_{yaix~1cdBo;~|9OL^^qy#in5p%gE_jPlL0 zhq!>xD(0ItBEOaAlZ*^QzDX<3KQRTDkE|8(Qw9ZBH3I%y=>1OUD_w8zrz5|079FW- z*^Ti4R0wv@|GfESi1Jy?mt&OXns)5JaPdkM9^<8~s#WJ?De&qW@B|2Vuu z1mp&oOykd>y$8Hc?km;99H2#eCV&5sF9Uj*f{podpUL`I^l|^&&#&L? z`WD*%rMn;mpbiKR!2DccJ^HlXtxkg|zhzrS3FyIYsz3NLl>ZvY2RVVI9QEP3`16L# zJ9*HhZ!0ewx2Dw;Ysq(JEl&07J0kwEJ-a8SanL~#e>J5S@<|0e4>AD$YXtmXi*IJ| zcS-mus$L7%|{-dUsm_IAe&x6N> z?JjG-Z?ryu@xLVtMEQDtA$>{@7zI7pp~2GisOJs(*0}=WVJy92Sl*|qoXWZlTU#K1 zOQ}n(@U~ZL<9o)}u2~&KcI3}G>~`Cfe#l=H%JZNgY55KZ z{wm~;@a?%y;Tl(!g#LgjP`Vyp zMmV>=79TH6H*xFn@peJ7cl}M|51FC=P&hiI5&3Y)Z&si^hM8PjyA|vhZavNgBO33i zh5ieEe--SX8P_;UT)&NpfcQnkhmQ|J{0n?p|6Ymq8JmZ*^nO@1+9Nf*t&;h()EC_A zj|}g=^#zXqO%km?8>oQ%{KCpZ)JOd^xc+oyJ+(8!z5QWoFByF1)Kk#@As-#vKTl@3 zv#N8e3Hfx&cbjYvbV2?K@Ikrw7!p{>y-dsr&sG!8r!klFY$sB;JpuW9rU!oy`p$Va z+tg@pdxr5mG;g-ShRAW^_N5|lt=}aA49*N66wvCp>|Rz z#xDXNK3<3M4dLVWr~tsfh#zlMddD;9@73%a=nq`r>qAx*BJ<^`bMW;?j(6Yt$N4`o zURV`0{;&isb(ul=rDXl-Xf2d~(R$O69|pFN4`zve3G>7F@;*6UTD~U@g#NlHKF{dQ zwQqd+9;9y^EpE@kRnqoe!x~>`67^?6zkBGd?7u?&=)-6IM13E8ME#>?H|JN1*5A}A zVEo`nHGluXupXzFA0O(k$l6E*K76P@V>x(fE6;}yRw6%MuyqP|8pJa^p4DvQ2ggO< zXH}a`EL3^)dgOdK>WQ9L8SheuT*Dt24}gAm6#WsanzQ2oq`XsG@4vI{slrWsd=MA` z?PH@Fd#&6S9kTh<#zR$nd5n$V@ zzk~iB@p+xq8kUCh;L*W0#MZ)?$W*98!*}_dB`>m$R zx2YX%0DW%J`W#{E_D{PO2>Kg=%JyU93k-jt-^cd;XsBD%pT+zHS?`JZ=WZ)+^7Zmh z&im#z*C&8?pZuP6s%IN_!|0TE3-&|2Kg{Rv4Dj;%c|LzyxRn1pWk6>MtY69FbJ}2B zuQrjv{ycQ&%~KP&^=a?xu^-Cp%dJ<*#}`A5o@20H&jEV=fZo#eIs#$64zYeW=)Hm7 z>o`7tRW47|b3L!Oxjf1Kzq|bJZSO(iu4jYwYm3Et9no6pdL3gUIsPw?|EGp=`SALW zSA%{(2>6r9R!_^N;V>UKUu|noQaC(J%z@4eT{TbIlS}jf0+M8AN=?FNW5N$T>j{j?0J>(FLj9Q z4~aiG{%`H#7wCr}ez?Askgq>1M5^DhU~pYjWl=}SVu%nR9X^$0)vXMSumGMxzh9@k z=6s(ozlD^#6c#vn3$8~6uiaxn@8-MG&MPNDKL-}5o6zrEO4pn+9{;djM~Zm84lTQ9 zhj@J$Z#*OS2f&ryO)l@$6S6)QzY-#*9(F68Z_qj7z!4N-r3 z7xLjDA@(G$Z^da=-lX;5?A&@Z=TM&q($_3miQatmo_Jt(ykR%ws|$J-il9wK?d#(8 zx?p`*_~ReC&;9z|zijiK^1hM%C3VOT+#g>4pP<+8%m3}09$A_Uf7B^|wE+0*D*pSO z{|5CimR*Kq{F1ha!yQYrf&Oc;4fC$gfqWQP{$+N2Fyyns zNA!Ah-1={VE$hEi&-A?hz{{^(f8W^i=Gy<-C6LSJ-NIDJ{}tBn85tqf?{=l87vlOh zsJD&zaH~8ZhVv2T=Y2EhX5_<>`x(RKMr9`UCt$fA$MkrwUO$c(&H_S^NuOKRxn0Ot z4N_qJAlNeg>67evmGLiii0luEKcN4=c!4PYUuneoel0&9pJ)Jm{-Vk%`lGCY93QwI z<8hAvJ0aZ}TDR$QTrW~*hI|0-m;ZQuh@O0wU($GiI2b11J#748jvsHyJ(A+(|BiaE z0QkS4SKS-)R|Ngqz8c7H6XmmMSXd8wx3Hdv+#b*;)$=Nscd0{Ue@Og+{5CP)N5lTA zO`l#-Nx#%P;0-SSmD(dhIsRWgwQVM}t6DHVPlXA-H`Dhy>&e#BBX@fB>$@ibe+4MO z9RC;e={qxx%dU`@xO`q*|6xUv@xv3qZ^Qh0%x9U{*USH<$B)-}^M9xv><9U*qWl(C zRqZ|+I@V41%lPL#;e8{Qcd0{UfBaK_zL=Pqn1!75J|0M`=!@~d=k%ZHa=iDgVEZ2KoO2|2-Vme-P)p7?haLC*-@R**>tIjlh3rRj?R@oUcyZ`@Q)b z8UKQ7xOdkm@3O!CxxbJfB;}*K7E1Z+Q5vgC$cJH7%MPw*7V`0dBEWiZnJB+DfN@Pe zD9UePRpvTz{w=GjGD+8eV1mTwm!H=^e_pbGWdBG!AlH8qcgXmVxH>$=pJADJk_2}!u^NVgE$lRABOOuoREL8`LN?f zgd2|^fLo3?6<7Z6yM;+oX#u{bx26iTPSy2TQ+SeIpxxBK)C67Bak!~jR#TAPEYNy&+6S!Ql=68m9XKGIS7~jY z+`c(mB$}8*u=oJ{e7x)_oF0-N|6q9dw#f&6Jx}G#!h!}3JpV+*hfbB&*Yx<(CBk`k zbyvZe=tNPT8eO`|n!+X8Ut3>xRz?Tuf$#805kJ8mXQMTvB%7tYK0L4*YHml#rXlhi01Y?^NWe%{Mh-Y=bwc8ecRU0(0If*YyaUM zt6$I6b@;hJ{@Ek3j4{_)5EnYvtTZ#9n0g&(E ziQ;+F1ND!c35yi*FfWYoFVTymKwpXwC-I?ZCEl}Qi64l!B|Bw&ZoP2 zCtWYnDy=$JfAN{E!u|0+JpY7W$!OS1L;OLQk0E{{&V>Dke)x%9z7%MLPk~;=*<1<) zTBoY-Jv%AaO`r{$uF^^w-bW7WDm^2kBRxTfOL$KlUSE19`i!_<=LOSw3E#OB>&xWy z`f0$s?7VGueOXgw%I3EYfNW`geJZY~E6 z{lBV>u782+eHipbEyoyL@1UXI3-rx=oDXy7&UMbLJHG_3t8TSiYG0epu__@8Lx`GJV{ zF>XXl`hlNoStgUw?&`kt;153(-UrVgjwty<6L*XLFyx;QCafPkeB1d4;XO#9uWMa4 zzW2*lgz526*OVTdG*85PfEM_b;X8uxEu)hHx=IhqIU694PsiI(vH>$z!tEoc7f z#TbvL(|x(1CxvsRZEplxEYTd>SpV1(HOD>IIaAjNvz#4|n?1TOENx#HW9K^ghjwL-qlMu%u&)K02ps*;-7KwAxZg2cexo<)s{IaCZQlj` zeBVdq_%a+1{g7z3dFOGOymOt$jk&EH*S8%0fsvl(6>Z=T_{D_<>EIuG8lSzukN1g3 zllsnsKWqwtivj#2H+MYnEaL~WM)kb`TI2^Y-b#9m9<+=f__*vO{vf_Tz3R(1x<|_S z1MCamx->i@fAIYN?mu6p;ao)f6#lf{vr}`ugzwWAwnY z4Bu0HmGr_8CB1%1P3b|Iy#FMv{wS-x>^15WTHlS)%vxWT<;U^zxG`GIv7i1pn7+HY zGxjM`3cA^15x;*AUi-uIH+>%b<5@fZXzo0Q@x9xpzZwZ{(ZZ&^X$8$Tma6}NDD}C{ z6M@7pdb856nNAvhFzS<4&@b|BJ5yl~tlho0ZHJvdES;dl|I8pI{wElAD)fbs!$?2y zB-Y3uUYfovwq}pWAHG&!0E-Zhe{lJDzwrY*-T`sPq0&yZnr&K9e!ySeTREvw)W3(j z5`HDTlfHg%(jUe1rV+ri4FCBPl=PWd^{na4X5Z^a`1P5=z?~ z=}{Pa^%?%AqP+e4$GCt3i_(bzf*P%+6~7&VFQ22Ec?Lp zx#7i|&BPz_>I#z}-{BvaY1bce9t!K=X?&DF68-7CWIu$s@wCVf;BTPwB0tcnz#mS^ z`2&;#^$gM9a=+o>+y1<_;$7=9zu~9i`?Txt7Eym6IgIct+3%B#H9O?=f-yu(_WC0U zO1dYb{%A|tIybw0ouFq$SIx9ITG)v|i1Tlq{Qjo#-{1GO^_5*U@eE=`n-%lEw%4zG zN%~i&bDeJl<`mkvzsxJUX6i6>AAX1Ii`=}2qrnfBN%)^RlK6w94|qnx82Cu?7r6Q> zX}t>9ua>S?X{59pNmj`t;6 zlK)xZO4^pf^9QeAY~$s5Bg?O^%Kcd^V5U;0rWu4D0@rNOPfOo(jgX9N<_n@g(nLZEWz2WC^!tD`X)5`H4 ztXJYa$)9LR{x6ME;{BaD^{l0Kb3o_o4*h-o(;aT`s67Y&H{cF=zQAFRm$rQy?D78O z>$mMZ`-4qw#$st<+fUWuf3|Gr@ze~%&sTsSZ)&67MS~D)D{={$;jG}QRRv&^f8CR~j3~c{>~sD#iu2)ksrNbE(ajw3i>789hQzGjQ>WH> zSs8=i+zr+0a8|@FoCl1-;6VG+p@cP;6ZR#YO2jZ0>y8OaAZXe_x+cx9$2t zwlhDl>jyG^FkGn*IQ$1Pen9@jiNB$x#ve|2aK^{Cjke=mUe7Xht=vEFsRn*yB!B#9 z(&u9~i1I!8Yvg!|f8%M*c+EyDmZl$Gn9T!{8j)t`$zkutuSgx+-GMYeBJd$G; z%azrfmFSzzcDiRR*LnbSDg5o+OBM^;%*E+wuD&~Ntym@wbD@m%b_>MD`WiRa8)W%Tl?YS5MTr@)8SP4^+XNBI14ko3(GBi*P&6nT`wgY1mg=CE|Zt=zgL_{LhZ8Y}k56;s=>AJT3Br_0uae zwiZkLVc(+gzZ|Hoyg2Pmj%y_Tu-dQCz$$wfTcuNjKm2PSxY_Rw5zU?7kHbUB^oM)% z{k0=M0m>GR(l)CN{2;gVcnGm;{-u0^8G$@4>I0+o!2j_*BK|$p zMDG@9yZ`Y1%{RE!p0{bAZg_#-Er0m9)Kpd`N_da*1m0uTiTGa>%;R08_nT^Z&lZ2? z^Y*e}$`AEt8`7Iawr{P>WX zn@zIMheeIl>~1kIGk`OLV-J!em_mu+e*9*nW`N6a>k>spL> zF6;_{05XA3(n+d;SNQ68<22 zzBopb_q@MeM$a5cc$e^BFx8HKpo8$<$X3=I^o_Kts@hiR5&-yaw&+5-mMxN#;i#`w=2s}&po;>06 z*`^m?7xNJlBhx=`Ydl+&5X z-m%u%xF65_GRySho^E?SNpALnU?u(|Je0IS1NykcAILuV4O|GqeBEpQK!<)mTX;U` z_a((L{XS3&S|;BU{FL;{Xu`XM|Gv!nsvTuT?$33G=o%{$JTLaXb(91sW3f+>yIzv_ zj&Bs@|J|Y40s3C;M8?QNY_s;QFvj%tUXP@F6Kh_srSL)HgbOb|Y;rsumzf-x(tYDY zkxrd@Y>KI)MXYC?GbQa>%a(faeP_m}^~vjnS0yRyg^Om{>w{r!6ThrDy%6ivmd!|Cje6cq!uXd=M}LAx zrFy?KQ(RH;q?#h({K|P(3X4l5eqhV~i02P9K07~fX?H8B_%+oFs67)JuiNE{(Cs{Y&tQY+UQbqSdRa3o`iQv{x2R|qTmN_&grUZf<0e- znqQy(-|4fS>-qgr){H+Mc5MK6JU{$m%KDUy$PKv_O=bLV(EG06GD`mV71 z!_IZK;&$w(%jhlP`}RHa1pU9M4D~z|UqyaRE9hlu*ANef|D61@PjJVUlzqTX8!o)N zgCAf1x-|3)k@f$`N$c7S{;(Uj;16pC^oJUWAN-$XAGdEUJA78;2Su*!>ZH9#h@YwT za{YjhaNKqMfW2V14_a8!56M3Ge8JB5OxO4HQ9Qwto0I=gIPn8X-jDa<<-dr3Zx_%f zgy++mvJy#^}2@U40^;k`p#&q2DH5pulG2vp*IQ$k6}HkrI< z){?#M(C?qadQR{J;>GoOZ`kwBc<;(P#N(YY)T6A-wQQQL#Cz)Ezx-D38!Su@m%0e? zI9a~p+L>L7`hzbs(w<|rI}FcW0G=%so^1WoC2ml3NPj#Hv;D6Eir2 zzTzIIC3)D)%fqsppSAxCBRbdlyQD%4fvrk^&y-=X=2O3d94oiaV&@OWr+EI5vo<^J z3VYFWuP~u`>jE{W8pag}^wX=LFMvO|ApXJY2T!=Pt6nM3BY&`3@0lR^51Q|ZcmrG0 zs!6KzdaH%)GUgRp>mEr|;(taUPmA~u(%pD1S>`Xa>jQFrfMCHl7(Y~Ld3i7LXKxqC z_r#BUg!eJt0KCie|I7&BU8euvSX5tCThkdp_OJyC{%`xJO`=H8`;V(jvr;|lYE_nBnBOZxo68F{bwm0k-I#-F;F@{@lMC(w_~QN}A- zUj5OdovkXyjvJAlfYADgV7ivEcX!;6_#W*0a^?@L=mX7vaW2Tm1U~AZzgW|+MfUFL zqWnyYB`0soinI?*viiJ&heUd58P_sEAc&&vj0&x0Cu@$MVgFzMc=^pNBr5mt)y%R?7E<)0F!B{N#75eq9p) zjof~0oJDw-{26Q+{286?DvIVeCU~m;+#~oijQ6BJW3cP{c7LAzs7`Ih)V8oq3#|B` zZAkwh@^ejx9WVKXg=^ARqFz_T%ew6&p&#fr;!^(TE;Q|3-c^P8LWnNhztQrWUUroA z?tv9Y729gn?S9^Y-jA({OkoWArRI&78 z7z=#!ZpeGPKDh5GNB)V8t+9E0)%qIn4)6o;MKgi-lj)*=Zc#k>>!kR4yy<+z(+zH- zd|x?3Y47x9L%x@7cjx0j@L$&5wBx-6{O+6ZU$S5D%Ra6J`UHNmZijy?GAa`G#0hv5 zS}p7ms;Q^^z+kv9axJ}UxjM=ZBz{Nvfj1oafn-lpeqgsFKTx3AI<9pqu5V%ZJmm)# zpc#1WVSJtWld$?q;;gv!) zt*>xbPg#D)-LdbHPv`O$wGz2-fi=H6 zcbHZ+f27AN{T(%F^;O763i3n#8{BpN>^mV=c%iXA?~MPF;d>BYM7$w-Gk&lF&n|zs z!4Pj)ZRD&ume(__%bSo-aQ=urpWr*Q%PBul3;?c8viADA zb3t#B}!6nBrqbK41?&Iryh!-u{fOk5{%}cKLjtj+~#ipJhicQNE&kBlyK8 z&a5h{xWwlttHUkqMfzkp?4gIKho5YH(C=~dqYpmbYq+|B-83=wV3f5EJbYEzwaA^j zBJK5@x!EhXtU2+@dpa}SijH?S)LyNGeNcTmL4%Amx*!R7L6smJ$p@q@!ZD($Y6I^P+; z5$J*11C*bu^zW4f`D7|KHA;C9nrNeeCg|M*q^jjlbymua=&3 z@K38W07gIW^LC$S&(ch25s#m^1_IA~HRDs>e@FQQ`N*GL4!mDDDcSQ$QPA&iw2Ah7 z%0%G3#9!3!*G?yYrWDU$E1#|~B(`Jy&P0B~?dNZd_q6DMcSpQoh2VdLeT?Vdp4u?& zRT;m^9gloqS^m(hF~GkpA24Brjc9RvlLBpXO zd3{9fS#bsWi(P;C+v0m{=~i__gJ#A##EC1?o*pK3zk6JT}4^|2^ zD~dF_ca{55eS}`24>+#)rq}D*2G|3dFUWtHQE0WUN;nakY?b8uWPhc+_tjoLk$lY1 zEsRH{^;@KZNg&Vz$G>*%Mw!0v=>q)6Nb)|+i|{VdOCpLC_`jCXRasV35l{+zHCFg1 zbo71I!ua}|(l&zs?Z&tB{ch3kS8|4~PhT_9d|ET|b2d#Qyi5AMIXo|#&I5yrD0r6~MnWNityQ;!Sztt8aqJxGSIl*Fw#Q7sKm31=cyR9YpyLXCKT!8MXpM+}o$AJG zsbC4hg!A$G0n`(azQ4P{?G@qkK3eGaiQ7dyO!QUae_2eNf0m3tuockvYv}!~(uG6e zcgE+Prdbi^VzYV0Q~Zpx)mit>vHqU${iAIh2XSdx90C1ahX3d>R)zn5%Gi>Fa(SO0 zuhehY@|p_Yns(lvNw@>!L;kDVr)EtG)hE}P3p2hqhxpaIsUg4v*(Xav0~P*>3ErS( z{42mS@b&KPABg(Cr_X*DIskl;L4`h3^Vd}MYMn} zEX>F=$5Q>1RPU5AMT!5CMOWIFB>EQ%&%?g!TBsUh5Ixz`ANF zpUGTjvmKZZJiqW{_hMLkxw$#nvx1fQALT~$lcN5wSHm6vOAy9G{(ynh6RC$axScX; zM0qk2T4ss-^aPrd$*`&ZfL^dv69 z_IyyAxz}=NPv1?-w_T;ngS=cZDezPy@FP5LLQr6I_hm`mhl~u(Ev`M7C!9|iOZJY$ z?;bNjzkz?l!G9asVwdyT0CSCAA)`3F*e!;A>@BbW6n zU!P#_Pkt$wkH0s*JsbIcwJY2%z+ML2+?y%CaEm*4vzg*?jBA<)`m|wV$vbquj5|CX z@%!pMjV13;K7(atRc5KPiygV2>WxJEBXP9S z-_RRUyLT<@XVUi*{4JJCqrYmQ{3MF@lYJNcK)HGAHqz!P6rC-PFf4@CS-C?+-)^5@Edk*#mkt?EAzHF`hrt4fu|`D$>ah@U)2c zf|*L1{gZbgr_F%>YtsUiN+ZkXaXi5w@!~w6@F%%_QLag)dg_#@DOdgVt~i2NYPi}y!} z`obtLrN1J`OX<%TZK!O>l+_o+k3>8mu|kyhD-+ua4Oqg$_w}w%+8a=^H;D4l!ow3} z@d3vbgM8optry6HXMch}j3HkN$7hynp{90?iTtPeI2Mir-j6+r*|Q&Gy@=L`^4?w3 zs-WQyj2=ilz)cgk-B)JcKj5Lnw>d;fm(42*D8@&4e;?uFO_h~%HDmo$pN4oGw0v}) zFZN3sw-)mL{1K9uU-16C4^0$bhq$!lMv=Uf3Evixe{Gw}1*Entq8AtBJXWp-z|OVS1I3*u~DB`ZQu`!OUHsAw3oK+GUlRQ zcIiaQf0y#%CsRJWEZ;4_<792OY`uGG-o$=qE2k_&S)A}R)FB%W9AClqU zprqY3pz%jo9|Og|hYKd7Q_|;yy$J6TKIVkS`D4CB{r}kFnu9yw@1ylqQQ`03e)FqZ z)_WB1yR_|&;QtYuN4t&UBZ&1t-aj@Y@KlFPKQ;#u-X;8x_8@&(S}z{nVXwu#r=BRx z&jf$vc=F;f-mB91*~4Asc7MikW4NoU>tNrn^XJ(Xn`TCX2Jy(_#=?w@jCCn_hU8-s z{-*{XQoPTQ5v5DcKAI@vJ86`%zH)6G@-dNrbOP}=!n>u<=9citJ3Xas9|rons?<{b zWOFC6FX!jE)AZinvaA2hu0y&NY&P3C?oZ~OADC_!;B5mxvgBkxI7XTO8te&Y)^SPS z^>8^J(=A)y>S2}fdUY_3gg?~7Mo!ob7nVT#4CC=FuGg61w4NpVbwvWvlD^lqj>mrh z`5W&A{I}(Nsv-GL{D_zT;{kpw31NI=y_9$#EdD)RmGfl`F+Ld=_@w9$m>Y@nSB>I) z{`#Ss3gVY!uU6ndzuZ^D7XAmXA8Kxc{J$ak!|5Ar=I)$NdHa};-(~0I=1s^u)p5L5 zoR3M~g!eZ@dFiXSMt9%H67_u_{iGt_M2VkG8qSYbl>aNHf*)Kh7xBe5#K9XnExhmXW9n~K7B`B|w{VyU5~QQQjv* z<@qg$cZYV%@?F%!0Dj+CF+PEMl*-DIVo{$Tp(_cH$8VBHz@H<_SKTxn_;0%*&L?{m z%3fEYdo$t-32HmMp1o&YBEQNn1KR-J=EkY?DLOiiPWcs3; zI&V)GR7PRF@bZ5E_P?hqz%9eK_gE$V=S3;;@=jJw#d6^P!fEKoIIw@!dtvxP&#%TY z(D6H8k9;!iG0tmZ70^%i@y-YHc>9>@J;*+uI|lOpxa1!TcDJ7w#_y>;p29lXz&-7U zj}G9+5Cl3lfFF;@&#XzHW#ea?qsrAGM&KX8CLGSsH&~iI3h+bzkNV_|K*Im36ueKF zewP?d@f|6?J2~v>!^Op`#OGf+h4L{Z`Nftem6QLK_AB@%{I7!^|0cw{Y+i3seuxzT zuN4Vc%!j0ScZ@&Tw~{~0NBaS2X+AVMb?nUjZ;J9B^`|%G{bi7!s>s(^6k1X&uSc<^ z5&eat{P7EEBZ<42k+k<==`wDoQsungMFL-i4E)hmkZiMP1k3eD4#1E@@~#p z;9rLK(e6+Nj-L?mu2(~O{9LjZ(NAbV{{LI?58)pu#RI+u|70&Mzhn5{$QhvSdm zV_QPXRU;@rZI$kh;J>h(@;&0o-&9ywXx(7OdY7&L8RPLXW$QgE5%HOkCq#X0#dPqi z&m?>0J6&(>>G{u>dMMu)?$=`j7a& zeRZvxZn#K<_vxuk@2h=$o+!T`K)+b@ixcS?0b~zJ^!h2NPm%SD?OWMZY40}?%u&CI z>oR@mcI0z7kGDUX?IC&Rfqb>Mml6Jp&AdN2nc^|o2msF*h4n4N{|Ft?5*~D_<1cl~ z{KNM6UqO>FU;X+23IB5WXbe%}KXR^;hW^j{OX8mw<^O+#E!^dh{{vrt_ITL7pOF55 zXSVe$gZG;LX#bzHf9n6w@v92WWKrBR1{QnuYQEXcLR%J}$_1xci)L(dgTBnYu@z=otnja7SRkprk zc>GKL5I+yXzf=!A(jEIb%Jy%y@9!kx9s9iy{>6C0dyA;wM2Ta+m&OFPGsMw968+%G zK)TEJ(VD*W4r6_}+qupU1I-Y4tK;)tlH0da{FU;~PkYQDj|Zu=RSo(h{FZd~CGRS% ze8>O&&>k*riuFIn>ocOo^))A~llX&3zpx0xzvf^iRh#%Df$BzAR}1T*{!G{}M?G-- zvt~j6LBs?6@0E;plj%m5>7gHn=zxC9!f+-38|z8>kRca;!fZD4&4>Q9C-vGJsOLa_ zcYbzG<~U{icbq{f?+h;B2MT$Q+9+`uW`+tmzUX~4;Ig(@rNc0 z@%)*=d3%y%@?n%4oEeD4%sNZmKb=TG&hA(BFJMt24eH?P1qz%f2)= zBi;e^&U)6=p3eF{H2v{)*tgJcXGiA6BwwB_#{0vAj%nTxe!9Rh+uYM?p|EKwwIST$QnLayO54_9bTk!Y6-kl=O7yNzb5BB%>57(;`i{$cTgd53w2`|Z` zczz(_e>3u@C`2f{ANIJmkW(2|&8TPmd-P9M%_SAhT3na$>cSxSFLGVC9Dd@N9> z^na?ffAMqsu~h${(sC|l`r|k}c>d-s;y>Jr$Gb?UkK^;f#PNKURRa5_qKxpLkl>H_ z29jSE+v6L+)1dvEx2%W42F*0|hdBrNg!+%V?eqA45PuM!f8iA5gUaILGbSfq-N7#Z zPB_18>c{Q!d>6Jjvfa1qF#G|#jA)N#VJC2KU-WDZf!xe-$4Ihu4k#Cye>n>JnC z>USW2-Uvi{72tj0J+*&hhZxU#t`qZN?#n7S^j$k2N%6fxBz!KLK=EuTejV#W@oXuc z<>yNBUgD1`EfzakKGQ7I0eioo2`vEZ6#nf;-*-N*QzdRMENwg+Gk!Z7cF&)~6oYBaeqo9ZCKm$sY6{ zMzo~w^Y#x+AmMol|C*`RAc5Aa!Ovv+@@O|@{^y)vB|m#{Uh&=?=r2XpsZ<~GW-o8w z^t7-Gr|*P3eFyp9wTO>1_Q%)FHuS$)hJJC^4A2LVpO>4Rw>p{fWu$&_rnsG%k(V{1 zf6N?_zLHKx}NIwy9`qq z_BY0yMcMr^W4Ai`CA?s#XJraBtD~9y3Hl9C1vS^o@==t$jP@%*ga-SSd@=V}3wmu} zKcSgAv_rMz#Vh-%OiKAn9r~q->o<8q`n8tg&qVp29n+=AU$pW4RdT&9FLTKEHBTQT z`Oes-V8Z)Xyo|i)P=F}e;(_@)6iuj?F zuM+G=_?Ku8wKAVYrS+Xy2a!*2fjKgZ6F(4c=j{r8S(ZOF!H49fg#X-0 zO8l^8Fg_tN$^Yycp5Wi#d^n${e3)tYL-lp=hZoLR{THJb{s_-AWdz|}TJOVre{6Ka zAK|>+|4}EdC%%7?j34S$#TDo;TPa*0I1Ku8(ZOPYP6}*m&y?kZZ%Rgeh>T{NQ6Dm* z9R9$t5R`}9_I!X_=HojJns(03O#HOaYU2(r>fraITY-2emP>9nzmW1*px^$tlf3sFjJ&@U|KDG~ z5iNg&_v5Ldd>MZcAEBN~{4WfHyp)~)aBJza{Wv(s25>KOgOV zx7`DOX#YOKKc5dHi-%9<@h{~+-irTGb*fQyqWr&gd|+-EqA)%e?`0?A5KwWM8fsT(p+1pYRB-&GRV(P2T7H<&ozA};I`ya*k zb!uUKZ_}C00o1<_c&}iOJiXl={<bjWT&Y&0mTCpkYcH_C4y=vSjwX&&0Yx*!RwOaHeVh4yC@F=q>jz1?hng z86HwcDdlA$`~jJ90mW1g(1;gU(A!hn^PhXr#UU)@Z>gtbkJ>cx9OZ-A>$g{>P&`<| z`-u1-EA#queZW)9hslZQ#r|{>of5G#lga3qu(A(KFB-(_!=m2Pn)g2=))$1257N&^39T?+ z5fg&+Y2|aL3Uu5!R&}v>xu}257?1kmsnY%h=`mf3`r=J9Y83T{A7t|Tx%rZQ0r8%| z3X`_0@phV_KSG^X^e?{`_4zOO{v^~tk}6QpKXR$fqvP}Q=-04HR|f~jrg$aZXO5)$ zZK?irtQ+tytKat0K;QpDI*h>TmB7EXzY6-vA$p;P|KA=DUu{D1hYbHy;SZMAI}g`=u1S^I13dm^ z_Q2PVZTyG*{Wr2= zQLi5=)$7ma_Y2a`7sfxwP75T5{eO1K_ZP~Fv+qA5T(CA7{RG0L_*`jPSLwm<-|49z z7{0%eJq)}jHmXK}Us)Q%HSDQ>e@4kuyFChIcbB zXWKM;e`t!|l084~0cC%NNDpQIXdf5qH+4Qzn7>=~d&=MY`~7*&>wlm$@(0Ntm@Pb? zr{)U$0g}87_oRACiC!2+{S+j9`LAiUum>tHQhqo2&zeMgfcWLD_5k~iO&!d6)wQ7C zl^OY z3;KWVGOo08T<@CnYwX_*KP3M<%JXeUbIMk;f`8q;X#tPVCw63{WB(pKNB#gT-;UyR zzQ2b+v$Bk|EoZ|b_2@Q8=c8ZBN$YEQe4&?PKaZHcHEDgUI1%wi^mn(MR}LRd3kS*fKv=Y#jjiC^Za}`5g1_>3r+!S3-!m~^l#jk(jMBe3-Ybyz z@8Prj;p!KayF})%*Qp5qAIkK5wa1?Z(648pcpm8WygeZ62dYy655<fIE+W5$}36<;zO_ka+z6f9fBo-y!;)%JqTmN__z1lj%E?eR%wf{=?-HK5m75 za8P)^eHmxk1G)}h3>Ate3Gw!Li?lanbiM8CjUb`fqz-On1|+t6VL~~ zbUYsQL#6%)bpqZ0_-yOvYbF1Hhx%h{R7^7F>-!uaFm-Ul;1o5^dvhlP0;j};1 z6J#G~^n!gLj$EIoIdj7R=K_WaKgv5pJS!CU(-VxD>uTZ z;rl^rRJZB_Y2Q^xZrl}4`Tt0V%a|2K_JEWR8}3c=U$O_B>q8MA#r~;(`~E1m`aiJW zwT$0+yId*UChI3N&QqChvtZ2g3VyIRWm3_>+R7%%AER>~#N%j(G5G6p>VDXD{W|g$jvHIypD&ndm(Q!9&y#$g zKbrPumi%$h=M{AS^8NnC`>ptgF(8YlJN$#9KH%#bQ?yOCf9rUoQeMstgM5_h%PFjU zdHrGZgAe9hk+AwdqCP4En{g)-n||7?@(Co$aBzCW!4J=`QC^_P?On|KK0g??~WIRD#O#r*zM)u-VP zA%3s{{(>>(sMkk_L2O_t;b({+@N+gue#CatU9@qGQAai8A3kI})rb9BS0J7Ub>6aJ zO2argz8@T=#QQi;CElIw_gnS(Zx`O3@$XElwBKKEc8aG#9}w4jkp5$Z|7`MbrM^6G ze3cdaK-3r53~jqAsT}-yrcR9wT9}3W0kl8LCrM@-$3-tef4C#%`hUp`CjV3RxPUx` zf6x#4z}<%={Xjho$$$tM@@onI^yd$79-lK!{zCb9-PAvA&y?}IVI%ncCN>G*H`#~q zFY$xy2qpclogehje%d@gSPOm-S)N7l58?;*c*2mqz{vSPhZ8@r&(FSWN4;n(gCsIH z{34b7OYm;wT}eCkF#LD$*V*$At6q3QeZBO^3gm(mv4Wobv+* z<_~b5k6Xu!&E}l^1>4R@cn=z;)DN8b!9!tH3jR<9d*MuNRZI2hV7tArT-~Zls<=q? ze4KlD<9WM&^s!^V`)@qH;Eca-j^_0t8#_dA*(Hwphv5e+TgquWZd^xx%_{ikR$BI? zTHk&j_$2L~{PC6u?1v!J->3OEB+Ka#H>JGyc7ePtl_N(JKPi)}G!ZXy< z>Son7qd$Iz)ok+*jq+dek(BS}=LTcoSd7RIG&*JeF!oDDdV!QrG1&R*pC5c=1wUw_ zRZEAnelW?%=jV&#O&f#!++yka^;3>y$mgef;ZG@lAN749I{j(#CxAcxjP}c+yStxe zd?t9gp8Wavg^WMkoA!i5em~=o-^c9xHMt~+_+H6zKflbNuY>>D@+|)|?^ppm#*t(l zQa!=yINJY6!t1=zg!jipc^zX^(m^`HzqFsD#tZVkQmQ{tX+L{2ZGSLLCVybPARae_ zcVRvTiWil(Tq~E4Zfd1H?B^sOAMiTT3jALbzRxdY@vQ15ZJI!{fH4O&Pw#z-@`>O+ z^Y1gHe-JjG_IrT82HPil>oRtCtbSL9{~u?#RZ0BecH`f9KKkPaZfeN;GHHBv|3PJo zFun*69{(aeJwUlXPG-cB4Dbi>{3bqs|8NV%>l-2N{%8J`cI5A)zGs(_^7s3ea@HlR z3iUU^{04mRH*nmQ1DAOJBR9dqo&@bve%7A9$i2>fM^9or*n;{a{BWv`FQ+j;-y)AV z_d4P;I1Jz~JpF?G{82CJ_ki;|vA;Erx@1TEY$w|V(w1!^`;9-p4*K~ThJO9PGxwFH z*J7L6jeOx5pTOgW0)m(4WQe27T@=sejm5;gL17|7C+IcU?0><<1@POw8;O0bi@y&e%9l$|2yh;MEoZO?gu}R z&Zmv#X~s_q{>hC7eMZ`EYjq;_�E@%_il38sC}g!|(q|`79}z&$0zR8MHqj<#W4( z{^25@hUzm%!>GRA4fMkDv{wuExuCutxdNd7X>R$2>guCmg!Wd@1*x?EPH!aLFCX-( z1kk6X{YSIMV?RO}{UGgEcuLy;Bf+0&3C|Ipz`KkdF${Q@?RVy-0sU9$dYx+I+uhg? zRhSQz7Q$VYKM#M-QS*XBk5Br?R&aS+*;xFaOz=ePV8;a&KG{+rosA^ z;osFQZPq@lH{o#6r!C!D87BH`)Wf3YEvXFC3+GkZ%2>Tmut45({2lel6kibS1CDi?Da8m>Svi_8s{P`2jDlXhUATKsI(WSris-lq`&PaW>6=c=RE!-i&x(3^L4Af0A`@%4|?!R zK1Ywns8b!eg!(kB@T|nBxt^1|-<*P-#V6`NV4KB8+)w23vH?^($6&c+A1cd%j!oz&Y^??om1axYwTlPCpO)txofSVt*MPRND99JdyL$ zu#*K~vBII!7QDJw#!q#s{r`PHw!gPt-SpqpvU*;%PN{$C)$d)9pVz7O0pF5-uhOP1 z+#Y{Y}8L{P}QF@%(VM%ji2jpF{T--i+h_LG}|Fn$P=dK4FhI@sq*Q zL-w^|1q|UyF&#tvK{*{m^D#6ZiWwN<7mDc^!iRD?hUQ~vJ`^)B#4i-nF@z80bPUbM q(0nLnV2EERreg>n%IO%IkD>Wc%)k)8P)x@VK9tijG#~f(eEdHxZ1&&) diff --git a/Editor/images/hair.dds b/Editor/images/hair.dds deleted file mode 100644 index 576bb57ec195a6e94cb312f83360043f3126f597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65664 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 diff --git a/Editor/images/leaf.dds b/Editor/images/leaf.dds deleted file mode 100644 index b8d4c442543ae7edcf08186d5ff45c4e99c50d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349680 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%0Dk5K?o@U(XUFV5@jr14QXI|&=`=Y^q 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 CcF2kV diff --git a/Editor/images/pointlight.dds b/Editor/images/pointlight.dds deleted file mode 100644 index 940a11a5f414625ef411df1869be6545d43b2f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65684 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 J{%$A!{y%dQoz4IN diff --git a/Editor/images/ripple.png b/Editor/images/ripple.png deleted file mode 100644 index 14edbcfacb7948a6702ca0ce80b1926263ae6cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7617 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 Me(2(d|0+NHe{H#4f&c&j diff --git a/WickedEngine/wiApplication.cpp b/WickedEngine/wiApplication.cpp index 6f8c40276..2619f546c 100644 --- a/WickedEngine/wiApplication.cpp +++ b/WickedEngine/wiApplication.cpp @@ -384,7 +384,16 @@ namespace wi infodisplay_str += "Graphics pipelines active: " + std::to_string(graphicsDevice->GetActivePipelineCount()) + "\n"; } - wi::font::Params params = wi::font::Params(4, 4, infoDisplay.size, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_TOP, wi::Color(255, 255, 255, 255), wi::Color(0, 0, 0, 255)); + wi::font::Params params = wi::font::Params( + 4, + 4, + infoDisplay.size, + wi::font::WIFALIGN_LEFT, + wi::font::WIFALIGN_TOP, + wi::Color::White(), + wi::Color::Shadow() + ); + params.shadow_softness = 0.4f; // Explanation: this compose pass is in LINEAR space if display output is linear or HDR10 // If HDR10, the HDR10 output mapping will be performed on whole image later when drawing to swapchain diff --git a/WickedEngine/wiColor.h b/WickedEngine/wiColor.h index 62453a7ad..6fe41fdd9 100644 --- a/WickedEngine/wiColor.h +++ b/WickedEngine/wiColor.h @@ -68,6 +68,7 @@ namespace wi static constexpr Color Gray() { return Color(127, 127, 127, 255); } static constexpr Color Ghost() { return Color(127, 127, 127, 127); } static constexpr Color Booger() { return Color(127, 127, 127, 200); } + static constexpr Color Shadow() { return Color(0, 0, 0, 100); } static constexpr Color Warning() { return 0xFF66FFFF; } // light yellow static constexpr Color Error() { return 0xFF6666FF; } // light red diff --git a/WickedEngine/wiECS.h b/WickedEngine/wiECS.h index 772bf4d32..e665026c2 100644 --- a/WickedEngine/wiECS.h +++ b/WickedEngine/wiECS.h @@ -329,6 +329,12 @@ namespace wi::ecs // 0 <= index < GetCount() inline const Component& operator[](size_t index) const { return components[index]; } + // Returns the tightly packed [read only] entity array + inline const wi::vector& GetEntityArray() const { return entities; } + + // Returns the tightly packed [read only] component array + inline const wi::vector& GetComponentArray() const { return components; } + private: // This is a linear array of alive components wi::vector components; diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp index 746de0b81..ef146d214 100644 --- a/WickedEngine/wiFont.cpp +++ b/WickedEngine/wiFont.cpp @@ -44,42 +44,6 @@ namespace wi::font static Texture texture; - struct Glyph - { - float x; - float y; - float width; - float height; - float tc_left; - float tc_right; - float tc_top; - float tc_bottom; - }; - static wi::unordered_map glyph_lookup; - static wi::unordered_map rect_lookup; - struct SDF - { - static constexpr int padding = 5; - static constexpr unsigned char onedge_value = 180; - static constexpr float pixel_dist_scale = float(onedge_value) / float(padding); - int width; - int height; - int xoff; - int yoff; - wi::vector bitmap; - }; - static wi::unordered_map sdf_lookup; - // pack glyph identifiers to a 32-bit hash: - // height: 10 bits (height supported: 0 - 1023) - // style: 6 bits (number of font styles supported: 0 - 63) - // code: 16 bits (character code range supported: 0 - 65535) - constexpr int32_t glyphhash(int code, int style, int height) { return ((code & 0xFFFF) << 16) | ((style & 0x3F) << 10) | (height & 0x3FF); } - constexpr int codefromhash(int64_t hash) { return int((hash >> 16) & 0xFFFF); } - constexpr int stylefromhash(int64_t hash) { return int((hash >> 10) & 0x3F); } - constexpr int heightfromhash(int64_t hash) { return int((hash >> 0) & 0x3FF); } - static wi::unordered_set pendingGlyphs; - static wi::SpinLock glyphLock; - struct FontStyle { std::string name; @@ -110,7 +74,44 @@ namespace wi::font } } }; - static wi::vector fontStyles; + static wi::vector> fontStyles; + + struct Glyph + { + float x; + float y; + float width; + float height; + float tc_left; + float tc_right; + float tc_top; + float tc_bottom; + const FontStyle* fontStyle = nullptr; + }; + static wi::unordered_map glyph_lookup; + static wi::unordered_map rect_lookup; + struct SDF + { + static constexpr int padding = 5; + static constexpr unsigned char onedge_value = 180; + static constexpr float pixel_dist_scale = float(onedge_value) / float(padding); + int width; + int height; + int xoff; + int yoff; + wi::vector bitmap; + }; + static wi::unordered_map sdf_lookup; + // pack glyph identifiers to a 32-bit hash: + // height: 10 bits (height supported: 0 - 1023) + // style: 6 bits (number of font styles supported: 0 - 63) + // code: 16 bits (character code range supported: 0 - 65535) + constexpr int32_t glyphhash(int code, int style, int height) { return ((code & 0xFFFF) << 16) | ((style & 0x3F) << 10) | (height & 0x3FF); } + constexpr int codefromhash(int64_t hash) { return int((hash >> 16) & 0xFFFF); } + constexpr int stylefromhash(int64_t hash) { return int((hash >> 10) & 0x3F); } + constexpr int heightfromhash(int64_t hash) { return int((hash >> 0) & 0x3FF); } + static wi::unordered_set pendingGlyphs; + static wi::SpinLock glyphLock; struct ParseStatus { @@ -121,15 +122,11 @@ namespace wi::font }; static thread_local wi::vector vertexList; - - template - ParseStatus ParseText(const T* text, size_t text_length, Params params) + ParseStatus ParseText(const wchar_t* text, size_t text_length, const Params& params) { ParseStatus status; status.cursor = params.cursor; - const FontStyle& fontStyle = fontStyles[params.style]; - const float fontScale = stbtt_ScaleForPixelHeight(&fontStyle.fontInfo, (float)params.size); vertexList.clear(); auto word_wrap = [&] { @@ -145,14 +142,15 @@ namespace wi::font } status.cursor.position.x -= word_offset; status.cursor.position.y += LINEBREAK_SIZE; + status.cursor.size.x = std::max(status.cursor.size.x, status.cursor.position.x); + status.cursor.size.y = std::max(status.cursor.size.y, status.cursor.position.y + LINEBREAK_SIZE); } }; status.cursor.size.y = status.cursor.position.y + LINEBREAK_SIZE; for (size_t i = 0; i < text_length; ++i) { - T character = text[i]; - int code = (int)character; + int code = (int)text[i]; const int32_t hash = glyphhash(code, params.style, params.size); if (glyph_lookup.count(hash) == 0) @@ -186,6 +184,7 @@ namespace wi::font const float glyphHeight = glyph.height; const float glyphOffsetX = glyph.x; const float glyphOffsetY = glyph.y; + const float fontScale = stbtt_ScaleForPixelHeight(&glyph.fontStyle->fontInfo, (float)params.size); const size_t vertexID = size_t(status.quadCount) * 4; vertexList.resize(vertexID + 4); @@ -213,7 +212,7 @@ namespace wi::font vertexList[vertexID + 3].uv = float2(glyph.tc_right, glyph.tc_bottom); int advance, lsb; - stbtt_GetCodepointHMetrics(&fontStyle.fontInfo, code, &advance, &lsb); + stbtt_GetCodepointHMetrics(&glyph.fontStyle->fontInfo, code, &advance, &lsb); status.cursor.position.x += advance * fontScale; status.cursor.position.x += params.spacingX; @@ -221,7 +220,7 @@ namespace wi::font if (text_length > 1 && i < text_length - 1 && text[i + 1]) { int code_next = (int)text[i + 1]; - int kern = stbtt_GetCodepointKernAdvance(&fontStyle.fontInfo, code, code_next); + int kern = stbtt_GetCodepointKernAdvance(&glyph.fontStyle->fontInfo, code, code_next); status.cursor.position.x += kern * fontScale; } } @@ -234,6 +233,17 @@ namespace wi::font return status; } + + thread_local static std::string char_temp_buffer; + thread_local static std::wstring wchar_temp_buffer; + ParseStatus ParseText(const char* text, size_t text_length, const Params& params) + { + // the temp buffers are used to avoid allocations of string objects: + char_temp_buffer = text; + wi::helper::StringConvert(char_temp_buffer, wchar_temp_buffer); + return ParseText(wchar_temp_buffer.c_str(), wchar_temp_buffer.length(), params); + } + void CommitText(void* vertexList_GPU) { std::memcpy(vertexList_GPU, vertexList.data(), sizeof(FontVertex) * vertexList.size()); @@ -288,7 +298,7 @@ namespace wi::font bd.render_target[0].src_blend = Blend::SRC_ALPHA; bd.render_target[0].dest_blend = Blend::INV_SRC_ALPHA; bd.render_target[0].blend_op = BlendOp::ADD; - bd.render_target[0].src_blend_alpha = Blend::SRC_ALPHA; + bd.render_target[0].src_blend_alpha = Blend::ONE; bd.render_target[0].dest_blend_alpha = Blend::INV_SRC_ALPHA; bd.render_target[0].blend_op_alpha = BlendOp::ADD; bd.render_target[0].render_target_write_mask = ColorWrite::ENABLE_ALL; @@ -321,18 +331,30 @@ namespace wi::font for (int32_t hash : pendingGlyphs) { const int code = codefromhash(hash); - const int style = stylefromhash(hash); + int style = stylefromhash(hash); const float height = (float)heightfromhash(hash); - FontStyle& fontStyle = fontStyles[style]; + FontStyle* fontStyle = fontStyles[style].get(); + int glyphIndex = stbtt_FindGlyphIndex(&fontStyle->fontInfo, code); + if (glyphIndex == 0) + { + // Try fallback to an other font style that has this character: + style = 0; + while (glyphIndex == 0 && style < fontStyles.size()) + { + fontStyle = fontStyles[style].get(); + glyphIndex = stbtt_FindGlyphIndex(&fontStyle->fontInfo, code); + style++; + } + } - float fontScaling = stbtt_ScaleForPixelHeight(&fontStyle.fontInfo, height); + float fontScaling = stbtt_ScaleForPixelHeight(&fontStyle->fontInfo, height); SDF& sdf = sdf_lookup[hash]; sdf.width = 0; sdf.height = 0; sdf.xoff = 0; sdf.yoff = 0; - unsigned char* bitmap = stbtt_GetCodepointSDF(&fontStyle.fontInfo, fontScaling, code, sdf.padding, sdf.onedge_value, sdf.pixel_dist_scale, &sdf.width, &sdf.height, &sdf.xoff, &sdf.yoff); + unsigned char* bitmap = stbtt_GetGlyphSDF(&fontStyle->fontInfo, fontScaling, glyphIndex, sdf.padding, sdf.onedge_value, sdf.pixel_dist_scale, &sdf.width, &sdf.height, &sdf.xoff, &sdf.yoff); sdf.bitmap.resize(sdf.width * sdf.height); std::memcpy(sdf.bitmap.data(), bitmap, sdf.bitmap.size()); stbtt_FreeSDF(bitmap, nullptr); @@ -345,9 +367,10 @@ namespace wi::font Glyph& glyph = glyph_lookup[hash]; glyph.x = float(sdf.xoff); - glyph.y = float(sdf.yoff) + float(fontStyle.ascent) * fontScaling; + glyph.y = float(sdf.yoff) + float(fontStyle->ascent) * fontScaling; glyph.width = float(sdf.width); glyph.height = float(sdf.height); + glyph.fontStyle = fontStyle; } pendingGlyphs.clear(); @@ -379,7 +402,6 @@ namespace wi::font const wchar_t code = codefromhash(hash); const int style = stylefromhash(hash); const float height = (float)heightfromhash(hash); - const FontStyle& fontStyle = fontStyles[style]; Glyph& glyph = glyph_lookup[hash]; SDF& sdf = sdf_lookup[hash]; @@ -420,28 +442,28 @@ namespace wi::font { for (size_t i = 0; i < fontStyles.size(); i++) { - const FontStyle& fontStyle = fontStyles[i]; + const FontStyle& fontStyle = *fontStyles[i]; if (!fontStyle.name.compare(fontName)) { return int(i); } } - fontStyles.emplace_back(); - fontStyles.back().Create(fontName); + fontStyles.push_back(std::make_unique()); + fontStyles.back()->Create(fontName); return int(fontStyles.size() - 1); } int AddFontStyle(const std::string& fontName, const uint8_t* data, size_t size) { for (size_t i = 0; i < fontStyles.size(); i++) { - const FontStyle& fontStyle = fontStyles[i]; + const FontStyle& fontStyle = *fontStyles[i]; if (!fontStyle.name.compare(fontName)) { return int(i); } } - fontStyles.emplace_back(); - fontStyles.back().Create(fontName, data, size); + fontStyles.push_back(std::make_unique()); + fontStyles.back()->Create(fontName, data, size); return int(fontStyles.size() - 1); } diff --git a/WickedEngine/wiFont.h b/WickedEngine/wiFont.h index 338e4c2c5..3e8ccba80 100644 --- a/WickedEngine/wiFont.h +++ b/WickedEngine/wiFont.h @@ -48,7 +48,7 @@ namespace wi::font wi::Color shadowColor; // transparent disables, any other color enables shadow under text float h_wrap = -1; // wrap start width (-1 default for no wrap) (logical canvas units) int style = 0; // 0: use default font style, other values can be taken from the wi::font::AddFontStyle() funtion's return value - float softness = 0.1f; // value in [0,1] range + float softness = 0.08f; // value in [0,1] range float bolden = 0; // value in [0,1] range float shadow_softness = 0.5f; // value in [0,1] range float shadow_bolden = 0.1f; // value in [0,1] range @@ -99,6 +99,26 @@ namespace wi::font color(color), shadowColor(shadowColor) {} + + Params( + wi::Color color, + wi::Color shadowColor = wi::Color(0, 0, 0, 0), + float softness = 0.08f, + float bolden = 0, + float shadow_softness = 0.5f, + float shadow_bolden = 0.1f, + float shadow_offset_x = 0, + float shadow_offset_y = 0 + ) : + color(color), + shadowColor(shadowColor), + softness(softness), + bolden(bolden), + shadow_softness(shadow_softness), + shadow_bolden(shadow_bolden), + shadow_offset_x(shadow_offset_x), + shadow_offset_y(shadow_offset_y) + {} }; // Initializes the font renderer diff --git a/WickedEngine/wiGUI.cpp b/WickedEngine/wiGUI.cpp index debd8ac6f..46decebbd 100644 --- a/WickedEngine/wiGUI.cpp +++ b/WickedEngine/wiGUI.cpp @@ -72,8 +72,9 @@ namespace wi::gui uint32_t priority = 0; focus = false; - for (auto& widget : widgets) + for (size_t i = 0; i < widgets.size(); ++i) { + Widget* widget = widgets[i]; // re index in loop, because widgets can be resized while updating! widget->force_disable = focus; widget->Update(canvas, dt); widget->force_disable = false; @@ -196,7 +197,7 @@ namespace wi::gui sprites[FOCUS].params.color = wi::Color::Gray(); sprites[ACTIVE].params.color = wi::Color::White(); sprites[DEACTIVATING].params.color = wi::Color::Gray(); - font.params.shadowColor = wi::Color::Black(); + font.params.shadowColor = wi::Color::Shadow(); font.params.shadow_bolden = 0.2f; font.params.shadow_softness = 0.2f; @@ -223,17 +224,6 @@ namespace wi::gui state = IDLE; } - hitBox = Hitbox2D(XMFLOAT2(translation.x, translation.y), XMFLOAT2(scale.x, scale.y)); - - if (!force_disable && GetState() != WIDGETSTATE::ACTIVE && !tooltip.empty() && GetPointerHitbox().intersects(hitBox)) - { - tooltipTimer++; - } - else - { - tooltipTimer = 0; - } - UpdateTransform(); if (parent != nullptr) @@ -262,6 +252,17 @@ namespace wi::gui } font.params.posX = translation.x; font.params.posY = translation.y; + + hitBox = Hitbox2D(XMFLOAT2(translation.x, translation.y), XMFLOAT2(scale.x, scale.y)); + + if (!force_disable && GetState() != WIDGETSTATE::ACTIVE && !tooltipFont.text.empty() && GetPointerHitbox().intersects(hitBox)) + { + tooltipTimer++; + } + else + { + tooltipTimer = 0; + } } void Widget::RenderTooltip(const wi::Canvas& canvas, CommandList cmd) const { @@ -275,19 +276,21 @@ namespace wi::gui float screenwidth = canvas.GetLogicalWidth(); float screenheight = canvas.GetLogicalHeight(); - wi::font::Params fontProps = wi::font::Params(0, 0, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_TOP); - fontProps.color = wi::Color(25, 25, 25, 255); - wi::SpriteFont tooltipFont = wi::SpriteFont(tooltip, fontProps); - if (!scriptTip.empty()) - { - tooltipFont.SetText(tooltip + "\n" + scriptTip); - } + tooltipFont.params = wi::font::Params(0, 0, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_TOP); + tooltipFont.params.color = wi::Color(25, 25, 25, 255); static const float _border = 2; XMFLOAT2 textSize = tooltipFont.TextSize(); float textWidth = textSize.x + _border * 2; float textHeight = textSize.y + _border * 2; + if (!scripttipFont.text.empty()) + { + XMFLOAT2 scriptTipSize = scripttipFont.TextSize(); + textWidth = std::max(textWidth, scriptTipSize.x); + textHeight += scriptTipSize.y; + } + XMFLOAT2 pointer = GetPointerHitbox().pos; tooltipFont.params.posX = pointer.x; tooltipFont.params.posY = pointer.y; @@ -313,14 +316,13 @@ namespace wi::gui wi::image::Draw(wi::texturehelper::getWhite(), wi::image::Params(tooltipFont.params.posX - _border, tooltipFont.params.posY - _border, textWidth, textHeight, wi::Color(255, 234, 165)), cmd); - tooltipFont.SetText(tooltip); tooltipFont.Draw(cmd); - if (!scriptTip.empty()) + if (!scripttipFont.text.empty()) { - tooltipFont.SetText(scriptTip); - tooltipFont.params.posY += (int)(textHeight / 2); - tooltipFont.params.color = wi::Color(25, 25, 25, 110); - tooltipFont.Draw(cmd); + scripttipFont.params = tooltipFont.params; + scripttipFont.params.posY += (int)(textHeight / 2); + scripttipFont.params.color = wi::Color(25, 25, 25, 110); + scripttipFont.Draw(cmd); } } } @@ -354,19 +356,19 @@ namespace wi::gui } void Widget::SetTooltip(const std::string& value) { - tooltip = value; + tooltipFont.SetText(value); } void Widget::SetTooltip(std::string&& value) { - tooltip = std::move(value); + tooltipFont.SetText(std::move(value)); } void Widget::SetScriptTip(const std::string& value) { - scriptTip = value; + scripttipFont.SetText(value); } void Widget::SetScriptTip(std::string&& value) { - scriptTip = std::move(value); + scripttipFont.SetText(std::move(value)); } void Widget::SetPos(const XMFLOAT2& value) { @@ -386,6 +388,16 @@ namespace wi::gui scale = scale_local; } + XMFLOAT2 Widget::GetPos() const + { + XMFLOAT3 transform_position = TransformComponent::GetPosition(); + return *(XMFLOAT2*)&transform_position; + } + XMFLOAT2 Widget::GetSize() const + { + XMFLOAT3 transform_scale = TransformComponent::GetScale(); + return *(XMFLOAT2*)&transform_scale; + } WIDGETSTATE Widget::GetState() const { return state; @@ -425,36 +437,36 @@ namespace wi::gui state = DEACTIVATING; tooltipTimer = 0; } - void Widget::SetColor(wi::Color color, WIDGETSTATE state) + void Widget::SetColor(wi::Color color, int id) { - if (state == WIDGETSTATE_COUNT) + if (id < 0) { - for (int i = 0; i < WIDGETSTATE_COUNT; ++i) + for (int i = 0; i < arraysize(sprites); ++i) { sprites[i].params.color = color; } } - else + else if(id < arraysize(sprites)) { - sprites[state].params.color = color; + sprites[id].params.color = color; } } wi::Color Widget::GetColor() const { return wi::Color::fromFloat4(sprites[GetState()].params.color); } - void Widget::SetImage(wi::Resource textureResource, WIDGETSTATE state) + void Widget::SetImage(wi::Resource textureResource, int id) { - if (state == WIDGETSTATE_COUNT) + if (id < 0) { - for (int i = 0; i < WIDGETSTATE_COUNT; ++i) + for (int i = 0; i < arraysize(sprites); ++i) { sprites[i].textureResource = textureResource; } } - else + else if (id < arraysize(sprites)) { - sprites[state].textureResource = textureResource; + sprites[id].textureResource = textureResource; } } @@ -585,7 +597,7 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { hitBox.pos.x = translation.x; hitBox.pos.y = translation.y; @@ -705,6 +717,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font_description.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -714,19 +733,19 @@ namespace wi::gui } void Button::OnClick(std::function func) { - onClick = move(func); + onClick = func; } void Button::OnDragStart(std::function func) { - onDragStart = move(func); + onDragStart = func; } void Button::OnDrag(std::function func) { - onDrag = move(func); + onDrag = func; } void Button::OnDragEnd(std::function func) { - onDragEnd = move(func); + onDragEnd = func; } @@ -742,16 +761,31 @@ namespace wi::gui Widget::Update(canvas, dt); - if (scale.x > scale.y) + float scrollbar_begin; + float scrollbar_end; + float scrollbar_size; + + if (vertical) { - vertical = false; + scrollbar_begin = translation.y; + scrollbar_end = scrollbar_begin + scale.y; + scrollbar_size = scrollbar_end - scrollbar_begin; + scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.x)); + scrollbar_length = std::max(scale.x * 2, scrollbar_size * scrollbar_granularity); + scrollbar_length = std::min(scrollbar_length, scale.y); } else { - vertical = true; + scrollbar_begin = translation.x; + scrollbar_end = scrollbar_begin + scale.x; + scrollbar_size = scrollbar_end - scrollbar_begin; + scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.y)); + scrollbar_length = std::max(scale.y * 2, scrollbar_size * scrollbar_granularity); + scrollbar_length = std::min(scrollbar_length, scale.x); } + scrollbar_length = std::max(0.0f, scrollbar_length); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { if (state == FOCUS) { @@ -790,26 +824,6 @@ namespace wi::gui Activate(); } } - float scrollbar_begin; - float scrollbar_end; - float scrollbar_size; - - if (vertical) - { - scrollbar_begin = translation.y; - scrollbar_end = scrollbar_begin + scale.y; - scrollbar_size = scrollbar_end - scrollbar_begin; - scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.x)); - scrollbar_length = std::max(scale.x * 2, scrollbar_size * scrollbar_granularity); - } - else - { - scrollbar_begin = translation.x; - scrollbar_end = scrollbar_begin + scale.x; - scrollbar_size = scrollbar_end - scrollbar_begin; - scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.y)); - scrollbar_length = std::max(scale.y * 2, scrollbar_size * scrollbar_granularity); - } if (!click_down) { @@ -845,28 +859,28 @@ namespace wi::gui scrollbar_delta = grab_delta + pointerHitbox.pos.x - grab_pos.x; } } - - scrollbar_delta = wi::math::Clamp(scrollbar_delta, 0, scrollbar_size - scrollbar_length); - if (scrollbar_begin < scrollbar_end - scrollbar_length) - { - scrollbar_value = wi::math::InverseLerp(scrollbar_begin, scrollbar_end - scrollbar_length, scrollbar_begin + scrollbar_delta); - } - else - { - scrollbar_value = 0; - } - - list_offset = -scrollbar_value * (list_length - scrollbar_size * (1.0f - overscroll)); } + scrollbar_delta = wi::math::Clamp(scrollbar_delta, 0, scrollbar_size - scrollbar_length); + if (scrollbar_begin < scrollbar_end - scrollbar_length) + { + scrollbar_value = wi::math::InverseLerp(scrollbar_begin, scrollbar_end - scrollbar_length, scrollbar_begin + scrollbar_delta); + } + else + { + scrollbar_value = 0; + } + + list_offset = -scrollbar_value * (list_length - scrollbar_size * (1.0f - overscroll)); + if (vertical) { for (int i = 0; i < arraysize(sprites_knob); ++i) { sprites_knob[i].params.pos.x = translation.x + knob_inset_border.x; sprites_knob[i].params.pos.y = translation.y + knob_inset_border.y + scrollbar_delta; - sprites_knob[i].params.siz.x = scale.x - knob_inset_border.x * 2; - sprites_knob[i].params.siz.y = scrollbar_length - knob_inset_border.y * 2; + sprites_knob[i].params.siz.x = std::max(0.0f, scale.x - knob_inset_border.x * 2); + sprites_knob[i].params.siz.y = std::max(0.0f, scrollbar_length - knob_inset_border.y * 2); } } else @@ -875,8 +889,8 @@ namespace wi::gui { sprites_knob[i].params.pos.x = translation.x + knob_inset_border.x + scrollbar_delta; sprites_knob[i].params.pos.y = translation.y + knob_inset_border.y; - sprites_knob[i].params.siz.x = scrollbar_length - knob_inset_border.x * 2; - sprites_knob[i].params.siz.y = scale.y - knob_inset_border.y * 2; + sprites_knob[i].params.siz.x = std::max(0.0f, scrollbar_length - knob_inset_border.x * 2); + sprites_knob[i].params.siz.y = std::max(0.0f, scale.y - knob_inset_border.y * 2); } } @@ -903,6 +917,22 @@ namespace wi::gui sprites_knob[scrollbar_state].Draw(cmd); } + void ScrollBar::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + + if (id > WIDGET_ID_SCROLLBAR_BEGIN && id < WIDGET_ID_SCROLLBAR_END) + { + if (id >= WIDGET_ID_SCROLLBAR_KNOB_INACTIVE) + { + sprites_knob[id - WIDGET_ID_SCROLLBAR_KNOB_INACTIVE].params.color = color; + } + else if (id >= WIDGET_ID_SCROLLBAR_BASE_IDLE) + { + sprites[id - WIDGET_ID_SCROLLBAR_BASE_IDLE].params.color = color; + } + } + } @@ -964,17 +994,20 @@ namespace wi::gui scrollbar.SetSize(XMFLOAT2(scrollbar_width, scale.y)); scrollbar.Update(canvas, dt); - Hitbox2D pointerHitbox = GetPointerHitbox(); - if (scroll_allowed && scrollbar.IsScrollbarRequired() && pointerHitbox.intersects(hitBox)) + if (IsEnabled() && dt > 0) { - scroll_allowed = false; - state = FOCUS; - // This is outside scrollbar code, because it can also be scrolled if parent widget is only in focus - scrollbar.Scroll(wi::input::GetPointer().z * 20); - } - else - { - state = IDLE; + Hitbox2D pointerHitbox = GetPointerHitbox(); + if (scroll_allowed && scrollbar.IsScrollbarRequired() && pointerHitbox.intersects(hitBox)) + { + scroll_allowed = false; + state = FOCUS; + // This is outside scrollbar code, because it can also be scrolled if parent widget is only in focus + scrollbar.Scroll(wi::input::GetPointer().z * 20); + } + else + { + state = IDLE; + } } if (scrollbar.IsScrollbarRequired()) @@ -991,6 +1024,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + wi::Color color = GetColor(); ApplyScissor(canvas, scissorRect, cmd); @@ -1000,6 +1040,11 @@ namespace wi::gui scrollbar.Render(canvas, cmd); } + void Label::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + scrollbar.SetColor(color, id); + } @@ -1046,7 +1091,7 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { hitBox.pos.x = translation.x; hitBox.pos.y = translation.y; @@ -1145,6 +1190,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font_description.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -1163,7 +1215,7 @@ namespace wi::gui } void TextInputField::OnInputAccepted(std::function func) { - onInputAccepted = move(func); + onInputAccepted = func; } void TextInputField::AddInput(const char inputChar) { @@ -1198,6 +1250,7 @@ namespace wi::gui SetSize(XMFLOAT2(200, 40)); valueInputField.Create(name + "_endInputField"); + valueInputField.SetShadowRadius(0); valueInputField.SetTooltip("Enter number to modify value even outside slider limits. Enter \"reset\" to reset slider to initial state."); valueInputField.SetValue(end); valueInputField.OnInputAccepted([this, start, end, defaultValue](EventArgs args) { @@ -1255,13 +1308,13 @@ namespace wi::gui Widget::Update(canvas, dt); valueInputField.Detach(); - valueInputField.SetSize(XMFLOAT2(std::max(scale.y * 2, wi::font::TextWidth(valueInputField.GetText(), valueInputField.font.params) + 4), scale.y)); - valueInputField.SetPos(XMFLOAT2(translation.x + scale.x + 2, translation.y)); + valueInputField.SetSize(XMFLOAT2(std::max(scale.y, wi::font::TextWidth(valueInputField.GetText(), valueInputField.font.params) + 4), scale.y)); + valueInputField.SetPos(XMFLOAT2(translation.x + scale.x + 1, translation.y)); valueInputField.AttachTo(this); scissorRect.bottom = (int32_t)std::ceil(translation.y + scale.y); scissorRect.left = (int32_t)std::floor(translation.x); - scissorRect.right = (int32_t)std::ceil(translation.x + scale.x + 20 + scale.y * 2); // include the valueInputField + scissorRect.right = (int32_t)std::ceil(translation.x + scale.x + 1 + valueInputField.GetSize().x); scissorRect.top = (int32_t)std::floor(translation.y); for (int i = 0; i < WIDGETSTATE_COUNT; ++i) @@ -1275,7 +1328,7 @@ namespace wi::gui valueInputField.force_disable = force_disable; valueInputField.Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { bool dragged = false; @@ -1367,6 +1420,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + 1 + valueInputField.GetSize().x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -1377,6 +1437,7 @@ namespace wi::gui // knob sprites_knob[state].Draw(cmd); + // input field valueInputField.Render(canvas, cmd); } void Slider::RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const @@ -1386,7 +1447,24 @@ namespace wi::gui } void Slider::OnSlide(std::function func) { - onSlide = move(func); + onSlide = func; + } + void Slider::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + valueInputField.SetColor(color, id); + + if (id > WIDGET_ID_SLIDER_BEGIN && id < WIDGET_ID_SLIDER_END) + { + if (id >= WIDGET_ID_SLIDER_KNOB_IDLE) + { + sprites_knob[id - WIDGET_ID_SLIDER_KNOB_IDLE].params.color = color; + } + else if (id >= WIDGET_ID_SLIDER_BASE_IDLE) + { + sprites[id - WIDGET_ID_SLIDER_BASE_IDLE].params.color = color; + } + } } @@ -1418,7 +1496,7 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { if (state == FOCUS) @@ -1490,6 +1568,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -1506,7 +1591,7 @@ namespace wi::gui } void CheckBox::OnClick(std::function func) { - onClick = move(func); + onClick = func; } void CheckBox::SetCheck(bool value) { @@ -1531,10 +1616,21 @@ namespace wi::gui font.params.h_align = wi::font::WIFALIGN_RIGHT; font.params.v_align = wi::font::WIFALIGN_CENTER; } - float ComboBox::GetItemOffset(int index) const + float ComboBox::GetDropOffset(const wi::Canvas& canvas) const + { + float screenheight = canvas.GetLogicalHeight(); + int visible_items = std::min(maxVisibleItemCount, int(items.size()) - firstItemVisible); + float total_height = (visible_items + 1) * scale.y; + if (translation.y + total_height > screenheight) + { + return -total_height - 1; + } + return 1; + } + float ComboBox::GetItemOffset(const wi::Canvas& canvas, int index) const { index = std::max(firstItemVisible, index) - firstItemVisible; - return scale.y * (index + 1) + 1; + return scale.y * (index + 1) + GetDropOffset(canvas); } bool ComboBox::HasScrollbar() const { @@ -1549,8 +1645,9 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { + float drop_offset = GetDropOffset(canvas); if (state == FOCUS) { @@ -1610,7 +1707,7 @@ namespace wi::gui Activate(); } - const float scrollbar_begin = translation.y + scale.y + 1 + scale.y * 0.5f; + const float scrollbar_begin = translation.y + scale.y + drop_offset + scale.y * 0.5f; const float scrollbar_end = scrollbar_begin + std::max(0.0f, (float)std::min(maxVisibleItemCount, (int)items.size()) - 1) * scale.y; if (state == ACTIVE) @@ -1620,7 +1717,7 @@ namespace wi::gui { if (combostate != COMBOSTATE_SELECTING && combostate != COMBOSTATE_INACTIVE) { - if (combostate == COMBOSTATE_SCROLLBAR_GRABBED || pointerHitbox.intersects(Hitbox2D(XMFLOAT2(translation.x + scale.x + 1, translation.y + scale.y + 1), XMFLOAT2(scale.y, (float)std::min(maxVisibleItemCount, (int)items.size()) * scale.y)))) + if (combostate == COMBOSTATE_SCROLLBAR_GRABBED || pointerHitbox.intersects(Hitbox2D(XMFLOAT2(translation.x + scale.x + 1, translation.y + scale.y + drop_offset), XMFLOAT2(scale.y, (float)std::min(maxVisibleItemCount, (int)items.size()) * scale.y)))) { if (click_down) { @@ -1668,7 +1765,7 @@ namespace wi::gui { Hitbox2D itembox; itembox.pos.x = translation.x; - itembox.pos.y = translation.y + GetItemOffset(i); + itembox.pos.y = translation.y + GetItemOffset(canvas, i); itembox.siz.x = scale.x; itembox.siz.y = scale.y; if (pointerHitbox.intersects(itembox)) @@ -1701,6 +1798,13 @@ namespace wi::gui } GraphicsDevice* device = wi::graphics::GetDevice(); + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + 1 + scale.y + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + wi::Color color = GetColor(); if (combostate != COMBOSTATE_INACTIVE) { @@ -1730,6 +1834,8 @@ namespace wi::gui } const XMMATRIX Projection = canvas.GetProjection(); + float drop_offset = GetDropOffset(canvas); + // control-arrow-background wi::image::Params fx = sprites[state].params; fx.pos = XMFLOAT3(translation.x + scale.x + 1, translation.y, 0); @@ -1743,7 +1849,7 @@ namespace wi::gui MiscCB cb; cb.g_xColor = sprites[ACTIVE].params.color; XMStoreFloat4x4(&cb.g_xTransform, XMMatrixScaling(scale.y * 0.25f, scale.y * 0.25f, 1) * - XMMatrixRotationZ(XM_PIDIV2) * + XMMatrixRotationZ(drop_offset < 0 ? -XM_PIDIV2 : XM_PIDIV2) * XMMatrixTranslation(translation.x + scale.x + 1 + scale.y * 0.5f, translation.y + scale.y * 0.5f, 0) * Projection ); @@ -1766,28 +1872,38 @@ namespace wi::gui if (selected >= 0) { - wi::font::Draw(items[selected].name, wi::font::Params(translation.x + scale.x * 0.5f, translation.y + scale.y * 0.5f, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_CENTER, wi::font::WIFALIGN_CENTER, - font.params.color, font.params.shadowColor), cmd); + wi::font::Params fp = wi::font::Params( + translation.x + scale.x * 0.5f, + translation.y + scale.y * 0.5f, + wi::font::WIFONTSIZE_DEFAULT, + wi::font::WIFALIGN_CENTER, + wi::font::WIFALIGN_CENTER, + font.params.color, + font.params.shadowColor + ); + fp.style = font.params.style; + wi::font::Draw(items[selected].name, fp, cmd); } // drop-down if (state == ACTIVE) { + if (HasScrollbar()) { Rect rect; rect.left = int(translation.x + scale.x + 1); rect.right = int(translation.x + scale.x + 1 + scale.y); - rect.top = int(translation.y + scale.y + 1); - rect.bottom = int(translation.y + scale.y + 1 + scale.y * maxVisibleItemCount); + rect.top = int(translation.y + scale.y + drop_offset); + rect.bottom = int(translation.y + scale.y + drop_offset + scale.y * maxVisibleItemCount); ApplyScissor(canvas, rect, cmd, false); // control-scrollbar-base { fx = sprites[state].params; - fx.pos = XMFLOAT3(translation.x + scale.x + 1, translation.y + scale.y + 1, 0); + fx.pos = XMFLOAT3(translation.x + scale.x + 1, translation.y + scale.y + drop_offset, 0); fx.siz = XMFLOAT2(scale.y, scale.y * maxVisibleItemCount); - fx.color = wi::math::Lerp(wi::Color::Transparent(), sprites[IDLE].params.color, 0.5f); + fx.color = drop_color; wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); } @@ -1802,15 +1918,24 @@ namespace wi::gui { col = wi::Color::fromFloat4(sprites[ACTIVE].params.color); } - wi::image::Draw(wi::texturehelper::getWhite() - , wi::image::Params(translation.x + scale.x + 1, translation.y + scale.y + 1 + scrollbar_delta, scale.y, scale.y, col), cmd); + wi::image::Draw( + wi::texturehelper::getWhite(), + wi::image::Params( + translation.x + scale.x + 1, + translation.y + scale.y + drop_offset + scrollbar_delta, + scale.y, + scale.y, + col + ), + cmd + ); } } Rect rect; rect.left = int(translation.x); rect.right = rect.left + int(scale.x); - rect.top = int(translation.y + scale.y + 1); + rect.top = int(translation.y + scale.y + drop_offset); rect.bottom = rect.top + int(scale.y * maxVisibleItemCount); ApplyScissor(canvas, rect, cmd, false); @@ -1818,9 +1943,9 @@ namespace wi::gui for (int i = firstItemVisible; i < (firstItemVisible + std::min(maxVisibleItemCount, (int)items.size())); ++i) { fx = sprites[state].params; - fx.pos = XMFLOAT3(translation.x, translation.y + GetItemOffset(i), 0); + fx.pos = XMFLOAT3(translation.x, translation.y + GetItemOffset(canvas, i), 0); fx.siz = XMFLOAT2(scale.x, scale.y); - fx.color = wi::math::Lerp(wi::Color::Transparent(), sprites[IDLE].params.color, 0.5f); + fx.color = drop_color; if (hovered == i) { if (combostate == COMBOSTATE_HOVER) @@ -1833,14 +1958,24 @@ namespace wi::gui } } wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); - wi::font::Draw(items[i].name, wi::font::Params(translation.x + scale.x * 0.5f, translation.y + scale.y * 0.5f + GetItemOffset(i), wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_CENTER, wi::font::WIFALIGN_CENTER, - font.params.color, font.params.shadowColor), cmd); + + wi::font::Params fp = wi::font::Params( + translation.x + scale.x * 0.5f, + translation.y + scale.y * 0.5f + GetItemOffset(canvas, i), + wi::font::WIFONTSIZE_DEFAULT, + wi::font::WIFALIGN_CENTER, + wi::font::WIFALIGN_CENTER, + font.params.color, + font.params.shadowColor + ); + fp.style = font.params.style; + wi::font::Draw(items[i].name, fp, cmd); } } } void ComboBox::OnSelect(std::function func) { - onSelect = move(func); + onSelect = func; } void ComboBox::AddItem(const std::string& name, uint64_t userdata) { @@ -1952,14 +2087,22 @@ namespace wi::gui { return selected; } + void ComboBox::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + + if (id == WIDGET_ID_COMBO_DROPDOWN) + { + drop_color = color; + } + } - static const float windowcontrolSize = 20.0f; - void Window::Create(const std::string& name, bool window_controls) + void Window::Create(const std::string& name, WindowControls window_controls) { SetColor(wi::Color::Ghost()); @@ -1973,11 +2116,14 @@ namespace wi::gui } // Add controls - if (window_controls) + if (has_flag(window_controls, WindowControls::RESIZE_TOPLEFT)) { // Add a resizer control to the upperleft corner resizeDragger_UpperLeft.Create(name + "_resize_dragger_upper_left"); - resizeDragger_UpperLeft.SetText(""); + resizeDragger_UpperLeft.SetShadowRadius(0); + resizeDragger_UpperLeft.SetTooltip("Resize window"); + resizeDragger_UpperLeft.SetText("«|»"); + resizeDragger_UpperLeft.font.params.rotation = XM_PIDIV4; resizeDragger_UpperLeft.OnDrag([this](EventArgs args) { auto saved_parent = this->parent; this->Detach(); @@ -1986,14 +2132,64 @@ namespace wi::gui scaleDiff.y = (scale.y - args.deltaPos.y) / scale.y; this->Translate(XMFLOAT3(args.deltaPos.x, args.deltaPos.y, 0)); this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); - this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(windowcontrolSize * 3, windowcontrolSize * 2, 1)); // don't allow resize to negative or too small + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small this->AttachTo(saved_parent); }); - AddWidget(&resizeDragger_UpperLeft); + AddWidget(&resizeDragger_UpperLeft, AttachmentOptions::NONE); + } + if (has_flag(window_controls, WindowControls::RESIZE_TOPRIGHT)) + { + // Add a resizer control to the upperleft corner + resizeDragger_UpperRight.Create(name + "_resize_dragger_upper_right"); + resizeDragger_UpperRight.SetShadowRadius(0); + resizeDragger_UpperRight.SetTooltip("Resize window"); + resizeDragger_UpperRight.SetText("«|»"); + resizeDragger_UpperRight.font.params.rotation = XM_PIDIV4 * 3; + resizeDragger_UpperRight.OnDrag([this](EventArgs args) { + auto saved_parent = this->parent; + this->Detach(); + XMFLOAT2 scaleDiff; + scaleDiff.x = (scale.x + args.deltaPos.x) / scale.x; + scaleDiff.y = (scale.y - args.deltaPos.y) / scale.y; + this->Translate(XMFLOAT3(0, args.deltaPos.y, 0)); + this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small + this->AttachTo(saved_parent); + }); + AddWidget(&resizeDragger_UpperRight, AttachmentOptions::NONE); + } + + if (has_flag(window_controls, WindowControls::RESIZE_BOTTOMLEFT)) + { + // Add a resizer control to the bottom right corner + resizeDragger_BottomLeft.Create(name + "_resize_dragger_bottom_left"); + resizeDragger_BottomLeft.SetShadowRadius(0); + resizeDragger_BottomLeft.SetTooltip("Resize window"); + resizeDragger_BottomLeft.SetText("«|»"); + resizeDragger_BottomLeft.font.params.rotation = XM_PIDIV4 * 3; + resizeDragger_BottomLeft.OnDrag([this](EventArgs args) { + auto saved_parent = this->parent; + this->Detach(); + XMFLOAT2 scaleDiff; + scaleDiff.x = (scale.x - args.deltaPos.x) / scale.x; + scaleDiff.y = (scale.y + args.deltaPos.y) / scale.y; + this->Translate(XMFLOAT3(args.deltaPos.x, 0, 0)); + this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small + this->AttachTo(saved_parent); + }); + AddWidget(&resizeDragger_BottomLeft, AttachmentOptions::NONE); + } + + if (has_flag(window_controls, WindowControls::RESIZE_BOTTOMRIGHT)) + { // Add a resizer control to the bottom right corner resizeDragger_BottomRight.Create(name + "_resize_dragger_bottom_right"); - resizeDragger_BottomRight.SetText(""); + resizeDragger_BottomRight.SetShadowRadius(0); + resizeDragger_BottomRight.SetTooltip("Resize window"); + resizeDragger_BottomRight.SetText("«|»"); + resizeDragger_BottomRight.font.params.rotation = XM_PIDIV4; resizeDragger_BottomRight.OnDrag([this](EventArgs args) { auto saved_parent = this->parent; this->Detach(); @@ -2001,13 +2197,17 @@ namespace wi::gui scaleDiff.x = (scale.x + args.deltaPos.x) / scale.x; scaleDiff.y = (scale.y + args.deltaPos.y) / scale.y; this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); - this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(windowcontrolSize * 3, windowcontrolSize * 2, 1)); // don't allow resize to negative or too small + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small this->AttachTo(saved_parent); }); - AddWidget(&resizeDragger_BottomRight); + AddWidget(&resizeDragger_BottomRight, AttachmentOptions::NONE); + } + if (has_flag(window_controls, WindowControls::MOVE)) + { // Add a grabber onto the title bar moveDragger.Create(name + "_move_dragger"); + moveDragger.SetShadowRadius(0); moveDragger.SetText(name); moveDragger.font.params.h_align = wi::font::WIFALIGN_LEFT; moveDragger.OnDrag([this](EventArgs args) { @@ -2016,35 +2216,54 @@ namespace wi::gui this->Translate(XMFLOAT3(args.deltaPos.x, args.deltaPos.y, 0)); this->AttachTo(saved_parent); }); - AddWidget(&moveDragger); + AddWidget(&moveDragger, AttachmentOptions::NONE); + } + if (has_flag(window_controls, WindowControls::CLOSE)) + { // Add close button to the top right corner closeButton.Create(name + "_close_button"); + closeButton.SetShadowRadius(0); closeButton.SetText("x"); closeButton.OnClick([this](EventArgs args) { this->SetVisible(false); + if (onClose) + { + onClose(args); + } }); closeButton.SetTooltip("Close window"); - AddWidget(&closeButton); - - // Add minimize button to the top right corner - minimizeButton.Create(name + "_minimize_button"); - minimizeButton.SetText("-"); - minimizeButton.OnClick([this](EventArgs args) { - this->SetMinimized(!this->IsMinimized()); - }); - minimizeButton.SetTooltip("Minimize window"); - AddWidget(&minimizeButton); + AddWidget(&closeButton, AttachmentOptions::NONE); } - else + + if (has_flag(window_controls, WindowControls::COLLAPSE)) + { + // Add minimize button to the top right corner + collapseButton.Create(name + "_collapse_button"); + collapseButton.SetShadowRadius(0); + collapseButton.SetText("-"); + collapseButton.OnClick([this](EventArgs args) { + this->SetMinimized(!this->IsMinimized()); + if (onCollapse) + { + onCollapse({}); + } + }); + collapseButton.SetTooltip("Collapse/Expand window"); + AddWidget(&collapseButton, AttachmentOptions::NONE); + } + + if (!has_flag(window_controls, WindowControls::MOVE)) { // Simple title bar label.Create(name); + label.SetShadowRadius(0); label.SetText(name); label.font.params.h_align = wi::font::WIFALIGN_LEFT; - AddWidget(&label); + AddWidget(&label, AttachmentOptions::NONE); } + scrollbar_horizontal.SetVertical(false); scrollbar_horizontal.SetColor(wi::Color(80, 80, 80, 100), wi::gui::IDLE); scrollbar_horizontal.sprites_knob[ScrollBar::SCROLLBAR_INACTIVE].params.color = wi::Color(140, 140, 140, 140); scrollbar_horizontal.sprites_knob[ScrollBar::SCROLLBAR_HOVER].params.color = wi::Color(180, 180, 180, 180); @@ -2052,6 +2271,7 @@ namespace wi::gui scrollbar_horizontal.knob_inset_border = XMFLOAT2(2, 4); AddWidget(&scrollbar_horizontal); + scrollbar_vertical.SetVertical(true); scrollbar_vertical.SetColor(wi::Color(80, 80, 80, 100), wi::gui::IDLE); scrollbar_vertical.sprites_knob[ScrollBar::SCROLLBAR_INACTIVE].params.color = wi::Color(140, 140, 140, 140); scrollbar_vertical.sprites_knob[ScrollBar::SCROLLBAR_HOVER].params.color = wi::Color(180, 180, 180, 180); @@ -2066,11 +2286,11 @@ namespace wi::gui SetVisible(true); SetMinimized(false); } - void Window::AddWidget(Widget* widget, bool scrollable) + void Window::AddWidget(Widget* widget, AttachmentOptions options) { widget->SetEnabled(this->IsEnabled()); widget->SetVisible(this->IsVisible()); - if (scrollable) + if (has_flag(options, AttachmentOptions::SCROLLABLE)) { widget->AttachTo(&scrollable_area); } @@ -2106,12 +2326,16 @@ namespace wi::gui moveDragger.force_disable = force_disable; resizeDragger_UpperLeft.force_disable = force_disable; + resizeDragger_UpperRight.force_disable = force_disable; + resizeDragger_BottomLeft.force_disable = force_disable; resizeDragger_BottomRight.force_disable = force_disable; scrollbar_horizontal.force_disable = force_disable; scrollbar_vertical.force_disable = force_disable; moveDragger.Update(canvas, dt); resizeDragger_UpperLeft.Update(canvas, dt); + resizeDragger_UpperRight.Update(canvas, dt); + resizeDragger_BottomLeft.Update(canvas, dt); resizeDragger_BottomRight.Update(canvas, dt); scrollbar_horizontal.Update(canvas, dt); scrollbar_vertical.Update(canvas, dt); @@ -2120,7 +2344,7 @@ namespace wi::gui if (parent == nullptr) { translation_local.x = wi::math::Clamp(translation_local.x, 0, canvas.GetLogicalWidth() - scale_local.x); - translation_local.y = wi::math::Clamp(translation_local.y, 0, canvas.GetLogicalHeight() - windowcontrolSize); + translation_local.y = wi::math::Clamp(translation_local.y, 0, canvas.GetLogicalHeight() - control_size); SetDirty(); } @@ -2129,57 +2353,133 @@ namespace wi::gui if (moveDragger.parent != nullptr) { moveDragger.Detach(); - moveDragger.SetSize(XMFLOAT2(scale.x - windowcontrolSize * 3, windowcontrolSize)); - moveDragger.SetPos(XMFLOAT2(translation.x + windowcontrolSize, translation.y)); + float rem = 0; + if (closeButton.parent != nullptr) + { + rem++; + } + if (collapseButton.parent != nullptr) + { + rem++; + } + if (resizeDragger_UpperLeft.parent != nullptr) + { + rem++; + } + if (resizeDragger_UpperRight.parent != nullptr) + { + rem++; + } + moveDragger.SetSize(XMFLOAT2(scale.x - control_size * rem, control_size)); + float offset = 0; + if (resizeDragger_UpperLeft.parent != nullptr) + { + offset++; + } + moveDragger.SetPos(XMFLOAT2(translation.x + control_size * offset, translation.y)); moveDragger.AttachTo(this); } if (closeButton.parent != nullptr) { closeButton.Detach(); - closeButton.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); - closeButton.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize, translation.y)); + closeButton.SetSize(XMFLOAT2(control_size, control_size)); + float offset = 1; + if (resizeDragger_UpperRight.parent != nullptr) + { + offset++; + } + closeButton.SetPos(XMFLOAT2(translation.x + scale.x - control_size * offset, translation.y)); closeButton.AttachTo(this); } - if (minimizeButton.parent != nullptr) + if (collapseButton.parent != nullptr) { - minimizeButton.Detach(); - minimizeButton.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); - minimizeButton.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize * 2, translation.y)); - minimizeButton.AttachTo(this); + collapseButton.Detach(); + collapseButton.SetSize(XMFLOAT2(control_size, control_size)); + float offset = 1; + if (closeButton.parent != nullptr) + { + offset++; + } + if (resizeDragger_UpperRight.parent != nullptr) + { + offset++; + } + collapseButton.SetPos(XMFLOAT2(translation.x + scale.x - control_size * offset, translation.y)); + collapseButton.AttachTo(this); } if (resizeDragger_UpperLeft.parent != nullptr) { resizeDragger_UpperLeft.Detach(); - resizeDragger_UpperLeft.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); + resizeDragger_UpperLeft.SetSize(XMFLOAT2(control_size, control_size)); resizeDragger_UpperLeft.SetPos(XMFLOAT2(translation.x, translation.y)); resizeDragger_UpperLeft.AttachTo(this); } + if (resizeDragger_UpperRight.parent != nullptr) + { + resizeDragger_UpperRight.Detach(); + resizeDragger_UpperRight.SetSize(XMFLOAT2(control_size, control_size)); + resizeDragger_UpperRight.SetPos(XMFLOAT2(translation.x + scale.x - control_size, translation.y)); + resizeDragger_UpperRight.AttachTo(this); + } + if (resizeDragger_BottomLeft.parent != nullptr) + { + resizeDragger_BottomLeft.Detach(); + resizeDragger_BottomLeft.SetSize(XMFLOAT2(control_size, control_size)); + resizeDragger_BottomLeft.SetPos(XMFLOAT2(translation.x, translation.y + scale.y - control_size)); + resizeDragger_BottomLeft.AttachTo(this); + } if (resizeDragger_BottomRight.parent != nullptr) { resizeDragger_BottomRight.Detach(); - resizeDragger_BottomRight.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); - resizeDragger_BottomRight.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize, translation.y + scale.y - windowcontrolSize)); + resizeDragger_BottomRight.SetSize(XMFLOAT2(control_size, control_size)); + resizeDragger_BottomRight.SetPos(XMFLOAT2(translation.x + scale.x - control_size, translation.y + scale.y - control_size)); resizeDragger_BottomRight.AttachTo(this); } if (label.parent != nullptr) { + label.font.params = font.params; label.Detach(); - label.SetSize(XMFLOAT2(scale.x, windowcontrolSize)); - label.SetPos(XMFLOAT2(translation.x, translation.y)); + XMFLOAT2 label_size = XMFLOAT2(scale.x, control_size); + XMFLOAT2 label_pos = XMFLOAT2(translation.x, translation.y); + if (resizeDragger_UpperLeft.parent != nullptr) + { + label_size.x -= control_size; + label_pos.x += control_size; + } + if (closeButton.parent != nullptr) + { + label_size.x -= control_size; + } + if (collapseButton.parent != nullptr) + { + label_size.x -= control_size; + } + label.SetSize(label_size); + label.SetPos(label_pos); label.AttachTo(this); } if (scrollbar_horizontal.parent != nullptr) { scrollbar_horizontal.Detach(); - scrollbar_horizontal.SetSize(XMFLOAT2(scale.x - windowcontrolSize, windowcontrolSize)); - scrollbar_horizontal.SetPos(XMFLOAT2(translation.x, translation.y + scale.y - windowcontrolSize)); + float offset = 0; + if (resizeDragger_BottomLeft.parent != nullptr) + { + offset++; + } + scrollbar_horizontal.SetSize(XMFLOAT2(scale.x - control_size * (offset + 1), control_size)); + scrollbar_horizontal.SetPos(XMFLOAT2(translation.x + control_size * offset, translation.y + scale.y - control_size)); scrollbar_horizontal.AttachTo(this); } if (scrollbar_vertical.parent != nullptr) { scrollbar_vertical.Detach(); - scrollbar_vertical.SetSize(XMFLOAT2(windowcontrolSize, scale.y - 2 - windowcontrolSize * 2)); - scrollbar_vertical.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize, translation.y + 1 + windowcontrolSize)); + float offset = 1; + if (resizeDragger_BottomRight.parent != nullptr) + { + offset++; + } + scrollbar_vertical.SetSize(XMFLOAT2(control_size, scale.y - (control_size + 1) * offset)); + scrollbar_vertical.SetPos(XMFLOAT2(translation.x + scale.x - control_size, translation.y + 1 + control_size)); scrollbar_vertical.AttachTo(this); } @@ -2196,8 +2496,9 @@ namespace wi::gui continue; if (widget->parent == &scrollable_area) { - scroll_length_horizontal = std::max(scroll_length_horizontal, widget->translation_local.x + widget->scale_local.x); - scroll_length_vertical = std::max(scroll_length_vertical, widget->translation_local.y + widget->scale_local.y); + XMFLOAT2 size = widget->GetSize(); + scroll_length_horizontal = std::max(scroll_length_horizontal, widget->translation_local.x + size.x); + scroll_length_vertical = std::max(scroll_length_vertical, widget->translation_local.y + size.y); } } scrollbar_horizontal.SetListLength(scroll_length_horizontal); @@ -2205,19 +2506,19 @@ namespace wi::gui scrollable_area.Detach(); scrollable_area.ClearTransform(); scrollable_area.Translate(translation); - scrollable_area.Translate(XMFLOAT3(scrollbar_horizontal.GetOffset(), windowcontrolSize + 1 + scrollbar_vertical.GetOffset(), 0)); + scrollable_area.Translate(XMFLOAT3(scrollbar_horizontal.GetOffset(), control_size + 1 + scrollbar_vertical.GetOffset(), 0)); scrollable_area.Update(canvas, dt); scrollable_area.AttachTo(this); scrollable_area.scissorRect = scissorRect; scrollable_area.scissorRect.left += 1; - scrollable_area.scissorRect.top += (int32_t)windowcontrolSize + 1; + scrollable_area.scissorRect.top += (int32_t)control_size + 1; if (scrollbar_horizontal.parent != nullptr && scrollbar_horizontal.IsScrollbarRequired()) { - scrollable_area.scissorRect.bottom -= (int32_t)windowcontrolSize + 1; + scrollable_area.scissorRect.bottom -= (int32_t)control_size + 1; } if (scrollbar_vertical.parent != nullptr && scrollbar_vertical.IsScrollbarRequired()) { - scrollable_area.scissorRect.right -= (int32_t)windowcontrolSize + 1; + scrollable_area.scissorRect.right -= (int32_t)control_size + 1; } scrollable_area.active_area.pos.x = float(scrollable_area.scissorRect.left); scrollable_area.active_area.pos.y = float(scrollable_area.scissorRect.top); @@ -2226,8 +2527,9 @@ namespace wi::gui bool focus = false; - for (auto& widget : widgets) + for (size_t i = 0; i < widgets.size(); ++i) { + Widget* widget = widgets[i]; // re index in loop, because widgets can be resized while updating! widget->force_disable = force_disable || focus; widget->Update(canvas, dt); widget->force_disable = false; @@ -2264,10 +2566,10 @@ namespace wi::gui if (IsMinimized()) { - hitBox.siz.y = windowcontrolSize; + hitBox.siz.y = control_size; } - if (IsEnabled() && !IsMinimized()) + if (IsEnabled() && !IsMinimized() && dt > 0) { if (state == FOCUS) { @@ -2327,18 +2629,24 @@ namespace wi::gui return; } + GetDevice()->EventBegin(name.c_str(), cmd); + wi::Color color = GetColor(); - // body - wi::image::Params fx(translation.x - 2, translation.y - 2, scale.x + 4, scale.y + 4, wi::Color(0, 0, 0, 100)); - if (IsMinimized()) + // shadow: + if (shadow > 0) { - fx.siz.y = windowcontrolSize + 4; - wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); // shadow + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + if (IsMinimized()) + { + fx.siz.y = control_size + shadow * 2; + } + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); } - else + + // base: + if (!IsCollapsed()) { - wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); // shadow sprites[state].Draw(cmd); } @@ -2367,6 +2675,8 @@ namespace wi::gui //wi::image::Draw(wi::texturehelper::getWhite(), wi::image::Params(scrollable_area.active_area.pos.x, scrollable_area.active_area.pos.y, scrollable_area.active_area.siz.x, scrollable_area.active_area.siz.y, wi::Color(255,0,255,100)), cmd); //Hitbox2D p = scrollable_area.GetPointerHitbox(); //wi::image::Draw(wi::texturehelper::getWhite(), wi::image::Params(p.pos.x, p.pos.y, p.siz.x * 10, p.siz.y * 10, wi::Color(255,0,0,100)), cmd); + + GetDevice()->EventEnd(cmd); } void Window::RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const { @@ -2379,10 +2689,13 @@ namespace wi::gui void Window::SetVisible(bool value) { Widget::SetVisible(value); - SetMinimized(!value); - for (auto& x : widgets) + //SetMinimized(!value); + if (!IsMinimized()) { - x->SetVisible(value); + for (auto& x : widgets) + { + x->SetVisible(value); + } } } void Window::SetEnabled(bool value) @@ -2392,12 +2705,16 @@ namespace wi::gui { if (x == &moveDragger) continue; - if (x == &minimizeButton) + if (x == &collapseButton) continue; if (x == &closeButton) continue; if (x == &resizeDragger_UpperLeft) continue; + if (x == &resizeDragger_UpperRight) + continue; + if (x == &resizeDragger_BottomLeft) + continue; if (x == &resizeDragger_BottomRight) continue; if (x == &scrollbar_horizontal) @@ -2407,10 +2724,22 @@ namespace wi::gui x->SetEnabled(value); } } + void Window::SetCollapsed(bool value) + { + SetMinimized(value); + } + bool Window::IsCollapsed() const + { + return IsMinimized(); + } void Window::SetMinimized(bool value) { minimized = value; + if (resizeDragger_BottomLeft.parent != nullptr) + { + resizeDragger_BottomLeft.SetVisible(!value); + } if (resizeDragger_BottomRight.parent != nullptr) { resizeDragger_BottomRight.SetVisible(!value); @@ -2419,19 +2748,87 @@ namespace wi::gui { if (x == &moveDragger) continue; - if (x == &minimizeButton) + if (x == &collapseButton) continue; if (x == &closeButton) continue; if (x == &resizeDragger_UpperLeft) continue; + if (x == &resizeDragger_UpperRight) + continue; + if (x == &label) + continue; x->SetVisible(!value); } + + if (IsMinimized()) + { + collapseButton.SetText("»"); + collapseButton.font.params.rotation = XM_PIDIV2; + } + else + { + collapseButton.SetText("-"); + collapseButton.font.params.rotation = 0; + } } bool Window::IsMinimized() const { return minimized; } + void Window::SetControlSize(float value) + { + control_size = value; + } + float Window::GetControlSize() const + { + return control_size; + } + XMFLOAT2 Window::GetSize() const + { + XMFLOAT2 size = Widget::GetSize(); + if (IsCollapsed()) + { + return XMFLOAT2(size.x, control_size); + } + return size; + } + XMFLOAT2 Window::GetWidgetAreaSize() const + { + XMFLOAT2 size = GetSize(); + if (scrollbar_horizontal.IsScrollbarRequired()) + { + size.y -= control_size; + } + if (scrollbar_vertical.IsScrollbarRequired()) + { + size.x -= control_size; + } + return size; + } + void Window::OnClose(std::function func) + { + onClose = func; + } + void Window::OnCollapse(std::function func) + { + onCollapse = func; + } + void Window::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + for (auto& widget : widgets) + { + widget->SetColor(color, id); + } + + if (id == WIDGET_ID_WINDOW_BASE) + { + sprites[IDLE].params.color = color; + } + } + + @@ -2550,7 +2947,7 @@ namespace wi::gui static const float cp_width = 300; static const float cp_height = 260; - void ColorPicker::Create(const std::string& name, bool window_controls) + void ColorPicker::Create(const std::string& name, WindowControls window_controls) { Window::Create(name, window_controls); @@ -2662,7 +3059,7 @@ namespace wi::gui Window::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { if (state == DEACTIVATING) @@ -3182,7 +3579,7 @@ namespace wi::gui } void ColorPicker::OnColorChanged(std::function func) { - onColorChanged = move(func); + onColorChanged = func; } @@ -3252,7 +3649,34 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + // compute control-list height + float scroll_length = 0; + { + int parent_level = 0; + bool parent_open = true; + for (const Item& item : items) + { + if (!parent_open && item.level > parent_level) + { + continue; + } + parent_open = item.open; + parent_level = item.level; + scroll_length += item_height(); + } + } + scrollbar.SetListLength(scroll_length); + + const float scrollbar_width = 12; + scrollbar.SetSize(XMFLOAT2(scrollbar_width - 1, scale.y - 1 - item_height())); + scrollbar.SetPos(XMFLOAT2(translation.x + 1 + scale.x - scrollbar_width, translation.y + 1 + item_height())); + scrollbar.Update(canvas, dt); + if (scrollbar.GetState() > IDLE) + { + Deactivate(); + } + + if (IsEnabled() && dt > 0) { if (state == FOCUS) { @@ -3292,42 +3716,18 @@ namespace wi::gui } } - // compute control-list height - float scroll_length = 0; - { - int parent_level = 0; - bool parent_open = true; - for (const Item& item : items) - { - if (!parent_open && item.level > parent_level) - { - continue; - } - parent_open = item.open; - parent_level = item.level; - scroll_length += item_height(); - } - } - scrollbar.SetListLength(scroll_length); - float scroll = wi::input::GetPointer().z * 10; - if (scroll && scroll_allowed && scrollbar.IsScrollbarRequired() && GetState() == FOCUS) + if (scroll && scroll_allowed && scrollbar.IsScrollbarRequired() && pointerHitbox.intersects(hitBox)) { scroll_allowed = false; // This is outside scrollbar code, because it can also be scrolled if parent widget is only in focus scrollbar.Scroll(scroll); } - const float scrollbar_width = 12; - scrollbar.SetSize(XMFLOAT2(scrollbar_width - 1, scale.y - 1 - item_height())); - scrollbar.SetPos(XMFLOAT2(translation.x + 1 + scale.x - scrollbar_width, translation.y + 1 + item_height())); - scrollbar.Update(canvas, dt); - if (scrollbar.GetState() > IDLE) - { - Deactivate(); - } Hitbox2D itemlist_box = GetHitbox_ListArea(); + tooltipFont.text.clear(); + // control-list item_highlight = -1; opener_highlight = -1; @@ -3371,6 +3771,7 @@ namespace wi::gui if (name_box.intersects(pointerHitbox)) { item_highlight = i; + SetTooltip(item.name); if (clicked) { if (!wi::input::Down(wi::input::KEYBOARD_BUTTON_LCONTROL) && !wi::input::Down(wi::input::KEYBOARD_BUTTON_RCONTROL) @@ -3399,6 +3800,13 @@ namespace wi::gui } GraphicsDevice* device = wi::graphics::GetDevice(); + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + // control-base sprites[state].Draw(cmd); @@ -3500,13 +3908,22 @@ namespace wi::gui } // Item name text: - wi::font::Draw(item.name, wi::font::Params(name_box.pos.x + 1, name_box.pos.y + name_box.siz.y * 0.5f, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_CENTER, - font.params.color, font.params.shadowColor), cmd); + wi::font::Params fp = wi::font::Params( + name_box.pos.x + 1, + name_box.pos.y + name_box.siz.y * 0.5f, + wi::font::WIFONTSIZE_DEFAULT, + wi::font::WIFALIGN_LEFT, + wi::font::WIFALIGN_CENTER, + font.params.color, + font.params.shadowColor + ); + fp.style = font.params.style; + wi::font::Draw(item.name, fp, cmd); } } void TreeList::OnSelect(std::function func) { - onSelect = move(func); + onSelect = func; } void TreeList::AddItem(const Item& item) { @@ -3541,6 +3958,11 @@ namespace wi::gui { return items[index]; } + void TreeList::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + scrollbar.SetColor(color, id); + } } diff --git a/WickedEngine/wiGUI.h b/WickedEngine/wiGUI.h index d53de821a..b4333ceb3 100644 --- a/WickedEngine/wiGUI.h +++ b/WickedEngine/wiGUI.h @@ -61,17 +61,63 @@ namespace wi::gui WIDGETSTATE_COUNT, }; + // These can be used to target a setting for a specific widget control and state: + enum WIDGET_ID + { + // IDs for normal widget states: + WIDGET_ID_IDLE = IDLE, + WIDGET_ID_FOCUS = FOCUS, + WIDGET_ID_ACTIVE = ACTIVE, + WIDGET_ID_DEACTIVATING = DEACTIVATING, + + // IDs for special widget states: + + // Slider: + WIDGET_ID_SLIDER_BEGIN, // do not use! + WIDGET_ID_SLIDER_BASE_IDLE, + WIDGET_ID_SLIDER_BASE_FOCUS, + WIDGET_ID_SLIDER_BASE_ACTIVE, + WIDGET_ID_SLIDER_BASE_DEACTIVATING, + WIDGET_ID_SLIDER_KNOB_IDLE, + WIDGET_ID_SLIDER_KNOB_FOCUS, + WIDGET_ID_SLIDER_KNOB_ACTIVE, + WIDGET_ID_SLIDER_KNOB_DEACTIVATING, + WIDGET_ID_SLIDER_END, // do not use! + + // Scrollbar: + WIDGET_ID_SCROLLBAR_BEGIN, // do not use! + WIDGET_ID_SCROLLBAR_BASE_IDLE, + WIDGET_ID_SCROLLBAR_BASE_FOCUS, + WIDGET_ID_SCROLLBAR_BASE_ACTIVE, + WIDGET_ID_SCROLLBAR_BASE_DEACTIVATING, + WIDGET_ID_SCROLLBAR_KNOB_INACTIVE, + WIDGET_ID_SCROLLBAR_KNOB_HOVER, + WIDGET_ID_SCROLLBAR_KNOB_GRABBED, + WIDGET_ID_SCROLLBAR_END, // do not use! + + // Combo box: + WIDGET_ID_COMBO_DROPDOWN, + + // Window: + WIDGET_ID_WINDOW_BASE, + + // other user-defined widget states can be specified after this: + // And you will of course need to handle it yourself in a SetColor() override for example + WIDGET_ID_USER, + }; + class Widget : public wi::scene::TransformComponent { private: int tooltipTimer = 0; protected: std::string name; - std::string tooltip; - std::string scriptTip; bool enabled = true; bool visible = true; + float shadow = 1; WIDGETSTATE state = IDLE; + mutable wi::SpriteFont tooltipFont; + mutable wi::SpriteFont scripttipFont; public: Widget(); @@ -88,16 +134,20 @@ namespace wi::gui void SetScriptTip(std::string&& value); void SetPos(const XMFLOAT2& value); void SetSize(const XMFLOAT2& value); + XMFLOAT2 GetPos() const; + virtual XMFLOAT2 GetSize() const; WIDGETSTATE GetState() const; virtual void SetEnabled(bool val); bool IsEnabled() const; virtual void SetVisible(bool val); bool IsVisible() const; // last param default: set color for all states - void SetColor(wi::Color color, WIDGETSTATE state = WIDGETSTATE_COUNT); + virtual void SetColor(wi::Color color, int id = -1); wi::Color GetColor() const; // last param default: set color for all states - void SetImage(wi::Resource textureResource, WIDGETSTATE state = WIDGETSTATE_COUNT); + virtual void SetImage(wi::Resource textureResource, int id = -1); + float GetShadowRadius() const { return shadow; } + void SetShadowRadius(float value) { shadow = value; } virtual void Update(const wi::Canvas& canvas, float dt); virtual void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const {} @@ -197,19 +247,25 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; + + void SetVertical(bool value) { vertical = value; } + bool IsVertical() const { return vertical; } }; // Static box that holds text class Label : public Widget { protected: - ScrollBar scrollbar; - float scrollbar_width = 18; public: void Create(const std::string& name); void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; + + float scrollbar_width = 18; + ScrollBar scrollbar; }; // Text input box @@ -249,8 +305,6 @@ namespace wi::gui float start = 0, end = 1; float step = 1000; float value = 0; - - TextInputField valueInputField; public: // start : slider minimum value // end : slider maximum value @@ -267,8 +321,11 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; void RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void OnSlide(std::function func); + + TextInputField valueInputField; }; // Two-state clickable box @@ -321,7 +378,10 @@ namespace wi::gui }; wi::vector items; - float GetItemOffset(int index) const; + wi::Color drop_color = wi::Color::Ghost(); + + float GetDropOffset(const wi::Canvas& canvas) const; + float GetItemOffset(const wi::Canvas& canvas, int index) const; public: void Create(const std::string& name); @@ -344,6 +404,7 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void OnSelect(std::function func); }; @@ -352,32 +413,69 @@ namespace wi::gui class Window :public Widget { protected: - Button closeButton; - Button minimizeButton; - Button resizeDragger_UpperLeft; - Button resizeDragger_BottomRight; - Button moveDragger; - Label label; - ScrollBar scrollbar_vertical; - ScrollBar scrollbar_horizontal; wi::vector widgets; bool minimized = false; Widget scrollable_area; - public: - void Create(const std::string& name, bool window_controls = true); + float control_size = 20; + std::function onClose; + std::function onCollapse; - void AddWidget(Widget* widget, bool scrollable = true); + public: + enum class WindowControls + { + NONE = 0, + RESIZE_TOPLEFT = 1 << 0, + RESIZE_TOPRIGHT = 1 << 1, + RESIZE_BOTTOMLEFT = 1 << 2, + RESIZE_BOTTOMRIGHT = 1 << 3, + MOVE = 1 << 4, + CLOSE = 1 << 5, + COLLAPSE = 1 << 6, + + RESIZE = RESIZE_TOPLEFT | RESIZE_TOPRIGHT | RESIZE_BOTTOMLEFT | RESIZE_BOTTOMRIGHT, + CLOSE_AND_COLLAPSE = CLOSE | COLLAPSE, + ALL = RESIZE | MOVE | CLOSE | COLLAPSE, + }; + void Create(const std::string& name, WindowControls window_controls = WindowControls::ALL); + + enum class AttachmentOptions + { + NONE = 0, + SCROLLABLE = 1 << 0, + }; + void AddWidget(Widget* widget, AttachmentOptions options = AttachmentOptions::SCROLLABLE); void RemoveWidget(Widget* widget); void RemoveWidgets(); void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; void RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void SetVisible(bool value) override; void SetEnabled(bool value) override; - void SetMinimized(bool value); - bool IsMinimized() const; + void SetCollapsed(bool value); + bool IsCollapsed() const; + void SetMinimized(bool value); // Same as SetCollapsed() + bool IsMinimized() const; // Same as IsCollapsed() + void SetControlSize(float value); + float GetControlSize() const; + XMFLOAT2 GetSize() const override; // For the window, the returned size can be modified by collapsed state + XMFLOAT2 GetWidgetAreaSize() const; + + void OnClose(std::function func); + void OnCollapse(std::function func); + + Button closeButton; + Button collapseButton; + Button resizeDragger_UpperLeft; + Button resizeDragger_UpperRight; + Button resizeDragger_BottomLeft; + Button resizeDragger_BottomRight; + Button moveDragger; + Label label; + ScrollBar scrollbar_vertical; + ScrollBar scrollbar_horizontal; }; // HSV-Color Picker @@ -395,17 +493,9 @@ namespace wi::gui float saturation = 0.0f; // [0, 1] float luminance = 1.0f; // [0, 1] - TextInputField text_R; - TextInputField text_G; - TextInputField text_B; - TextInputField text_H; - TextInputField text_S; - TextInputField text_V; - Slider alphaSlider; - void FireEvents(); public: - void Create(const std::string& name, bool window_controls = true); + void Create(const std::string& name, WindowControls window_controls = WindowControls::ALL); void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; @@ -414,6 +504,14 @@ namespace wi::gui void SetPickColor(wi::Color value); void OnColorChanged(std::function func); + + TextInputField text_R; + TextInputField text_G; + TextInputField text_B; + TextInputField text_H; + TextInputField text_S; + TextInputField text_V; + Slider alphaSlider; }; // List of items in a tree (parent-child relationships) @@ -433,8 +531,6 @@ namespace wi::gui int item_highlight = -1; int opener_highlight = -1; - ScrollBar scrollbar; - wi::primitive::Hitbox2D GetHitbox_ListArea() const; wi::primitive::Hitbox2D GetHitbox_Item(int visible_count, int level) const; wi::primitive::Hitbox2D GetHitbox_ItemOpener(int visible_count, int level) const; @@ -457,8 +553,21 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void OnSelect(std::function func); + + ScrollBar scrollbar; }; } + +template<> +struct enable_bitmask_operators { + static const bool enable = true; +}; + +template<> +struct enable_bitmask_operators { + static const bool enable = true; +}; diff --git a/WickedEngine/wiImage.h b/WickedEngine/wiImage.h index 16bb4d74a..37f1e4a91 100644 --- a/WickedEngine/wiImage.h +++ b/WickedEngine/wiImage.h @@ -131,14 +131,39 @@ namespace wi::image constexpr void disableLinearOutputMapping() { _flags &= ~OUTPUT_COLOR_SPACE_LINEAR; } Params() = default; - Params(float width, float height) : + + Params( + float width, + float height + ) : siz(width, height) {} - Params(float posX, float posY, float width, float height, const XMFLOAT4& color = XMFLOAT4(1, 1, 1, 1)) : + + Params( + float posX, + float posY, + float width, + float height, + const XMFLOAT4& color = XMFLOAT4(1, 1, 1, 1) + ) : pos(posX, posY, 0), siz(width, height), color(color) {} + + Params( + const XMFLOAT4& color, + wi::enums::BLENDMODE blendFlag = wi::enums::BLENDMODE_ALPHA, + bool background = false + ) : + color(color), + blendFlag(blendFlag) + { + if (background) + { + enableBackground(); + } + } }; diff --git a/WickedEngine/wiPhysics_Bullet.cpp b/WickedEngine/wiPhysics_Bullet.cpp index b6bc9ffbc..3a0c5c787 100644 --- a/WickedEngine/wiPhysics_Bullet.cpp +++ b/WickedEngine/wiPhysics_Bullet.cpp @@ -494,7 +494,7 @@ namespace wi::physics RigidBodyPhysicsComponent& physicscomponent = scene.rigidbodies[args.jobIndex]; Entity entity = scene.rigidbodies.GetEntity(args.jobIndex); - if (physicscomponent.physicsobject == nullptr) + if (physicscomponent.physicsobject == nullptr && scene.transforms.Contains(entity)) { TransformComponent& transform = *scene.transforms.GetComponent(entity); const ObjectComponent* object = scene.objects.GetComponent(entity); @@ -531,7 +531,7 @@ namespace wi::physics rigidbody->setRestitution(physicscomponent.restitution); // For kinematic object, system updates physics state, else the physics updates system state: - if (physicscomponent.IsKinematic() || !IsSimulationEnabled()) + if ((physicscomponent.IsKinematic() || !IsSimulationEnabled()) && scene.transforms.Contains(entity)) { TransformComponent& transform = *scene.transforms.GetComponent(entity); @@ -632,7 +632,7 @@ namespace wi::physics RigidBodyPhysicsComponent* physicscomponent = scene.rigidbodies.GetComponent(entity); // Feedback non-kinematic objects to system: - if (IsSimulationEnabled() && !physicscomponent->IsKinematic()) + if (IsSimulationEnabled() && !physicscomponent->IsKinematic() && scene.transforms.Contains(entity)) { TransformComponent& transform = *scene.transforms.GetComponent(entity); diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index c8fe7de04..a95d245aa 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -5201,7 +5201,7 @@ void DrawDebugWorld( for (Entity entity : armature.boneCollection) { const HierarchyComponent* hierarchy = scene.hierarchy.GetComponent(entity); - if (hierarchy == nullptr) + if (hierarchy == nullptr || !scene.transforms.Contains(entity) || !scene.transforms.Contains(hierarchy->parentID)) { continue; } @@ -5777,13 +5777,13 @@ void DrawDebugWorld( for (size_t i = 0; i < scene.probes.GetCount(); ++i) { const EnvironmentProbeComponent& probe = scene.probes[i]; + Entity entity = scene.probes.GetEntity(i); - if (probe.textureIndex < 0) + if (probe.textureIndex < 0 || !scene.transforms.Contains(entity)) { continue; } - Entity entity = scene.probes.GetEntity(i); const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMStoreFloat4x4(&sb.g_xTransform, XMLoadFloat4x4(&transform.world)*camera.GetViewProjection()); @@ -5895,6 +5895,10 @@ void DrawDebugWorld( { const wi::EmittedParticleSystem& emitter = scene.emitters[i]; Entity entity = scene.emitters.GetEntity(i); + if (!scene.transforms.Contains(entity)) + { + continue; + } const TransformComponent& transform = *scene.transforms.GetComponent(entity); const MeshComponent* mesh = scene.meshes.GetComponent(emitter.meshID); @@ -5948,10 +5952,24 @@ void DrawDebugWorld( for (auto& x : paintrads) { + if (!scene.transforms.Contains(x.objectEntity) || + !scene.objects.Contains(x.objectEntity) + ) + { + continue; + } const ObjectComponent& object = *scene.objects.GetComponent(x.objectEntity); const TransformComponent& transform = *scene.transforms.GetComponent(x.objectEntity); + if (scene.meshes.GetCount() < object.mesh_index) + { + continue; + } const MeshComponent& mesh = scene.meshes[object.mesh_index]; const MeshComponent::MeshSubset& subset = mesh.subsets[x.subset]; + if (!scene.materials.Contains(subset.materialID)) + { + continue; + } const MaterialComponent& material = *scene.materials.GetComponent(subset.materialID); GraphicsDevice::GPUAllocation mem = device->AllocateGPU(sizeof(ShaderMeshInstancePointer), cmd); diff --git a/WickedEngine/wiScene.cpp b/WickedEngine/wiScene.cpp index 6835c76ea..18fdb5958 100644 --- a/WickedEngine/wiScene.cpp +++ b/WickedEngine/wiScene.cpp @@ -2100,6 +2100,37 @@ namespace wi::scene bounds = AABB::Merge(bounds, other.bounds); } + void Scene::FindAllEntities(wi::unordered_set& entities) const + { + entities.insert(names.GetEntityArray().begin(), names.GetEntityArray().end()); + entities.insert(layers.GetEntityArray().begin(), layers.GetEntityArray().end()); + entities.insert(transforms.GetEntityArray().begin(), transforms.GetEntityArray().end()); + entities.insert(hierarchy.GetEntityArray().begin(), hierarchy.GetEntityArray().end()); + entities.insert(materials.GetEntityArray().begin(), materials.GetEntityArray().end()); + entities.insert(meshes.GetEntityArray().begin(), meshes.GetEntityArray().end()); + entities.insert(impostors.GetEntityArray().begin(), impostors.GetEntityArray().end()); + entities.insert(objects.GetEntityArray().begin(), objects.GetEntityArray().end()); + entities.insert(aabb_objects.GetEntityArray().begin(), aabb_objects.GetEntityArray().end()); + entities.insert(rigidbodies.GetEntityArray().begin(), rigidbodies.GetEntityArray().end()); + entities.insert(softbodies.GetEntityArray().begin(), softbodies.GetEntityArray().end()); + entities.insert(armatures.GetEntityArray().begin(), armatures.GetEntityArray().end()); + entities.insert(lights.GetEntityArray().begin(), lights.GetEntityArray().end()); + entities.insert(aabb_lights.GetEntityArray().begin(), aabb_lights.GetEntityArray().end()); + entities.insert(cameras.GetEntityArray().begin(), cameras.GetEntityArray().end()); + entities.insert(probes.GetEntityArray().begin(), probes.GetEntityArray().end()); + entities.insert(aabb_probes.GetEntityArray().begin(), aabb_probes.GetEntityArray().end()); + entities.insert(forces.GetEntityArray().begin(), forces.GetEntityArray().end()); + entities.insert(decals.GetEntityArray().begin(), decals.GetEntityArray().end()); + entities.insert(aabb_decals.GetEntityArray().begin(), aabb_decals.GetEntityArray().end()); + entities.insert(animations.GetEntityArray().begin(), animations.GetEntityArray().end()); + entities.insert(animation_datas.GetEntityArray().begin(), animation_datas.GetEntityArray().end()); + entities.insert(emitters.GetEntityArray().begin(), emitters.GetEntityArray().end()); + entities.insert(hairs.GetEntityArray().begin(), hairs.GetEntityArray().end()); + entities.insert(weathers.GetEntityArray().begin(), weathers.GetEntityArray().end()); + entities.insert(sounds.GetEntityArray().begin(), sounds.GetEntityArray().end()); + entities.insert(inverse_kinematics.GetEntityArray().begin(), inverse_kinematics.GetEntityArray().end()); + entities.insert(springs.GetEntityArray().begin(), springs.GetEntityArray().end()); + } void Scene::Entity_Remove(Entity entity, bool recursive) { @@ -2176,6 +2207,18 @@ namespace wi::scene return root; } + Entity Scene::Entity_CreateTransform( + const std::string& name + ) + { + Entity entity = CreateEntity(); + + names.Create(entity) = name; + + transforms.Create(entity); + + return entity; + } Entity Scene::Entity_CreateMaterial( const std::string& name ) @@ -2384,10 +2427,13 @@ namespace wi::scene names.Create(entity) = name; - SoundComponent& sound = sounds.Create(entity); - sound.filename = filename; - sound.soundResource = wi::resourcemanager::Load(filename, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); - wi::audio::CreateSoundInstance(&sound.soundResource.GetSound(), &sound.soundinstance); + if (!filename.empty()) + { + SoundComponent& sound = sounds.Create(entity); + sound.filename = filename; + sound.soundResource = wi::resourcemanager::Load(filename, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); + wi::audio::CreateSoundInstance(&sound.soundResource.GetSound(), &sound.soundinstance); + } TransformComponent& transform = transforms.Create(entity); transform.Translate(position); @@ -2395,6 +2441,233 @@ namespace wi::scene return entity; } + Entity Scene::Entity_CreateCube( + const std::string& name + ) + { + // 1) Create an ObjectComponent, this can be used to instance a mesh: + Entity entity = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity) = name; + } + + layers.Create(entity); + + transforms.Create(entity); + + aabb_objects.Create(entity); + + ObjectComponent& object = objects.Create(entity); + + // 2) Create a mesh, this will contain vertex buffers: + // Here a separate mesh entity is created, to allow efficient instancing (not duplicating mesh data when duplicating objects) + Entity entity_mesh_material = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity_mesh_material) = name + "_mesh_material"; + } + + MeshComponent& mesh = meshes.Create(entity_mesh_material); + + // object references the mesh entity (there can be multiple objects referencing one mesh): + object.meshID = entity_mesh_material; + + mesh.vertex_positions = { + // -Z + XMFLOAT3(-1,1, -1), + XMFLOAT3(-1,-1, -1), + XMFLOAT3(1,-1, -1), + XMFLOAT3(1,1, -1), + + // +Z + XMFLOAT3(-1,1, 1), + XMFLOAT3(-1,-1, 1), + XMFLOAT3(1,-1, 1), + XMFLOAT3(1,1, 1), + + // -X + XMFLOAT3(-1, -1,1), + XMFLOAT3(-1, -1,-1), + XMFLOAT3(-1, 1,-1), + XMFLOAT3(-1, 1,1), + + // +X + XMFLOAT3(1, -1,1), + XMFLOAT3(1, -1,-1), + XMFLOAT3(1, 1,-1), + XMFLOAT3(1, 1,1), + + // -Y + XMFLOAT3(-1, -1,1), + XMFLOAT3(-1, -1,-1), + XMFLOAT3(1, -1,-1), + XMFLOAT3(1, -1,1), + + // +Y + XMFLOAT3(-1, 1,1), + XMFLOAT3(-1, 1,-1), + XMFLOAT3(1, 1,-1), + XMFLOAT3(1, 1,1), + }; + + mesh.vertex_normals = { + XMFLOAT3(0,0,-1), + XMFLOAT3(0,0,-1), + XMFLOAT3(0,0,-1), + XMFLOAT3(0,0,-1), + + XMFLOAT3(0,0,1), + XMFLOAT3(0,0,1), + XMFLOAT3(0,0,1), + XMFLOAT3(0,0,1), + + XMFLOAT3(-1,0,0), + XMFLOAT3(-1,0,0), + XMFLOAT3(-1,0,0), + XMFLOAT3(-1,0,0), + + XMFLOAT3(1,0,0), + XMFLOAT3(1,0,0), + XMFLOAT3(1,0,0), + XMFLOAT3(1,0,0), + + XMFLOAT3(0,-1,0), + XMFLOAT3(0,-1,0), + XMFLOAT3(0,-1,0), + XMFLOAT3(0,-1,0), + + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + }; + + mesh.vertex_uvset_0 = { + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + }; + + mesh.indices = { + 0, 1, 2, 0, 2, 3, + 0 + 4, 2 + 4, 1 + 4, 0 + 4, 3 + 4, 2 + 4, // swapped winding + 0 + 4 * 2, 1 + 4 * 2, 2 + 4 * 2, 0 + 4 * 2, 2 + 4 * 2, 3 + 4 * 2, + 0 + 4 * 3, 2 + 4 * 3, 1 + 4 * 3, 0 + 4 * 3, 3 + 4 * 3, 2 + 4 * 3, // swapped winding + 0 + 4 * 4, 2 + 4 * 4, 1 + 4 * 4, 0 + 4 * 4, 3 + 4 * 4, 2 + 4 * 4, // swapped winding + 0 + 4 * 5, 1 + 4 * 5, 2 + 4 * 5, 0 + 4 * 5, 2 + 4 * 5, 3 + 4 * 5, + }; + + // Subset maps a part of the mesh to a material: + MeshComponent::MeshSubset& subset = mesh.subsets.emplace_back(); + subset.indexCount = uint32_t(mesh.indices.size()); + materials.Create(entity_mesh_material); + subset.materialID = entity_mesh_material; // the material component is created on the same entity as the mesh component, though it is not required as it could also use a different material entity + + // vertex buffer GPU data will be packed and uploaded here: + mesh.CreateRenderData(); + + return entity; + } + Entity Scene::Entity_CreatePlane( + const std::string& name + ) + { + // 1) Create an ObjectComponent, this can be used to instance a mesh: + Entity entity = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity) = name; + } + + layers.Create(entity); + + transforms.Create(entity); + + aabb_objects.Create(entity); + + ObjectComponent& object = objects.Create(entity); + + // 2) Create a mesh, this will contain vertex buffers: + // Here a separate mesh entity is created, to allow efficient instancing (not duplicating mesh data when duplicating objects) + Entity entity_mesh_material = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity_mesh_material) = name + "_mesh_material"; + } + + MeshComponent& mesh = meshes.Create(entity_mesh_material); + + // object references the mesh entity (there can be multiple objects referencing one mesh): + object.meshID = entity_mesh_material; + + mesh.vertex_positions = { + // +Y + XMFLOAT3(-1, 0,1), + XMFLOAT3(-1, 0,-1), + XMFLOAT3(1, 0,-1), + XMFLOAT3(1, 0,1), + }; + + mesh.vertex_normals = { + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + }; + + mesh.vertex_uvset_0 = { + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + }; + + mesh.indices = { + 0, 1, 2, 0, 2, 3, + }; + + // Subset maps a part of the mesh to a material: + MeshComponent::MeshSubset& subset = mesh.subsets.emplace_back(); + subset.indexCount = uint32_t(mesh.indices.size()); + materials.Create(entity_mesh_material); + subset.materialID = entity_mesh_material; // the material component is created on the same entity as the mesh component, though it is not required as it could also use a different material entity + + // vertex buffer GPU data will be packed and uploaded here: + mesh.CreateRenderData(); + + return entity; + } void Scene::Component_Attach(Entity entity, Entity parent, bool child_already_in_local_space) { @@ -3013,6 +3286,8 @@ namespace wi::scene ArmatureComponent& armature = armatures[args.jobIndex]; Entity entity = armatures.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const TransformComponent& transform = *transforms.GetComponent(entity); // The transform world matrices are in world space, but skinning needs them in armature-local space, @@ -3711,6 +3986,8 @@ namespace wi::scene { DecalComponent& decal = decals[i]; Entity entity = decals.GetEntity(i); + if (!transforms.Contains(entity)) + continue; const TransformComponent& transform = *transforms.GetComponent(entity); decal.world = transform.world; @@ -3901,6 +4178,8 @@ namespace wi::scene { EnvironmentProbeComponent& probe = probes[probeIndex]; Entity entity = probes.GetEntity(probeIndex); + if (!transforms.Contains(entity)) + continue; const TransformComponent& transform = *transforms.GetComponent(entity); probe.position = transform.GetPosition(); @@ -3955,6 +4234,8 @@ namespace wi::scene ForceFieldComponent& force = forces[args.jobIndex]; Entity entity = forces.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const TransformComponent& transform = *transforms.GetComponent(entity); XMMATRIX W = XMLoadFloat4x4(&transform.world); @@ -3974,6 +4255,8 @@ namespace wi::scene LightComponent& light = lights[args.jobIndex]; Entity entity = lights.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const TransformComponent& transform = *transforms.GetComponent(entity); AABB& aabb = aabb_lights[args.jobIndex]; @@ -4032,6 +4315,8 @@ namespace wi::scene HairParticleSystem& hair = hairs[args.jobIndex]; Entity entity = hairs.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const LayerComponent* layer = layers.GetComponent(entity); if (layer != nullptr) @@ -4115,6 +4400,8 @@ namespace wi::scene EmittedParticleSystem& emitter = emitters[args.jobIndex]; Entity entity = emitters.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; MaterialComponent* material = materials.GetComponent(entity); if (material != nullptr) diff --git a/WickedEngine/wiScene.h b/WickedEngine/wiScene.h index b4e1df07a..6d680345d 100644 --- a/WickedEngine/wiScene.h +++ b/WickedEngine/wiScene.h @@ -16,6 +16,7 @@ #include "wiECS.h" #include "wiVector.h" #include "wiRectPacker.h" +#include "wiUnorderedSet.h" #include #include @@ -1460,6 +1461,8 @@ namespace wi::scene // Merge an other scene into this. // The contents of the other scene will be lost (and moved to this)! void Merge(Scene& other); + // Finds all entities in the scene that have any components attached + void FindAllEntities(wi::unordered_set& entities) const; // Removes (deletes) a specific entity from the scene (if it exists): // recursive : also removes children if true @@ -1489,6 +1492,9 @@ namespace wi::scene EntitySerializeFlags flags = EntitySerializeFlags::RECURSIVE ); + wi::ecs::Entity Entity_CreateTransform( + const std::string& name + ); wi::ecs::Entity Entity_CreateMaterial( const std::string& name ); @@ -1538,6 +1544,12 @@ namespace wi::scene const std::string& filename, const XMFLOAT3& position = XMFLOAT3(0, 0, 0) ); + wi::ecs::Entity Entity_CreateCube( + const std::string& name + ); + wi::ecs::Entity Entity_CreatePlane( + const std::string& name + ); // Attaches an entity to a parent: // child_already_in_local_space : child won't be transformed from world space to local space diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index fa7ffb829..16510a2e3 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wi::version // minor features, major updates, breaking compatibility changes const int minor = 70; // minor bug fixes, alterations, refactors, updates - const int revision = 13; + const int revision = 14; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);