From 516a93a7f00de431a6b27f8321e9a089300d307d Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sun, 28 Jul 2024 11:50:14 -0400 Subject: [PATCH] =?UTF-8?q?Added=20spot=20light=20type=20=F0=9F=94=A6=20&?= =?UTF-8?q?=20light=20direction=20now=20using=20global=20rotation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/src/ComponentsPanel/LightPanel.h | 28 + Nuake/src/Rendering/Renderer.cpp | 59 +- Nuake/src/Rendering/SceneRenderer.cpp | 12 +- Nuake/src/Resource/StaticResources.cpp | 1507 ++++++++++--------- Nuake/src/Scene/Components/LightComponent.h | 2 + Resources/Shaders/deferred.shader | 22 +- 6 files changed, 873 insertions(+), 757 deletions(-) diff --git a/Editor/src/ComponentsPanel/LightPanel.h b/Editor/src/ComponentsPanel/LightPanel.h index 0202c866..794ccece 100644 --- a/Editor/src/ComponentsPanel/LightPanel.h +++ b/Editor/src/ComponentsPanel/LightPanel.h @@ -63,6 +63,7 @@ public: ComponentTableReset(component.Type, Nuake::LightType::Point); } ImGui::TableNextColumn(); + if (component.Type == Nuake::LightType::Directional) { { @@ -100,6 +101,33 @@ public: } } } + else if (component.Type == Nuake::LightType::Spot) + { + { + ImGui::Text("Cutoff"); + ImGui::TableNextColumn(); + + ImGui::DragFloat("##cutoff", &component.Cutoff, 1.0f, 0.0f, 360.0f); + ImGui::TableNextColumn(); + + // Clamp inner angle so it doesnt exceed outer angle. + component.Cutoff = glm::min(component.Cutoff, component.OuterCutoff); + + ComponentTableReset(component.Cutoff, 12.5f); + ImGui::TableNextColumn(); + } + + { + ImGui::Text("Outer Cutoff"); + ImGui::TableNextColumn(); + + ImGui::DragFloat("##outercutoff", &component.OuterCutoff, 1.0f, component.Cutoff, 360.0f); + ImGui::TableNextColumn(); + + ComponentTableReset(component.OuterCutoff, 30.0f); + ImGui::TableNextColumn(); + } + } } EndComponentTable(); } diff --git a/Nuake/src/Rendering/Renderer.cpp b/Nuake/src/Rendering/Renderer.cpp index 0fa33e33..5ec0a2ed 100644 --- a/Nuake/src/Rendering/Renderer.cpp +++ b/Nuake/src/Rendering/Renderer.cpp @@ -10,6 +10,7 @@ #include "src/Rendering/Shaders/ShaderManager.h" #include "Engine.h" #include "src/Core/Core.h" +#include "src/Core/Maths.h" #include #include "Buffers/VertexBufferLayout.h" @@ -261,29 +262,30 @@ namespace Nuake { Shader* deferredShader = ShaderManager::GetShader("Resources/Shaders/deferred.shader"); deferredShader->Bind(); - m_Lights.push_back({ transform , light }); - - size_t idx = m_Lights.size(); - + Vector3 direction = light.GetDirection(); Vector3 pos = transform.GetGlobalPosition(); + Quat lightRotation = transform.GetGlobalRotation(); - //light.m_Framebuffer->GetTexture(GL_DEPTH_ATTACHMENT)->Bind(17); - - int shadowmapAmount = 0; if (light.Type == Directional) { + int shadowmapAmount = 0; + deferredShader->SetUniform1i("u_DirectionalLight.Shadow", light.CastShadows); + if (light.CastShadows) { for (unsigned int i = 0; i < CSM_AMOUNT; i++) { - light.m_Framebuffers[i]->GetTexture(GL_DEPTH_ATTACHMENT)->Bind(17 + i); + // Bind shadowmap texture const uint32_t shadowMapId = shadowmapAmount + i; - deferredShader->SetUniform1i("ShadowMaps[" + std::to_string(shadowMapId) + "]", 17 + i); - deferredShader->SetUniform1i("u_DirectionalLight.ShadowMapsIDs[" + std::to_string(i) + "]", shadowMapId); - deferredShader->SetUniform1f("u_DirectionalLight.CascadeDepth[" + std::to_string(i) + "]", light.mCascadeSplitDepth[i]); - deferredShader->SetUniformMat4f("u_DirectionalLight.LightTransforms[" + std::to_string(i) + "]", light.mViewProjections[i]); + Ref shadowMapTexture = light.m_Framebuffers[i]->GetTexture(GL_DEPTH_ATTACHMENT); + deferredShader->SetUniformTex("ShadowMaps[" + std::to_string(shadowMapId) + "]", shadowMapTexture, 17 + i); + + const std::string stringIndex = std::to_string(i); + deferredShader->SetUniform1i("u_DirectionalLight.ShadowMapsIDs[" + stringIndex + "]", shadowMapId); + deferredShader->SetUniform1f("u_DirectionalLight.CascadeDepth[" + stringIndex + "]", light.mCascadeSplitDepth[i]); + deferredShader->SetUniformMat4f("u_DirectionalLight.LightTransforms[" + stringIndex + "]", light.mViewProjections[i]); } } @@ -293,17 +295,32 @@ namespace Nuake shadowmapAmount += CSM_AMOUNT; } - - if (m_Lights.size() == MAX_LIGHT) + else { - return; + if (m_Lights.size() == MAX_LIGHT) + { + return; + } + + m_Lights.push_back({ transform , light }); + size_t idx = m_Lights.size(); + + const std::string uniformAccessor = "Lights[" + std::to_string(idx - 1) + "]."; + deferredShader->SetUniform3f(uniformAccessor + "Position", pos.x, pos.y, pos.z); + deferredShader->SetUniform3f(uniformAccessor + "Color", light.Color.r * light.Strength, light.Color.g * light.Strength, light.Color.b * light.Strength); + deferredShader->SetUniform1i(uniformAccessor + "Type", static_cast(light.Type)); + + if (light.Type == Spot) + { + deferredShader->SetUniform3f(uniformAccessor + "Direction", direction.x, direction.y, direction.z); + deferredShader->SetUniform1f(uniformAccessor + "OuterAngle", glm::cos(Rad(light.OuterCutoff))); + deferredShader->SetUniform1f(uniformAccessor + "InnerAngle", glm::cos(Rad(light.Cutoff))); + } + + deferredShader->SetUniform1i("LightCount", static_cast(idx)); } - - deferredShader->SetUniform1i("LightCount", (int)idx); - deferredShader->SetUniform3f("Lights[" + std::to_string(idx - 1) + "].Position", pos.x, pos.y, pos.z); - deferredShader->SetUniform3f("Lights[" + std::to_string(idx - 1) + "].Color", light.Color.r * light.Strength, light.Color.g * light.Strength, light.Color.b * light.Strength); - - m_LightsUniformBuffer->Bind(); + + m_LightsUniformBuffer->Bind(); } void Renderer::DrawLine(Vector3 start, Vector3 end, Color color, Matrix4 transform) diff --git a/Nuake/src/Rendering/SceneRenderer.cpp b/Nuake/src/Rendering/SceneRenderer.cpp index ef5cf710..76282706 100644 --- a/Nuake/src/Rendering/SceneRenderer.cpp +++ b/Nuake/src/Rendering/SceneRenderer.cpp @@ -26,8 +26,6 @@ namespace Nuake mGBuffer->SetTexture(entityTexture, GL_COLOR_ATTACHMENT3); // Entity ID mGBuffer->SetTexture(CreateRef(defaultResolution, GL_RED, GL_R16F, GL_FLOAT), GL_COLOR_ATTACHMENT4); // Emissive - - mShadingBuffer = CreateScope(true, defaultResolution); mShadingBuffer->SetTexture(CreateRef(defaultResolution, GL_RGB, GL_RGB16F, GL_FLOAT)); @@ -49,7 +47,6 @@ namespace Nuake void SceneRenderer::Cleanup() { - } void SceneRenderer::BeginRenderScene(const Matrix4& projection, const Matrix4& view, const Vector3& camPos) @@ -683,6 +680,7 @@ namespace Nuake RenderCommand::Clear(); RenderCommand::SetClearColor(Color(0, 0, 0, 1)); } + RenderCommand::Enable(RendererEnum::FACE_CULL); Shader* shadingShader = ShaderManager::GetShader("Resources/Shaders/deferred.shader"); @@ -700,8 +698,14 @@ namespace Nuake { auto [transform, light, parent] = view.get(l); - if (light.SyncDirectionWithSky) + if (light.Type == Directional && light.SyncDirectionWithSky) + { light.Direction = env->ProceduralSkybox->GetSunDirection(); + } + else + { + light.Direction = transform.GetGlobalRotation() * Vector3(0, 0, 1); + } Renderer::RegisterDeferredLight(transform, light); } diff --git a/Nuake/src/Resource/StaticResources.cpp b/Nuake/src/Resource/StaticResources.cpp index f87e0d39..62f83e41 100644 --- a/Nuake/src/Resource/StaticResources.cpp +++ b/Nuake/src/Resource/StaticResources.cpp @@ -233840,7 +233840,7 @@ const std::string Resources_Shaders_deferred_shader_path = R"(Resources/Shaders/ 0x55, 0x56, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, - 0x78, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x33, 0x32, 0x3b, + 0x78, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x32, 0x38, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x73, 0x74, 0x72, @@ -233848,619 +233848,632 @@ const std::string Resources_Shaders_deferred_shader_path = R"(Resources/Shaders/ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, - 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x54, 0x79, + 0x70, 0x65, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x30, 0x20, 0x3d, 0x20, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x31, 0x20, 0x3d, 0x20, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2c, 0x20, 0x32, + 0x20, 0x3d, 0x20, 0x53, 0x70, 0x6f, 0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x20, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x67, + 0x6c, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, + 0x65, 0x3b, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x0d, 0x0a, 0x7b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, 0x49, 0x44, + 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x43, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, + 0x44, 0x65, 0x70, 0x74, 0x68, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x4c, 0x69, 0x67, 0x68, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5b, + 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x53, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, 0x49, 0x44, 0x73, 0x5b, - 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x43, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x44, 0x65, - 0x70, 0x74, 0x68, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5b, 0x34, 0x5d, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x53, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x3b, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x72, 0x32, 0x44, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, - 0x61, 0x70, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x4d, 0x61, 0x78, 0x4c, - 0x69, 0x67, 0x68, 0x74, 0x5d, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69, 0x66, - 0x6f, 0x72, 0x6d, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x75, 0x5f, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, - 0x67, 0x68, 0x74, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x75, 0x5f, 0x44, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x53, 0x41, 0x4f, 0x20, 0x3d, 0x20, 0x30, 0x3b, - 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x5f, 0x41, 0x6d, 0x62, 0x69, - 0x65, 0x6e, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x73, 0x20, - 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x57, 0x6f, 0x72, - 0x6c, 0x64, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6f, - 0x72, 0x64, 0x73, 0x2e, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x57, - 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, - 0x65, 0x70, 0x74, 0x68, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2d, - 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x55, 0x56, 0x20, 0x2a, 0x20, - 0x32, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x7a, - 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x69, 0x65, 0x77, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x3d, 0x20, 0x49, 0x6e, 0x76, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, - 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x50, - 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, - 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x69, 0x65, 0x77, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2f, 0x3d, 0x20, 0x76, 0x69, - 0x65, 0x77, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x3d, 0x20, 0x49, 0x6e, 0x76, 0x56, 0x69, 0x65, 0x77, 0x20, - 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x77, - 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0d, 0x0a, - 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x50, 0x49, 0x20, 0x3d, 0x20, 0x33, 0x2e, - 0x31, 0x34, 0x31, 0x35, 0x39, 0x32, 0x36, 0x35, 0x33, 0x35, 0x38, 0x39, - 0x37, 0x39, 0x33, 0x66, 0x3b, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c, - 0x65, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x66, 0x3b, 0x0d, 0x0a, - 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x47, 0x58, 0x28, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x4e, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x48, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x29, - 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x61, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, - 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x20, 0x3d, 0x20, 0x6d, 0x61, - 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x29, 0x2c, - 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x32, - 0x20, 0x3d, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x20, 0x2a, 0x20, 0x4e, - 0x64, 0x6f, 0x74, 0x48, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x6d, 0x20, 0x3d, - 0x20, 0x61, 0x32, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, - 0x28, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x32, 0x20, 0x2a, 0x20, 0x28, 0x61, - 0x32, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x31, - 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x50, 0x49, 0x20, 0x2a, 0x20, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x2a, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x6d, 0x20, 0x2f, 0x20, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, - 0x79, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x47, 0x47, 0x58, 0x28, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x56, 0x2c, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x29, 0x0d, 0x0a, 0x7b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x56, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x4e, 0x64, 0x6f, 0x74, - 0x56, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6b, - 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x6d, - 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x3b, 0x0d, 0x0a, 0x7d, - 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x47, 0x65, - 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x28, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x4e, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x56, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4c, 0x2c, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, - 0x64, 0x6f, 0x74, 0x56, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, - 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, - 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d, 0x20, 0x6d, - 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x67, 0x78, 0x31, 0x20, - 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x63, - 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x47, 0x47, 0x58, 0x28, 0x4e, 0x64, 0x6f, - 0x74, 0x56, 0x2c, 0x20, 0x6b, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x67, 0x78, 0x32, 0x20, - 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x63, - 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x47, 0x47, 0x58, 0x28, 0x4e, 0x64, 0x6f, - 0x74, 0x4c, 0x2c, 0x20, 0x6b, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x67, 0x67, - 0x78, 0x31, 0x20, 0x2a, 0x20, 0x67, 0x67, 0x78, 0x32, 0x3b, 0x0d, 0x0a, - 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x66, 0x72, - 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, - 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x54, 0x68, - 0x65, 0x74, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x30, - 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x46, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x31, - 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x46, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x70, - 0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, - 0x20, 0x63, 0x6f, 0x73, 0x54, 0x68, 0x65, 0x74, 0x61, 0x2c, 0x20, 0x30, - 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, - 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x66, 0x72, - 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, - 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x28, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x54, 0x68, 0x65, 0x74, 0x61, - 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x30, 0x2c, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, - 0x73, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x46, 0x30, 0x20, 0x2b, 0x20, - 0x28, 0x6d, 0x61, 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, - 0x30, 0x20, 0x2d, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, - 0x73, 0x29, 0x2c, 0x20, 0x46, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x46, 0x30, - 0x29, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, - 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x63, 0x6f, 0x73, 0x54, 0x68, 0x65, - 0x74, 0x61, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x35, 0x2e, - 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, - 0x74, 0x20, 0x47, 0x65, 0x74, 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, - 0x68, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x70, 0x74, - 0x68, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, - 0x20, 0x3d, 0x20, 0x2d, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x2f, 0x2f, 0x20, 0x47, 0x65, 0x74, 0x20, 0x43, 0x53, 0x4d, 0x20, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, - 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, - 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x75, + 0x61, 0x64, 0x6f, 0x77, 0x3b, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x4d, 0x61, 0x70, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4c, 0x69, 0x67, + 0x68, 0x74, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x4d, 0x61, + 0x78, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x43, 0x61, 0x73, 0x63, 0x61, 0x64, - 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, 0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x28, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3c, 0x20, 0x43, 0x53, - 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x30, - 0x30, 0x30, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x20, 0x69, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, - 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, + 0x4c, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69, 0x66, + 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x75, 0x5f, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x53, 0x41, 0x4f, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, + 0x6d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x5f, 0x41, 0x6d, + 0x62, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x3b, 0x0d, 0x0a, + 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x73, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x57, + 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, + 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, + 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x46, 0x72, 0x6f, + 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x20, 0x3d, + 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, + 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x55, 0x56, 0x20, + 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x2c, + 0x20, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x69, 0x65, 0x77, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x3d, 0x20, 0x49, 0x6e, 0x76, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x63, 0x6c, 0x69, 0x70, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, + 0x20, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x69, 0x65, 0x77, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2f, 0x3d, 0x20, + 0x76, 0x69, 0x65, 0x77, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, + 0x6c, 0x64, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x49, 0x6e, 0x76, 0x56, 0x69, 0x65, + 0x77, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x3b, 0x0d, + 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x3b, + 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x50, 0x49, 0x20, 0x3d, 0x20, + 0x33, 0x2e, 0x31, 0x34, 0x31, 0x35, 0x39, 0x32, 0x36, 0x35, 0x33, 0x35, + 0x38, 0x39, 0x37, 0x39, 0x33, 0x66, 0x3b, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x63, + 0x61, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x66, 0x3b, + 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x47, + 0x58, 0x28, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4e, 0x2c, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x20, 0x48, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, + 0x61, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x20, + 0x2a, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x20, 0x3d, 0x20, + 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x48, + 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, + 0x48, 0x32, 0x20, 0x3d, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x20, 0x2a, + 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x6d, + 0x20, 0x3d, 0x20, 0x61, 0x32, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, + 0x3d, 0x20, 0x28, 0x4e, 0x64, 0x6f, 0x74, 0x48, 0x32, 0x20, 0x2a, 0x20, + 0x28, 0x61, 0x32, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x50, 0x49, 0x20, 0x2a, + 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x2a, 0x20, 0x64, 0x65, 0x6e, + 0x6f, 0x6d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x6d, 0x20, 0x2f, 0x20, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, + 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x47, 0x47, + 0x58, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, + 0x56, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x29, 0x0d, + 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x4e, 0x64, 0x6f, 0x74, + 0x56, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x4e, 0x64, + 0x6f, 0x74, 0x56, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, + 0x20, 0x6b, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, + 0x6f, 0x6d, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x4d, 0x61, 0x70, 0x28, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, - 0x44, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, - 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, - 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x65, 0x70, - 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x2c, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, - 0x78, 0x79, 0x29, 0x2e, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, - 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x53, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x4c, - 0x69, 0x6e, 0x65, 0x61, 0x72, 0x28, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x6d, 0x69, 0x74, + 0x68, 0x28, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4e, 0x2c, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x20, 0x56, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4c, + 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x29, 0x0d, 0x0a, + 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x56, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, + 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, + 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d, + 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, + 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x67, 0x78, + 0x31, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x47, 0x47, 0x58, 0x28, 0x4e, + 0x64, 0x6f, 0x74, 0x56, 0x2c, 0x20, 0x6b, 0x29, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x67, 0x78, + 0x32, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x47, 0x47, 0x58, 0x28, 0x4e, + 0x64, 0x6f, 0x74, 0x4c, 0x2c, 0x20, 0x6b, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x67, 0x67, 0x78, 0x31, 0x20, 0x2a, 0x20, 0x67, 0x67, 0x78, 0x32, 0x3b, + 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, + 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, + 0x63, 0x6b, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x73, + 0x54, 0x68, 0x65, 0x74, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, + 0x46, 0x30, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x46, 0x30, 0x20, 0x2b, 0x20, + 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x46, 0x30, 0x29, 0x20, 0x2a, + 0x20, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x31, 0x2e, 0x30, + 0x20, 0x2d, 0x20, 0x63, 0x6f, 0x73, 0x54, 0x68, 0x65, 0x74, 0x61, 0x2c, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x29, 0x3b, + 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, + 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, + 0x63, 0x6b, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x28, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x54, 0x68, 0x65, + 0x74, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x30, 0x2c, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x6e, 0x65, 0x73, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x46, 0x30, 0x20, + 0x2b, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, + 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, + 0x65, 0x73, 0x73, 0x29, 0x2c, 0x20, 0x46, 0x30, 0x29, 0x20, 0x2d, 0x20, + 0x46, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x61, + 0x78, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x63, 0x6f, 0x73, 0x54, + 0x68, 0x65, 0x74, 0x61, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, + 0x35, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, + 0x69, 0x6e, 0x74, 0x20, 0x47, 0x65, 0x74, 0x43, 0x53, 0x4d, 0x44, 0x65, + 0x70, 0x74, 0x68, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, + 0x61, 0x70, 0x20, 0x3d, 0x20, 0x2d, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x65, 0x74, 0x20, 0x43, 0x53, 0x4d, + 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, + 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x69, + 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, + 0x20, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x43, 0x61, 0x73, 0x63, + 0x61, 0x64, 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, 0x5b, 0x69, 0x5d, 0x3b, + 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3c, 0x20, + 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2b, 0x20, 0x30, + 0x2e, 0x30, 0x30, 0x30, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x20, 0x69, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, + 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x65, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, - 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x0d, 0x0a, - 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, - 0x70, 0x69, 0x78, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x63, - 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x2f, 0x20, 0x74, 0x65, 0x78, 0x65, - 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, - 0x28, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x72, 0x61, 0x63, 0x50, 0x61, 0x72, - 0x74, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x28, 0x70, 0x69, - 0x78, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x69, 0x78, - 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x63, - 0x50, 0x61, 0x72, 0x74, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x65, - 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x6c, 0x54, 0x65, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, + 0x65, 0x70, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x2c, 0x20, + 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x73, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x2e, 0x78, 0x79, 0x29, 0x2e, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, + 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x53, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, + 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x28, 0x73, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x63, 0x6f, + 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x2c, 0x20, 0x76, 0x65, 0x63, + 0x32, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x29, + 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x20, 0x3d, + 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x2f, 0x20, 0x74, 0x65, + 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x76, 0x65, + 0x63, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x72, 0x61, 0x63, 0x50, + 0x61, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x28, + 0x70, 0x69, 0x78, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x70, + 0x69, 0x78, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x20, 0x2d, 0x20, 0x66, 0x72, + 0x61, 0x63, 0x50, 0x61, 0x72, 0x74, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x65, + 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x6c, + 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, + 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x72, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x63, 0x6f, 0x6d, + 0x72, 0x74, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x76, 0x65, + 0x63, 0x32, 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, + 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6c, 0x54, 0x65, 0x78, + 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, + 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x73, 0x68, 0x61, + 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, + 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, + 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x72, 0x54, 0x65, 0x78, 0x65, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, - 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x78, - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6c, 0x54, 0x65, 0x78, 0x65, 0x6c, - 0x20, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, - 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x65, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, - 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, - 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x65, - 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, - 0x69, 0x7a, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, - 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x69, 0x78, 0x41, 0x20, 0x3d, 0x20, 0x6d, - 0x69, 0x78, 0x28, 0x62, 0x6c, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2c, 0x20, - 0x74, 0x6c, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x66, 0x72, 0x61, - 0x63, 0x50, 0x61, 0x72, 0x74, 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x69, 0x78, - 0x42, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x62, 0x72, 0x54, 0x65, - 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x74, 0x72, 0x54, 0x65, 0x78, 0x65, 0x6c, - 0x2c, 0x20, 0x66, 0x72, 0x61, 0x63, 0x50, 0x61, 0x72, 0x74, 0x2e, 0x79, - 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x6d, 0x69, 0x78, - 0x41, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x42, 0x2c, 0x20, 0x66, 0x72, 0x61, - 0x63, 0x50, 0x61, 0x72, 0x74, 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, - 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x53, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x72, 0x61, - 0x67, 0x50, 0x6f, 0x73, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x65, 0x74, 0x20, 0x44, 0x65, - 0x70, 0x74, 0x68, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x46, 0x72, 0x61, 0x67, 0x50, 0x6f, - 0x73, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, - 0x61, 0x70, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x74, 0x43, 0x53, 0x4d, 0x44, - 0x65, 0x70, 0x74, 0x68, 0x28, 0x64, 0x65, 0x70, 0x74, 0x68, 0x29, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x3d, 0x20, 0x2d, - 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, - 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, - 0x66, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, - 0x68, 0x74, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5b, 0x73, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x28, 0x46, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, 0x2c, 0x20, 0x31, 0x2e, - 0x30, 0x66, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x2f, 0x2f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x70, - 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, - 0x69, 0x76, 0x69, 0x64, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, - 0x64, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, - 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x78, - 0x79, 0x7a, 0x20, 0x2f, 0x20, 0x66, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, - 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x77, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x5b, - 0x30, 0x2c, 0x31, 0x5d, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, - 0x64, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, - 0x72, 0x64, 0x73, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, - 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x74, - 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x74, 0x65, 0x78, 0x65, + 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x69, 0x78, 0x41, 0x20, 0x3d, + 0x20, 0x6d, 0x69, 0x78, 0x28, 0x62, 0x6c, 0x54, 0x65, 0x78, 0x65, 0x6c, + 0x2c, 0x20, 0x74, 0x6c, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x66, + 0x72, 0x61, 0x63, 0x50, 0x61, 0x72, 0x74, 0x2e, 0x79, 0x29, 0x3b, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, + 0x69, 0x78, 0x42, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x62, 0x72, + 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x74, 0x72, 0x54, 0x65, 0x78, + 0x65, 0x6c, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x63, 0x50, 0x61, 0x72, 0x74, + 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x6d, + 0x69, 0x78, 0x41, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x42, 0x2c, 0x20, 0x66, + 0x72, 0x61, 0x63, 0x50, 0x61, 0x72, 0x74, 0x2e, 0x78, 0x29, 0x3b, 0x0d, + 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, + 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, + 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, + 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x65, 0x74, 0x20, + 0x44, 0x65, 0x70, 0x74, 0x68, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, + 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x46, 0x72, 0x61, 0x67, + 0x50, 0x6f, 0x73, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x45, 0x79, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x74, 0x43, 0x53, + 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x64, 0x65, 0x70, 0x74, 0x68, + 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, + 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x3d, + 0x20, 0x2d, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x2e, 0x30, + 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, 0x4c, 0x69, 0x67, + 0x68, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x75, 0x5f, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x69, 0x67, 0x68, 0x74, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5b, 0x73, 0x68, 0x61, + 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x20, 0x2a, 0x20, 0x76, 0x65, + 0x63, 0x34, 0x28, 0x46, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, 0x2c, 0x20, + 0x31, 0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x20, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, + 0x6f, 0x72, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x50, + 0x6f, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2f, 0x20, 0x66, 0x72, 0x61, 0x67, 0x50, + 0x6f, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x2e, 0x77, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x6f, + 0x20, 0x5b, 0x30, 0x2c, 0x31, 0x5d, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, + 0x6f, 0x72, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, + 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x20, + 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2f, 0x2f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x73, 0x74, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6c, 0x69, 0x67, 0x68, + 0x74, 0x27, 0x73, 0x20, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x20, 0x28, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x5b, + 0x30, 0x2c, 0x31, 0x5d, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x66, + 0x72, 0x61, 0x67, 0x50, 0x6f, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, + 0x61, 0x73, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x29, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, + 0x65, 0x70, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x27, 0x73, 0x20, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x20, 0x28, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x30, 0x2c, - 0x31, 0x5d, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x66, 0x72, 0x61, - 0x67, 0x50, 0x6f, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x61, 0x73, - 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x29, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x65, 0x70, - 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x66, - 0x72, 0x6f, 0x6d, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x27, 0x73, 0x20, - 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, - 0x3d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x73, - 0x2e, 0x7a, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, - 0x72, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, - 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x69, 0x61, 0x73, - 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x30, 0x2e, 0x30, 0x30, 0x35, - 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x64, 0x6f, - 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2c, 0x20, 0x75, 0x5f, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, - 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x35, - 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x70, 0x63, 0x66, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x53, - 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, 0x5b, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x2c, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x28, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, 0x64, - 0x73, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x29, 0x2c, 0x20, 0x62, 0x69, 0x61, - 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, - 0x20, 0x3c, 0x3d, 0x20, 0x34, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, + 0x68, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, + 0x64, 0x73, 0x2e, 0x7a, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, + 0x2f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x77, 0x68, 0x65, 0x74, + 0x68, 0x65, 0x72, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x66, 0x72, 0x61, 0x67, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x69, 0x73, 0x20, + 0x69, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, 0x61, + 0x64, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x69, + 0x61, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x30, 0x2e, 0x30, + 0x30, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, + 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2c, 0x20, + 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x30, + 0x30, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x63, 0x66, 0x44, 0x65, 0x70, + 0x74, 0x68, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x28, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, 0x5b, + 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x2c, 0x20, + 0x76, 0x65, 0x63, 0x33, 0x28, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, + 0x72, 0x64, 0x73, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x29, 0x2c, 0x20, 0x62, + 0x69, 0x61, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, + 0x61, 0x70, 0x20, 0x3c, 0x3d, 0x20, 0x34, 0x29, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x4e, 0x55, 0x4d, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, + 0x20, 0x3d, 0x20, 0x34, 0x2e, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, + 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x20, 0x3d, 0x20, 0x28, 0x4e, 0x55, + 0x4d, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x20, 0x2d, 0x20, + 0x31, 0x2e, 0x30, 0x66, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x66, + 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, - 0x55, 0x4d, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x20, 0x3d, - 0x20, 0x34, 0x2e, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x20, 0x3d, 0x20, 0x28, 0x4e, 0x55, 0x4d, 0x5f, - 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x20, 0x2d, 0x20, 0x31, 0x2e, - 0x30, 0x66, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x66, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x55, 0x4d, - 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, 0x51, 0x55, - 0x41, 0x52, 0x45, 0x44, 0x20, 0x3d, 0x20, 0x4e, 0x55, 0x4d, 0x5f, 0x53, - 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x20, 0x2a, 0x20, 0x4e, 0x55, 0x4d, - 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, - 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3d, 0x20, - 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x32, - 0x30, 0x34, 0x38, 0x2c, 0x20, 0x32, 0x30, 0x34, 0x38, 0x29, 0x3b, 0x0d, - 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, - 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x2d, 0x53, 0x41, 0x4d, - 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x3b, 0x20, - 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, - 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x3b, 0x20, 0x79, 0x20, 0x2b, 0x3d, - 0x20, 0x31, 0x2e, 0x30, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x55, 0x4d, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, + 0x51, 0x55, 0x41, 0x52, 0x45, 0x44, 0x20, 0x3d, 0x20, 0x4e, 0x55, 0x4d, + 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x20, 0x2a, 0x20, 0x4e, + 0x55, 0x4d, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x3b, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x32, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x20, + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x76, 0x65, 0x63, 0x32, + 0x28, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x32, 0x30, 0x34, 0x38, 0x29, + 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x2d, 0x53, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x2d, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, - 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x3b, 0x20, 0x78, 0x20, + 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, + 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x3b, 0x20, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x63, 0x6f, - 0x6f, 0x72, 0x64, 0x73, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, - 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x20, - 0x2a, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x61, - 0x72, 0x28, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, - 0x5b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x2c, - 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, - 0x78, 0x79, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x62, 0x69, - 0x61, 0x73, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, - 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x2f, 0x20, 0x4e, 0x55, 0x4d, - 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, 0x51, 0x55, - 0x41, 0x52, 0x45, 0x44, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x53, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, 0x5b, 0x73, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x2c, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, - 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2d, - 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, - 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, - 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x20, - 0x3d, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x46, 0x72, - 0x6f, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x74, 0x65, 0x78, 0x74, - 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x44, 0x65, 0x70, 0x74, 0x68, 0x2c, - 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, - 0x65, 0x28, 0x6d, 0x5f, 0x44, 0x65, 0x70, 0x74, 0x68, 0x2c, 0x20, 0x55, - 0x56, 0x29, 0x2e, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2c, 0x20, - 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, + 0x2d, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x53, 0x41, 0x4d, + 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x3b, 0x20, + 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x29, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x78, 0x2c, 0x20, 0x79, + 0x29, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, 0x69, 0x7a, + 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x6e, + 0x65, 0x61, 0x72, 0x28, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, + 0x70, 0x73, 0x5b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, + 0x5d, 0x2c, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x43, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x2e, 0x78, 0x79, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2d, 0x20, + 0x62, 0x69, 0x61, 0x73, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x53, + 0x69, 0x7a, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x5b, 0x30, 0x2c, - 0x20, 0x31, 0x5d, 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x2d, 0x31, 0x2c, 0x20, - 0x31, 0x5d, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, - 0x6d, 0x5f, 0x41, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x2c, 0x20, 0x55, 0x56, - 0x29, 0x2e, 0x72, 0x67, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, - 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2c, - 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, 0x67, 0x62, 0x20, 0x2a, 0x20, 0x32, - 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x61, - 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, - 0x5f, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x20, 0x55, - 0x56, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x63, 0x20, - 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x72, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x20, - 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x67, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, - 0x6e, 0x65, 0x73, 0x73, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x75, 0x6e, 0x6c, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, - 0x66, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x28, 0x75, 0x5f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x53, 0x41, 0x4f, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, - 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x73, 0x73, 0x61, 0x6f, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, - 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x53, 0x53, 0x41, 0x4f, 0x2c, 0x20, 0x55, - 0x56, 0x29, 0x2e, 0x72, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, - 0x75, 0x6e, 0x6c, 0x69, 0x74, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x31, 0x66, - 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x20, 0x3d, 0x20, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x45, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x76, 0x65, 0x2c, 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x46, - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, - 0x65, 0x63, 0x34, 0x28, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x20, 0x2a, - 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x2a, 0x20, 0x65, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x76, 0x65, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, + 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x2f, 0x20, 0x4e, + 0x55, 0x4d, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x53, + 0x51, 0x55, 0x41, 0x52, 0x45, 0x44, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x28, 0x53, 0x68, + 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x73, 0x5b, 0x73, 0x68, 0x61, + 0x64, 0x6f, 0x77, 0x6d, 0x61, 0x70, 0x5d, 0x2c, 0x20, 0x70, 0x72, 0x6f, + 0x6a, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x78, 0x79, 0x2c, 0x20, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, + 0x20, 0x2d, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x0d, 0x0a, 0x7d, + 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, + 0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, + 0x73, 0x20, 0x3d, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, + 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x74, 0x65, + 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x44, 0x65, 0x70, 0x74, + 0x68, 0x2c, 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, 0x29, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, + 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x44, 0x65, 0x70, 0x74, 0x68, 0x2c, + 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, + 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, + 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, - 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x4e, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x56, 0x20, - 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, - 0x75, 0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, - 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x52, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, - 0x28, 0x2d, 0x56, 0x2c, 0x20, 0x4e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x30, 0x20, 0x3d, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x34, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x46, 0x30, 0x20, 0x3d, 0x20, 0x6d, 0x69, - 0x78, 0x28, 0x46, 0x30, 0x2c, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, - 0x2c, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x63, 0x29, 0x3b, - 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x72, - 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x65, - 0x71, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x65, 0x79, 0x65, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x75, 0x5f, 0x45, 0x79, 0x65, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, - 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4c, 0x6f, - 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x66, 0x6f, 0x67, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, - 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, 0x3d, - 0x20, 0x30, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x5f, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, - 0x69, 0x67, 0x68, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, - 0x3c, 0x20, 0x30, 0x2e, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x66, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x75, 0x65, - 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4c, - 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x28, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x20, 0x3d, 0x20, - 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x75, 0x5f, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, - 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x75, 0x5f, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, - 0x74, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, 0x3e, 0x20, 0x30, - 0x2e, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, - 0x2b, 0x3d, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x61, 0x6c, - 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x77, 0x6f, 0x72, - 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x2c, 0x20, 0x4e, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, - 0x20, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x48, 0x20, 0x3d, 0x20, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x56, 0x20, 0x2b, 0x20, - 0x4c, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x3d, - 0x20, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x47, 0x58, 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c, 0x20, 0x72, - 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, + 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x5b, + 0x30, 0x2c, 0x20, 0x31, 0x5d, 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x2d, 0x31, + 0x2c, 0x20, 0x31, 0x5d, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x65, 0x63, 0x33, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, + 0x65, 0x28, 0x6d, 0x5f, 0x41, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x2c, 0x20, + 0x55, 0x56, 0x29, 0x2e, 0x72, 0x67, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x4e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x2c, 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, 0x67, 0x62, 0x20, 0x2a, + 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, + 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, + 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x28, 0x6d, 0x5f, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2c, + 0x20, 0x55, 0x56, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, + 0x63, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x72, 0x3b, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, + 0x6f, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x67, 0x3b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x6f, 0x75, + 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x61, + 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x2e, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6c, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x6d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2e, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x3d, 0x20, 0x30, + 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x75, 0x5f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x53, 0x41, 0x4f, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x3d, 0x20, 0x31, + 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x53, 0x53, 0x41, 0x4f, 0x2c, + 0x20, 0x55, 0x56, 0x29, 0x2e, 0x72, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x75, 0x6e, 0x6c, 0x69, 0x74, 0x20, 0x3e, 0x20, 0x30, 0x2e, + 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x47, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c, 0x20, 0x56, - 0x2c, 0x20, 0x4c, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, - 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, - 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, - 0x6b, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x48, 0x2c, - 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46, - 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x6d, 0x69, - 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x46, 0x20, - 0x2a, 0x20, 0x47, 0x20, 0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, - 0x3d, 0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, - 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, - 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, - 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, - 0x2b, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f, 0x2f, 0x20, - 0x30, 0x2e, 0x30, 0x30, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, - 0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x73, - 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x6f, - 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, - 0x20, 0x6b, 0x53, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, - 0x20, 0x74, 0x6f, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x0d, + 0x74, 0x20, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x20, 0x3d, + 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x5f, 0x45, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x2c, 0x20, 0x55, 0x56, 0x29, + 0x2e, 0x72, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, + 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, + 0x20, 0x2a, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x2a, 0x20, 0x65, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, + 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x33, 0x20, 0x4e, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, + 0x56, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x28, 0x75, 0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, + 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x20, 0x52, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, + 0x63, 0x74, 0x28, 0x2d, 0x56, 0x2c, 0x20, 0x4e, 0x29, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x30, 0x20, + 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x34, 0x29, + 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x46, 0x30, 0x20, 0x3d, 0x20, + 0x6d, 0x69, 0x78, 0x28, 0x46, 0x30, 0x2c, 0x20, 0x61, 0x6c, 0x62, 0x65, + 0x64, 0x6f, 0x2c, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x63, + 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, + 0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x65, 0x71, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x65, 0x79, 0x65, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x6e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x75, 0x5f, 0x45, + 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, + 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x29, 0x3b, 0x0d, + 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, + 0x4c, 0x6f, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, + 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x33, 0x20, 0x66, 0x6f, 0x67, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, + 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, + 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x31, + 0x2e, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, + 0x75, 0x65, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, + 0x20, 0x4c, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x28, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x3b, 0x0d, 0x0a, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x20, + 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, + 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x75, 0x5f, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x67, 0x68, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x20, 0x3e, + 0x20, 0x30, 0x2e, 0x31, 0x66, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, + 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x77, + 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x2c, 0x20, 0x4e, 0x29, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, + 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x48, 0x20, 0x3d, 0x20, + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x56, 0x20, + 0x2b, 0x20, 0x4c, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x44, 0x46, + 0x20, 0x3d, 0x20, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x47, 0x47, 0x58, 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c, + 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x20, 0x47, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, + 0x65, 0x74, 0x72, 0x79, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c, + 0x20, 0x56, 0x2c, 0x20, 0x4c, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20, 0x3d, + 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, + 0x69, 0x63, 0x6b, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, + 0x48, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, + 0x20, 0x46, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44, + 0x46, 0x20, 0x2a, 0x20, 0x47, 0x20, 0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x20, 0x3d, 0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, + 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, + 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, + 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, + 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f, + 0x2f, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x70, + 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, + 0x65, 0x20, 0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, + 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20, + 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, + 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2f, 0x2f, 0x20, 0x6b, 0x53, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, + 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, + 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x65, 0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x6b, 0x44, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, - 0x30, 0x29, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, - 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, - 0x69, 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, - 0x6c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x4e, 0x64, 0x6f, - 0x74, 0x4c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, - 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, - 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x20, 0x2b, - 0x3d, 0x20, 0x28, 0x6b, 0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c, 0x62, 0x65, - 0x64, 0x6f, 0x20, 0x2f, 0x20, 0x50, 0x49, 0x20, 0x2b, 0x20, 0x73, 0x70, - 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x72, 0x61, - 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e, 0x64, 0x6f, - 0x74, 0x4c, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, - 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, - 0x3c, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x33, 0x20, 0x6b, 0x44, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, + 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, + 0x6c, 0x6c, 0x69, 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x4e, + 0x64, 0x6f, 0x74, 0x4c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, + 0x4c, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, + 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, + 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x6b, 0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c, + 0x62, 0x65, 0x64, 0x6f, 0x20, 0x2f, 0x20, 0x50, 0x49, 0x20, 0x2b, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x29, 0x20, 0x2a, 0x20, + 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e, + 0x64, 0x6f, 0x74, 0x4c, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x69, 0x20, 0x3c, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, + 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x4c, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, @@ -234468,151 +234481,187 @@ const std::string Resources_Shaders_deferred_shader_path = R"(Resources/Shaders/ 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x28, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, - 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, + 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, + 0x6f, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, + 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, 0x2e, + 0x30, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x28, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, + 0x69, 0x5d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, + 0x29, 0x20, 0x2f, 0x2f, 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6f, 0x6b, - 0x2d, 0x54, 0x6f, 0x72, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x42, 0x52, - 0x44, 0x46, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x48, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x56, 0x20, 0x2b, 0x20, 0x4c, - 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x3d, 0x20, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x47, 0x58, 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c, 0x20, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x47, 0x20, 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, - 0x79, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x2c, - 0x20, 0x4c, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, - 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, 0x72, - 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, - 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x48, 0x2c, 0x20, - 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46, 0x30, - 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x2a, - 0x20, 0x47, 0x20, 0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, - 0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, - 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, - 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, - 0x2c, 0x20, 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2b, - 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x30, - 0x2e, 0x30, 0x30, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, 0x62, - 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x73, 0x70, - 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x6d, - 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, - 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, - 0x6b, 0x53, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, - 0x74, 0x6f, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, - 0x44, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, - 0x29, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31, + 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x28, 0x4c, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x20, + 0x3d, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x2f, 0x20, 0x53, 0x70, 0x6f, + 0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x74, + 0x61, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x4c, 0x2c, 0x20, 0x6e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x2d, 0x4c, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x20, 0x65, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x20, + 0x20, 0x20, 0x3d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, + 0x5d, 0x2e, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65, + 0x20, 0x2d, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, + 0x2e, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, + 0x70, 0x28, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x20, 0x2d, 0x20, 0x4c, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x4f, 0x75, 0x74, + 0x65, 0x72, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x20, 0x2f, 0x20, 0x65, + 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x4c, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x2e, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x74, 0x79, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6f, 0x6b, 0x2d, 0x54, 0x6f, + 0x72, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x42, 0x52, 0x44, 0x46, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x33, 0x20, 0x48, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x28, 0x56, 0x20, 0x2b, 0x20, 0x4c, 0x29, 0x3b, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x3d, 0x20, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x47, 0x58, + 0x28, 0x4e, 0x2c, 0x20, 0x48, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x47, 0x20, + 0x3d, 0x20, 0x47, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x6d, + 0x69, 0x74, 0x68, 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x2c, 0x20, 0x4c, 0x2c, + 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x29, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, + 0x65, 0x6c, 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x28, 0x6d, 0x61, + 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x48, 0x2c, 0x20, 0x56, 0x29, 0x2c, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46, 0x30, 0x29, 0x3b, 0x0d, + 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x65, 0x63, 0x33, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x46, 0x20, 0x2a, 0x20, 0x47, 0x20, + 0x2a, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x34, 0x20, + 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, + 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, + 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, + 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, + 0x30, 0x30, 0x31, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x30, 0x2e, 0x30, 0x30, + 0x31, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, 0x62, 0x79, 0x20, 0x7a, + 0x65, 0x72, 0x6f, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, + 0x6c, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x6f, 0x72, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6b, 0x53, 0x20, + 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, + 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x53, + 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x44, 0x20, 0x3d, + 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, + 0x20, 0x6b, 0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, + 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x63, 0x3b, 0x0d, + 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, + 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x62, 0x79, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d, 0x20, 0x6d, 0x61, + 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, 0x4c, 0x29, 0x2c, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x6b, + 0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x20, 0x2f, + 0x20, 0x50, 0x49, 0x20, 0x2b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, + 0x61, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x3b, 0x2f, + 0x2f, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x77, 0x65, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x42, 0x52, 0x44, 0x46, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x20, 0x28, 0x6b, + 0x53, 0x29, 0x20, 0x73, 0x6f, 0x20, 0x77, 0x65, 0x20, 0x77, 0x6f, 0x6e, + 0x27, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x20, + 0x62, 0x79, 0x20, 0x6b, 0x53, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x2f, 0x2f, 0x2f, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, + 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x28, + 0x77, 0x65, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x75, 0x73, 0x65, 0x20, 0x49, + 0x42, 0x4c, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6d, + 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x29, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x20, + 0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, 0x53, 0x63, 0x68, + 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, + 0x73, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, + 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x46, + 0x30, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, + 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x44, 0x20, + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6b, 0x53, 0x3b, 0x0d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x69, - 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x6c, - 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x4e, 0x64, 0x6f, 0x74, - 0x4c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x4e, 0x64, 0x6f, 0x74, 0x4c, 0x20, 0x3d, - 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x4e, 0x2c, 0x20, - 0x4c, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x20, 0x2b, 0x3d, - 0x20, 0x28, 0x6b, 0x44, 0x20, 0x2a, 0x20, 0x61, 0x6c, 0x62, 0x65, 0x64, - 0x6f, 0x20, 0x2f, 0x20, 0x50, 0x49, 0x20, 0x2b, 0x20, 0x73, 0x70, 0x65, - 0x63, 0x75, 0x6c, 0x61, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x72, 0x61, 0x64, - 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x4e, 0x64, 0x6f, 0x74, - 0x4c, 0x3b, 0x2f, 0x2f, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x77, 0x65, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x64, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x52, 0x44, 0x46, 0x20, 0x62, 0x79, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x46, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, - 0x20, 0x28, 0x6b, 0x53, 0x29, 0x20, 0x73, 0x6f, 0x20, 0x77, 0x65, 0x20, - 0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, - 0x6c, 0x79, 0x20, 0x62, 0x79, 0x20, 0x6b, 0x53, 0x20, 0x61, 0x67, 0x61, - 0x69, 0x6e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x2f, 0x20, 0x61, 0x6d, 0x62, - 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x28, 0x77, 0x65, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x75, 0x73, - 0x65, 0x20, 0x49, 0x42, 0x4c, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x65, 0x72, - 0x6d, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x46, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x65, 0x73, 0x6e, 0x65, 0x6c, - 0x53, 0x63, 0x68, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x6f, 0x75, 0x67, 0x68, - 0x6e, 0x65, 0x73, 0x73, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, - 0x28, 0x4e, 0x2c, 0x20, 0x56, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, - 0x2c, 0x20, 0x46, 0x30, 0x2c, 0x20, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6e, - 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6b, 0x53, 0x20, 0x3d, 0x20, 0x46, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x6b, 0x44, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6b, - 0x53, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x44, 0x20, 0x2a, - 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x74, 0x61, - 0x6c, 0x6c, 0x69, 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, - 0x74, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x29, - 0x20, 0x2a, 0x20, 0x61, 0x6f, 0x20, 0x2a, 0x20, 0x73, 0x73, 0x61, 0x6f, - 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x41, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, - 0x54, 0x65, 0x72, 0x6d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, - 0x28, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x2b, 0x20, - 0x4c, 0x6f, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, - 0x2f, 0x20, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x53, - 0x4d, 0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x2e, 0x2e, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x20, - 0x2d, 0x20, 0x75, 0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x6e, 0x74, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, - 0x20, 0x47, 0x65, 0x74, 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x28, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2c, 0x20, 0x4c, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, - 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30, - 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, - 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, - 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, - 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, - 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x29, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, - 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, - 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x29, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, - 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, - 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 0x0d, - 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, - 0x0d, 0x0a, 0x7d + 0x63, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x3d, + 0x20, 0x28, 0x61, 0x6c, 0x62, 0x65, 0x64, 0x6f, 0x29, 0x20, 0x2a, 0x20, + 0x61, 0x6f, 0x20, 0x2a, 0x20, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x2a, 0x20, + 0x75, 0x5f, 0x41, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x72, + 0x6d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, + 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x6d, + 0x62, 0x69, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x2b, 0x20, 0x4c, 0x6f, 0x3b, + 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x44, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x53, 0x4d, 0x20, 0x73, + 0x70, 0x6c, 0x69, 0x74, 0x73, 0x2e, 0x2e, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x2f, 0x2a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x70, + 0x74, 0x68, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x20, 0x2d, 0x20, 0x75, + 0x5f, 0x45, 0x79, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x47, 0x65, + 0x74, 0x43, 0x53, 0x4d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x2c, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, + 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, + 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, + 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x20, + 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, 0x3d, 0x20, + 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, + 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, + 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2a, + 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x61, 0x73, 0x63, + 0x61, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x29, 0x0d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x20, 0x2a, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, + 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 0x0d, 0x0a, 0x0d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x7d }; - unsigned int Resources_Shaders_deferred_shader_len = 10059; + unsigned int Resources_Shaders_deferred_shader_len = 10656; // Data for file: Resources_Shaders_depth_aware_blur_shader_path const std::string Resources_Shaders_depth_aware_blur_shader_path = R"(Resources/Shaders/depth_aware_blur.shader)"; diff --git a/Nuake/src/Scene/Components/LightComponent.h b/Nuake/src/Scene/Components/LightComponent.h index 63aacde2..a5e5f79d 100644 --- a/Nuake/src/Scene/Components/LightComponent.h +++ b/Nuake/src/Scene/Components/LightComponent.h @@ -22,6 +22,8 @@ namespace Nuake public: LightType Type = Point; Vector3 Direction; + float Cutoff = 12.5f; + float OuterCutoff = 20.0f; Vector3 Color; bool IsVolumetric = false; diff --git a/Resources/Shaders/deferred.shader b/Resources/Shaders/deferred.shader index f92515aa..24f48672 100644 --- a/Resources/Shaders/deferred.shader +++ b/Resources/Shaders/deferred.shader @@ -41,12 +41,16 @@ uniform sampler2D m_Emissive; uniform sampler2D m_UVOffset; // Lights -const int MaxLight = 32; +const int MaxLight = 28; uniform int LightCount = 0; struct Light { vec3 Color; vec3 Position; + int Type; // 0 = Point, 1 = Directional, 2 = Spot + vec3 Direction; + float OuterAngle; + float InnerAngle; }; struct DirectionalLight @@ -306,12 +310,24 @@ void main() for (int i = 0; i < LightCount; i++) { + Light light = Lights[i]; vec3 L = normalize(Lights[i].Position - worldPos); - float distance = length(Lights[i].Position - worldPos); + float distance = length(light.Position - worldPos); float attenuation = 1.0 / (distance * distance); - vec3 radiance = Lights[i].Color * attenuation ; + vec3 radiance; + if(Lights[i].Type == 1) // Point + { + radiance = Lights[i].Color * attenuation; + } + else if(Lights[i].Type == 2) // Spot + { + float theta = dot(L, normalize(-Lights[i].Direction)); + float epsilon = Lights[i].InnerAngle - Lights[i].OuterAngle; + float intensity = clamp((theta - Lights[i].OuterAngle) / epsilon, 0.0, 1.0); + radiance = Lights[i].Color * intensity; + } // Cook-Torrance BRDF vec3 H = normalize(V + L);