diff --git a/DiscOut/Program.axaml.cs b/DiscOut/Program.axaml.cs index ae901f1..63804c6 100644 --- a/DiscOut/Program.axaml.cs +++ b/DiscOut/Program.axaml.cs @@ -29,6 +29,6 @@ public static void Main(string[] args) Console.Write($"DISCout Copyright (C) 2023-{DateTime.Now.Year} DISC (Digital Independent specialist College) \nThis program comes with ABSOLUTELY NO WARRANTY;\n"); BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); } - public static AppBuilder BuildAvaloniaApp() => AppBuilderDesktopExtensions.UsePlatformDetect().With(new Win32PlatformOptions { UseWgl = true }).LogToTrace(); + public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure().UsePlatformDetect().With(new Win32PlatformOptions { UseWgl = true }).LogToTrace(); } } \ No newline at end of file diff --git a/DiscOut/Renderer/QuadBatchRenderer.cs b/DiscOut/Renderer/QuadBatchRenderer.cs index 73057f8..0b66caf 100644 --- a/DiscOut/Renderer/QuadBatchRenderer.cs +++ b/DiscOut/Renderer/QuadBatchRenderer.cs @@ -3,137 +3,134 @@ using System; using System.IO; using static Avalonia.OpenGL.GlConsts; -namespace DiscOut.Renderer +namespace DiscOut.Renderer; +internal sealed class QuadBatchRenderer : GlInterfaceBase, IDisposable { - internal sealed class QuadBatchRenderer : GlInterfaceBase, IDisposable - { - private readonly GlInterface GL; - private readonly int vbo; - private readonly int vao; - private readonly int sid; - private readonly int sid_anti_ghost; - private readonly int tex_id; - private Vertex[] quadVertices = new Vertex[714]; - private int vertex_index = 0; + private readonly GlInterface GL; + private readonly int vbo; + private readonly int vao; + private readonly int sid; + private readonly int sid_anti_ghost; + private readonly int tex_id; + private Vertex[] quadVertices = new Vertex[714]; + private int vertex_index = 0; - [GlEntryPoint("glGenVertexArrays")] - public GlGenVertexArrays GenVertexArrays { get; } = null; - public delegate void GlGenVertexArrays(int count, int[] arrays); + [GlEntryPoint("glGenVertexArrays")] + public GlGenVertexArrays GenVertexArrays { get; } = null!; + public delegate void GlGenVertexArrays(int count, int[] arrays); - [GlEntryPoint("glDeleteVertexArrays")] - public GlDeleteVertexArrays DeleteVertexArrays { get; } = null; - public delegate void GlDeleteVertexArrays(int count, int[] buffers); + [GlEntryPoint("glDeleteVertexArrays")] + public GlDeleteVertexArrays DeleteVertexArrays { get; } = null!; + public delegate void GlDeleteVertexArrays(int count, int[] buffers); - [GlEntryPoint("glBindVertexArray")] - public GlBindVertexArray BindVertexArray { get; } = null; - public delegate void GlBindVertexArray(int array); - private static int CreateShader(GlInterface GL, string vertex_source, string fragment_source) - { - int vid = GL.CreateShader(GL_VERTEX_SHADER); - string vertexShaderInfoLog = GL.CompileShaderAndGetError(vid, vertex_source); - if (!string.IsNullOrWhiteSpace(vertexShaderInfoLog)) - throw new FileLoadException($"Vertex shader compilation failed: {vertexShaderInfoLog}"); + [GlEntryPoint("glBindVertexArray")] + public GlBindVertexArray BindVertexArray { get; } = null!; + public delegate void GlBindVertexArray(int array); + private static int CreateShader(GlInterface GL, string vertex_source, string fragment_source) + { + int vid = GL.CreateShader(GL_VERTEX_SHADER); + string vertexShaderInfoLog = GL.CompileShaderAndGetError(vid, vertex_source); + if (!string.IsNullOrWhiteSpace(vertexShaderInfoLog)) + throw new FileLoadException($"Vertex shader compilation failed: {vertexShaderInfoLog}"); - int fid = GL.CreateShader(GL_FRAGMENT_SHADER); - string fragmentShaderInfoLog = GL.CompileShaderAndGetError(fid, fragment_source); - if (!string.IsNullOrWhiteSpace(fragmentShaderInfoLog)) - throw new FileLoadException($"Fragment shader compilation failed: {fragmentShaderInfoLog}"); + int fid = GL.CreateShader(GL_FRAGMENT_SHADER); + string fragmentShaderInfoLog = GL.CompileShaderAndGetError(fid, fragment_source); + if (!string.IsNullOrWhiteSpace(fragmentShaderInfoLog)) + throw new FileLoadException($"Fragment shader compilation failed: {fragmentShaderInfoLog}"); - int id = GL.CreateProgram(); - GL.AttachShader(id, vid); - GL.AttachShader(id, fid); - string programLinkInfoLog = GL.LinkProgramAndGetError(id); - if (!string.IsNullOrWhiteSpace(programLinkInfoLog)) - Console.WriteLine($"Shader program linking has problems: {programLinkInfoLog}"); - GL.DeleteShader(vid); - GL.DeleteShader(fid); - return id; - } + int id = GL.CreateProgram(); + GL.AttachShader(id, vid); + GL.AttachShader(id, fid); + string programLinkInfoLog = GL.LinkProgramAndGetError(id); + if (!string.IsNullOrWhiteSpace(programLinkInfoLog)) + Console.WriteLine($"Shader program linking has problems: {programLinkInfoLog}"); + GL.DeleteShader(vid); + GL.DeleteShader(fid); + return id; + } - public QuadBatchRenderer(GlInterface gl) : base(gl.GetProcAddress, gl.ContextInfo) + public QuadBatchRenderer(GlInterface gl) : base(gl.GetProcAddress, gl.ContextInfo) + { + GL = gl; + string vertex_source = "#version 330 core\r\n// input\r\nlayout(location = 0) in vec2 position;\r\nlayout(location = 1) in float colour;\r\nlayout (location = 2) in float uv;\r\n// output\r\nout vec3 vertex_colour;\r\nout vec2 texture_coord;\r\n\r\n//colour look up\r\nvec3 colours[] = vec3[](vec3(255,255,255),vec3(157, 6, 241),vec3(255, 127, 80),vec3(251, 0, 250),vec3(0, 192, 237),vec3(249, 185, 0),vec3(0, 238, 0));\r\n\r\nvec2 uvs[] = vec2[](vec2(0.0, 0.0),vec2(1.0, 0.0),vec2(0.0, 1.0),vec2(1.0, 1.0));\r\n\r\nvoid main()\r\n{\r\n gl_Position = vec4(position, 0.0, 1.0);\r\n vertex_colour = normalize(colours[int(colour)]);\r\n texture_coord = uvs[int(uv)];\r\n}"; + string fragment_source_basic = "#version 330 core\r\n\r\n// input\r\nin vec3 vertex_colour;\r\nin vec2 texture_coord; //mask texture_coord\r\nuniform sampler2D mask;\r\n// output\r\nout vec4 frag_colour;\r\n\r\nvoid main()\r\n{\r\n precision highp float;\r\n\r\n vec4 texColor = texture2D(mask, texture_coord);\r\n\r\n if (texColor.a < 0.9)\r\n discard;\r\n\r\n float grayscale = dot(texColor.rgb, vec3(0.2126, 0.7152, 0.0722));\r\n vec3 grayscaleColor = vec3(grayscale, grayscale, grayscale);\r\n \r\n frag_colour = vec4(vertex_colour - grayscaleColor,texColor.a);\r\n}"; + string fragment_source_ghost = "#version 330 core\r\n\r\n// input\r\nin vec3 vertex_colour;\r\nin vec2 texture_coord;\r\nuniform sampler2D mask;\r\n// output\r\nout vec4 frag_colour;\r\n\r\nvoid main()\r\n{\r\n precision highp float;\r\n\r\n vec4 texColor = texture2D(mask, texture_coord);\r\n\r\n if (texColor.a < 0.9)\r\n discard;\r\n frag_colour = vec4(vertex_colour,texColor.a);\r\n}"; + sid = CreateShader(gl, vertex_source, fragment_source_basic); + sid_anti_ghost = CreateShader(gl, vertex_source, fragment_source_ghost); + int[] tex = new int[1]; + GL.GenTextures(1, tex); + tex_id = tex[0]; + GL.ActiveTexture(GL_TEXTURE0); + GL.BindTexture(GL_TEXTURE_2D, tex_id); + byte[] data = { 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 56, 56, 6, 63, 63, 63, 91, 69, 69, 69, 172, 75, 75, 75, 223, 80, 80, 80, 250, 84, 84, 84, 255, 88, 88, 88, 255, 90, 90, 90, 255, 92, 92, 92, 255, 93, 93, 93, 255, 94, 94, 94, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 94, 94, 94, 255, 93, 93, 93, 255, 92, 92, 92, 255, 90, 90, 90, 255, 88, 88, 88, 255, 84, 84, 84, 255, 80, 80, 80, 250, 75, 75, 75, 223, 69, 69, 69, 172, 63, 63, 63, 91, 56, 56, 56, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 61, 61, 83, 70, 70, 70, 219, 78, 78, 78, 255, 86, 86, 86, 255, 93, 93, 93, 255, 99, 99, 99, 255, 104, 104, 104, 255, 108, 108, 108, 255, 111, 111, 111, 255, 113, 113, 113, 255, 114, 114, 114, 255, 115, 115, 115, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 115, 115, 115, 255, 114, 114, 114, 255, 113, 113, 113, 255, 111, 111, 111, 255, 108, 108, 108, 255, 104, 104, 104, 255, 99, 99, 99, 255, 93, 93, 93, 255, 86, 86, 86, 255, 79, 79, 79, 255, 70, 70, 70, 219, 61, 61, 61, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 54, 54, 54, 3, 64, 64, 64, 147, 75, 75, 75, 255, 86, 86, 86, 255, 96, 96, 96, 255, 105, 105, 105, 255, 113, 113, 113, 255, 120, 120, 120, 255, 125, 125, 125, 255, 130, 130, 130, 255, 133, 133, 133, 255, 136, 136, 136, 255, 137, 137, 137, 255, 138, 138, 138, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 138, 138, 138, 255, 137, 137, 137, 255, 136, 136, 136, 255, 133, 133, 133, 255, 130, 130, 130, 255, 125, 125, 125, 255, 120, 120, 120, 255, 113, 113, 113, 255, 105, 105, 105, 255, 96, 96, 96, 255, 86, 86, 86, 255, 75, 75, 75, 255, 64, 64, 64, 148, 54, 54, 54, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 64, 64, 138, 77, 77, 77, 255, 89, 89, 89, 255, 101, 101, 101, 255, 113, 113, 113, 255, 123, 123, 123, 255, 132, 132, 132, 255, 139, 139, 139, 255, 146, 146, 146, 255, 151, 151, 151, 255, 155, 155, 155, 255, 157, 157, 157, 255, 158, 158, 158, 255, 159, 159, 159, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 157, 157, 157, 255, 155, 155, 155, 255, 151, 151, 151, 255, 146, 146, 146, 255, 139, 139, 139, 255, 132, 132, 132, 255, 123, 123, 123, 255, 113, 113, 113, 255, 101, 101, 101, 255, 89, 89, 89, 255, 77, 77, 77, 255, 64, 64, 64, 138, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 61, 61, 85, 74, 74, 74, 255, 89, 89, 89, 255, 103, 103, 103, 255, 116, 116, 116, 255, 129, 129, 129, 255, 140, 140, 140, 255, 149, 149, 149, 255, 158, 158, 158, 255, 165, 165, 165, 255, 170, 170, 170, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 178, 178, 178, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 178, 178, 178, 255, 178, 178, 178, 255, 176, 176, 176, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 158, 158, 158, 255, 149, 149, 149, 255, 140, 140, 140, 255, 129, 129, 129, 255, 116, 116, 116, 255, 103, 103, 103, 255, 89, 89, 89, 255, 75, 75, 75, 255, 61, 61, 61, 85, 255, 255, 255, 0, 55, 55, 55, 6, 68, 68, 68, 227, 84, 84, 84, 255, 100, 100, 100, 255, 115, 115, 115, 255, 130, 130, 130, 255, 143, 143, 143, 255, 155, 155, 155, 255, 165, 165, 165, 255, 174, 174, 174, 255, 181, 181, 181, 255, 187, 187, 187, 255, 191, 191, 191, 255, 193, 193, 193, 255, 195, 195, 195, 255, 195, 195, 195, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 195, 195, 195, 255, 195, 195, 195, 255, 193, 193, 193, 255, 191, 191, 191, 255, 187, 187, 187, 255, 181, 181, 181, 255, 174, 174, 174, 255, 165, 165, 165, 255, 155, 155, 155, 255, 143, 143, 143, 255, 130, 130, 130, 255, 115, 115, 115, 255, 100, 100, 100, 255, 84, 84, 84, 255, 69, 69, 69, 228, 55, 55, 55, 7, 60, 60, 60, 91, 75, 75, 75, 255, 92, 92, 92, 255, 110, 110, 110, 255, 126, 126, 126, 255, 142, 142, 142, 255, 156, 156, 156, 255, 168, 168, 168, 255, 179, 179, 179, 255, 189, 189, 189, 255, 196, 196, 196, 255, 202, 202, 202, 255, 206, 206, 206, 255, 208, 208, 208, 255, 209, 209, 209, 255, 210, 210, 210, 255, 210, 210, 210, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 210, 210, 210, 255, 210, 210, 210, 255, 209, 209, 209, 255, 208, 208, 208, 255, 206, 206, 206, 255, 202, 202, 202, 255, 196, 196, 196, 255, 189, 189, 189, 255, 179, 179, 179, 255, 169, 169, 169, 255, 156, 156, 156, 255, 142, 142, 142, 255, 126, 126, 126, 255, 110, 110, 110, 255, 92, 92, 92, 255, 76, 76, 76, 255, 60, 60, 60, 92, 65, 65, 65, 171, 81, 81, 81, 255, 99, 99, 99, 255, 117, 117, 117, 255, 135, 135, 135, 255, 151, 151, 151, 255, 166, 166, 166, 255, 179, 179, 179, 255, 191, 191, 191, 255, 201, 201, 201, 255, 208, 208, 208, 255, 214, 214, 214, 255, 219, 219, 219, 255, 221, 221, 221, 255, 222, 222, 222, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 222, 222, 222, 255, 221, 221, 221, 255, 219, 219, 219, 255, 214, 214, 214, 255, 208, 208, 208, 255, 201, 201, 201, 255, 191, 191, 191, 255, 179, 179, 179, 255, 166, 166, 166, 255, 151, 151, 151, 255, 135, 135, 135, 255, 117, 117, 117, 255, 99, 99, 99, 255, 81, 81, 81, 255, 65, 65, 65, 172, 68, 68, 68, 217, 85, 85, 85, 255, 104, 104, 104, 255, 123, 123, 123, 255, 141, 141, 141, 255, 158, 158, 158, 255, 173, 173, 173, 255, 187, 187, 187, 255, 199, 199, 199, 255, 209, 209, 209, 255, 217, 217, 217, 255, 223, 223, 223, 255, 227, 227, 227, 255, 229, 229, 229, 255, 231, 231, 231, 255, 231, 231, 231, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 231, 231, 231, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 223, 223, 223, 255, 217, 217, 217, 255, 209, 209, 209, 255, 199, 199, 199, 255, 187, 187, 187, 255, 173, 173, 173, 255, 158, 158, 158, 255, 141, 141, 141, 255, 123, 123, 123, 255, 104, 104, 104, 255, 85, 85, 85, 255, 68, 68, 68, 224, 69, 69, 69, 242, 87, 87, 87, 255, 106, 106, 106, 255, 125, 125, 125, 255, 144, 144, 144, 255, 161, 161, 161, 255, 177, 177, 177, 255, 190, 190, 190, 255, 202, 202, 202, 255, 213, 213, 213, 255, 221, 221, 221, 255, 227, 227, 227, 255, 231, 231, 231, 255, 234, 234, 234, 255, 235, 235, 235, 255, 235, 235, 235, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 235, 235, 235, 255, 235, 235, 235, 255, 233, 233, 233, 255, 231, 231, 231, 255, 227, 227, 227, 255, 221, 221, 221, 255, 213, 213, 213, 255, 202, 202, 202, 255, 190, 190, 190, 255, 177, 177, 177, 255, 161, 161, 161, 255, 144, 144, 144, 255, 125, 125, 125, 255, 106, 106, 106, 255, 87, 87, 87, 255, 70, 70, 70, 249, 69, 69, 69, 248, 87, 87, 87, 255, 106, 106, 106, 255, 125, 125, 125, 255, 144, 144, 144, 255, 161, 161, 161, 255, 177, 177, 177, 255, 190, 190, 190, 255, 202, 202, 202, 255, 213, 213, 213, 255, 221, 221, 221, 255, 227, 227, 227, 255, 231, 231, 231, 255, 234, 234, 234, 255, 235, 235, 235, 255, 235, 235, 235, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 235, 235, 235, 255, 235, 235, 235, 255, 233, 233, 233, 255, 231, 231, 231, 255, 227, 227, 227, 255, 221, 221, 221, 255, 213, 213, 213, 255, 202, 202, 202, 255, 190, 190, 190, 255, 177, 177, 177, 255, 161, 161, 161, 255, 144, 144, 144, 255, 125, 125, 125, 255, 106, 106, 106, 255, 87, 87, 87, 255, 70, 70, 70, 249, 68, 68, 68, 224, 85, 85, 85, 255, 104, 104, 104, 255, 123, 123, 123, 255, 141, 141, 141, 255, 158, 158, 158, 255, 173, 173, 173, 255, 187, 187, 187, 255, 199, 199, 199, 255, 209, 209, 209, 255, 217, 217, 217, 255, 223, 223, 223, 255, 227, 227, 227, 255, 229, 229, 229, 255, 231, 231, 231, 255, 231, 231, 231, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 231, 231, 231, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 223, 223, 223, 255, 217, 217, 217, 255, 209, 209, 209, 255, 199, 199, 199, 255, 187, 187, 187, 255, 173, 173, 173, 255, 158, 158, 158, 255, 141, 141, 141, 255, 123, 123, 123, 255, 104, 104, 104, 255, 85, 85, 85, 255, 68, 68, 68, 224, 65, 65, 65, 171, 81, 81, 81, 255, 99, 99, 99, 255, 117, 117, 117, 255, 135, 135, 135, 255, 151, 151, 151, 255, 166, 166, 166, 255, 179, 179, 179, 255, 191, 191, 191, 255, 201, 201, 201, 255, 208, 208, 208, 255, 214, 214, 214, 255, 219, 219, 219, 255, 221, 221, 221, 255, 222, 222, 222, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 222, 222, 222, 255, 221, 221, 221, 255, 219, 219, 219, 255, 214, 214, 214, 255, 208, 208, 208, 255, 201, 201, 201, 255, 191, 191, 191, 255, 179, 179, 179, 255, 166, 166, 166, 255, 151, 151, 151, 255, 135, 135, 135, 255, 117, 117, 117, 255, 99, 99, 99, 255, 81, 81, 81, 255, 65, 65, 65, 172, 60, 60, 60, 91, 75, 75, 75, 255, 92, 92, 92, 255, 110, 110, 110, 255, 126, 126, 126, 255, 142, 142, 142, 255, 156, 156, 156, 255, 168, 168, 168, 255, 179, 179, 179, 255, 189, 189, 189, 255, 196, 196, 196, 255, 202, 202, 202, 255, 206, 206, 206, 255, 208, 208, 208, 255, 209, 209, 209, 255, 210, 210, 210, 255, 210, 210, 210, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 210, 210, 210, 255, 210, 210, 210, 255, 209, 209, 209, 255, 208, 208, 208, 255, 206, 206, 206, 255, 202, 202, 202, 255, 196, 196, 196, 255, 189, 189, 189, 255, 179, 179, 179, 255, 168, 168, 168, 255, 156, 156, 156, 255, 142, 142, 142, 255, 126, 126, 126, 255, 110, 110, 110, 255, 92, 92, 92, 255, 75, 75, 75, 255, 60, 60, 60, 92, 55, 55, 55, 6, 68, 68, 68, 227, 84, 84, 84, 255, 100, 100, 100, 255, 115, 115, 115, 255, 130, 130, 130, 255, 143, 143, 143, 255, 155, 155, 155, 255, 165, 165, 165, 255, 174, 174, 174, 255, 181, 181, 181, 255, 187, 187, 187, 255, 191, 191, 191, 255, 193, 193, 193, 255, 195, 195, 195, 255, 195, 195, 195, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 195, 195, 195, 255, 195, 195, 195, 255, 193, 193, 193, 255, 191, 191, 191, 255, 187, 187, 187, 255, 181, 181, 181, 255, 174, 174, 174, 255, 165, 165, 165, 255, 155, 155, 155, 255, 143, 143, 143, 255, 130, 130, 130, 255, 115, 115, 115, 255, 100, 100, 100, 255, 84, 84, 84, 255, 69, 69, 69, 228, 55, 55, 55, 6, 255, 255, 255, 0, 61, 61, 61, 84, 74, 74, 74, 255, 89, 89, 89, 255, 103, 103, 103, 255, 116, 116, 116, 255, 129, 129, 129, 255, 140, 140, 140, 255, 149, 149, 149, 255, 158, 158, 158, 255, 165, 165, 165, 255, 170, 170, 170, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 178, 178, 178, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 178, 178, 178, 255, 177, 177, 177, 255, 176, 176, 176, 255, 174, 174, 174, 255, 170, 170, 170, 255, 164, 164, 164, 255, 158, 158, 158, 255, 149, 149, 149, 255, 140, 140, 140, 255, 128, 128, 128, 255, 116, 116, 116, 255, 103, 103, 103, 255, 89, 89, 89, 255, 74, 74, 74, 255, 61, 61, 61, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 64, 64, 137, 77, 77, 77, 255, 89, 89, 89, 255, 101, 101, 101, 255, 113, 113, 113, 255, 123, 123, 123, 255, 132, 132, 132, 255, 139, 139, 139, 255, 146, 146, 146, 255, 151, 151, 151, 255, 154, 154, 154, 255, 157, 157, 157, 255, 158, 158, 158, 255, 159, 159, 159, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 157, 157, 157, 255, 154, 154, 154, 255, 151, 151, 151, 255, 146, 146, 146, 255, 139, 139, 139, 255, 132, 132, 132, 255, 123, 123, 123, 255, 112, 112, 112, 255, 101, 101, 101, 255, 89, 89, 89, 255, 77, 77, 77, 255, 64, 64, 64, 137, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 54, 54, 54, 3, 64, 64, 64, 137, 75, 75, 75, 255, 86, 86, 86, 255, 96, 96, 96, 255, 105, 105, 105, 255, 113, 113, 113, 255, 120, 120, 120, 255, 125, 125, 125, 255, 130, 130, 130, 255, 133, 133, 133, 255, 136, 136, 136, 255, 137, 137, 137, 255, 138, 138, 138, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 138, 138, 138, 255, 137, 137, 137, 255, 136, 136, 136, 255, 133, 133, 133, 255, 130, 130, 130, 255, 125, 125, 125, 255, 119, 119, 119, 255, 112, 112, 112, 255, 104, 104, 104, 255, 95, 95, 95, 255, 86, 86, 86, 255, 75, 75, 75, 255, 64, 64, 64, 137, 54, 54, 54, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 61, 61, 81, 70, 70, 70, 219, 78, 78, 78, 255, 86, 86, 86, 255, 93, 93, 93, 255, 99, 99, 99, 255, 104, 104, 104, 255, 108, 108, 108, 255, 111, 111, 111, 255, 113, 113, 113, 255, 114, 114, 114, 255, 115, 115, 115, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 115, 115, 115, 255, 114, 114, 114, 255, 113, 113, 113, 255, 111, 111, 111, 255, 108, 108, 108, 255, 104, 104, 104, 255, 99, 99, 99, 255, 93, 93, 93, 255, 86, 86, 86, 255, 78, 78, 78, 255, 70, 70, 70, 219, 61, 61, 61, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 56, 56, 6, 63, 63, 63, 86, 69, 69, 69, 166, 75, 75, 75, 223, 80, 80, 80, 249, 84, 84, 84, 255, 88, 88, 88, 255, 90, 90, 90, 255, 92, 92, 92, 255, 93, 93, 93, 255, 94, 94, 94, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 94, 94, 94, 255, 94, 94, 94, 255, 93, 93, 93, 255, 92, 92, 92, 255, 90, 90, 90, 255, 88, 88, 88, 255, 84, 84, 84, 255, 80, 80, 80, 243, 75, 75, 75, 215, 69, 69, 69, 166, 63, 63, 63, 85, 56, 56, 56, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0 }; + unsafe { - GL = gl; - string vertex_source = "#version 330 core\r\n// input\r\nlayout(location = 0) in vec2 position;\r\nlayout(location = 1) in float colour;\r\nlayout (location = 2) in float uv;\r\n// output\r\nout vec3 vertex_colour;\r\nout vec2 texture_coord;\r\n\r\n//colour look up\r\nvec3 colours[] = vec3[](vec3(255,255,255),vec3(157, 6, 241),vec3(255, 127, 80),vec3(251, 0, 250),vec3(0, 192, 237),vec3(249, 185, 0),vec3(0, 238, 0));\r\n\r\nvec2 uvs[] = vec2[](vec2(0.0, 0.0),vec2(1.0, 0.0),vec2(0.0, 1.0),vec2(1.0, 1.0));\r\n\r\nvoid main()\r\n{\r\n gl_Position = vec4(position, 0.0, 1.0);\r\n vertex_colour = normalize(colours[int(colour)]);\r\n texture_coord = uvs[int(uv)];\r\n}"; - string fragment_source_basic = "#version 330 core\r\n\r\n// input\r\nin vec3 vertex_colour;\r\nin vec2 texture_coord; //mask texture_coord\r\nuniform sampler2D mask;\r\n// output\r\nout vec4 frag_colour;\r\n\r\nvoid main()\r\n{\r\n precision highp float;\r\n\r\n vec4 texColor = texture2D(mask, texture_coord);\r\n\r\n if (texColor.a < 0.9)\r\n discard;\r\n\r\n float grayscale = dot(texColor.rgb, vec3(0.2126, 0.7152, 0.0722));\r\n vec3 grayscaleColor = vec3(grayscale, grayscale, grayscale);\r\n \r\n frag_colour = vec4(vertex_colour - grayscaleColor,texColor.a);\r\n}"; - string fragment_source_ghost = "#version 330 core\r\n\r\n// input\r\nin vec3 vertex_colour;\r\nin vec2 texture_coord;\r\nuniform sampler2D mask;\r\n// output\r\nout vec4 frag_colour;\r\n\r\nvoid main()\r\n{\r\n precision highp float;\r\n\r\n vec4 texColor = texture2D(mask, texture_coord);\r\n\r\n if (texColor.a < 0.9)\r\n discard;\r\n frag_colour = vec4(vertex_colour,texColor.a);\r\n}"; - sid = CreateShader(gl, vertex_source, fragment_source_basic); - sid_anti_ghost = CreateShader(gl, vertex_source, fragment_source_ghost); - int[] tex = new int[1]; - GL.GenTextures(1, tex); - tex_id = tex[0]; - GL.ActiveTexture(GL_TEXTURE0); - GL.BindTexture(GL_TEXTURE_2D, tex_id); - byte[] data = { 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 56, 56, 6, 63, 63, 63, 91, 69, 69, 69, 172, 75, 75, 75, 223, 80, 80, 80, 250, 84, 84, 84, 255, 88, 88, 88, 255, 90, 90, 90, 255, 92, 92, 92, 255, 93, 93, 93, 255, 94, 94, 94, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 94, 94, 94, 255, 93, 93, 93, 255, 92, 92, 92, 255, 90, 90, 90, 255, 88, 88, 88, 255, 84, 84, 84, 255, 80, 80, 80, 250, 75, 75, 75, 223, 69, 69, 69, 172, 63, 63, 63, 91, 56, 56, 56, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 61, 61, 83, 70, 70, 70, 219, 78, 78, 78, 255, 86, 86, 86, 255, 93, 93, 93, 255, 99, 99, 99, 255, 104, 104, 104, 255, 108, 108, 108, 255, 111, 111, 111, 255, 113, 113, 113, 255, 114, 114, 114, 255, 115, 115, 115, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 115, 115, 115, 255, 114, 114, 114, 255, 113, 113, 113, 255, 111, 111, 111, 255, 108, 108, 108, 255, 104, 104, 104, 255, 99, 99, 99, 255, 93, 93, 93, 255, 86, 86, 86, 255, 79, 79, 79, 255, 70, 70, 70, 219, 61, 61, 61, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 54, 54, 54, 3, 64, 64, 64, 147, 75, 75, 75, 255, 86, 86, 86, 255, 96, 96, 96, 255, 105, 105, 105, 255, 113, 113, 113, 255, 120, 120, 120, 255, 125, 125, 125, 255, 130, 130, 130, 255, 133, 133, 133, 255, 136, 136, 136, 255, 137, 137, 137, 255, 138, 138, 138, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 138, 138, 138, 255, 137, 137, 137, 255, 136, 136, 136, 255, 133, 133, 133, 255, 130, 130, 130, 255, 125, 125, 125, 255, 120, 120, 120, 255, 113, 113, 113, 255, 105, 105, 105, 255, 96, 96, 96, 255, 86, 86, 86, 255, 75, 75, 75, 255, 64, 64, 64, 148, 54, 54, 54, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 64, 64, 138, 77, 77, 77, 255, 89, 89, 89, 255, 101, 101, 101, 255, 113, 113, 113, 255, 123, 123, 123, 255, 132, 132, 132, 255, 139, 139, 139, 255, 146, 146, 146, 255, 151, 151, 151, 255, 155, 155, 155, 255, 157, 157, 157, 255, 158, 158, 158, 255, 159, 159, 159, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 157, 157, 157, 255, 155, 155, 155, 255, 151, 151, 151, 255, 146, 146, 146, 255, 139, 139, 139, 255, 132, 132, 132, 255, 123, 123, 123, 255, 113, 113, 113, 255, 101, 101, 101, 255, 89, 89, 89, 255, 77, 77, 77, 255, 64, 64, 64, 138, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 61, 61, 85, 74, 74, 74, 255, 89, 89, 89, 255, 103, 103, 103, 255, 116, 116, 116, 255, 129, 129, 129, 255, 140, 140, 140, 255, 149, 149, 149, 255, 158, 158, 158, 255, 165, 165, 165, 255, 170, 170, 170, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 178, 178, 178, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 178, 178, 178, 255, 178, 178, 178, 255, 176, 176, 176, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 158, 158, 158, 255, 149, 149, 149, 255, 140, 140, 140, 255, 129, 129, 129, 255, 116, 116, 116, 255, 103, 103, 103, 255, 89, 89, 89, 255, 75, 75, 75, 255, 61, 61, 61, 85, 255, 255, 255, 0, 55, 55, 55, 6, 68, 68, 68, 227, 84, 84, 84, 255, 100, 100, 100, 255, 115, 115, 115, 255, 130, 130, 130, 255, 143, 143, 143, 255, 155, 155, 155, 255, 165, 165, 165, 255, 174, 174, 174, 255, 181, 181, 181, 255, 187, 187, 187, 255, 191, 191, 191, 255, 193, 193, 193, 255, 195, 195, 195, 255, 195, 195, 195, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 195, 195, 195, 255, 195, 195, 195, 255, 193, 193, 193, 255, 191, 191, 191, 255, 187, 187, 187, 255, 181, 181, 181, 255, 174, 174, 174, 255, 165, 165, 165, 255, 155, 155, 155, 255, 143, 143, 143, 255, 130, 130, 130, 255, 115, 115, 115, 255, 100, 100, 100, 255, 84, 84, 84, 255, 69, 69, 69, 228, 55, 55, 55, 7, 60, 60, 60, 91, 75, 75, 75, 255, 92, 92, 92, 255, 110, 110, 110, 255, 126, 126, 126, 255, 142, 142, 142, 255, 156, 156, 156, 255, 168, 168, 168, 255, 179, 179, 179, 255, 189, 189, 189, 255, 196, 196, 196, 255, 202, 202, 202, 255, 206, 206, 206, 255, 208, 208, 208, 255, 209, 209, 209, 255, 210, 210, 210, 255, 210, 210, 210, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 210, 210, 210, 255, 210, 210, 210, 255, 209, 209, 209, 255, 208, 208, 208, 255, 206, 206, 206, 255, 202, 202, 202, 255, 196, 196, 196, 255, 189, 189, 189, 255, 179, 179, 179, 255, 169, 169, 169, 255, 156, 156, 156, 255, 142, 142, 142, 255, 126, 126, 126, 255, 110, 110, 110, 255, 92, 92, 92, 255, 76, 76, 76, 255, 60, 60, 60, 92, 65, 65, 65, 171, 81, 81, 81, 255, 99, 99, 99, 255, 117, 117, 117, 255, 135, 135, 135, 255, 151, 151, 151, 255, 166, 166, 166, 255, 179, 179, 179, 255, 191, 191, 191, 255, 201, 201, 201, 255, 208, 208, 208, 255, 214, 214, 214, 255, 219, 219, 219, 255, 221, 221, 221, 255, 222, 222, 222, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 222, 222, 222, 255, 221, 221, 221, 255, 219, 219, 219, 255, 214, 214, 214, 255, 208, 208, 208, 255, 201, 201, 201, 255, 191, 191, 191, 255, 179, 179, 179, 255, 166, 166, 166, 255, 151, 151, 151, 255, 135, 135, 135, 255, 117, 117, 117, 255, 99, 99, 99, 255, 81, 81, 81, 255, 65, 65, 65, 172, 68, 68, 68, 217, 85, 85, 85, 255, 104, 104, 104, 255, 123, 123, 123, 255, 141, 141, 141, 255, 158, 158, 158, 255, 173, 173, 173, 255, 187, 187, 187, 255, 199, 199, 199, 255, 209, 209, 209, 255, 217, 217, 217, 255, 223, 223, 223, 255, 227, 227, 227, 255, 229, 229, 229, 255, 231, 231, 231, 255, 231, 231, 231, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 231, 231, 231, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 223, 223, 223, 255, 217, 217, 217, 255, 209, 209, 209, 255, 199, 199, 199, 255, 187, 187, 187, 255, 173, 173, 173, 255, 158, 158, 158, 255, 141, 141, 141, 255, 123, 123, 123, 255, 104, 104, 104, 255, 85, 85, 85, 255, 68, 68, 68, 224, 69, 69, 69, 242, 87, 87, 87, 255, 106, 106, 106, 255, 125, 125, 125, 255, 144, 144, 144, 255, 161, 161, 161, 255, 177, 177, 177, 255, 190, 190, 190, 255, 202, 202, 202, 255, 213, 213, 213, 255, 221, 221, 221, 255, 227, 227, 227, 255, 231, 231, 231, 255, 234, 234, 234, 255, 235, 235, 235, 255, 235, 235, 235, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 235, 235, 235, 255, 235, 235, 235, 255, 233, 233, 233, 255, 231, 231, 231, 255, 227, 227, 227, 255, 221, 221, 221, 255, 213, 213, 213, 255, 202, 202, 202, 255, 190, 190, 190, 255, 177, 177, 177, 255, 161, 161, 161, 255, 144, 144, 144, 255, 125, 125, 125, 255, 106, 106, 106, 255, 87, 87, 87, 255, 70, 70, 70, 249, 69, 69, 69, 248, 87, 87, 87, 255, 106, 106, 106, 255, 125, 125, 125, 255, 144, 144, 144, 255, 161, 161, 161, 255, 177, 177, 177, 255, 190, 190, 190, 255, 202, 202, 202, 255, 213, 213, 213, 255, 221, 221, 221, 255, 227, 227, 227, 255, 231, 231, 231, 255, 234, 234, 234, 255, 235, 235, 235, 255, 235, 235, 235, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 235, 235, 235, 255, 235, 235, 235, 255, 233, 233, 233, 255, 231, 231, 231, 255, 227, 227, 227, 255, 221, 221, 221, 255, 213, 213, 213, 255, 202, 202, 202, 255, 190, 190, 190, 255, 177, 177, 177, 255, 161, 161, 161, 255, 144, 144, 144, 255, 125, 125, 125, 255, 106, 106, 106, 255, 87, 87, 87, 255, 70, 70, 70, 249, 68, 68, 68, 224, 85, 85, 85, 255, 104, 104, 104, 255, 123, 123, 123, 255, 141, 141, 141, 255, 158, 158, 158, 255, 173, 173, 173, 255, 187, 187, 187, 255, 199, 199, 199, 255, 209, 209, 209, 255, 217, 217, 217, 255, 223, 223, 223, 255, 227, 227, 227, 255, 229, 229, 229, 255, 231, 231, 231, 255, 231, 231, 231, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 231, 231, 231, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 223, 223, 223, 255, 217, 217, 217, 255, 209, 209, 209, 255, 199, 199, 199, 255, 187, 187, 187, 255, 173, 173, 173, 255, 158, 158, 158, 255, 141, 141, 141, 255, 123, 123, 123, 255, 104, 104, 104, 255, 85, 85, 85, 255, 68, 68, 68, 224, 65, 65, 65, 171, 81, 81, 81, 255, 99, 99, 99, 255, 117, 117, 117, 255, 135, 135, 135, 255, 151, 151, 151, 255, 166, 166, 166, 255, 179, 179, 179, 255, 191, 191, 191, 255, 201, 201, 201, 255, 208, 208, 208, 255, 214, 214, 214, 255, 219, 219, 219, 255, 221, 221, 221, 255, 222, 222, 222, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 222, 222, 222, 255, 221, 221, 221, 255, 219, 219, 219, 255, 214, 214, 214, 255, 208, 208, 208, 255, 201, 201, 201, 255, 191, 191, 191, 255, 179, 179, 179, 255, 166, 166, 166, 255, 151, 151, 151, 255, 135, 135, 135, 255, 117, 117, 117, 255, 99, 99, 99, 255, 81, 81, 81, 255, 65, 65, 65, 172, 60, 60, 60, 91, 75, 75, 75, 255, 92, 92, 92, 255, 110, 110, 110, 255, 126, 126, 126, 255, 142, 142, 142, 255, 156, 156, 156, 255, 168, 168, 168, 255, 179, 179, 179, 255, 189, 189, 189, 255, 196, 196, 196, 255, 202, 202, 202, 255, 206, 206, 206, 255, 208, 208, 208, 255, 209, 209, 209, 255, 210, 210, 210, 255, 210, 210, 210, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 210, 210, 210, 255, 210, 210, 210, 255, 209, 209, 209, 255, 208, 208, 208, 255, 206, 206, 206, 255, 202, 202, 202, 255, 196, 196, 196, 255, 189, 189, 189, 255, 179, 179, 179, 255, 168, 168, 168, 255, 156, 156, 156, 255, 142, 142, 142, 255, 126, 126, 126, 255, 110, 110, 110, 255, 92, 92, 92, 255, 75, 75, 75, 255, 60, 60, 60, 92, 55, 55, 55, 6, 68, 68, 68, 227, 84, 84, 84, 255, 100, 100, 100, 255, 115, 115, 115, 255, 130, 130, 130, 255, 143, 143, 143, 255, 155, 155, 155, 255, 165, 165, 165, 255, 174, 174, 174, 255, 181, 181, 181, 255, 187, 187, 187, 255, 191, 191, 191, 255, 193, 193, 193, 255, 195, 195, 195, 255, 195, 195, 195, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 196, 196, 196, 255, 195, 195, 195, 255, 195, 195, 195, 255, 193, 193, 193, 255, 191, 191, 191, 255, 187, 187, 187, 255, 181, 181, 181, 255, 174, 174, 174, 255, 165, 165, 165, 255, 155, 155, 155, 255, 143, 143, 143, 255, 130, 130, 130, 255, 115, 115, 115, 255, 100, 100, 100, 255, 84, 84, 84, 255, 69, 69, 69, 228, 55, 55, 55, 6, 255, 255, 255, 0, 61, 61, 61, 84, 74, 74, 74, 255, 89, 89, 89, 255, 103, 103, 103, 255, 116, 116, 116, 255, 129, 129, 129, 255, 140, 140, 140, 255, 149, 149, 149, 255, 158, 158, 158, 255, 165, 165, 165, 255, 170, 170, 170, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 178, 178, 178, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 178, 178, 178, 255, 177, 177, 177, 255, 176, 176, 176, 255, 174, 174, 174, 255, 170, 170, 170, 255, 164, 164, 164, 255, 158, 158, 158, 255, 149, 149, 149, 255, 140, 140, 140, 255, 128, 128, 128, 255, 116, 116, 116, 255, 103, 103, 103, 255, 89, 89, 89, 255, 74, 74, 74, 255, 61, 61, 61, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 64, 64, 137, 77, 77, 77, 255, 89, 89, 89, 255, 101, 101, 101, 255, 113, 113, 113, 255, 123, 123, 123, 255, 132, 132, 132, 255, 139, 139, 139, 255, 146, 146, 146, 255, 151, 151, 151, 255, 154, 154, 154, 255, 157, 157, 157, 255, 158, 158, 158, 255, 159, 159, 159, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 157, 157, 157, 255, 154, 154, 154, 255, 151, 151, 151, 255, 146, 146, 146, 255, 139, 139, 139, 255, 132, 132, 132, 255, 123, 123, 123, 255, 112, 112, 112, 255, 101, 101, 101, 255, 89, 89, 89, 255, 77, 77, 77, 255, 64, 64, 64, 137, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 54, 54, 54, 3, 64, 64, 64, 137, 75, 75, 75, 255, 86, 86, 86, 255, 96, 96, 96, 255, 105, 105, 105, 255, 113, 113, 113, 255, 120, 120, 120, 255, 125, 125, 125, 255, 130, 130, 130, 255, 133, 133, 133, 255, 136, 136, 136, 255, 137, 137, 137, 255, 138, 138, 138, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 139, 139, 139, 255, 138, 138, 138, 255, 137, 137, 137, 255, 136, 136, 136, 255, 133, 133, 133, 255, 130, 130, 130, 255, 125, 125, 125, 255, 119, 119, 119, 255, 112, 112, 112, 255, 104, 104, 104, 255, 95, 95, 95, 255, 86, 86, 86, 255, 75, 75, 75, 255, 64, 64, 64, 137, 54, 54, 54, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 61, 61, 81, 70, 70, 70, 219, 78, 78, 78, 255, 86, 86, 86, 255, 93, 93, 93, 255, 99, 99, 99, 255, 104, 104, 104, 255, 108, 108, 108, 255, 111, 111, 111, 255, 113, 113, 113, 255, 114, 114, 114, 255, 115, 115, 115, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 116, 116, 116, 255, 115, 115, 115, 255, 114, 114, 114, 255, 113, 113, 113, 255, 111, 111, 111, 255, 108, 108, 108, 255, 104, 104, 104, 255, 99, 99, 99, 255, 93, 93, 93, 255, 86, 86, 86, 255, 78, 78, 78, 255, 70, 70, 70, 219, 61, 61, 61, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 56, 56, 6, 63, 63, 63, 86, 69, 69, 69, 166, 75, 75, 75, 223, 80, 80, 80, 249, 84, 84, 84, 255, 88, 88, 88, 255, 90, 90, 90, 255, 92, 92, 92, 255, 93, 93, 93, 255, 94, 94, 94, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 95, 95, 95, 255, 94, 94, 94, 255, 94, 94, 94, 255, 93, 93, 93, 255, 92, 92, 92, 255, 90, 90, 90, 255, 88, 88, 88, 255, 84, 84, 84, 255, 80, 80, 80, 243, 75, 75, 75, 215, 69, 69, 69, 166, 63, 63, 63, 85, 56, 56, 56, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0 }; - unsafe - { - fixed (void* ptr_data = data) - GL.TexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 160, 20, 0, GL_RGBA, GL_UNSIGNED_BYTE, new IntPtr(ptr_data)); - } - GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - vbo = GL.GenBuffer(); - int[] vaos = new int[1]; - GenVertexArrays(1, vaos); - vao = vaos[0]; - BindVertexArray(vao); - GL.BindBuffer(GL_ARRAY_BUFFER, vbo); - GL.VertexAttribPointer(0, 2, GL_FLOAT, 0, 4 * sizeof(float), new IntPtr(0)); - GL.EnableVertexAttribArray(0); - GL.VertexAttribPointer(1, 1, GL_FLOAT, 0, 4 * sizeof(float), 2 * sizeof(float)); - GL.EnableVertexAttribArray(1); - GL.VertexAttribPointer(2, 1, GL_FLOAT, 0, 4 * sizeof(float), 3 * sizeof(float)); - GL.EnableVertexAttribArray(2); - BindVertexArray(0); + fixed (void* ptr_data = data) + GL.TexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 160, 20, 0, GL_RGBA, GL_UNSIGNED_BYTE, new nint(ptr_data)); } + GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + GL.TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + vbo = GL.GenBuffer(); + int[] vaos = new int[1]; + GenVertexArrays(1, vaos); + vao = vaos[0]; + BindVertexArray(vao); + GL.BindBuffer(GL_ARRAY_BUFFER, vbo); + GL.VertexAttribPointer(0, 2, GL_FLOAT, 0, 4 * sizeof(float), 0); + GL.EnableVertexAttribArray(0); + GL.VertexAttribPointer(1, 1, GL_FLOAT, 0, 4 * sizeof(float), 2 * sizeof(float)); + GL.EnableVertexAttribArray(1); + GL.VertexAttribPointer(2, 1, GL_FLOAT, 0, 4 * sizeof(float), 3 * sizeof(float)); + GL.EnableVertexAttribArray(2); + BindVertexArray(0); + } - public void AddQuad(Vertex[] Vertices) - { - int i = 0; - for (; vertex_index < 714 && i != Vertices.Length;) - quadVertices[vertex_index++] = Vertices[i++]; - } + public void AddQuad(Vertex[] Vertices) + { + int i = 0; + for (; vertex_index < 714 && i != Vertices.Length;) + quadVertices[vertex_index++] = Vertices[i++]; + } - public void AddQuad(float x, float y, float width, float height, float color) + public void AddQuad(float x, float y, float width, float height, float color) + { + VertexUtils.PreMakeQuad(x, y, width, height, color, ref quadVertices, vertex_index); + vertex_index += 6; + } + + private void ShaderFlush(int id) + { + BindVertexArray(vao); + unsafe { - VertexUtils.PreMakeQuad(x, y, width, height, color, ref quadVertices, vertex_index); - vertex_index += 6; + fixed (void* ptr_data = quadVertices) + GL.BufferData(GL_ARRAY_BUFFER, quadVertices.Length * 4 * sizeof(float), new nint(ptr_data), GL_DYNAMIC_DRAW); } - - private unsafe void ShaderFlush(int id) + GL.BindTexture(GL_TEXTURE_2D, tex_id); + GL.UseProgram(id); + GL.DrawArrays(GL_TRIANGLES, 0, quadVertices.Length); + BindVertexArray(0); + vertex_index = 0; + for (int i = 0; i < quadVertices.Length; i++) { - BindVertexArray(vao); - unsafe - { - fixed (void* ptr_data = quadVertices) - GL.BufferData(GL_ARRAY_BUFFER, quadVertices.Length * 4 * sizeof(float), new IntPtr(ptr_data), GL_DYNAMIC_DRAW); - } - GL.BindTexture(GL_TEXTURE_2D, tex_id); - GL.UseProgram(id); - int size = quadVertices.Length; - GL.DrawArrays(GL_TRIANGLES, 0, new IntPtr(&size)); - BindVertexArray(0); - vertex_index = 0; - for (int i = 0; i < quadVertices.Length; i++) - { - quadVertices[i].UvID = 0f; - quadVertices[i].ColorID = 0f; - quadVertices[i].X = 0f; - quadVertices[i].Y = 0f; - } + quadVertices[i].UvID = 0f; + quadVertices[i].ColorID = 0f; + quadVertices[i].X = 0f; + quadVertices[i].Y = 0f; } + } - public void Flush() => ShaderFlush(sid); - public void FlushAntiGhost() => ShaderFlush(sid_anti_ghost); + public void Flush() => ShaderFlush(sid); + public void FlushAntiGhost() => ShaderFlush(sid_anti_ghost); - public void Dispose() - { - GL.DeleteBuffers(1, new[] { vbo }); - DeleteVertexArrays(1, new[] { vao }); - GL.DeleteProgram(sid); - GL.DeleteProgram(sid_anti_ghost); - GL.DeleteTextures(1, new[] { tex_id }); - } + public void Dispose() + { + GL.DeleteBuffers(1, new[] { vbo }); + DeleteVertexArrays(1, new[] { vao }); + GL.DeleteProgram(sid); + GL.DeleteProgram(sid_anti_ghost); + GL.DeleteTextures(1, new[] { tex_id }); } } \ No newline at end of file diff --git a/SquareSmash.csproj b/SquareSmash.csproj index b135c3b..44d6e69 100644 --- a/SquareSmash.csproj +++ b/SquareSmash.csproj @@ -1,7 +1,7 @@ Exe - netstandard2.1 + net7.0 true true diff --git a/SquareSmash.sln b/SquareSmash.sln deleted file mode 100644 index 3292a8f..0000000 --- a/SquareSmash.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.7.33808.371 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SquareSmash", "SquareSmash.csproj", "{92802523-BB23-4993-BFD2-8D6513482DA8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {92802523-BB23-4993-BFD2-8D6513482DA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92802523-BB23-4993-BFD2-8D6513482DA8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92802523-BB23-4993-BFD2-8D6513482DA8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92802523-BB23-4993-BFD2-8D6513482DA8}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {776A66BB-161C-487A-9704-407C5C31DD20} - EndGlobalSection -EndGlobal