diff --git a/build.sh b/build.sh index 3c2663e..fa6f212 100755 --- a/build.sh +++ b/build.sh @@ -1,8 +1,4 @@ #!/bin/bash set -e -cd src/shaders/ -./compile_shaders.sh -cd .. -cd .. jai -x64 first.jai ./first diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 25bd570..bea18e0 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -124,8 +124,7 @@ beachgame/ │ │ ├── helpers.jai create_world_rendering_tasks(), uniform helpers │ │ ├── arbtri.jai Immediate-mode triangle batch renderer (UI) │ │ ├── post_processing.jai Post-process config, LUT management -│ │ ├── sky.jai Sky rendering helpers -│ │ └── ssao.jai SSAO kernel/noise generation +│ │ └── sky.jai Sky rendering helpers │ │ │ ├── editor/ │ │ ├── editor.jai Editor root: three views, F3 toggle @@ -249,10 +248,8 @@ Sokol GFX draw calls | Setup | GPU position/uniform buffers | Uploads trile instance stream data | | Shadow | 1000×1000 depth texture | Orthographic sun directional light; PCF soft edges (Gaussian-weighted sampling) | | Reflection | Half-res RGBA32F texture | Planar water reflection: camera Y-flipped around water plane; handles dynamic objects that RDMs cannot | -| G-Buffer | Position + Normal RGBA16F | Used by SSAO and deferred effects | -| SSAO | Single-channel AO texture | Random sample kernel, 64 samples | -| SSAO Blur | Blurred AO texture | Separable blur | -| Main | RGBA32F HDR target | Forward render: sun direct + RDM indirect (specular + diffuse) + SSAO | +| G-Buffer | Position + Normal RGBA16F | Used by SH irradiance and deferred effects | +| Main | RGBA32F HDR target | Forward render: albedo-first trile shading with trixel AO and sky fog; RDM triles keep PBR | | Post chain | Bloom → DoF ping-pong | Between postprocess_a / postprocess_b | | Final | Swapchain | Tonemap, LUT grade, vignette, grain | @@ -371,12 +368,31 @@ handles dynamic objects (players, ball) that do not appear in the static RDMs, a sharp mirror-like reflections correct for large flat surfaces. Post-processing can add ripple distortion to the reflection texture. -#### SSAO +#### Trixel AO -Screen-space ambient occlusion darkens cavities and contact areas. A geometry pass outputs -world-space position and normal (RGBA16F G-buffer), then the SSAO pass samples 64 random -offsets to estimate local occlusion. The result is blurred with a separable filter and applied to -the ambient/diffuse contribution. +Ambient occlusion is worked out per pixel in the trile shaders, voxel style, from the trile's +16³ trixel grid: each corner of a trixel face is darkened by the trixels in front of it, and the +four corners are blended across the face. It darkens all of a face's lighting, squared for crisp +edges and scaled by `trixel_ao_strength` in the lighting config. + +To carry across trile boundaries, every instance knows which of its 26 surrounding cells hold an +opaque trile (`Chunk_Trile_Group.neighbours`, computed alongside `is_buried`). Those cells count +as solid throughout. The mask is in the trile's own unrotated frame and is packed together with +the orientation into the instance's `w` (`trile_instance_w`), so every shader that reads the +orientation decodes it first. + +#### Trile shading + +Opaque triles are shaded albedo-first, after Fez: a sunlit face shows its colour, a shaded face +that colour times `shadow_tint`, slightly more saturated. Top, x sides, z sides and bottom each +get a fixed brightness (`face_shade_*`). Trixel colours are converted from sRGB to linear before +lighting. Specular only appears on smooth materials: roughness 0..7 is read as gloss +`1 - roughness/7`, so roughness 7 never shines. Fog takes the sky colour in the view direction, +climbs to `fog_max` between `fog_start` and `fog_end`, then to fully fogged by the LOD cull +distance so nothing pops. All of it lives in `Lighting_Config`, saved to +`game_core/lighting.json` next to `postprocess.json`; `lighting_debug` shows colour × face shade +(1), AO (2) or light only (3). Post adds `tonemap = 2`, a hue-preserving soft clip, and applies +LUTs after gamma encoding. #### Pre-bake pipeline diff --git a/first.jai b/first.jai index 8bb5b76..b1510b3 100644 --- a/first.jai +++ b/first.jai @@ -8,7 +8,6 @@ Trueno_Build_Options :: struct { release_build : bool; tacoma_enabled : bool; iprof_enabled : bool; - demo_build : bool; test_engine : bool; test_game : bool; test_exe_engine : bool; @@ -35,8 +34,6 @@ build_options_from_args :: (args: []string) -> Trueno_Build_Options { opts.release_build = true; case "iprof"; opts.iprof_enabled = true; - case "demo"; - opts.demo_build = true; case "test"; opts.test_game = true; opts.test_engine = true; @@ -77,20 +74,16 @@ add_asset_buffer_sizes_to_compiler_strings :: (trueno_opts: Trueno_Build_Options pack_dir := ifx use_test_game then "./test_packs" else "./packs"; game_resources_dir := ifx use_test_game then "./test_game/resources" else "./game/resources"; - sizes: [6]s64; + sizes: [3]s64; sizes[0] = max_asset_file_size(pack_dir, ".pack", 1 * 1024 * 1024); sizes[1] = max( max_asset_file_size(game_resources_dir, "world.json", 64 * 1024), max_asset_file_size(game_resources_dir, "index.world", 64 * 1024) ); sizes[2] = max_asset_file_size(game_resources_dir, "chunks.bin", 1 * 1024 * 1024); - sizes[3] = max_asset_file_size(game_resources_dir, ".shgrid", 1 * 1024 * 1024); - sizes[4] = max_asset_file_size(game_resources_dir, "rdm_atlas.rdm", 16 * 1024 * 1024); - sizes[5] = max_asset_file_size(game_resources_dir, "rdm_manifest.json", 256 * 1024); - names :: string.["MAX_PACK_SIZE", "MAX_WORLD_SIZE", "MAX_CHUNKS_SIZE", - "MAX_SHGRID_SIZE", "MAX_RDM_ATLAS_SIZE", "MAX_RDM_MANIFEST_SIZE"]; - for i: 0..5 { + names :: string.["MAX_PACK_SIZE", "MAX_WORLD_SIZE", "MAX_CHUNKS_SIZE"]; + for i: 0..2 { add_build_string(tprint("% :: %;\n", names[i], sizes[i]), w); } } @@ -110,17 +103,6 @@ add_trueno_opts_to_compiler_strings :: (trueno_opts : Trueno_Build_Options, w: W } } -compile_shaders :: () { - process_result, output, error := run_command("bash", ifx OS == .MACOS then "./compile_shaders_mac.sh" else "./compile_shaders.sh", working_directory=tprint("%/src/shaders", #filepath)); - if process_result.exit_code != 0 { - log_error("Shader compilation failed."); - if output { - log_error(output,, logger = runtime_support_default_logger); - } - exit(1); - } -} - wasm_copy_assets :: () { if is_directory("./packs") { run_command("cp", "-r", "./packs", "./dist/", working_directory=tprint("%", #filepath)); @@ -178,7 +160,6 @@ native_build :: (opts: Build_Options, trueno_opts: Trueno_Build_Options) { add_trueno_opts_to_compiler_strings(trueno_opts, w); add_asset_buffer_sizes_to_compiler_strings(trueno_opts, w); add_build_file("src/platform_specific/main_native.jai", w); - add_shaders_to_workspace(w); metaprogramming_loop(trueno_opts, *w, iprof_plugin); @@ -230,13 +211,12 @@ wasm_build :: (opts: Build_Options, trueno_opts: Trueno_Build_Options) { add_trueno_opts_to_compiler_strings(trueno_opts, w); add_asset_buffer_sizes_to_compiler_strings(trueno_opts, w); add_build_file("src/platform_specific/main_web.jai", w); - add_shaders_to_workspace(w); metaprogramming_loop(trueno_opts, *w); args := string.[ "emcc", - "src/platform_specific/main.c", "dist/main.o", "modules/sokol-jai/sokol/gfx/sokol_gfx_wasm_gl_release.a", "modules/sokol-jai/sokol/log/sokol_log_wasm_gl_release.a", "modules/sokol-jai/sokol/audio/sokol_audio_wasm_gl_release.a", "modules/sokol-jai/sokol/time/sokol_time_wasm_gl_release.a", "modules/sokol-jai/sokol/app/sokol_app_wasm_gl_release.a", "modules/sokol-jai/sokol/glue/sokol_glue_wasm_gl_release.a", "modules/sokol-jai/sokol/fetch/sokol_fetch_wasm_gl_release.a", "modules/sokol-jai/sokol/gl/sokol_gl_wasm_gl_release.a", "modules/sokol-jai/sokol/fontstash/sokol_fontstash_wasm_gl_release.a", + "src/platform_specific/main.c", "dist/main.o", "modules/sokol-jai/sokol/gfx/sokol_gfx_wasm_gl_release.a", "modules/sokol-jai/sokol/log/sokol_log_wasm_gl_release.a", "modules/sokol-jai/sokol/audio/sokol_audio_wasm_gl_release.a", "modules/sokol-jai/sokol/time/sokol_time_wasm_gl_release.a", "modules/sokol-jai/sokol/app/sokol_app_wasm_gl_release.a", "modules/sokol-jai/sokol/glue/sokol_glue_wasm_gl_release.a", "modules/sokol-jai/sokol/fetch/sokol_fetch_wasm_gl_release.a", "modules/Fontstash/wasm/fontstash.a", "modules/sokol-jai/sokol/stbi/stb_image.a", "modules/sokol-jai/sokol/stbv/stb_vorbis.a", "-o", "dist/index.html", @@ -262,7 +242,6 @@ wasm_build :: (opts: Build_Options, trueno_opts: Trueno_Build_Options) { #run { opt := get_build_options(); trueno_opts := build_options_from_args(opt.compile_time_command_line); - compile_shaders(); use_test_game := uses_test_game(trueno_opts); create_pack(use_test_game, ifx use_test_game then "./test_packs" else "./packs"); diff --git a/modules/Fontstash/build.sh b/modules/Fontstash/build.sh new file mode 100755 index 0000000..191dd6e --- /dev/null +++ b/modules/Fontstash/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Builds fontstash (with stb_truetype) as a plain static library, without the +# sokol glue the sokol-jai version comes with. Run on each platform: +# ./build.sh linux | macos | wasm +set -e +cd "$(dirname "$0")" +case "$1" in + linux) cc -c -O2 -fPIC source/fontstash.c -o fontstash.o && mkdir -p linux && ar rcs linux/fontstash.a fontstash.o ;; + macos) cc -c -O2 -arch arm64 -arch x86_64 source/fontstash.c -o fontstash.o && mkdir -p macos && ar rcs macos/fontstash.a fontstash.o ;; + wasm) emcc -c -O2 -sMEMORY64 source/fontstash.c -o fontstash.o && mkdir -p wasm && emar rcs wasm/fontstash.a fontstash.o ;; + *) echo "usage: $0 linux|macos|wasm"; exit 1 ;; +esac +rm fontstash.o diff --git a/modules/Fontstash/linux/fontstash.a b/modules/Fontstash/linux/fontstash.a new file mode 100644 index 0000000..1f4a928 Binary files /dev/null and b/modules/Fontstash/linux/fontstash.a differ diff --git a/modules/Fontstash/module.jai b/modules/Fontstash/module.jai new file mode 100644 index 0000000..56805d1 --- /dev/null +++ b/modules/Fontstash/module.jai @@ -0,0 +1,43 @@ +// Fontstash with stb_truetype, as a plain C library: no rendering backend, +// glyphs reach the caller through FONSparams' render callbacks. Only the parts +// the engine uses are bound. Libraries are built with build.sh. + +FONScontext :: struct {} + +FONS_ZERO_TOPLEFT :: 1; + +FONSparams :: struct { + width, height : s32; + flags : u8; + userPtr : *void; + renderCreate : (uptr: *void, width: s32, height: s32) -> s32 #c_call; + renderResize : (uptr: *void, width: s32, height: s32) -> s32 #c_call; + renderUpdate : (uptr: *void, rect: *s32, data: *u8) #c_call; + renderDraw : (uptr: *void, verts: *float, tcoords: *float, colors: *u32, nverts: s32) #c_call; + renderDelete : (uptr: *void) #c_call; +} + +fonsCreateInternal :: (params: *FONSparams) -> *FONScontext #foreign fontstash; +fonsResetAtlas :: (s: *FONScontext, width: s32, height: s32) -> s32 #foreign fontstash; +fonsAddFontMem :: (s: *FONScontext, name: *u8, data: *u8, ndata: s32, free_data: s32) -> s32 #foreign fontstash; +fonsClearState :: (s: *FONScontext) #foreign fontstash; +fonsSetSize :: (s: *FONScontext, size: float) #foreign fontstash; +fonsSetColor :: (s: *FONScontext, color: u32) #foreign fontstash; +fonsSetFont :: (s: *FONScontext, font: s32) #foreign fontstash; +fonsDrawText :: (s: *FONScontext, x: float, y: float, str: *u8, end: *u8) -> float #foreign fontstash; +fonsTextBounds :: (s: *FONScontext, x: float, y: float, str: *u8, end: *u8, bounds: *float) -> float #foreign fontstash; +fonsVertMetrics :: (s: *FONScontext, ascender: *float, descender: *float, line_height: *float) #foreign fontstash; +fonsGetTextureData :: (s: *FONScontext, width: *s32, height: *s32) -> *u8 #foreign fontstash; + +#scope_file + +#if OS == .LINUX { + fontstash :: #library,no_dll "linux/fontstash"; + #library,system,link_always "libm"; +} else #if OS == .MACOS { + fontstash :: #library,no_dll "macos/fontstash"; +} else #if OS == .WASM { + fontstash :: #library,no_dll "wasm/fontstash"; +} else { + #assert false "Fontstash has no library for this OS; see build.sh."; +} diff --git a/modules/Fontstash/source/fontstash.c b/modules/Fontstash/source/fontstash.c new file mode 100644 index 0000000..14120d7 --- /dev/null +++ b/modules/Fontstash/source/fontstash.c @@ -0,0 +1,4 @@ +#include +#include +#define FONTSTASH_IMPLEMENTATION +#include "fontstash.h" diff --git a/modules/Fontstash/source/fontstash.h b/modules/Fontstash/source/fontstash.h new file mode 100644 index 0000000..a09e6f1 --- /dev/null +++ b/modules/Fontstash/source/fontstash.h @@ -0,0 +1,1714 @@ +// +// NOTE sokol: all IO functions have been removed +// +// Copyright (c) 2009-2013 Mikko Mononen memon@inside.org +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. +// + +#ifndef FONS_H +#define FONS_H + +#ifdef __cplusplus +extern "C" { +#endif + +// To make the implementation private to the file that generates the implementation +#ifdef FONS_STATIC +#define FONS_DEF static +#else +#define FONS_DEF extern +#endif + +#define FONS_INVALID -1 + +enum FONSflags { + FONS_ZERO_TOPLEFT = 1, + FONS_ZERO_BOTTOMLEFT = 2, +}; + +enum FONSalign { + // Horizontal align + FONS_ALIGN_LEFT = 1<<0, // Default + FONS_ALIGN_CENTER = 1<<1, + FONS_ALIGN_RIGHT = 1<<2, + // Vertical align + FONS_ALIGN_TOP = 1<<3, + FONS_ALIGN_MIDDLE = 1<<4, + FONS_ALIGN_BOTTOM = 1<<5, + FONS_ALIGN_BASELINE = 1<<6, // Default +}; + +enum FONSerrorCode { + // Font atlas is full. + FONS_ATLAS_FULL = 1, + // Scratch memory used to render glyphs is full, requested size reported in 'val', you may need to bump up FONS_SCRATCH_BUF_SIZE. + FONS_SCRATCH_FULL = 2, + // Calls to fonsPushState has created too large stack, if you need deep state stack bump up FONS_MAX_STATES. + FONS_STATES_OVERFLOW = 3, + // Trying to pop too many states fonsPopState(). + FONS_STATES_UNDERFLOW = 4, +}; + +struct FONSparams { + int width, height; + unsigned char flags; + void* userPtr; + int (*renderCreate)(void* uptr, int width, int height); + int (*renderResize)(void* uptr, int width, int height); + void (*renderUpdate)(void* uptr, int* rect, const unsigned char* data); + void (*renderDraw)(void* uptr, const float* verts, const float* tcoords, const unsigned int* colors, int nverts); + void (*renderDelete)(void* uptr); +}; +typedef struct FONSparams FONSparams; + +struct FONSquad +{ + float x0,y0,s0,t0; + float x1,y1,s1,t1; +}; +typedef struct FONSquad FONSquad; + +struct FONStextIter { + float x, y, nextx, nexty, scale, spacing; + unsigned int codepoint; + short isize, iblur; + struct FONSfont* font; + int prevGlyphIndex; + const char* str; + const char* next; + const char* end; + unsigned int utf8state; +}; +typedef struct FONStextIter FONStextIter; + +typedef struct FONScontext FONScontext; + +// Contructor and destructor. +FONS_DEF FONScontext* fonsCreateInternal(FONSparams* params); +FONS_DEF void fonsDeleteInternal(FONScontext* s); + +FONS_DEF void fonsSetErrorCallback(FONScontext* s, void (*callback)(void* uptr, int error, int val), void* uptr); +// Returns current atlas size. +FONS_DEF void fonsGetAtlasSize(FONScontext* s, int* width, int* height); +// Expands the atlas size. +FONS_DEF int fonsExpandAtlas(FONScontext* s, int width, int height); +// Resets the whole stash. +FONS_DEF int fonsResetAtlas(FONScontext* stash, int width, int height); + +// Add fonts +FONS_DEF int fonsGetFontByName(FONScontext* s, const char* name); +FONS_DEF int fonsAddFallbackFont(FONScontext* stash, int base, int fallback); + +// State handling +FONS_DEF void fonsPushState(FONScontext* s); +FONS_DEF void fonsPopState(FONScontext* s); +FONS_DEF void fonsClearState(FONScontext* s); + +// State setting +FONS_DEF void fonsSetSize(FONScontext* s, float size); +FONS_DEF void fonsSetColor(FONScontext* s, unsigned int color); +FONS_DEF void fonsSetSpacing(FONScontext* s, float spacing); +FONS_DEF void fonsSetBlur(FONScontext* s, float blur); +FONS_DEF void fonsSetAlign(FONScontext* s, int align); +FONS_DEF void fonsSetFont(FONScontext* s, int font); + +// Draw text +FONS_DEF float fonsDrawText(FONScontext* s, float x, float y, const char* string, const char* end); + +// Measure text +FONS_DEF float fonsTextBounds(FONScontext* s, float x, float y, const char* string, const char* end, float* bounds); +FONS_DEF void fonsLineBounds(FONScontext* s, float y, float* miny, float* maxy); +FONS_DEF void fonsVertMetrics(FONScontext* s, float* ascender, float* descender, float* lineh); + +// Text iterator +FONS_DEF int fonsTextIterInit(FONScontext* stash, FONStextIter* iter, float x, float y, const char* str, const char* end); +FONS_DEF int fonsTextIterNext(FONScontext* stash, FONStextIter* iter, struct FONSquad* quad); + +// Pull texture changes +FONS_DEF const unsigned char* fonsGetTextureData(FONScontext* stash, int* width, int* height); +FONS_DEF int fonsValidateTexture(FONScontext* s, int* dirty); + +// Draws the stash texture for debugging +FONS_DEF void fonsDrawDebug(FONScontext* s, float x, float y); + +#ifdef __cplusplus +} +#endif + +#endif // FONS_H + + +#ifdef FONTSTASH_IMPLEMENTATION + +#define FONS_NOTUSED(v) (void)sizeof(v) + +#ifdef FONS_USE_FREETYPE + +#include +#include FT_FREETYPE_H +#include FT_ADVANCES_H +#include + +struct FONSttFontImpl { + FT_Face font; +}; +typedef struct FONSttFontImpl FONSttFontImpl; + +static FT_Library ftLibrary; + +static int fons__tt_init() +{ + FT_Error ftError; + FONS_NOTUSED(context); + ftError = FT_Init_FreeType(&ftLibrary); + return ftError == 0; +} + +static int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize) +{ + FT_Error ftError; + FONS_NOTUSED(context); + + //font->font.userdata = stash; + ftError = FT_New_Memory_Face(ftLibrary, (const FT_Byte*)data, dataSize, 0, &font->font); + return ftError == 0; +} + +static void fons__tt_getFontVMetrics(FONSttFontImpl *font, int *ascent, int *descent, int *lineGap) +{ + *ascent = font->font->ascender; + *descent = font->font->descender; + *lineGap = font->font->height - (*ascent - *descent); +} + +static float fons__tt_getPixelHeightScale(FONSttFontImpl *font, float size) +{ + return size / (font->font->ascender - font->font->descender); +} + +static int fons__tt_getGlyphIndex(FONSttFontImpl *font, int codepoint) +{ + return FT_Get_Char_Index(font->font, codepoint); +} + +static int fons__tt_buildGlyphBitmap(FONSttFontImpl *font, int glyph, float size, float scale, + int *advance, int *lsb, int *x0, int *y0, int *x1, int *y1) +{ + FT_Error ftError; + FT_GlyphSlot ftGlyph; + FT_Fixed advFixed; + FONS_NOTUSED(scale); + + ftError = FT_Set_Pixel_Sizes(font->font, 0, (FT_UInt)(size * (float)font->font->units_per_EM / (float)(font->font->ascender - font->font->descender))); + if (ftError) return 0; + ftError = FT_Load_Glyph(font->font, glyph, FT_LOAD_RENDER); + if (ftError) return 0; + ftError = FT_Get_Advance(font->font, glyph, FT_LOAD_NO_SCALE, &advFixed); + if (ftError) return 0; + ftGlyph = font->font->glyph; + *advance = (int)advFixed; + *lsb = (int)ftGlyph->metrics.horiBearingX; + *x0 = ftGlyph->bitmap_left; + *x1 = *x0 + ftGlyph->bitmap.width; + *y0 = -ftGlyph->bitmap_top; + *y1 = *y0 + ftGlyph->bitmap.rows; + return 1; +} + +static void fons__tt_renderGlyphBitmap(FONSttFontImpl *font, unsigned char *output, int outWidth, int outHeight, int outStride, + float scaleX, float scaleY, int glyph) +{ + FT_GlyphSlot ftGlyph = font->font->glyph; + int ftGlyphOffset = 0; + int x, y; + FONS_NOTUSED(outWidth); + FONS_NOTUSED(outHeight); + FONS_NOTUSED(scaleX); + FONS_NOTUSED(scaleY); + FONS_NOTUSED(glyph); // glyph has already been loaded by fons__tt_buildGlyphBitmap + + for ( y = 0; y < ftGlyph->bitmap.rows; y++ ) { + for ( x = 0; x < ftGlyph->bitmap.width; x++ ) { + output[(y * outStride) + x] = ftGlyph->bitmap.buffer[ftGlyphOffset++]; + } + } +} + +static int fons__tt_getGlyphKernAdvance(FONSttFontImpl *font, int glyph1, int glyph2) +{ + FT_Vector ftKerning; + FT_Get_Kerning(font->font, glyph1, glyph2, FT_KERNING_DEFAULT, &ftKerning); + return (int)((ftKerning.x + 32) >> 6); // Round up and convert to integer +} + +#else + +#define STB_TRUETYPE_IMPLEMENTATION +#define STBTT_STATIC +static void* fons__tmpalloc(size_t size, void* up); +static void fons__tmpfree(void* ptr, void* up); +#define STBTT_malloc(x,u) fons__tmpalloc(x,u) +#define STBTT_free(x,u) fons__tmpfree(x,u) +#include "stb_truetype.h" + +struct FONSttFontImpl { + stbtt_fontinfo font; +}; +typedef struct FONSttFontImpl FONSttFontImpl; + +static int fons__tt_init(FONScontext *context) +{ + FONS_NOTUSED(context); + return 1; +} + +static int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize) +{ + int stbError; + FONS_NOTUSED(dataSize); + + font->font.userdata = context; + stbError = stbtt_InitFont(&font->font, data, 0); + return stbError; +} + +static void fons__tt_getFontVMetrics(FONSttFontImpl *font, int *ascent, int *descent, int *lineGap) +{ + stbtt_GetFontVMetrics(&font->font, ascent, descent, lineGap); +} + +static float fons__tt_getPixelHeightScale(FONSttFontImpl *font, float size) +{ + return stbtt_ScaleForPixelHeight(&font->font, size); +} + +static int fons__tt_getGlyphIndex(FONSttFontImpl *font, int codepoint) +{ + return stbtt_FindGlyphIndex(&font->font, codepoint); +} + +static int fons__tt_buildGlyphBitmap(FONSttFontImpl *font, int glyph, float size, float scale, + int *advance, int *lsb, int *x0, int *y0, int *x1, int *y1) +{ + FONS_NOTUSED(size); + stbtt_GetGlyphHMetrics(&font->font, glyph, advance, lsb); + stbtt_GetGlyphBitmapBox(&font->font, glyph, scale, scale, x0, y0, x1, y1); + return 1; +} + +static void fons__tt_renderGlyphBitmap(FONSttFontImpl *font, unsigned char *output, int outWidth, int outHeight, int outStride, + float scaleX, float scaleY, int glyph) +{ + stbtt_MakeGlyphBitmap(&font->font, output, outWidth, outHeight, outStride, scaleX, scaleY, glyph); +} + +static int fons__tt_getGlyphKernAdvance(FONSttFontImpl *font, int glyph1, int glyph2) +{ + return stbtt_GetGlyphKernAdvance(&font->font, glyph1, glyph2); +} + +#endif + +#ifndef FONS_SCRATCH_BUF_SIZE +# define FONS_SCRATCH_BUF_SIZE 64000 +#endif +#ifndef FONS_HASH_LUT_SIZE +# define FONS_HASH_LUT_SIZE 256 +#endif +#ifndef FONS_INIT_FONTS +# define FONS_INIT_FONTS 4 +#endif +#ifndef FONS_INIT_GLYPHS +# define FONS_INIT_GLYPHS 256 +#endif +#ifndef FONS_INIT_ATLAS_NODES +# define FONS_INIT_ATLAS_NODES 256 +#endif +#ifndef FONS_VERTEX_COUNT +# define FONS_VERTEX_COUNT 1024 +#endif +#ifndef FONS_MAX_STATES +# define FONS_MAX_STATES 20 +#endif +#ifndef FONS_MAX_FALLBACKS +# define FONS_MAX_FALLBACKS 20 +#endif + +static unsigned int fons__hashint(unsigned int a) +{ + a += ~(a<<15); + a ^= (a>>10); + a += (a<<3); + a ^= (a>>6); + a += ~(a<<11); + a ^= (a>>16); + return a; +} + +static int fons__mini(int a, int b) +{ + return a < b ? a : b; +} + +static int fons__maxi(int a, int b) +{ + return a > b ? a : b; +} + +struct FONSglyph +{ + unsigned int codepoint; + int index; + int next; + short size, blur; + short x0,y0,x1,y1; + short xadv,xoff,yoff; +}; +typedef struct FONSglyph FONSglyph; + +struct FONSfont +{ + FONSttFontImpl font; + char name[64]; + unsigned char* data; + int dataSize; + unsigned char freeData; + float ascender; + float descender; + float lineh; + FONSglyph* glyphs; + int cglyphs; + int nglyphs; + int lut[FONS_HASH_LUT_SIZE]; + int fallbacks[FONS_MAX_FALLBACKS]; + int nfallbacks; +}; +typedef struct FONSfont FONSfont; + +struct FONSstate +{ + int font; + int align; + float size; + unsigned int color; + float blur; + float spacing; +}; +typedef struct FONSstate FONSstate; + +struct FONSatlasNode { + short x, y, width; +}; +typedef struct FONSatlasNode FONSatlasNode; + +struct FONSatlas +{ + int width, height; + FONSatlasNode* nodes; + int nnodes; + int cnodes; +}; +typedef struct FONSatlas FONSatlas; + +struct FONScontext +{ + FONSparams params; + float itw,ith; + unsigned char* texData; + int dirtyRect[4]; + FONSfont** fonts; + FONSatlas* atlas; + int cfonts; + int nfonts; + float verts[FONS_VERTEX_COUNT*2]; + float tcoords[FONS_VERTEX_COUNT*2]; + unsigned int colors[FONS_VERTEX_COUNT]; + int nverts; + unsigned char* scratch; + int nscratch; + FONSstate states[FONS_MAX_STATES]; + int nstates; + void (*handleError)(void* uptr, int error, int val); + void* errorUptr; +}; + +#ifdef STB_TRUETYPE_IMPLEMENTATION + +static void* fons__tmpalloc(size_t size, void* up) +{ + unsigned char* ptr; + FONScontext* stash = (FONScontext*)up; + + // 16-byte align the returned pointer + size = (size + 0xf) & ~0xf; + + if (stash->nscratch+(int)size > FONS_SCRATCH_BUF_SIZE) { + if (stash->handleError) + stash->handleError(stash->errorUptr, FONS_SCRATCH_FULL, stash->nscratch+(int)size); + return NULL; + } + ptr = stash->scratch + stash->nscratch; + stash->nscratch += (int)size; + return ptr; +} + +static void fons__tmpfree(void* ptr, void* up) +{ + (void)ptr; + (void)up; + // empty +} + +#endif // STB_TRUETYPE_IMPLEMENTATION + +// Copyright (c) 2008-2010 Bjoern Hoehrmann +// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. + +#define FONS_UTF8_ACCEPT 0 +#define FONS_UTF8_REJECT 12 + +static unsigned int fons__decutf8(unsigned int* state, unsigned int* codep, unsigned int byte) +{ + static const unsigned char utf8d[] = { + // The first part of the table maps bytes to character classes that + // to reduce the size of the transition table and create bitmasks. + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, + + // The second part is a transition table that maps a combination + // of a state of the automaton and a character class to a state. + 0,12,24,36,60,96,84,12,12,12,48,72, 12,12,12,12,12,12,12,12,12,12,12,12, + 12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12, + 12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12, + 12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12, + 12,36,12,12,12,12,12,12,12,12,12,12, + }; + + unsigned int type = utf8d[byte]; + + *codep = (*state != FONS_UTF8_ACCEPT) ? + (byte & 0x3fu) | (*codep << 6) : + (0xff >> type) & (byte); + + *state = utf8d[256 + *state + type]; + return *state; +} + +// Atlas based on Skyline Bin Packer by Jukka Jylänki + +static void fons__deleteAtlas(FONSatlas* atlas) +{ + if (atlas == NULL) return; + if (atlas->nodes != NULL) free(atlas->nodes); + free(atlas); +} + +static FONSatlas* fons__allocAtlas(int w, int h, int nnodes) +{ + FONSatlas* atlas = NULL; + + // Allocate memory for the font stash. + atlas = (FONSatlas*)malloc(sizeof(FONSatlas)); + if (atlas == NULL) goto error; + memset(atlas, 0, sizeof(FONSatlas)); + + atlas->width = w; + atlas->height = h; + + // Allocate space for skyline nodes + atlas->nodes = (FONSatlasNode*)malloc(sizeof(FONSatlasNode) * nnodes); + if (atlas->nodes == NULL) goto error; + memset(atlas->nodes, 0, sizeof(FONSatlasNode) * nnodes); + atlas->nnodes = 0; + atlas->cnodes = nnodes; + + // Init root node. + atlas->nodes[0].x = 0; + atlas->nodes[0].y = 0; + atlas->nodes[0].width = (short)w; + atlas->nnodes++; + + return atlas; + +error: + if (atlas) fons__deleteAtlas(atlas); + return NULL; +} + +static int fons__atlasInsertNode(FONSatlas* atlas, int idx, int x, int y, int w) +{ + int i; + // Insert node + if (atlas->nnodes+1 > atlas->cnodes) { + atlas->cnodes = atlas->cnodes == 0 ? 8 : atlas->cnodes * 2; + atlas->nodes = (FONSatlasNode*)realloc(atlas->nodes, sizeof(FONSatlasNode) * atlas->cnodes); + if (atlas->nodes == NULL) + return 0; + } + for (i = atlas->nnodes; i > idx; i--) + atlas->nodes[i] = atlas->nodes[i-1]; + atlas->nodes[idx].x = (short)x; + atlas->nodes[idx].y = (short)y; + atlas->nodes[idx].width = (short)w; + atlas->nnodes++; + + return 1; +} + +static void fons__atlasRemoveNode(FONSatlas* atlas, int idx) +{ + int i; + if (atlas->nnodes == 0) return; + for (i = idx; i < atlas->nnodes-1; i++) + atlas->nodes[i] = atlas->nodes[i+1]; + atlas->nnodes--; +} + +static void fons__atlasExpand(FONSatlas* atlas, int w, int h) +{ + // Insert node for empty space + if (w > atlas->width) + fons__atlasInsertNode(atlas, atlas->nnodes, atlas->width, 0, w - atlas->width); + atlas->width = w; + atlas->height = h; +} + +static void fons__atlasReset(FONSatlas* atlas, int w, int h) +{ + atlas->width = w; + atlas->height = h; + atlas->nnodes = 0; + + // Init root node. + atlas->nodes[0].x = 0; + atlas->nodes[0].y = 0; + atlas->nodes[0].width = (short)w; + atlas->nnodes++; +} + +static int fons__atlasAddSkylineLevel(FONSatlas* atlas, int idx, int x, int y, int w, int h) +{ + int i; + + // Insert new node + if (fons__atlasInsertNode(atlas, idx, x, y+h, w) == 0) + return 0; + + // Delete skyline segments that fall under the shadow of the new segment. + for (i = idx+1; i < atlas->nnodes; i++) { + if (atlas->nodes[i].x < atlas->nodes[i-1].x + atlas->nodes[i-1].width) { + int shrink = atlas->nodes[i-1].x + atlas->nodes[i-1].width - atlas->nodes[i].x; + atlas->nodes[i].x += (short)shrink; + atlas->nodes[i].width -= (short)shrink; + if (atlas->nodes[i].width <= 0) { + fons__atlasRemoveNode(atlas, i); + i--; + } else { + break; + } + } else { + break; + } + } + + // Merge same height skyline segments that are next to each other. + for (i = 0; i < atlas->nnodes-1; i++) { + if (atlas->nodes[i].y == atlas->nodes[i+1].y) { + atlas->nodes[i].width += atlas->nodes[i+1].width; + fons__atlasRemoveNode(atlas, i+1); + i--; + } + } + + return 1; +} + +static int fons__atlasRectFits(FONSatlas* atlas, int i, int w, int h) +{ + // Checks if there is enough space at the location of skyline span 'i', + // and return the max height of all skyline spans under that at that location, + // (think tetris block being dropped at that position). Or -1 if no space found. + int x = atlas->nodes[i].x; + int y = atlas->nodes[i].y; + int spaceLeft; + if (x + w > atlas->width) + return -1; + spaceLeft = w; + while (spaceLeft > 0) { + if (i == atlas->nnodes) return -1; + y = fons__maxi(y, atlas->nodes[i].y); + if (y + h > atlas->height) return -1; + spaceLeft -= atlas->nodes[i].width; + ++i; + } + return y; +} + +static int fons__atlasAddRect(FONSatlas* atlas, int rw, int rh, int* rx, int* ry) +{ + int besth = atlas->height, bestw = atlas->width, besti = -1; + int bestx = -1, besty = -1, i; + + // Bottom left fit heuristic. + for (i = 0; i < atlas->nnodes; i++) { + int y = fons__atlasRectFits(atlas, i, rw, rh); + if (y != -1) { + if (y + rh < besth || (y + rh == besth && atlas->nodes[i].width < bestw)) { + besti = i; + bestw = atlas->nodes[i].width; + besth = y + rh; + bestx = atlas->nodes[i].x; + besty = y; + } + } + } + + if (besti == -1) + return 0; + + // Perform the actual packing. + if (fons__atlasAddSkylineLevel(atlas, besti, bestx, besty, rw, rh) == 0) + return 0; + + *rx = bestx; + *ry = besty; + + return 1; +} + +static void fons__addWhiteRect(FONScontext* stash, int w, int h) +{ + int x, y, gx, gy; + unsigned char* dst; + if (fons__atlasAddRect(stash->atlas, w, h, &gx, &gy) == 0) + return; + + // Rasterize + dst = &stash->texData[gx + gy * stash->params.width]; + for (y = 0; y < h; y++) { + for (x = 0; x < w; x++) + dst[x] = 0xff; + dst += stash->params.width; + } + + stash->dirtyRect[0] = fons__mini(stash->dirtyRect[0], gx); + stash->dirtyRect[1] = fons__mini(stash->dirtyRect[1], gy); + stash->dirtyRect[2] = fons__maxi(stash->dirtyRect[2], gx+w); + stash->dirtyRect[3] = fons__maxi(stash->dirtyRect[3], gy+h); +} + +FONScontext* fonsCreateInternal(FONSparams* params) +{ + FONScontext* stash = NULL; + + // Allocate memory for the font stash. + stash = (FONScontext*)malloc(sizeof(FONScontext)); + if (stash == NULL) goto error; + memset(stash, 0, sizeof(FONScontext)); + + stash->params = *params; + + // Allocate scratch buffer. + stash->scratch = (unsigned char*)malloc(FONS_SCRATCH_BUF_SIZE); + if (stash->scratch == NULL) goto error; + + // Initialize implementation library + if (!fons__tt_init(stash)) goto error; + + if (stash->params.renderCreate != NULL) { + if (stash->params.renderCreate(stash->params.userPtr, stash->params.width, stash->params.height) == 0) + goto error; + } + + stash->atlas = fons__allocAtlas(stash->params.width, stash->params.height, FONS_INIT_ATLAS_NODES); + if (stash->atlas == NULL) goto error; + + // Allocate space for fonts. + stash->fonts = (FONSfont**)malloc(sizeof(FONSfont*) * FONS_INIT_FONTS); + if (stash->fonts == NULL) goto error; + memset(stash->fonts, 0, sizeof(FONSfont*) * FONS_INIT_FONTS); + stash->cfonts = FONS_INIT_FONTS; + stash->nfonts = 0; + + // Create texture for the cache. + stash->itw = 1.0f/stash->params.width; + stash->ith = 1.0f/stash->params.height; + stash->texData = (unsigned char*)malloc(stash->params.width * stash->params.height); + if (stash->texData == NULL) goto error; + memset(stash->texData, 0, stash->params.width * stash->params.height); + + stash->dirtyRect[0] = stash->params.width; + stash->dirtyRect[1] = stash->params.height; + stash->dirtyRect[2] = 0; + stash->dirtyRect[3] = 0; + + // Add white rect at 0,0 for debug drawing. + fons__addWhiteRect(stash, 2,2); + + fonsPushState(stash); + fonsClearState(stash); + + return stash; + +error: + fonsDeleteInternal(stash); + return NULL; +} + +static FONSstate* fons__getState(FONScontext* stash) +{ + return &stash->states[stash->nstates-1]; +} + +int fonsAddFallbackFont(FONScontext* stash, int base, int fallback) +{ + FONSfont* baseFont = stash->fonts[base]; + if (baseFont->nfallbacks < FONS_MAX_FALLBACKS) { + baseFont->fallbacks[baseFont->nfallbacks++] = fallback; + return 1; + } + return 0; +} + +void fonsSetSize(FONScontext* stash, float size) +{ + fons__getState(stash)->size = size; +} + +void fonsSetColor(FONScontext* stash, unsigned int color) +{ + fons__getState(stash)->color = color; +} + +void fonsSetSpacing(FONScontext* stash, float spacing) +{ + fons__getState(stash)->spacing = spacing; +} + +void fonsSetBlur(FONScontext* stash, float blur) +{ + fons__getState(stash)->blur = blur; +} + +void fonsSetAlign(FONScontext* stash, int align) +{ + fons__getState(stash)->align = align; +} + +void fonsSetFont(FONScontext* stash, int font) +{ + fons__getState(stash)->font = font; +} + +void fonsPushState(FONScontext* stash) +{ + if (stash->nstates >= FONS_MAX_STATES) { + if (stash->handleError) + stash->handleError(stash->errorUptr, FONS_STATES_OVERFLOW, 0); + return; + } + if (stash->nstates > 0) + memcpy(&stash->states[stash->nstates], &stash->states[stash->nstates-1], sizeof(FONSstate)); + stash->nstates++; +} + +void fonsPopState(FONScontext* stash) +{ + if (stash->nstates <= 1) { + if (stash->handleError) + stash->handleError(stash->errorUptr, FONS_STATES_UNDERFLOW, 0); + return; + } + stash->nstates--; +} + +void fonsClearState(FONScontext* stash) +{ + FONSstate* state = fons__getState(stash); + state->size = 12.0f; + state->color = 0xffffffff; + state->font = 0; + state->blur = 0; + state->spacing = 0; + state->align = FONS_ALIGN_LEFT | FONS_ALIGN_BASELINE; +} + +static void fons__freeFont(FONSfont* font) +{ + if (font == NULL) return; + if (font->glyphs) free(font->glyphs); + if (font->freeData && font->data) free(font->data); + free(font); +} + +static int fons__allocFont(FONScontext* stash) +{ + FONSfont* font = NULL; + if (stash->nfonts+1 > stash->cfonts) { + stash->cfonts = stash->cfonts == 0 ? 8 : stash->cfonts * 2; + stash->fonts = (FONSfont**)realloc(stash->fonts, sizeof(FONSfont*) * stash->cfonts); + if (stash->fonts == NULL) + return -1; + } + font = (FONSfont*)malloc(sizeof(FONSfont)); + if (font == NULL) goto error; + memset(font, 0, sizeof(FONSfont)); + + font->glyphs = (FONSglyph*)malloc(sizeof(FONSglyph) * FONS_INIT_GLYPHS); + if (font->glyphs == NULL) goto error; + font->cglyphs = FONS_INIT_GLYPHS; + font->nglyphs = 0; + + stash->fonts[stash->nfonts++] = font; + return stash->nfonts-1; + +error: + fons__freeFont(font); + + return FONS_INVALID; +} + +int fonsAddFontMem(FONScontext* stash, const char* name, unsigned char* data, int dataSize, int freeData) +{ + int i, ascent, descent, fh, lineGap; + FONSfont* font; + + int idx = fons__allocFont(stash); + if (idx == FONS_INVALID) + return FONS_INVALID; + + font = stash->fonts[idx]; + + strncpy(font->name, name, sizeof(font->name)); + font->name[sizeof(font->name)-1] = '\0'; + + // Init hash lookup. + for (i = 0; i < FONS_HASH_LUT_SIZE; ++i) + font->lut[i] = -1; + + // Read in the font data. + font->dataSize = dataSize; + font->data = data; + font->freeData = (unsigned char)freeData; + + // Init font + stash->nscratch = 0; + if (!fons__tt_loadFont(stash, &font->font, data, dataSize)) goto error; + + // Store normalized line height. The real line height is got + // by multiplying the lineh by font size. + fons__tt_getFontVMetrics( &font->font, &ascent, &descent, &lineGap); + fh = ascent - descent; + font->ascender = (float)ascent / (float)fh; + font->descender = (float)descent / (float)fh; + font->lineh = (float)(fh + lineGap) / (float)fh; + + return idx; + +error: + fons__freeFont(font); + stash->nfonts--; + return FONS_INVALID; +} + +int fonsGetFontByName(FONScontext* s, const char* name) +{ + int i; + for (i = 0; i < s->nfonts; i++) { + if (strcmp(s->fonts[i]->name, name) == 0) + return i; + } + return FONS_INVALID; +} + + +static FONSglyph* fons__allocGlyph(FONSfont* font) +{ + if (font->nglyphs+1 > font->cglyphs) { + font->cglyphs = font->cglyphs == 0 ? 8 : font->cglyphs * 2; + font->glyphs = (FONSglyph*)realloc(font->glyphs, sizeof(FONSglyph) * font->cglyphs); + if (font->glyphs == NULL) return NULL; + } + font->nglyphs++; + return &font->glyphs[font->nglyphs-1]; +} + + +// Based on Exponential blur, Jani Huhtanen, 2006 + +#define APREC 16 +#define ZPREC 7 + +static void fons__blurCols(unsigned char* dst, int w, int h, int dstStride, int alpha) +{ + int x, y; + for (y = 0; y < h; y++) { + int z = 0; // force zero border + for (x = 1; x < w; x++) { + z += (alpha * (((int)(dst[x]) << ZPREC) - z)) >> APREC; + dst[x] = (unsigned char)(z >> ZPREC); + } + dst[w-1] = 0; // force zero border + z = 0; + for (x = w-2; x >= 0; x--) { + z += (alpha * (((int)(dst[x]) << ZPREC) - z)) >> APREC; + dst[x] = (unsigned char)(z >> ZPREC); + } + dst[0] = 0; // force zero border + dst += dstStride; + } +} + +static void fons__blurRows(unsigned char* dst, int w, int h, int dstStride, int alpha) +{ + int x, y; + for (x = 0; x < w; x++) { + int z = 0; // force zero border + for (y = dstStride; y < h*dstStride; y += dstStride) { + z += (alpha * (((int)(dst[y]) << ZPREC) - z)) >> APREC; + dst[y] = (unsigned char)(z >> ZPREC); + } + dst[(h-1)*dstStride] = 0; // force zero border + z = 0; + for (y = (h-2)*dstStride; y >= 0; y -= dstStride) { + z += (alpha * (((int)(dst[y]) << ZPREC) - z)) >> APREC; + dst[y] = (unsigned char)(z >> ZPREC); + } + dst[0] = 0; // force zero border + dst++; + } +} + + +static void fons__blur(FONScontext* stash, unsigned char* dst, int w, int h, int dstStride, int blur) +{ + int alpha; + float sigma; + (void)stash; + + if (blur < 1) + return; + // Calculate the alpha such that 90% of the kernel is within the radius. (Kernel extends to infinity) + sigma = (float)blur * 0.57735f; // 1 / sqrt(3) + alpha = (int)((1< 20) iblur = 20; + pad = iblur+2; + + // Reset allocator. + stash->nscratch = 0; + + // Find code point and size. + h = fons__hashint(codepoint) & (FONS_HASH_LUT_SIZE-1); + i = font->lut[h]; + while (i != -1) { + if (font->glyphs[i].codepoint == codepoint && font->glyphs[i].size == isize && font->glyphs[i].blur == iblur) + return &font->glyphs[i]; + i = font->glyphs[i].next; + } + + // Could not find glyph, create it. + g = fons__tt_getGlyphIndex(&font->font, codepoint); + // Try to find the glyph in fallback fonts. + if (g == 0) { + for (i = 0; i < font->nfallbacks; ++i) { + FONSfont* fallbackFont = stash->fonts[font->fallbacks[i]]; + int fallbackIndex = fons__tt_getGlyphIndex(&fallbackFont->font, codepoint); + if (fallbackIndex != 0) { + g = fallbackIndex; + renderFont = fallbackFont; + break; + } + } + // It is possible that we did not find a fallback glyph. + // In that case the glyph index 'g' is 0, and we'll proceed below and cache empty glyph. + } + scale = fons__tt_getPixelHeightScale(&renderFont->font, size); + fons__tt_buildGlyphBitmap(&renderFont->font, g, size, scale, &advance, &lsb, &x0, &y0, &x1, &y1); + gw = x1-x0 + pad*2; + gh = y1-y0 + pad*2; + + // Find free spot for the rect in the atlas + added = fons__atlasAddRect(stash->atlas, gw, gh, &gx, &gy); + if (added == 0 && stash->handleError != NULL) { + // Atlas is full, let the user to resize the atlas (or not), and try again. + stash->handleError(stash->errorUptr, FONS_ATLAS_FULL, 0); + added = fons__atlasAddRect(stash->atlas, gw, gh, &gx, &gy); + } + if (added == 0) return NULL; + + // Init glyph. + glyph = fons__allocGlyph(font); + glyph->codepoint = codepoint; + glyph->size = isize; + glyph->blur = iblur; + glyph->index = g; + glyph->x0 = (short)gx; + glyph->y0 = (short)gy; + glyph->x1 = (short)(glyph->x0+gw); + glyph->y1 = (short)(glyph->y0+gh); + glyph->xadv = (short)(scale * advance * 10.0f); + glyph->xoff = (short)(x0 - pad); + glyph->yoff = (short)(y0 - pad); + glyph->next = 0; + + // Insert char to hash lookup. + glyph->next = font->lut[h]; + font->lut[h] = font->nglyphs-1; + + // Rasterize + dst = &stash->texData[(glyph->x0+pad) + (glyph->y0+pad) * stash->params.width]; + fons__tt_renderGlyphBitmap(&renderFont->font, dst, gw-pad*2,gh-pad*2, stash->params.width, scale,scale, g); + + // Make sure there is one pixel empty border. + dst = &stash->texData[glyph->x0 + glyph->y0 * stash->params.width]; + for (y = 0; y < gh; y++) { + dst[y*stash->params.width] = 0; + dst[gw-1 + y*stash->params.width] = 0; + } + for (x = 0; x < gw; x++) { + dst[x] = 0; + dst[x + (gh-1)*stash->params.width] = 0; + } + + // Debug code to color the glyph background +/* unsigned char* fdst = &stash->texData[glyph->x0 + glyph->y0 * stash->params.width]; + for (y = 0; y < gh; y++) { + for (x = 0; x < gw; x++) { + int a = (int)fdst[x+y*stash->params.width] + 20; + if (a > 255) a = 255; + fdst[x+y*stash->params.width] = a; + } + }*/ + + // Blur + if (iblur > 0) { + stash->nscratch = 0; + bdst = &stash->texData[glyph->x0 + glyph->y0 * stash->params.width]; + fons__blur(stash, bdst, gw,gh, stash->params.width, iblur); + } + + stash->dirtyRect[0] = fons__mini(stash->dirtyRect[0], glyph->x0); + stash->dirtyRect[1] = fons__mini(stash->dirtyRect[1], glyph->y0); + stash->dirtyRect[2] = fons__maxi(stash->dirtyRect[2], glyph->x1); + stash->dirtyRect[3] = fons__maxi(stash->dirtyRect[3], glyph->y1); + + return glyph; +} + +static void fons__getQuad(FONScontext* stash, FONSfont* font, + int prevGlyphIndex, FONSglyph* glyph, + float scale, float spacing, float* x, float* y, FONSquad* q) +{ + float rx,ry,xoff,yoff,x0,y0,x1,y1; + + if (prevGlyphIndex != -1) { + float adv = fons__tt_getGlyphKernAdvance(&font->font, prevGlyphIndex, glyph->index) * scale; + *x += (int)(adv + spacing + 0.5f); + } + + // Each glyph has 2px border to allow good interpolation, + // one pixel to prevent leaking, and one to allow good interpolation for rendering. + // Inset the texture region by one pixel for correct interpolation. + xoff = (short)(glyph->xoff+1); + yoff = (short)(glyph->yoff+1); + x0 = (float)(glyph->x0+1); + y0 = (float)(glyph->y0+1); + x1 = (float)(glyph->x1-1); + y1 = (float)(glyph->y1-1); + + if (stash->params.flags & FONS_ZERO_TOPLEFT) { + rx = (float)(int)(*x + xoff); + ry = (float)(int)(*y + yoff); + + q->x0 = rx; + q->y0 = ry; + q->x1 = rx + x1 - x0; + q->y1 = ry + y1 - y0; + + q->s0 = x0 * stash->itw; + q->t0 = y0 * stash->ith; + q->s1 = x1 * stash->itw; + q->t1 = y1 * stash->ith; + } else { + rx = (float)(int)(*x + xoff); + ry = (float)(int)(*y - yoff); + + q->x0 = rx; + q->y0 = ry; + q->x1 = rx + x1 - x0; + q->y1 = ry - y1 + y0; + + q->s0 = x0 * stash->itw; + q->t0 = y0 * stash->ith; + q->s1 = x1 * stash->itw; + q->t1 = y1 * stash->ith; + } + + *x += (int)(glyph->xadv / 10.0f + 0.5f); +} + +static void fons__flush(FONScontext* stash) +{ + // Flush texture + if (stash->dirtyRect[0] < stash->dirtyRect[2] && stash->dirtyRect[1] < stash->dirtyRect[3]) { + if (stash->params.renderUpdate != NULL) + stash->params.renderUpdate(stash->params.userPtr, stash->dirtyRect, stash->texData); + // Reset dirty rect + stash->dirtyRect[0] = stash->params.width; + stash->dirtyRect[1] = stash->params.height; + stash->dirtyRect[2] = 0; + stash->dirtyRect[3] = 0; + } + + // Flush triangles + if (stash->nverts > 0) { + if (stash->params.renderDraw != NULL) + stash->params.renderDraw(stash->params.userPtr, stash->verts, stash->tcoords, stash->colors, stash->nverts); + stash->nverts = 0; + } +} + +static __inline void fons__vertex(FONScontext* stash, float x, float y, float s, float t, unsigned int c) +{ + stash->verts[stash->nverts*2+0] = x; + stash->verts[stash->nverts*2+1] = y; + stash->tcoords[stash->nverts*2+0] = s; + stash->tcoords[stash->nverts*2+1] = t; + stash->colors[stash->nverts] = c; + stash->nverts++; +} + +static float fons__getVertAlign(FONScontext* stash, FONSfont* font, int align, short isize) +{ + if (stash->params.flags & FONS_ZERO_TOPLEFT) { + if (align & FONS_ALIGN_TOP) { + return font->ascender * (float)isize/10.0f; + } else if (align & FONS_ALIGN_MIDDLE) { + return (font->ascender + font->descender) / 2.0f * (float)isize/10.0f; + } else if (align & FONS_ALIGN_BASELINE) { + return 0.0f; + } else if (align & FONS_ALIGN_BOTTOM) { + return font->descender * (float)isize/10.0f; + } + } else { + if (align & FONS_ALIGN_TOP) { + return -font->ascender * (float)isize/10.0f; + } else if (align & FONS_ALIGN_MIDDLE) { + return -(font->ascender + font->descender) / 2.0f * (float)isize/10.0f; + } else if (align & FONS_ALIGN_BASELINE) { + return 0.0f; + } else if (align & FONS_ALIGN_BOTTOM) { + return -font->descender * (float)isize/10.0f; + } + } + return 0.0; +} + +FONS_DEF float fonsDrawText(FONScontext* stash, + float x, float y, + const char* str, const char* end) +{ + FONSstate* state = fons__getState(stash); + unsigned int codepoint; + unsigned int utf8state = 0; + FONSglyph* glyph = NULL; + FONSquad q; + int prevGlyphIndex = -1; + short isize = (short)(state->size*10.0f); + short iblur = (short)state->blur; + float scale; + FONSfont* font; + float width; + + if (stash == NULL) return x; + if (state->font < 0 || state->font >= stash->nfonts) return x; + font = stash->fonts[state->font]; + if (font->data == NULL) return x; + + scale = fons__tt_getPixelHeightScale(&font->font, (float)isize/10.0f); + + if (end == NULL) + end = str + strlen(str); + + // Align horizontally + if (state->align & FONS_ALIGN_LEFT) { + // empty + } else if (state->align & FONS_ALIGN_RIGHT) { + width = fonsTextBounds(stash, x,y, str, end, NULL); + x -= width; + } else if (state->align & FONS_ALIGN_CENTER) { + width = fonsTextBounds(stash, x,y, str, end, NULL); + x -= width * 0.5f; + } + // Align vertically. + y += fons__getVertAlign(stash, font, state->align, isize); + + for (; str != end; ++str) { + if (fons__decutf8(&utf8state, &codepoint, *(const unsigned char*)str)) + continue; + glyph = fons__getGlyph(stash, font, codepoint, isize, iblur); + if (glyph != NULL) { + fons__getQuad(stash, font, prevGlyphIndex, glyph, scale, state->spacing, &x, &y, &q); + + if (stash->nverts+6 > FONS_VERTEX_COUNT) + fons__flush(stash); + + fons__vertex(stash, q.x0, q.y0, q.s0, q.t0, state->color); + fons__vertex(stash, q.x1, q.y1, q.s1, q.t1, state->color); + fons__vertex(stash, q.x1, q.y0, q.s1, q.t0, state->color); + + fons__vertex(stash, q.x0, q.y0, q.s0, q.t0, state->color); + fons__vertex(stash, q.x0, q.y1, q.s0, q.t1, state->color); + fons__vertex(stash, q.x1, q.y1, q.s1, q.t1, state->color); + } + prevGlyphIndex = glyph != NULL ? glyph->index : -1; + } + fons__flush(stash); + + return x; +} + +FONS_DEF int fonsTextIterInit(FONScontext* stash, FONStextIter* iter, + float x, float y, const char* str, const char* end) +{ + FONSstate* state = fons__getState(stash); + float width; + + memset(iter, 0, sizeof(*iter)); + + if (stash == NULL) return 0; + if (state->font < 0 || state->font >= stash->nfonts) return 0; + iter->font = stash->fonts[state->font]; + if (iter->font->data == NULL) return 0; + + iter->isize = (short)(state->size*10.0f); + iter->iblur = (short)state->blur; + iter->scale = fons__tt_getPixelHeightScale(&iter->font->font, (float)iter->isize/10.0f); + + // Align horizontally + if (state->align & FONS_ALIGN_LEFT) { + // empty + } else if (state->align & FONS_ALIGN_RIGHT) { + width = fonsTextBounds(stash, x,y, str, end, NULL); + x -= width; + } else if (state->align & FONS_ALIGN_CENTER) { + width = fonsTextBounds(stash, x,y, str, end, NULL); + x -= width * 0.5f; + } + // Align vertically. + y += fons__getVertAlign(stash, iter->font, state->align, iter->isize); + + if (end == NULL) + end = str + strlen(str); + + iter->x = iter->nextx = x; + iter->y = iter->nexty = y; + iter->spacing = state->spacing; + iter->str = str; + iter->next = str; + iter->end = end; + iter->codepoint = 0; + iter->prevGlyphIndex = -1; + + return 1; +} + +FONS_DEF int fonsTextIterNext(FONScontext* stash, FONStextIter* iter, FONSquad* quad) +{ + FONSglyph* glyph = NULL; + const char* str = iter->next; + iter->str = iter->next; + + if (str == iter->end) + return 0; + + for (; str != iter->end; str++) { + if (fons__decutf8(&iter->utf8state, &iter->codepoint, *(const unsigned char*)str)) + continue; + str++; + // Get glyph and quad + iter->x = iter->nextx; + iter->y = iter->nexty; + glyph = fons__getGlyph(stash, iter->font, iter->codepoint, iter->isize, iter->iblur); + if (glyph != NULL) + fons__getQuad(stash, iter->font, iter->prevGlyphIndex, glyph, iter->scale, iter->spacing, &iter->nextx, &iter->nexty, quad); + iter->prevGlyphIndex = glyph != NULL ? glyph->index : -1; + break; + } + iter->next = str; + + return 1; +} + +FONS_DEF void fonsDrawDebug(FONScontext* stash, float x, float y) +{ + int i; + int w = stash->params.width; + int h = stash->params.height; + float u = w == 0 ? 0 : (1.0f / w); + float v = h == 0 ? 0 : (1.0f / h); + + if (stash->nverts+6+6 > FONS_VERTEX_COUNT) + fons__flush(stash); + + // Draw background + fons__vertex(stash, x+0, y+0, u, v, 0x0fffffff); + fons__vertex(stash, x+w, y+h, u, v, 0x0fffffff); + fons__vertex(stash, x+w, y+0, u, v, 0x0fffffff); + + fons__vertex(stash, x+0, y+0, u, v, 0x0fffffff); + fons__vertex(stash, x+0, y+h, u, v, 0x0fffffff); + fons__vertex(stash, x+w, y+h, u, v, 0x0fffffff); + + // Draw texture + fons__vertex(stash, x+0, y+0, 0, 0, 0xffffffff); + fons__vertex(stash, x+w, y+h, 1, 1, 0xffffffff); + fons__vertex(stash, x+w, y+0, 1, 0, 0xffffffff); + + fons__vertex(stash, x+0, y+0, 0, 0, 0xffffffff); + fons__vertex(stash, x+0, y+h, 0, 1, 0xffffffff); + fons__vertex(stash, x+w, y+h, 1, 1, 0xffffffff); + + // Drawbug draw atlas + for (i = 0; i < stash->atlas->nnodes; i++) { + FONSatlasNode* n = &stash->atlas->nodes[i]; + + if (stash->nverts+6 > FONS_VERTEX_COUNT) + fons__flush(stash); + + fons__vertex(stash, x+n->x+0, y+n->y+0, u, v, 0xc00000ff); + fons__vertex(stash, x+n->x+n->width, y+n->y+1, u, v, 0xc00000ff); + fons__vertex(stash, x+n->x+n->width, y+n->y+0, u, v, 0xc00000ff); + + fons__vertex(stash, x+n->x+0, y+n->y+0, u, v, 0xc00000ff); + fons__vertex(stash, x+n->x+0, y+n->y+1, u, v, 0xc00000ff); + fons__vertex(stash, x+n->x+n->width, y+n->y+1, u, v, 0xc00000ff); + } + + fons__flush(stash); +} + +FONS_DEF float fonsTextBounds(FONScontext* stash, + float x, float y, + const char* str, const char* end, + float* bounds) +{ + FONSstate* state = fons__getState(stash); + unsigned int codepoint; + unsigned int utf8state = 0; + FONSquad q; + FONSglyph* glyph = NULL; + int prevGlyphIndex = -1; + short isize = (short)(state->size*10.0f); + short iblur = (short)state->blur; + float scale; + FONSfont* font; + float startx, advance; + float minx, miny, maxx, maxy; + + if (stash == NULL) return 0; + if (state->font < 0 || state->font >= stash->nfonts) return 0; + font = stash->fonts[state->font]; + if (font->data == NULL) return 0; + + scale = fons__tt_getPixelHeightScale(&font->font, (float)isize/10.0f); + + // Align vertically. + y += fons__getVertAlign(stash, font, state->align, isize); + + minx = maxx = x; + miny = maxy = y; + startx = x; + + if (end == NULL) + end = str + strlen(str); + + for (; str != end; ++str) { + if (fons__decutf8(&utf8state, &codepoint, *(const unsigned char*)str)) + continue; + glyph = fons__getGlyph(stash, font, codepoint, isize, iblur); + if (glyph != NULL) { + fons__getQuad(stash, font, prevGlyphIndex, glyph, scale, state->spacing, &x, &y, &q); + if (q.x0 < minx) minx = q.x0; + if (q.x1 > maxx) maxx = q.x1; + if (stash->params.flags & FONS_ZERO_TOPLEFT) { + if (q.y0 < miny) miny = q.y0; + if (q.y1 > maxy) maxy = q.y1; + } else { + if (q.y1 < miny) miny = q.y1; + if (q.y0 > maxy) maxy = q.y0; + } + } + prevGlyphIndex = glyph != NULL ? glyph->index : -1; + } + + advance = x - startx; + + // Align horizontally + if (state->align & FONS_ALIGN_LEFT) { + // empty + } else if (state->align & FONS_ALIGN_RIGHT) { + minx -= advance; + maxx -= advance; + } else if (state->align & FONS_ALIGN_CENTER) { + minx -= advance * 0.5f; + maxx -= advance * 0.5f; + } + + if (bounds) { + bounds[0] = minx; + bounds[1] = miny; + bounds[2] = maxx; + bounds[3] = maxy; + } + + return advance; +} + +FONS_DEF void fonsVertMetrics(FONScontext* stash, + float* ascender, float* descender, float* lineh) +{ + FONSfont* font; + FONSstate* state = fons__getState(stash); + short isize; + + if (stash == NULL) return; + if (state->font < 0 || state->font >= stash->nfonts) return; + font = stash->fonts[state->font]; + isize = (short)(state->size*10.0f); + if (font->data == NULL) return; + + if (ascender) + *ascender = font->ascender*isize/10.0f; + if (descender) + *descender = font->descender*isize/10.0f; + if (lineh) + *lineh = font->lineh*isize/10.0f; +} + +FONS_DEF void fonsLineBounds(FONScontext* stash, float y, float* miny, float* maxy) +{ + FONSfont* font; + FONSstate* state = fons__getState(stash); + short isize; + + if (stash == NULL) return; + if (state->font < 0 || state->font >= stash->nfonts) return; + font = stash->fonts[state->font]; + isize = (short)(state->size*10.0f); + if (font->data == NULL) return; + + y += fons__getVertAlign(stash, font, state->align, isize); + + if (stash->params.flags & FONS_ZERO_TOPLEFT) { + *miny = y - font->ascender * (float)isize/10.0f; + *maxy = *miny + font->lineh*isize/10.0f; + } else { + *maxy = y + font->descender * (float)isize/10.0f; + *miny = *maxy - font->lineh*isize/10.0f; + } +} + +FONS_DEF const unsigned char* fonsGetTextureData(FONScontext* stash, int* width, int* height) +{ + if (width != NULL) + *width = stash->params.width; + if (height != NULL) + *height = stash->params.height; + return stash->texData; +} + +FONS_DEF int fonsValidateTexture(FONScontext* stash, int* dirty) +{ + if (stash->dirtyRect[0] < stash->dirtyRect[2] && stash->dirtyRect[1] < stash->dirtyRect[3]) { + dirty[0] = stash->dirtyRect[0]; + dirty[1] = stash->dirtyRect[1]; + dirty[2] = stash->dirtyRect[2]; + dirty[3] = stash->dirtyRect[3]; + // Reset dirty rect + stash->dirtyRect[0] = stash->params.width; + stash->dirtyRect[1] = stash->params.height; + stash->dirtyRect[2] = 0; + stash->dirtyRect[3] = 0; + return 1; + } + return 0; +} + +FONS_DEF void fonsDeleteInternal(FONScontext* stash) +{ + int i; + if (stash == NULL) return; + + if (stash->params.renderDelete) + stash->params.renderDelete(stash->params.userPtr); + + for (i = 0; i < stash->nfonts; ++i) + fons__freeFont(stash->fonts[i]); + + if (stash->atlas) fons__deleteAtlas(stash->atlas); + if (stash->fonts) free(stash->fonts); + if (stash->texData) free(stash->texData); + if (stash->scratch) free(stash->scratch); + free(stash); +} + +FONS_DEF void fonsSetErrorCallback(FONScontext* stash, void (*callback)(void* uptr, int error, int val), void* uptr) +{ + if (stash == NULL) return; + stash->handleError = callback; + stash->errorUptr = uptr; +} + +FONS_DEF void fonsGetAtlasSize(FONScontext* stash, int* width, int* height) +{ + if (stash == NULL) return; + *width = stash->params.width; + *height = stash->params.height; +} + +FONS_DEF int fonsExpandAtlas(FONScontext* stash, int width, int height) +{ + int i, maxy = 0; + unsigned char* data = NULL; + if (stash == NULL) return 0; + + width = fons__maxi(width, stash->params.width); + height = fons__maxi(height, stash->params.height); + + if (width == stash->params.width && height == stash->params.height) + return 1; + + // Flush pending glyphs. + fons__flush(stash); + + // Create new texture + if (stash->params.renderResize != NULL) { + if (stash->params.renderResize(stash->params.userPtr, width, height) == 0) + return 0; + } + // Copy old texture data over. + data = (unsigned char*)malloc(width * height); + if (data == NULL) + return 0; + for (i = 0; i < stash->params.height; i++) { + unsigned char* dst = &data[i*width]; + unsigned char* src = &stash->texData[i*stash->params.width]; + memcpy(dst, src, stash->params.width); + if (width > stash->params.width) + memset(dst+stash->params.width, 0, width - stash->params.width); + } + if (height > stash->params.height) + memset(&data[stash->params.height * width], 0, (height - stash->params.height) * width); + + free(stash->texData); + stash->texData = data; + + // Increase atlas size + fons__atlasExpand(stash->atlas, width, height); + + // Add existing data as dirty. + for (i = 0; i < stash->atlas->nnodes; i++) + maxy = fons__maxi(maxy, stash->atlas->nodes[i].y); + stash->dirtyRect[0] = 0; + stash->dirtyRect[1] = 0; + stash->dirtyRect[2] = stash->params.width; + stash->dirtyRect[3] = maxy; + + stash->params.width = width; + stash->params.height = height; + stash->itw = 1.0f/stash->params.width; + stash->ith = 1.0f/stash->params.height; + + return 1; +} + +FONS_DEF int fonsResetAtlas(FONScontext* stash, int width, int height) +{ + int i, j; + if (stash == NULL) return 0; + + // Flush pending glyphs. + fons__flush(stash); + + // Create new texture + if (stash->params.renderResize != NULL) { + if (stash->params.renderResize(stash->params.userPtr, width, height) == 0) + return 0; + } + + // Reset atlas + fons__atlasReset(stash->atlas, width, height); + + // Clear texture data. + stash->texData = (unsigned char*)realloc(stash->texData, width * height); + if (stash->texData == NULL) return 0; + memset(stash->texData, 0, width * height); + + // Reset dirty rect + stash->dirtyRect[0] = width; + stash->dirtyRect[1] = height; + stash->dirtyRect[2] = 0; + stash->dirtyRect[3] = 0; + + // Reset cached glyphs + for (i = 0; i < stash->nfonts; i++) { + FONSfont* font = stash->fonts[i]; + font->nglyphs = 0; + for (j = 0; j < FONS_HASH_LUT_SIZE; j++) + font->lut[j] = -1; + } + + stash->params.width = width; + stash->params.height = height; + stash->itw = 1.0f/stash->params.width; + stash->ith = 1.0f/stash->params.height; + + // Add white rect at 0,0 for debug drawing. + fons__addWhiteRect(stash, 2,2); + + return 1; +} + +#endif // FONTSTASH_IMPLEMENTATION diff --git a/modules/Fontstash/source/stb_truetype.h b/modules/Fontstash/source/stb_truetype.h new file mode 100644 index 0000000..98a12c9 --- /dev/null +++ b/modules/Fontstash/source/stb_truetype.h @@ -0,0 +1,4548 @@ +// stb_truetype.h - v1.16 - public domain +// authored from 2009-2016 by Sean Barrett / RAD Game Tools +// +// This library processes TrueType files: +// parse files +// extract glyph metrics +// extract glyph shapes +// render glyphs to one-channel bitmaps with antialiasing (box filter) +// render glyphs to one-channel SDF bitmaps (signed-distance field/function) +// +// Todo: +// non-MS cmaps +// crashproof on bad data +// hinting? (no longer patented) +// cleartype-style AA? +// optimize: use simple memory allocator for intermediates +// optimize: build edge-list directly from curves +// optimize: rasterize directly from curves? +// +// ADDITIONAL CONTRIBUTORS +// +// Mikko Mononen: compound shape support, more cmap formats +// Tor Andersson: kerning, subpixel rendering +// Dougall Johnson: OpenType / Type 2 font handling +// +// Misc other: +// Ryan Gordon +// Simon Glass +// github:IntellectualKitty +// +// Bug/warning reports/fixes: +// "Zer" on mollyrocket +// Cass Everitt +// stoiko (Haemimont Games) +// Brian Hook +// Walter van Niftrik +// David Gow +// David Given +// Ivan-Assen Ivanov +// Anthony Pesch +// Johan Duparc +// Hou Qiming +// Fabian "ryg" Giesen +// Martins Mozeiko +// Cap Petschulat +// Omar Cornut +// github:aloucks +// Peter LaValle +// Sergey Popov +// Giumo X. Clanjor +// Higor Euripedes +// Thomas Fields +// Derek Vinyard +// Cort Stratton +// +// VERSION HISTORY +// +// 1.16 (2017-07-12) SDF support +// 1.15 (2017-03-03) make more arguments const +// 1.14 (2017-01-16) num-fonts-in-TTC function +// 1.13 (2017-01-02) support OpenType fonts, certain Apple fonts +// 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual +// 1.11 (2016-04-02) fix unused-variable warning +// 1.10 (2016-04-02) user-defined fabs(); rare memory leak; remove duplicate typedef +// 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use allocation userdata properly +// 1.08 (2015-09-13) document stbtt_Rasterize(); fixes for vertical & horizontal edges +// 1.07 (2015-08-01) allow PackFontRanges to accept arrays of sparse codepoints; +// variant PackFontRanges to pack and render in separate phases; +// fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?); +// fixed an assert() bug in the new rasterizer +// replace assert() with STBTT_assert() in new rasterizer +// +// Full history can be found at the end of this file. +// +// LICENSE +// +// See end of file for license information. +// +// USAGE +// +// Include this file in whatever places neeed to refer to it. In ONE C/C++ +// file, write: +// #define STB_TRUETYPE_IMPLEMENTATION +// before the #include of this file. This expands out the actual +// implementation into that C/C++ file. +// +// To make the implementation private to the file that generates the implementation, +// #define STBTT_STATIC +// +// Simple 3D API (don't ship this, but it's fine for tools and quick start) +// stbtt_BakeFontBitmap() -- bake a font to a bitmap for use as texture +// stbtt_GetBakedQuad() -- compute quad to draw for a given char +// +// Improved 3D API (more shippable): +// #include "stb_rect_pack.h" -- optional, but you really want it +// stbtt_PackBegin() +// stbtt_PackSetOversample() -- for improved quality on small fonts +// stbtt_PackFontRanges() -- pack and renders +// stbtt_PackEnd() +// stbtt_GetPackedQuad() +// +// "Load" a font file from a memory buffer (you have to keep the buffer loaded) +// stbtt_InitFont() +// stbtt_GetFontOffsetForIndex() -- indexing for TTC font collections +// stbtt_GetNumberOfFonts() -- number of fonts for TTC font collections +// +// Render a unicode codepoint to a bitmap +// stbtt_GetCodepointBitmap() -- allocates and returns a bitmap +// stbtt_MakeCodepointBitmap() -- renders into bitmap you provide +// stbtt_GetCodepointBitmapBox() -- how big the bitmap must be +// +// Character advance/positioning +// stbtt_GetCodepointHMetrics() +// stbtt_GetFontVMetrics() +// stbtt_GetCodepointKernAdvance() +// +// Starting with version 1.06, the rasterizer was replaced with a new, +// faster and generally-more-precise rasterizer. The new rasterizer more +// accurately measures pixel coverage for anti-aliasing, except in the case +// where multiple shapes overlap, in which case it overestimates the AA pixel +// coverage. Thus, anti-aliasing of intersecting shapes may look wrong. If +// this turns out to be a problem, you can re-enable the old rasterizer with +// #define STBTT_RASTERIZER_VERSION 1 +// which will incur about a 15% speed hit. +// +// ADDITIONAL DOCUMENTATION +// +// Immediately after this block comment are a series of sample programs. +// +// After the sample programs is the "header file" section. This section +// includes documentation for each API function. +// +// Some important concepts to understand to use this library: +// +// Codepoint +// Characters are defined by unicode codepoints, e.g. 65 is +// uppercase A, 231 is lowercase c with a cedilla, 0x7e30 is +// the hiragana for "ma". +// +// Glyph +// A visual character shape (every codepoint is rendered as +// some glyph) +// +// Glyph index +// A font-specific integer ID representing a glyph +// +// Baseline +// Glyph shapes are defined relative to a baseline, which is the +// bottom of uppercase characters. Characters extend both above +// and below the baseline. +// +// Current Point +// As you draw text to the screen, you keep track of a "current point" +// which is the origin of each character. The current point's vertical +// position is the baseline. Even "baked fonts" use this model. +// +// Vertical Font Metrics +// The vertical qualities of the font, used to vertically position +// and space the characters. See docs for stbtt_GetFontVMetrics. +// +// Font Size in Pixels or Points +// The preferred interface for specifying font sizes in stb_truetype +// is to specify how tall the font's vertical extent should be in pixels. +// If that sounds good enough, skip the next paragraph. +// +// Most font APIs instead use "points", which are a common typographic +// measurement for describing font size, defined as 72 points per inch. +// stb_truetype provides a point API for compatibility. However, true +// "per inch" conventions don't make much sense on computer displays +// since they different monitors have different number of pixels per +// inch. For example, Windows traditionally uses a convention that +// there are 96 pixels per inch, thus making 'inch' measurements have +// nothing to do with inches, and thus effectively defining a point to +// be 1.333 pixels. Additionally, the TrueType font data provides +// an explicit scale factor to scale a given font's glyphs to points, +// but the author has observed that this scale factor is often wrong +// for non-commercial fonts, thus making fonts scaled in points +// according to the TrueType spec incoherently sized in practice. +// +// ADVANCED USAGE +// +// Quality: +// +// - Use the functions with Subpixel at the end to allow your characters +// to have subpixel positioning. Since the font is anti-aliased, not +// hinted, this is very import for quality. (This is not possible with +// baked fonts.) +// +// - Kerning is now supported, and if you're supporting subpixel rendering +// then kerning is worth using to give your text a polished look. +// +// Performance: +// +// - Convert Unicode codepoints to glyph indexes and operate on the glyphs; +// if you don't do this, stb_truetype is forced to do the conversion on +// every call. +// +// - There are a lot of memory allocations. We should modify it to take +// a temp buffer and allocate from the temp buffer (without freeing), +// should help performance a lot. +// +// NOTES +// +// The system uses the raw data found in the .ttf file without changing it +// and without building auxiliary data structures. This is a bit inefficient +// on little-endian systems (the data is big-endian), but assuming you're +// caching the bitmaps or glyph shapes this shouldn't be a big deal. +// +// It appears to be very hard to programmatically determine what font a +// given file is in a general way. I provide an API for this, but I don't +// recommend it. +// +// +// SOURCE STATISTICS (based on v0.6c, 2050 LOC) +// +// Documentation & header file 520 LOC \___ 660 LOC documentation +// Sample code 140 LOC / +// Truetype parsing 620 LOC ---- 620 LOC TrueType +// Software rasterization 240 LOC \ . +// Curve tesselation 120 LOC \__ 550 LOC Bitmap creation +// Bitmap management 100 LOC / +// Baked bitmap interface 70 LOC / +// Font name matching & access 150 LOC ---- 150 +// C runtime library abstraction 60 LOC ---- 60 +// +// +// PERFORMANCE MEASUREMENTS FOR 1.06: +// +// 32-bit 64-bit +// Previous release: 8.83 s 7.68 s +// Pool allocations: 7.72 s 6.34 s +// Inline sort : 6.54 s 5.65 s +// New rasterizer : 5.63 s 5.00 s + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +//// +//// SAMPLE PROGRAMS +//// +// +// Incomplete text-in-3d-api example, which draws quads properly aligned to be lossless +// +#if 0 +#define STB_TRUETYPE_IMPLEMENTATION // force following include to generate implementation +#include "stb_truetype.h" + +unsigned char ttf_buffer[1<<20]; +unsigned char temp_bitmap[512*512]; + +stbtt_bakedchar cdata[96]; // ASCII 32..126 is 95 glyphs +GLuint ftex; + +void my_stbtt_initfont(void) +{ + fread(ttf_buffer, 1, 1<<20, fopen("c:/windows/fonts/times.ttf", "rb")); + stbtt_BakeFontBitmap(ttf_buffer,0, 32.0, temp_bitmap,512,512, 32,96, cdata); // no guarantee this fits! + // can free ttf_buffer at this point + glGenTextures(1, &ftex); + glBindTexture(GL_TEXTURE_2D, ftex); + glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 512,512, 0, GL_ALPHA, GL_UNSIGNED_BYTE, temp_bitmap); + // can free temp_bitmap at this point + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +} + +void my_stbtt_print(float x, float y, char *text) +{ + // assume orthographic projection with units = screen pixels, origin at top left + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, ftex); + glBegin(GL_QUADS); + while (*text) { + if (*text >= 32 && *text < 128) { + stbtt_aligned_quad q; + stbtt_GetBakedQuad(cdata, 512,512, *text-32, &x,&y,&q,1);//1=opengl & d3d10+,0=d3d9 + glTexCoord2f(q.s0,q.t1); glVertex2f(q.x0,q.y0); + glTexCoord2f(q.s1,q.t1); glVertex2f(q.x1,q.y0); + glTexCoord2f(q.s1,q.t0); glVertex2f(q.x1,q.y1); + glTexCoord2f(q.s0,q.t0); glVertex2f(q.x0,q.y1); + } + ++text; + } + glEnd(); +} +#endif +// +// +////////////////////////////////////////////////////////////////////////////// +// +// Complete program (this compiles): get a single bitmap, print as ASCII art +// +#if 0 +#include +#define STB_TRUETYPE_IMPLEMENTATION // force following include to generate implementation +#include "stb_truetype.h" + +char ttf_buffer[1<<25]; + +int main(int argc, char **argv) +{ + stbtt_fontinfo font; + unsigned char *bitmap; + int w,h,i,j,c = (argc > 1 ? atoi(argv[1]) : 'a'), s = (argc > 2 ? atoi(argv[2]) : 20); + + fread(ttf_buffer, 1, 1<<25, fopen(argc > 3 ? argv[3] : "c:/windows/fonts/arialbd.ttf", "rb")); + + stbtt_InitFont(&font, ttf_buffer, stbtt_GetFontOffsetForIndex(ttf_buffer,0)); + bitmap = stbtt_GetCodepointBitmap(&font, 0,stbtt_ScaleForPixelHeight(&font, s), c, &w, &h, 0,0); + + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) + putchar(" .:ioVM@"[bitmap[j*w+i]>>5]); + putchar('\n'); + } + return 0; +} +#endif +// +// Output: +// +// .ii. +// @@@@@@. +// V@Mio@@o +// :i. V@V +// :oM@@M +// :@@@MM@M +// @@o o@M +// :@@. M@M +// @@@o@@@@ +// :M@@V:@@. +// +////////////////////////////////////////////////////////////////////////////// +// +// Complete program: print "Hello World!" banner, with bugs +// +#if 0 +char buffer[24<<20]; +unsigned char screen[20][79]; + +int main(int arg, char **argv) +{ + stbtt_fontinfo font; + int i,j,ascent,baseline,ch=0; + float scale, xpos=2; // leave a little padding in case the character extends left + char *text = "Heljo World!"; // intentionally misspelled to show 'lj' brokenness + + fread(buffer, 1, 1000000, fopen("c:/windows/fonts/arialbd.ttf", "rb")); + stbtt_InitFont(&font, buffer, 0); + + scale = stbtt_ScaleForPixelHeight(&font, 15); + stbtt_GetFontVMetrics(&font, &ascent,0,0); + baseline = (int) (ascent*scale); + + while (text[ch]) { + int advance,lsb,x0,y0,x1,y1; + float x_shift = xpos - (float) floor(xpos); + stbtt_GetCodepointHMetrics(&font, text[ch], &advance, &lsb); + stbtt_GetCodepointBitmapBoxSubpixel(&font, text[ch], scale,scale,x_shift,0, &x0,&y0,&x1,&y1); + stbtt_MakeCodepointBitmapSubpixel(&font, &screen[baseline + y0][(int) xpos + x0], x1-x0,y1-y0, 79, scale,scale,x_shift,0, text[ch]); + // note that this stomps the old data, so where character boxes overlap (e.g. 'lj') it's wrong + // because this API is really for baking character bitmaps into textures. if you want to render + // a sequence of characters, you really need to render each bitmap to a temp buffer, then + // "alpha blend" that into the working buffer + xpos += (advance * scale); + if (text[ch+1]) + xpos += scale*stbtt_GetCodepointKernAdvance(&font, text[ch],text[ch+1]); + ++ch; + } + + for (j=0; j < 20; ++j) { + for (i=0; i < 78; ++i) + putchar(" .:ioVM@"[screen[j][i]>>5]); + putchar('\n'); + } + + return 0; +} +#endif + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +//// +//// INTEGRATION WITH YOUR CODEBASE +//// +//// The following sections allow you to supply alternate definitions +//// of C library functions used by stb_truetype. + +#ifdef STB_TRUETYPE_IMPLEMENTATION + // #define your own (u)stbtt_int8/16/32 before including to override this + #ifndef stbtt_uint8 + typedef unsigned char stbtt_uint8; + typedef signed char stbtt_int8; + typedef unsigned short stbtt_uint16; + typedef signed short stbtt_int16; + typedef unsigned int stbtt_uint32; + typedef signed int stbtt_int32; + #endif + + typedef char stbtt__check_size32[sizeof(stbtt_int32)==4 ? 1 : -1]; + typedef char stbtt__check_size16[sizeof(stbtt_int16)==2 ? 1 : -1]; + + // #define your own STBTT_ifloor/STBTT_iceil() to avoid math.h + #ifndef STBTT_ifloor + #include + #define STBTT_ifloor(x) ((int) floor(x)) + #define STBTT_iceil(x) ((int) ceil(x)) + #endif + + #ifndef STBTT_sqrt + #include + #define STBTT_sqrt(x) sqrt(x) + #define STBTT_pow(x,y) pow(x,y) + #endif + + #ifndef STBTT_cos + #include + #define STBTT_cos(x) cos(x) + #define STBTT_acos(x) acos(x) + #endif + + #ifndef STBTT_fabs + #include + #define STBTT_fabs(x) fabs(x) + #endif + + #ifndef STBTT_fabs + #include + #define STBTT_fabs(x) fabs(x) + #endif + + // #define your own functions "STBTT_malloc" / "STBTT_free" to avoid malloc.h + #ifndef STBTT_malloc + #include + #define STBTT_malloc(x,u) ((void)(u),malloc(x)) + #define STBTT_free(x,u) ((void)(u),free(x)) + #endif + + #ifndef STBTT_assert + #include + #define STBTT_assert(x) assert(x) + #endif + + #ifndef STBTT_strlen + #include + #define STBTT_strlen(x) strlen(x) + #endif + + #ifndef STBTT_memcpy + #include + #define STBTT_memcpy memcpy + #define STBTT_memset memset + #endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +//// +//// INTERFACE +//// +//// + +#ifndef __STB_INCLUDE_STB_TRUETYPE_H__ +#define __STB_INCLUDE_STB_TRUETYPE_H__ + +#ifdef STBTT_STATIC +#define STBTT_DEF static +#else +#define STBTT_DEF extern +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// private structure +typedef struct +{ + unsigned char *data; + int cursor; + int size; +} stbtt__buf; + +////////////////////////////////////////////////////////////////////////////// +// +// TEXTURE BAKING API +// +// If you use this API, you only have to call two functions ever. +// + +typedef struct +{ + unsigned short x0,y0,x1,y1; // coordinates of bbox in bitmap + float xoff,yoff,xadvance; +} stbtt_bakedchar; + +STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // font location (use offset=0 for plain .ttf) + float pixel_height, // height of font in pixels + unsigned char *pixels, int pw, int ph, // bitmap to be filled in + int first_char, int num_chars, // characters to bake + stbtt_bakedchar *chardata); // you allocate this, it's num_chars long +// if return is positive, the first unused row of the bitmap +// if return is negative, returns the negative of the number of characters that fit +// if return is 0, no characters fit and no rows were used +// This uses a very crappy packing. + +typedef struct +{ + float x0,y0,s0,t0; // top-left + float x1,y1,s1,t1; // bottom-right +} stbtt_aligned_quad; + +STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, // same data as above + int char_index, // character to display + float *xpos, float *ypos, // pointers to current position in screen pixel space + stbtt_aligned_quad *q, // output: quad to draw + int opengl_fillrule); // true if opengl fill rule; false if DX9 or earlier +// Call GetBakedQuad with char_index = 'character - first_char', and it +// creates the quad you need to draw and advances the current position. +// +// The coordinate system used assumes y increases downwards. +// +// Characters will extend both above and below the current position; +// see discussion of "BASELINE" above. +// +// It's inefficient; you might want to c&p it and optimize it. + + + +////////////////////////////////////////////////////////////////////////////// +// +// NEW TEXTURE BAKING API +// +// This provides options for packing multiple fonts into one atlas, not +// perfectly but better than nothing. + +typedef struct +{ + unsigned short x0,y0,x1,y1; // coordinates of bbox in bitmap + float xoff,yoff,xadvance; + float xoff2,yoff2; +} stbtt_packedchar; + +typedef struct stbtt_pack_context stbtt_pack_context; +typedef struct stbtt_fontinfo stbtt_fontinfo; +#ifndef STB_RECT_PACK_VERSION +typedef struct stbrp_rect stbrp_rect; +#endif + +STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, int width, int height, int stride_in_bytes, int padding, void *alloc_context); +// Initializes a packing context stored in the passed-in stbtt_pack_context. +// Future calls using this context will pack characters into the bitmap passed +// in here: a 1-channel bitmap that is width * height. stride_in_bytes is +// the distance from one row to the next (or 0 to mean they are packed tightly +// together). "padding" is the amount of padding to leave between each +// character (normally you want '1' for bitmaps you'll use as textures with +// bilinear filtering). +// +// Returns 0 on failure, 1 on success. + +STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc); +// Cleans up the packing context and frees all memory. + +#define STBTT_POINT_SIZE(x) (-(x)) + +STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, float font_size, + int first_unicode_char_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range); +// Creates character bitmaps from the font_index'th font found in fontdata (use +// font_index=0 if you don't know what that is). It creates num_chars_in_range +// bitmaps for characters with unicode values starting at first_unicode_char_in_range +// and increasing. Data for how to render them is stored in chardata_for_range; +// pass these to stbtt_GetPackedQuad to get back renderable quads. +// +// font_size is the full height of the character from ascender to descender, +// as computed by stbtt_ScaleForPixelHeight. To use a point size as computed +// by stbtt_ScaleForMappingEmToPixels, wrap the point size in STBTT_POINT_SIZE() +// and pass that result as 'font_size': +// ..., 20 , ... // font max minus min y is 20 pixels tall +// ..., STBTT_POINT_SIZE(20), ... // 'M' is 20 pixels tall + +typedef struct +{ + float font_size; + int first_unicode_codepoint_in_range; // if non-zero, then the chars are continuous, and this is the first codepoint + int *array_of_unicode_codepoints; // if non-zero, then this is an array of unicode codepoints + int num_chars; + stbtt_packedchar *chardata_for_range; // output + unsigned char h_oversample, v_oversample; // don't set these, they're used internally +} stbtt_pack_range; + +STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges); +// Creates character bitmaps from multiple ranges of characters stored in +// ranges. This will usually create a better-packed bitmap than multiple +// calls to stbtt_PackFontRange. Note that you can call this multiple +// times within a single PackBegin/PackEnd. + +STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h_oversample, unsigned int v_oversample); +// Oversampling a font increases the quality by allowing higher-quality subpixel +// positioning, and is especially valuable at smaller text sizes. +// +// This function sets the amount of oversampling for all following calls to +// stbtt_PackFontRange(s) or stbtt_PackFontRangesGatherRects for a given +// pack context. The default (no oversampling) is achieved by h_oversample=1 +// and v_oversample=1. The total number of pixels required is +// h_oversample*v_oversample larger than the default; for example, 2x2 +// oversampling requires 4x the storage of 1x1. For best results, render +// oversampled textures with bilinear filtering. Look at the readme in +// stb/tests/oversample for information about oversampled fonts +// +// To use with PackFontRangesGather etc., you must set it before calls +// call to PackFontRangesGatherRects. + +STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, // same data as above + int char_index, // character to display + float *xpos, float *ypos, // pointers to current position in screen pixel space + stbtt_aligned_quad *q, // output: quad to draw + int align_to_integer); + +STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects); +STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects); +STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects); +// Calling these functions in sequence is roughly equivalent to calling +// stbtt_PackFontRanges(). If you more control over the packing of multiple +// fonts, or if you want to pack custom data into a font texture, take a look +// at the source to of stbtt_PackFontRanges() and create a custom version +// using these functions, e.g. call GatherRects multiple times, +// building up a single array of rects, then call PackRects once, +// then call RenderIntoRects repeatedly. This may result in a +// better packing than calling PackFontRanges multiple times +// (or it may not). + +// this is an opaque structure that you shouldn't mess with which holds +// all the context needed from PackBegin to PackEnd. +struct stbtt_pack_context { + void *user_allocator_context; + void *pack_info; + int width; + int height; + int stride_in_bytes; + int padding; + unsigned int h_oversample, v_oversample; + unsigned char *pixels; + void *nodes; +}; + +////////////////////////////////////////////////////////////////////////////// +// +// FONT LOADING +// +// + +STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data); +// This function will determine the number of fonts in a font file. TrueType +// collection (.ttc) files may contain multiple fonts, while TrueType font +// (.ttf) files only contain one font. The number of fonts can be used for +// indexing with the previous function where the index is between zero and one +// less than the total fonts. If an error occurs, -1 is returned. + +STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index); +// Each .ttf/.ttc file may have more than one font. Each font has a sequential +// index number starting from 0. Call this function to get the font offset for +// a given index; it returns -1 if the index is out of range. A regular .ttf +// file will only define one font and it always be at offset 0, so it will +// return '0' for index 0, and -1 for all other indices. + +// The following structure is defined publically so you can declare one on +// the stack or as a global or etc, but you should treat it as opaque. +struct stbtt_fontinfo +{ + void * userdata; + unsigned char * data; // pointer to .ttf file + int fontstart; // offset of start of font + + int numGlyphs; // number of glyphs, needed for range checking + + int loca,head,glyf,hhea,hmtx,kern; // table locations as offset from start of .ttf + int index_map; // a cmap mapping for our chosen character encoding + int indexToLocFormat; // format needed to map from glyph index to glyph + + stbtt__buf cff; // cff font data + stbtt__buf charstrings; // the charstring index + stbtt__buf gsubrs; // global charstring subroutines index + stbtt__buf subrs; // private charstring subroutines index + stbtt__buf fontdicts; // array of font dicts + stbtt__buf fdselect; // map from glyph to fontdict +}; + +STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset); +// Given an offset into the file that defines a font, this function builds +// the necessary cached info for the rest of the system. You must allocate +// the stbtt_fontinfo yourself, and stbtt_InitFont will fill it out. You don't +// need to do anything special to free it, because the contents are pure +// value data with no additional data structures. Returns 0 on failure. + + +////////////////////////////////////////////////////////////////////////////// +// +// CHARACTER TO GLYPH-INDEX CONVERSIOn + +STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint); +// If you're going to perform multiple operations on the same character +// and you want a speed-up, call this function with the character you're +// going to process, then use glyph-based functions instead of the +// codepoint-based functions. + + +////////////////////////////////////////////////////////////////////////////// +// +// CHARACTER PROPERTIES +// + +STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float pixels); +// computes a scale factor to produce a font whose "height" is 'pixels' tall. +// Height is measured as the distance from the highest ascender to the lowest +// descender; in other words, it's equivalent to calling stbtt_GetFontVMetrics +// and computing: +// scale = pixels / (ascent - descent) +// so if you prefer to measure height by the ascent only, use a similar calculation. + +STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, float pixels); +// computes a scale factor to produce a font whose EM size is mapped to +// 'pixels' tall. This is probably what traditional APIs compute, but +// I'm not positive. + +STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap); +// ascent is the coordinate above the baseline the font extends; descent +// is the coordinate below the baseline the font extends (i.e. it is typically negative) +// lineGap is the spacing between one row's descent and the next row's ascent... +// so you should advance the vertical position by "*ascent - *descent + *lineGap" +// these are expressed in unscaled coordinates, so you must multiply by +// the scale factor for a given size + +STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1); +// the bounding box around all possible characters + +STBTT_DEF void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing); +// leftSideBearing is the offset from the current horizontal position to the left edge of the character +// advanceWidth is the offset from the current horizontal position to the next horizontal position +// these are expressed in unscaled coordinates + +STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2); +// an additional amount to add to the 'advance' value between ch1 and ch2 + +STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1); +// Gets the bounding box of the visible part of the glyph, in unscaled coordinates + +STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing); +STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2); +STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1); +// as above, but takes one or more glyph indices for greater efficiency + + +////////////////////////////////////////////////////////////////////////////// +// +// GLYPH SHAPES (you probably don't need these, but they have to go before +// the bitmaps for C declaration-order reasons) +// + +#ifndef STBTT_vmove // you can predefine these to use different values (but why?) + enum { + STBTT_vmove=1, + STBTT_vline, + STBTT_vcurve, + STBTT_vcubic + }; +#endif + +#ifndef stbtt_vertex // you can predefine this to use different values + // (we share this with other code at RAD) + #define stbtt_vertex_type short // can't use stbtt_int16 because that's not visible in the header file + typedef struct + { + stbtt_vertex_type x,y,cx,cy,cx1,cy1; + unsigned char type,padding; + } stbtt_vertex; +#endif + +STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index); +// returns non-zero if nothing is drawn for this glyph + +STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices); +STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **vertices); +// returns # of vertices and fills *vertices with the pointer to them +// these are expressed in "unscaled" coordinates +// +// The shape is a series of countours. Each one starts with +// a STBTT_moveto, then consists of a series of mixed +// STBTT_lineto and STBTT_curveto segments. A lineto +// draws a line from previous endpoint to its x,y; a curveto +// draws a quadratic bezier from previous endpoint to +// its x,y, using cx,cy as the bezier control point. + +STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *vertices); +// frees the data allocated above + +////////////////////////////////////////////////////////////////////////////// +// +// BITMAP RENDERING +// + +STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata); +// frees the bitmap allocated below + +STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff); +// allocates a large-enough single-channel 8bpp bitmap and renders the +// specified character/glyph at the specified scale into it, with +// antialiasing. 0 is no coverage (transparent), 255 is fully covered (opaque). +// *width & *height are filled out with the width & height of the bitmap, +// which is stored left-to-right, top-to-bottom. +// +// xoff/yoff are the offset it pixel space from the glyph origin to the top-left of the bitmap + +STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff); +// the same as stbtt_GetCodepoitnBitmap, but you can specify a subpixel +// shift for the character + +STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint); +// the same as stbtt_GetCodepointBitmap, but you pass in storage for the bitmap +// in the form of 'output', with row spacing of 'out_stride' bytes. the bitmap +// is clipped to out_w/out_h bytes. Call stbtt_GetCodepointBitmapBox to get the +// width and height and positioning info for it first. + +STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint); +// same as stbtt_MakeCodepointBitmap, but you can specify a subpixel +// shift for the character + +// NOTE sokol-samples: declared static but never defined: T_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int codepoint); +// same as stbtt_MakeCodepointBitmapSubpixel, but prefiltering +// is performed (see stbtt_PackSetOversampling) + +STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); +// get the bbox of the bitmap centered around the glyph origin; so the +// bitmap width is ix1-ix0, height is iy1-iy0, and location to place +// the bitmap top left is (leftSideBearing*scale,iy0). +// (Note that the bitmap uses y-increases-down, but the shape uses +// y-increases-up, so CodepointBitmapBox and CodepointBox are inverted.) + +STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1); +// same as stbtt_GetCodepointBitmapBox, but you can specify a subpixel +// shift for the character + +// the following functions are equivalent to the above functions, but operate +// on glyph indices instead of Unicode codepoints (for efficiency) +STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph); +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph); +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int glyph); +STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); +STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1); + + +// @TODO: don't expose this structure +typedef struct +{ + int w,h,stride; + unsigned char *pixels; +} stbtt__bitmap; + +// rasterize a shape with quadratic beziers into a bitmap +STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, // 1-channel bitmap to draw into + float flatness_in_pixels, // allowable error of curve in pixels + stbtt_vertex *vertices, // array of vertices defining shape + int num_verts, // number of vertices in above array + float scale_x, float scale_y, // scale applied to input vertices + float shift_x, float shift_y, // translation applied to input vertices + int x_off, int y_off, // another translation applied to input + int invert, // if non-zero, vertically flip shape + void *userdata); // context for to STBTT_MALLOC + +////////////////////////////////////////////////////////////////////////////// +// +// Signed Distance Function (or Field) rendering + +STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata); +// frees the SDF bitmap allocated below + +STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); +// These functions compute a discretized SDF field for a single character, suitable for storing +// in a single-channel texture, sampling with bilinear filtering, and testing against +// larger than some threshhold to produce scalable fonts. +// info -- the font +// scale -- controls the size of the resulting SDF bitmap, same as it would be creating a regular bitmap +// glyph/codepoint -- the character to generate the SDF for +// padding -- extra "pixels" around the character which are filled with the distance to the character (not 0), +// which allows effects like bit outlines +// onedge_value -- value 0-255 to test the SDF against to reconstruct the character (i.e. the isocontour of the character) +// pixel_dist_scale -- what value the SDF should increase by when moving one SDF "pixel" away from the edge (on the 0..255 scale) +// if positive, > onedge_value is inside; if negative, < onedge_value is inside +// width,height -- output height & width of the SDF bitmap (including padding) +// xoff,yoff -- output origin of the character +// return value -- a 2D array of bytes 0..255, width*height in size +// +// pixel_dist_scale & onedge_value are a scale & bias that allows you to make +// optimal use of the limited 0..255 for your application, trading off precision +// and special effects. SDF values outside the range 0..255 are clamped to 0..255. +// +// Example: +// scale = stbtt_ScaleForPixelHeight(22) +// padding = 5 +// onedge_value = 180 +// pixel_dist_scale = 180/5.0 = 36.0 +// +// This will create an SDF bitmap in which the character is about 22 pixels +// high but the whole bitmap is about 22+5+5=32 pixels high. To produce a filled +// shape, sample the SDF at each pixel and fill the pixel if the SDF value +// is greater than or equal to 180/255. (You'll actually want to antialias, +// which is beyond the scope of this example.) Additionally, you can compute +// offset outlines (e.g. to stroke the character border inside & outside, +// or only outside). For example, to fill outside the character up to 3 SDF +// pixels, you would compare against (180-36.0*3)/255 = 72/255. The above +// choice of variables maps a range from 5 pixels outside the shape to +// 2 pixels inside the shape to 0..255; this is intended primarily for apply +// outside effects only (the interior range is needed to allow proper +// antialiasing of the font at *smaller* sizes) +// +// The function computes the SDF analytically at each SDF pixel, not by e.g. +// building a higher-res bitmap and approximating it. In theory the quality +// should be as high as possible for an SDF of this size & representation, but +// unclear if this is true in practice (perhaps building a higher-res bitmap +// and computing from that can allow drop-out prevention). +// +// The algorithm has not been optimized at all, so expect it to be slow +// if computing lots of characters or very large sizes. + + + +////////////////////////////////////////////////////////////////////////////// +// +// Finding the right font... +// +// You should really just solve this offline, keep your own tables +// of what font is what, and don't try to get it out of the .ttf file. +// That's because getting it out of the .ttf file is really hard, because +// the names in the file can appear in many possible encodings, in many +// possible languages, and e.g. if you need a case-insensitive comparison, +// the details of that depend on the encoding & language in a complex way +// (actually underspecified in truetype, but also gigantic). +// +// But you can use the provided functions in two possible ways: +// stbtt_FindMatchingFont() will use *case-sensitive* comparisons on +// unicode-encoded names to try to find the font you want; +// you can run this before calling stbtt_InitFont() +// +// stbtt_GetFontNameString() lets you get any of the various strings +// from the file yourself and do your own comparisons on them. +// You have to have called stbtt_InitFont() first. + + +STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags); +// returns the offset (not index) of the font that matches, or -1 if none +// if you use STBTT_MACSTYLE_DONTCARE, use a font name like "Arial Bold". +// if you use any other flag, use a font name like "Arial"; this checks +// the 'macStyle' header field; i don't know if fonts set this consistently +#define STBTT_MACSTYLE_DONTCARE 0 +#define STBTT_MACSTYLE_BOLD 1 +#define STBTT_MACSTYLE_ITALIC 2 +#define STBTT_MACSTYLE_UNDERSCORE 4 +#define STBTT_MACSTYLE_NONE 8 // <= not same as 0, this makes us check the bitfield is 0 + +STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2); +// returns 1/0 whether the first string interpreted as utf8 is identical to +// the second string interpreted as big-endian utf16... useful for strings from next func + +STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID); +// returns the string (which may be big-endian double byte, e.g. for unicode) +// and puts the length in bytes in *length. +// +// some of the values for the IDs are below; for more see the truetype spec: +// http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6name.html +// http://www.microsoft.com/typography/otspec/name.htm + +enum { // platformID + STBTT_PLATFORM_ID_UNICODE =0, + STBTT_PLATFORM_ID_MAC =1, + STBTT_PLATFORM_ID_ISO =2, + STBTT_PLATFORM_ID_MICROSOFT =3 +}; + +enum { // encodingID for STBTT_PLATFORM_ID_UNICODE + STBTT_UNICODE_EID_UNICODE_1_0 =0, + STBTT_UNICODE_EID_UNICODE_1_1 =1, + STBTT_UNICODE_EID_ISO_10646 =2, + STBTT_UNICODE_EID_UNICODE_2_0_BMP=3, + STBTT_UNICODE_EID_UNICODE_2_0_FULL=4 +}; + +enum { // encodingID for STBTT_PLATFORM_ID_MICROSOFT + STBTT_MS_EID_SYMBOL =0, + STBTT_MS_EID_UNICODE_BMP =1, + STBTT_MS_EID_SHIFTJIS =2, + STBTT_MS_EID_UNICODE_FULL =10 +}; + +enum { // encodingID for STBTT_PLATFORM_ID_MAC; same as Script Manager codes + STBTT_MAC_EID_ROMAN =0, STBTT_MAC_EID_ARABIC =4, + STBTT_MAC_EID_JAPANESE =1, STBTT_MAC_EID_HEBREW =5, + STBTT_MAC_EID_CHINESE_TRAD =2, STBTT_MAC_EID_GREEK =6, + STBTT_MAC_EID_KOREAN =3, STBTT_MAC_EID_RUSSIAN =7 +}; + +enum { // languageID for STBTT_PLATFORM_ID_MICROSOFT; same as LCID... + // problematic because there are e.g. 16 english LCIDs and 16 arabic LCIDs + STBTT_MS_LANG_ENGLISH =0x0409, STBTT_MS_LANG_ITALIAN =0x0410, + STBTT_MS_LANG_CHINESE =0x0804, STBTT_MS_LANG_JAPANESE =0x0411, + STBTT_MS_LANG_DUTCH =0x0413, STBTT_MS_LANG_KOREAN =0x0412, + STBTT_MS_LANG_FRENCH =0x040c, STBTT_MS_LANG_RUSSIAN =0x0419, + STBTT_MS_LANG_GERMAN =0x0407, STBTT_MS_LANG_SPANISH =0x0409, + STBTT_MS_LANG_HEBREW =0x040d, STBTT_MS_LANG_SWEDISH =0x041D +}; + +enum { // languageID for STBTT_PLATFORM_ID_MAC + STBTT_MAC_LANG_ENGLISH =0 , STBTT_MAC_LANG_JAPANESE =11, + STBTT_MAC_LANG_ARABIC =12, STBTT_MAC_LANG_KOREAN =23, + STBTT_MAC_LANG_DUTCH =4 , STBTT_MAC_LANG_RUSSIAN =32, + STBTT_MAC_LANG_FRENCH =1 , STBTT_MAC_LANG_SPANISH =6 , + STBTT_MAC_LANG_GERMAN =2 , STBTT_MAC_LANG_SWEDISH =5 , + STBTT_MAC_LANG_HEBREW =10, STBTT_MAC_LANG_CHINESE_SIMPLIFIED =33, + STBTT_MAC_LANG_ITALIAN =3 , STBTT_MAC_LANG_CHINESE_TRAD =19 +}; + +#ifdef __cplusplus +} +#endif + +#endif // __STB_INCLUDE_STB_TRUETYPE_H__ + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +//// +//// IMPLEMENTATION +//// +//// + +#ifdef STB_TRUETYPE_IMPLEMENTATION + +#ifndef STBTT_MAX_OVERSAMPLE +#define STBTT_MAX_OVERSAMPLE 8 +#endif + +#if STBTT_MAX_OVERSAMPLE > 255 +#error "STBTT_MAX_OVERSAMPLE cannot be > 255" +#endif + +typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERSAMPLE-1)) == 0 ? 1 : -1]; + +#ifndef STBTT_RASTERIZER_VERSION +#define STBTT_RASTERIZER_VERSION 2 +#endif + +#ifdef _MSC_VER +#define STBTT__NOTUSED(v) (void)(v) +#else +#define STBTT__NOTUSED(v) (void)sizeof(v) +#endif + +////////////////////////////////////////////////////////////////////////// +// +// stbtt__buf helpers to parse data from file +// + +static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b) +{ + if (b->cursor >= b->size) + return 0; + assert(b->data); + return b->data[b->cursor++]; +} + +static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b) +{ + if (b->cursor >= b->size) + return 0; + return b->data[b->cursor]; +} + +static void stbtt__buf_seek(stbtt__buf *b, int o) +{ + STBTT_assert(!(o > b->size || o < 0)); + b->cursor = (o > b->size || o < 0) ? b->size : o; +} + +static void stbtt__buf_skip(stbtt__buf *b, int o) +{ + stbtt__buf_seek(b, b->cursor + o); +} + +static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n) +{ + stbtt_uint32 v = 0; + int i; + STBTT_assert(n >= 1 && n <= 4); + for (i = 0; i < n; i++) + v = (v << 8) | stbtt__buf_get8(b); + return v; +} + +static stbtt__buf stbtt__new_buf(const void *p, size_t size) +{ + stbtt__buf r; + STBTT_assert(size < 0x40000000); + r.data = (stbtt_uint8*) p; + r.size = (int) size; + r.cursor = 0; + return r; +} + +#define stbtt__buf_get16(b) stbtt__buf_get((b), 2) +#define stbtt__buf_get32(b) stbtt__buf_get((b), 4) + +static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s) +{ + stbtt__buf r = stbtt__new_buf(NULL, 0); + if (o < 0 || s < 0 || o > b->size || s > b->size - o) return r; + r.data = b->data + o; + r.size = s; + return r; +} + +static stbtt__buf stbtt__cff_get_index(stbtt__buf *b) +{ + int count, start, offsize; + start = b->cursor; + count = stbtt__buf_get16(b); + if (count) { + offsize = stbtt__buf_get8(b); + STBTT_assert(offsize >= 1 && offsize <= 4); + stbtt__buf_skip(b, offsize * count); + stbtt__buf_skip(b, stbtt__buf_get(b, offsize) - 1); + } + return stbtt__buf_range(b, start, b->cursor - start); +} + +static stbtt_uint32 stbtt__cff_int(stbtt__buf *b) +{ + int b0 = stbtt__buf_get8(b); + if (b0 >= 32 && b0 <= 246) return b0 - 139; + else if (b0 >= 247 && b0 <= 250) return (b0 - 247)*256 + stbtt__buf_get8(b) + 108; + else if (b0 >= 251 && b0 <= 254) return -(b0 - 251)*256 - stbtt__buf_get8(b) - 108; + else if (b0 == 28) return stbtt__buf_get16(b); + else if (b0 == 29) return stbtt__buf_get32(b); + STBTT_assert(0); + return 0; +} + +static void stbtt__cff_skip_operand(stbtt__buf *b) { + int v, b0 = stbtt__buf_peek8(b); + STBTT_assert(b0 >= 28); + if (b0 == 30) { + stbtt__buf_skip(b, 1); + while (b->cursor < b->size) { + v = stbtt__buf_get8(b); + if ((v & 0xF) == 0xF || (v >> 4) == 0xF) + break; + } + } else { + stbtt__cff_int(b); + } +} + +static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key) +{ + stbtt__buf_seek(b, 0); + while (b->cursor < b->size) { + int start = b->cursor, end, op; + while (stbtt__buf_peek8(b) >= 28) + stbtt__cff_skip_operand(b); + end = b->cursor; + op = stbtt__buf_get8(b); + if (op == 12) op = stbtt__buf_get8(b) | 0x100; + if (op == key) return stbtt__buf_range(b, start, end-start); + } + return stbtt__buf_range(b, 0, 0); +} + +static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, stbtt_uint32 *out) +{ + int i; + stbtt__buf operands = stbtt__dict_get(b, key); + for (i = 0; i < outcount && operands.cursor < operands.size; i++) + out[i] = stbtt__cff_int(&operands); +} + +static int stbtt__cff_index_count(stbtt__buf *b) +{ + stbtt__buf_seek(b, 0); + return stbtt__buf_get16(b); +} + +static stbtt__buf stbtt__cff_index_get(stbtt__buf b, int i) +{ + int count, offsize, start, end; + stbtt__buf_seek(&b, 0); + count = stbtt__buf_get16(&b); + offsize = stbtt__buf_get8(&b); + STBTT_assert(i >= 0 && i < count); + STBTT_assert(offsize >= 1 && offsize <= 4); + stbtt__buf_skip(&b, i*offsize); + start = stbtt__buf_get(&b, offsize); + end = stbtt__buf_get(&b, offsize); + return stbtt__buf_range(&b, 2+(count+1)*offsize+start, end - start); +} + +////////////////////////////////////////////////////////////////////////// +// +// accessors to parse data from file +// + +// on platforms that don't allow misaligned reads, if we want to allow +// truetype fonts that aren't padded to alignment, define ALLOW_UNALIGNED_TRUETYPE + +#define ttBYTE(p) (* (stbtt_uint8 *) (p)) +#define ttCHAR(p) (* (stbtt_int8 *) (p)) +#define ttFixed(p) ttLONG(p) + +static stbtt_uint16 ttUSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; } +static stbtt_int16 ttSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; } +static stbtt_uint32 ttULONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; } +static stbtt_int32 ttLONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; } + +#define stbtt_tag4(p,c0,c1,c2,c3) ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3)) +#define stbtt_tag(p,str) stbtt_tag4(p,str[0],str[1],str[2],str[3]) + +static int stbtt__isfont(stbtt_uint8 *font) +{ + // check the version number + if (stbtt_tag4(font, '1',0,0,0)) return 1; // TrueType 1 + if (stbtt_tag(font, "typ1")) return 1; // TrueType with type 1 font -- we don't support this! + if (stbtt_tag(font, "OTTO")) return 1; // OpenType with CFF + if (stbtt_tag4(font, 0,1,0,0)) return 1; // OpenType 1.0 + if (stbtt_tag(font, "true")) return 1; // Apple specification for TrueType fonts + return 0; +} + +// @OPTIMIZE: binary search +static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart, const char *tag) +{ + stbtt_int32 num_tables = ttUSHORT(data+fontstart+4); + stbtt_uint32 tabledir = fontstart + 12; + stbtt_int32 i; + for (i=0; i < num_tables; ++i) { + stbtt_uint32 loc = tabledir + 16*i; + if (stbtt_tag(data+loc+0, tag)) + return ttULONG(data+loc+8); + } + return 0; +} + +static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_collection, int index) +{ + // if it's just a font, there's only one valid index + if (stbtt__isfont(font_collection)) + return index == 0 ? 0 : -1; + + // check if it's a TTC + if (stbtt_tag(font_collection, "ttcf")) { + // version 1? + if (ttULONG(font_collection+4) == 0x00010000 || ttULONG(font_collection+4) == 0x00020000) { + stbtt_int32 n = ttLONG(font_collection+8); + if (index >= n) + return -1; + return ttULONG(font_collection+12+index*4); + } + } + return -1; +} + +static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection) +{ + // if it's just a font, there's only one valid font + if (stbtt__isfont(font_collection)) + return 1; + + // check if it's a TTC + if (stbtt_tag(font_collection, "ttcf")) { + // version 1? + if (ttULONG(font_collection+4) == 0x00010000 || ttULONG(font_collection+4) == 0x00020000) { + return ttLONG(font_collection+8); + } + } + return 0; +} + +static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict) +{ + stbtt_uint32 subrsoff = 0, private_loc[2] = { 0, 0 }; + stbtt__buf pdict; + stbtt__dict_get_ints(&fontdict, 18, 2, private_loc); + if (!private_loc[1] || !private_loc[0]) return stbtt__new_buf(NULL, 0); + pdict = stbtt__buf_range(&cff, private_loc[1], private_loc[0]); + stbtt__dict_get_ints(&pdict, 19, 1, &subrsoff); + if (!subrsoff) return stbtt__new_buf(NULL, 0); + stbtt__buf_seek(&cff, private_loc[1]+subrsoff); + return stbtt__cff_get_index(&cff); +} + +static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart) +{ + stbtt_uint32 cmap, t; + stbtt_int32 i,numTables; + + info->data = data; + info->fontstart = fontstart; + info->cff = stbtt__new_buf(NULL, 0); + + cmap = stbtt__find_table(data, fontstart, "cmap"); // required + info->loca = stbtt__find_table(data, fontstart, "loca"); // required + info->head = stbtt__find_table(data, fontstart, "head"); // required + info->glyf = stbtt__find_table(data, fontstart, "glyf"); // required + info->hhea = stbtt__find_table(data, fontstart, "hhea"); // required + info->hmtx = stbtt__find_table(data, fontstart, "hmtx"); // required + info->kern = stbtt__find_table(data, fontstart, "kern"); // not required + + if (!cmap || !info->head || !info->hhea || !info->hmtx) + return 0; + if (info->glyf) { + // required for truetype + if (!info->loca) return 0; + } else { + // initialization for CFF / Type2 fonts (OTF) + stbtt__buf b, topdict, topdictidx; + stbtt_uint32 cstype = 2, charstrings = 0, fdarrayoff = 0, fdselectoff = 0; + stbtt_uint32 cff; + + cff = stbtt__find_table(data, fontstart, "CFF "); + if (!cff) return 0; + + info->fontdicts = stbtt__new_buf(NULL, 0); + info->fdselect = stbtt__new_buf(NULL, 0); + + // @TODO this should use size from table (not 512MB) + info->cff = stbtt__new_buf(data+cff, 512*1024*1024); + b = info->cff; + + // read the header + stbtt__buf_skip(&b, 2); + stbtt__buf_seek(&b, stbtt__buf_get8(&b)); // hdrsize + + // @TODO the name INDEX could list multiple fonts, + // but we just use the first one. + stbtt__cff_get_index(&b); // name INDEX + topdictidx = stbtt__cff_get_index(&b); + topdict = stbtt__cff_index_get(topdictidx, 0); + stbtt__cff_get_index(&b); // string INDEX + info->gsubrs = stbtt__cff_get_index(&b); + + stbtt__dict_get_ints(&topdict, 17, 1, &charstrings); + stbtt__dict_get_ints(&topdict, 0x100 | 6, 1, &cstype); + stbtt__dict_get_ints(&topdict, 0x100 | 36, 1, &fdarrayoff); + stbtt__dict_get_ints(&topdict, 0x100 | 37, 1, &fdselectoff); + info->subrs = stbtt__get_subrs(b, topdict); + + // we only support Type 2 charstrings + if (cstype != 2) return 0; + if (charstrings == 0) return 0; + + if (fdarrayoff) { + // looks like a CID font + if (!fdselectoff) return 0; + stbtt__buf_seek(&b, fdarrayoff); + info->fontdicts = stbtt__cff_get_index(&b); + info->fdselect = stbtt__buf_range(&b, fdselectoff, b.size-fdselectoff); + } + + stbtt__buf_seek(&b, charstrings); + info->charstrings = stbtt__cff_get_index(&b); + } + + t = stbtt__find_table(data, fontstart, "maxp"); + if (t) + info->numGlyphs = ttUSHORT(data+t+4); + else + info->numGlyphs = 0xffff; + + // find a cmap encoding table we understand *now* to avoid searching + // later. (todo: could make this installable) + // the same regardless of glyph. + numTables = ttUSHORT(data + cmap + 2); + info->index_map = 0; + for (i=0; i < numTables; ++i) { + stbtt_uint32 encoding_record = cmap + 4 + 8 * i; + // find an encoding we understand: + switch(ttUSHORT(data+encoding_record)) { + case STBTT_PLATFORM_ID_MICROSOFT: + switch (ttUSHORT(data+encoding_record+2)) { + case STBTT_MS_EID_UNICODE_BMP: + case STBTT_MS_EID_UNICODE_FULL: + // MS/Unicode + info->index_map = cmap + ttULONG(data+encoding_record+4); + break; + } + break; + case STBTT_PLATFORM_ID_UNICODE: + // Mac/iOS has these + // all the encodingIDs are unicode, so we don't bother to check it + info->index_map = cmap + ttULONG(data+encoding_record+4); + break; + } + } + if (info->index_map == 0) + return 0; + + info->indexToLocFormat = ttUSHORT(data+info->head + 50); + return 1; +} + +STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint) +{ + stbtt_uint8 *data = info->data; + stbtt_uint32 index_map = info->index_map; + + stbtt_uint16 format = ttUSHORT(data + index_map + 0); + if (format == 0) { // apple byte encoding + stbtt_int32 bytes = ttUSHORT(data + index_map + 2); + if (unicode_codepoint < bytes-6) + return ttBYTE(data + index_map + 6 + unicode_codepoint); + return 0; + } else if (format == 6) { + stbtt_uint32 first = ttUSHORT(data + index_map + 6); + stbtt_uint32 count = ttUSHORT(data + index_map + 8); + if ((stbtt_uint32) unicode_codepoint >= first && (stbtt_uint32) unicode_codepoint < first+count) + return ttUSHORT(data + index_map + 10 + (unicode_codepoint - first)*2); + return 0; + } else if (format == 2) { + STBTT_assert(0); // @TODO: high-byte mapping for japanese/chinese/korean + return 0; + } else if (format == 4) { // standard mapping for windows fonts: binary search collection of ranges + stbtt_uint16 segcount = ttUSHORT(data+index_map+6) >> 1; + stbtt_uint16 searchRange = ttUSHORT(data+index_map+8) >> 1; + stbtt_uint16 entrySelector = ttUSHORT(data+index_map+10); + stbtt_uint16 rangeShift = ttUSHORT(data+index_map+12) >> 1; + + // do a binary search of the segments + stbtt_uint32 endCount = index_map + 14; + stbtt_uint32 search = endCount; + + if (unicode_codepoint > 0xffff) + return 0; + + // they lie from endCount .. endCount + segCount + // but searchRange is the nearest power of two, so... + if (unicode_codepoint >= ttUSHORT(data + search + rangeShift*2)) + search += rangeShift*2; + + // now decrement to bias correctly to find smallest + search -= 2; + while (entrySelector) { + stbtt_uint16 end; + searchRange >>= 1; + end = ttUSHORT(data + search + searchRange*2); + if (unicode_codepoint > end) + search += searchRange*2; + --entrySelector; + } + search += 2; + + { + stbtt_uint16 offset, start; + stbtt_uint16 item = (stbtt_uint16) ((search - endCount) >> 1); + + STBTT_assert(unicode_codepoint <= ttUSHORT(data + endCount + 2*item)); + start = ttUSHORT(data + index_map + 14 + segcount*2 + 2 + 2*item); + if (unicode_codepoint < start) + return 0; + + offset = ttUSHORT(data + index_map + 14 + segcount*6 + 2 + 2*item); + if (offset == 0) + return (stbtt_uint16) (unicode_codepoint + ttSHORT(data + index_map + 14 + segcount*4 + 2 + 2*item)); + + return ttUSHORT(data + offset + (unicode_codepoint-start)*2 + index_map + 14 + segcount*6 + 2 + 2*item); + } + } else if (format == 12 || format == 13) { + stbtt_uint32 ngroups = ttULONG(data+index_map+12); + stbtt_int32 low,high; + low = 0; high = (stbtt_int32)ngroups; + // Binary search the right group. + while (low < high) { + stbtt_int32 mid = low + ((high-low) >> 1); // rounds down, so low <= mid < high + stbtt_uint32 start_char = ttULONG(data+index_map+16+mid*12); + stbtt_uint32 end_char = ttULONG(data+index_map+16+mid*12+4); + if ((stbtt_uint32) unicode_codepoint < start_char) + high = mid; + else if ((stbtt_uint32) unicode_codepoint > end_char) + low = mid+1; + else { + stbtt_uint32 start_glyph = ttULONG(data+index_map+16+mid*12+8); + if (format == 12) + return start_glyph + unicode_codepoint-start_char; + else // format == 13 + return start_glyph; + } + } + return 0; // not found + } + // @TODO + STBTT_assert(0); + return 0; +} + +STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices) +{ + return stbtt_GetGlyphShape(info, stbtt_FindGlyphIndex(info, unicode_codepoint), vertices); +} + +static void stbtt_setvertex(stbtt_vertex *v, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy) +{ + v->type = type; + v->x = (stbtt_int16) x; + v->y = (stbtt_int16) y; + v->cx = (stbtt_int16) cx; + v->cy = (stbtt_int16) cy; +} + +static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_index) +{ + int g1,g2; + + STBTT_assert(!info->cff.size); + + if (glyph_index >= info->numGlyphs) return -1; // glyph index out of range + if (info->indexToLocFormat >= 2) return -1; // unknown index->glyph map format + + if (info->indexToLocFormat == 0) { + g1 = info->glyf + ttUSHORT(info->data + info->loca + glyph_index * 2) * 2; + g2 = info->glyf + ttUSHORT(info->data + info->loca + glyph_index * 2 + 2) * 2; + } else { + g1 = info->glyf + ttULONG (info->data + info->loca + glyph_index * 4); + g2 = info->glyf + ttULONG (info->data + info->loca + glyph_index * 4 + 4); + } + + return g1==g2 ? -1 : g1; // if length is 0, return -1 +} + +static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1); + +STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) +{ + if (info->cff.size) { + stbtt__GetGlyphInfoT2(info, glyph_index, x0, y0, x1, y1); + } else { + int g = stbtt__GetGlyfOffset(info, glyph_index); + if (g < 0) return 0; + + if (x0) *x0 = ttSHORT(info->data + g + 2); + if (y0) *y0 = ttSHORT(info->data + g + 4); + if (x1) *x1 = ttSHORT(info->data + g + 6); + if (y1) *y1 = ttSHORT(info->data + g + 8); + } + return 1; +} + +STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1) +{ + return stbtt_GetGlyphBox(info, stbtt_FindGlyphIndex(info,codepoint), x0,y0,x1,y1); +} + +STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index) +{ + stbtt_int16 numberOfContours; + int g; + if (info->cff.size) + return stbtt__GetGlyphInfoT2(info, glyph_index, NULL, NULL, NULL, NULL) == 0; + g = stbtt__GetGlyfOffset(info, glyph_index); + if (g < 0) return 1; + numberOfContours = ttSHORT(info->data + g); + return numberOfContours == 0; +} + +static int stbtt__close_shape(stbtt_vertex *vertices, int num_vertices, int was_off, int start_off, + stbtt_int32 sx, stbtt_int32 sy, stbtt_int32 scx, stbtt_int32 scy, stbtt_int32 cx, stbtt_int32 cy) +{ + if (start_off) { + if (was_off) + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, (cx+scx)>>1, (cy+scy)>>1, cx,cy); + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, sx,sy,scx,scy); + } else { + if (was_off) + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve,sx,sy,cx,cy); + else + stbtt_setvertex(&vertices[num_vertices++], STBTT_vline,sx,sy,0,0); + } + return num_vertices; +} + +static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) +{ + stbtt_int16 numberOfContours; + stbtt_uint8 *endPtsOfContours; + stbtt_uint8 *data = info->data; + stbtt_vertex *vertices=0; + int num_vertices=0; + int g = stbtt__GetGlyfOffset(info, glyph_index); + + *pvertices = NULL; + + if (g < 0) return 0; + + numberOfContours = ttSHORT(data + g); + + if (numberOfContours > 0) { + stbtt_uint8 flags=0,flagcount; + stbtt_int32 ins, i,j=0,m,n, next_move, was_off=0, off, start_off=0; + stbtt_int32 x,y,cx,cy,sx,sy, scx,scy; + stbtt_uint8 *points; + endPtsOfContours = (data + g + 10); + ins = ttUSHORT(data + g + 10 + numberOfContours * 2); + points = data + g + 10 + numberOfContours * 2 + 2 + ins; + + n = 1+ttUSHORT(endPtsOfContours + numberOfContours*2-2); + + m = n + 2*numberOfContours; // a loose bound on how many vertices we might need + vertices = (stbtt_vertex *) STBTT_malloc(m * sizeof(vertices[0]), info->userdata); + if (vertices == 0) + return 0; + + next_move = 0; + flagcount=0; + + // in first pass, we load uninterpreted data into the allocated array + // above, shifted to the end of the array so we won't overwrite it when + // we create our final data starting from the front + + off = m - n; // starting offset for uninterpreted data, regardless of how m ends up being calculated + + // first load flags + + for (i=0; i < n; ++i) { + if (flagcount == 0) { + flags = *points++; + if (flags & 8) + flagcount = *points++; + } else + --flagcount; + vertices[off+i].type = flags; + } + + // now load x coordinates + x=0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + if (flags & 2) { + stbtt_int16 dx = *points++; + x += (flags & 16) ? dx : -dx; // ??? + } else { + if (!(flags & 16)) { + x = x + (stbtt_int16) (points[0]*256 + points[1]); + points += 2; + } + } + vertices[off+i].x = (stbtt_int16) x; + } + + // now load y coordinates + y=0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + if (flags & 4) { + stbtt_int16 dy = *points++; + y += (flags & 32) ? dy : -dy; // ??? + } else { + if (!(flags & 32)) { + y = y + (stbtt_int16) (points[0]*256 + points[1]); + points += 2; + } + } + vertices[off+i].y = (stbtt_int16) y; + } + + // now convert them to our format + num_vertices=0; + sx = sy = cx = cy = scx = scy = 0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + x = (stbtt_int16) vertices[off+i].x; + y = (stbtt_int16) vertices[off+i].y; + + if (next_move == i) { + if (i != 0) + num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy); + + // now start the new one + start_off = !(flags & 1); + if (start_off) { + // if we start off with an off-curve point, then when we need to find a point on the curve + // where we can start, and we need to save some state for when we wraparound. + scx = x; + scy = y; + if (!(vertices[off+i+1].type & 1)) { + // next point is also a curve point, so interpolate an on-point curve + sx = (x + (stbtt_int32) vertices[off+i+1].x) >> 1; + sy = (y + (stbtt_int32) vertices[off+i+1].y) >> 1; + } else { + // otherwise just use the next point as our start point + sx = (stbtt_int32) vertices[off+i+1].x; + sy = (stbtt_int32) vertices[off+i+1].y; + ++i; // we're using point i+1 as the starting point, so skip it + } + } else { + sx = x; + sy = y; + } + stbtt_setvertex(&vertices[num_vertices++], STBTT_vmove,sx,sy,0,0); + was_off = 0; + next_move = 1 + ttUSHORT(endPtsOfContours+j*2); + ++j; + } else { + if (!(flags & 1)) { // if it's a curve + if (was_off) // two off-curve control points in a row means interpolate an on-curve midpoint + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, (cx+x)>>1, (cy+y)>>1, cx, cy); + cx = x; + cy = y; + was_off = 1; + } else { + if (was_off) + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, x,y, cx, cy); + else + stbtt_setvertex(&vertices[num_vertices++], STBTT_vline, x,y,0,0); + was_off = 0; + } + } + } + num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy); + } else if (numberOfContours == -1) { + // Compound shapes. + int more = 1; + stbtt_uint8 *comp = data + g + 10; + num_vertices = 0; + vertices = 0; + while (more) { + stbtt_uint16 flags, gidx; + int comp_num_verts = 0, i; + stbtt_vertex *comp_verts = 0, *tmp = 0; + float mtx[6] = {1,0,0,1,0,0}, m, n; + + flags = ttSHORT(comp); comp+=2; + gidx = ttSHORT(comp); comp+=2; + + if (flags & 2) { // XY values + if (flags & 1) { // shorts + mtx[4] = ttSHORT(comp); comp+=2; + mtx[5] = ttSHORT(comp); comp+=2; + } else { + mtx[4] = ttCHAR(comp); comp+=1; + mtx[5] = ttCHAR(comp); comp+=1; + } + } + else { + // @TODO handle matching point + STBTT_assert(0); + } + if (flags & (1<<3)) { // WE_HAVE_A_SCALE + mtx[0] = mtx[3] = ttSHORT(comp)/16384.0f; comp+=2; + mtx[1] = mtx[2] = 0; + } else if (flags & (1<<6)) { // WE_HAVE_AN_X_AND_YSCALE + mtx[0] = ttSHORT(comp)/16384.0f; comp+=2; + mtx[1] = mtx[2] = 0; + mtx[3] = ttSHORT(comp)/16384.0f; comp+=2; + } else if (flags & (1<<7)) { // WE_HAVE_A_TWO_BY_TWO + mtx[0] = ttSHORT(comp)/16384.0f; comp+=2; + mtx[1] = ttSHORT(comp)/16384.0f; comp+=2; + mtx[2] = ttSHORT(comp)/16384.0f; comp+=2; + mtx[3] = ttSHORT(comp)/16384.0f; comp+=2; + } + + // Find transformation scales. + m = (float) STBTT_sqrt(mtx[0]*mtx[0] + mtx[1]*mtx[1]); + n = (float) STBTT_sqrt(mtx[2]*mtx[2] + mtx[3]*mtx[3]); + + // Get indexed glyph. + comp_num_verts = stbtt_GetGlyphShape(info, gidx, &comp_verts); + if (comp_num_verts > 0) { + // Transform vertices. + for (i = 0; i < comp_num_verts; ++i) { + stbtt_vertex* v = &comp_verts[i]; + stbtt_vertex_type x,y; + x=v->x; y=v->y; + v->x = (stbtt_vertex_type)(m * (mtx[0]*x + mtx[2]*y + mtx[4])); + v->y = (stbtt_vertex_type)(n * (mtx[1]*x + mtx[3]*y + mtx[5])); + x=v->cx; y=v->cy; + v->cx = (stbtt_vertex_type)(m * (mtx[0]*x + mtx[2]*y + mtx[4])); + v->cy = (stbtt_vertex_type)(n * (mtx[1]*x + mtx[3]*y + mtx[5])); + } + // Append vertices. + tmp = (stbtt_vertex*)STBTT_malloc((num_vertices+comp_num_verts)*sizeof(stbtt_vertex), info->userdata); + if (!tmp) { + if (vertices) STBTT_free(vertices, info->userdata); + if (comp_verts) STBTT_free(comp_verts, info->userdata); + return 0; + } + if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex)); + STBTT_memcpy(tmp+num_vertices, comp_verts, comp_num_verts*sizeof(stbtt_vertex)); + if (vertices) STBTT_free(vertices, info->userdata); + vertices = tmp; + STBTT_free(comp_verts, info->userdata); + num_vertices += comp_num_verts; + } + // More components ? + more = flags & (1<<5); + } + } else if (numberOfContours < 0) { + // @TODO other compound variations? + STBTT_assert(0); + } else { + // numberOfCounters == 0, do nothing + } + + *pvertices = vertices; + return num_vertices; +} + +typedef struct +{ + int bounds; + int started; + float first_x, first_y; + float x, y; + stbtt_int32 min_x, max_x, min_y, max_y; + + stbtt_vertex *pvertices; + int num_vertices; +} stbtt__csctx; + +#define STBTT__CSCTX_INIT(bounds) {bounds,0, 0,0, 0,0, 0,0,0,0, NULL, 0} + +static void stbtt__track_vertex(stbtt__csctx *c, stbtt_int32 x, stbtt_int32 y) +{ + if (x > c->max_x || !c->started) c->max_x = x; + if (y > c->max_y || !c->started) c->max_y = y; + if (x < c->min_x || !c->started) c->min_x = x; + if (y < c->min_y || !c->started) c->min_y = y; + c->started = 1; +} + +static void stbtt__csctx_v(stbtt__csctx *c, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy, stbtt_int32 cx1, stbtt_int32 cy1) +{ + if (c->bounds) { + stbtt__track_vertex(c, x, y); + if (type == STBTT_vcubic) { + stbtt__track_vertex(c, cx, cy); + stbtt__track_vertex(c, cx1, cy1); + } + } else { + stbtt_setvertex(&c->pvertices[c->num_vertices], type, x, y, cx, cy); + c->pvertices[c->num_vertices].cx1 = (stbtt_int16) cx1; + c->pvertices[c->num_vertices].cy1 = (stbtt_int16) cy1; + } + c->num_vertices++; +} + +static void stbtt__csctx_close_shape(stbtt__csctx *ctx) +{ + if (ctx->first_x != ctx->x || ctx->first_y != ctx->y) + stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->first_x, (int)ctx->first_y, 0, 0, 0, 0); +} + +static void stbtt__csctx_rmove_to(stbtt__csctx *ctx, float dx, float dy) +{ + stbtt__csctx_close_shape(ctx); + ctx->first_x = ctx->x = ctx->x + dx; + ctx->first_y = ctx->y = ctx->y + dy; + stbtt__csctx_v(ctx, STBTT_vmove, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0); +} + +static void stbtt__csctx_rline_to(stbtt__csctx *ctx, float dx, float dy) +{ + ctx->x += dx; + ctx->y += dy; + stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0); +} + +static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, float dx1, float dy1, float dx2, float dy2, float dx3, float dy3) +{ + float cx1 = ctx->x + dx1; + float cy1 = ctx->y + dy1; + float cx2 = cx1 + dx2; + float cy2 = cy1 + dy2; + ctx->x = cx2 + dx3; + ctx->y = cy2 + dy3; + stbtt__csctx_v(ctx, STBTT_vcubic, (int)ctx->x, (int)ctx->y, (int)cx1, (int)cy1, (int)cx2, (int)cy2); +} + +static stbtt__buf stbtt__get_subr(stbtt__buf idx, int n) +{ + int count = stbtt__cff_index_count(&idx); + int bias = 107; + if (count >= 33900) + bias = 32768; + else if (count >= 1240) + bias = 1131; + n += bias; + if (n < 0 || n >= count) + return stbtt__new_buf(NULL, 0); + return stbtt__cff_index_get(idx, n); +} + +static stbtt__buf stbtt__cid_get_glyph_subrs(const stbtt_fontinfo *info, int glyph_index) +{ + stbtt__buf fdselect = info->fdselect; + int nranges, start, end, v, fmt, fdselector = -1, i; + + stbtt__buf_seek(&fdselect, 0); + fmt = stbtt__buf_get8(&fdselect); + if (fmt == 0) { + // untested + stbtt__buf_skip(&fdselect, glyph_index); + fdselector = stbtt__buf_get8(&fdselect); + } else if (fmt == 3) { + nranges = stbtt__buf_get16(&fdselect); + start = stbtt__buf_get16(&fdselect); + for (i = 0; i < nranges; i++) { + v = stbtt__buf_get8(&fdselect); + end = stbtt__buf_get16(&fdselect); + if (glyph_index >= start && glyph_index < end) { + fdselector = v; + break; + } + start = end; + } + } + if (fdselector == -1) stbtt__new_buf(NULL, 0); + return stbtt__get_subrs(info->cff, stbtt__cff_index_get(info->fontdicts, fdselector)); +} + +static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, stbtt__csctx *c) +{ + int in_header = 1, maskbits = 0, subr_stack_height = 0, sp = 0, v, i, b0; + int has_subrs = 0, clear_stack; + float s[48]; + stbtt__buf subr_stack[10], subrs = info->subrs, b; + float f; + +#define STBTT__CSERR(s) (0) + + // this currently ignores the initial width value, which isn't needed if we have hmtx + b = stbtt__cff_index_get(info->charstrings, glyph_index); + while (b.cursor < b.size) { + i = 0; + clear_stack = 1; + b0 = stbtt__buf_get8(&b); + switch (b0) { + // @TODO implement hinting + case 0x13: // hintmask + case 0x14: // cntrmask + if (in_header) + maskbits += (sp / 2); // implicit "vstem" + in_header = 0; + stbtt__buf_skip(&b, (maskbits + 7) / 8); + break; + + case 0x01: // hstem + case 0x03: // vstem + case 0x12: // hstemhm + case 0x17: // vstemhm + maskbits += (sp / 2); + break; + + case 0x15: // rmoveto + in_header = 0; + if (sp < 2) return STBTT__CSERR("rmoveto stack"); + stbtt__csctx_rmove_to(c, s[sp-2], s[sp-1]); + break; + case 0x04: // vmoveto + in_header = 0; + if (sp < 1) return STBTT__CSERR("vmoveto stack"); + stbtt__csctx_rmove_to(c, 0, s[sp-1]); + break; + case 0x16: // hmoveto + in_header = 0; + if (sp < 1) return STBTT__CSERR("hmoveto stack"); + stbtt__csctx_rmove_to(c, s[sp-1], 0); + break; + + case 0x05: // rlineto + if (sp < 2) return STBTT__CSERR("rlineto stack"); + for (; i + 1 < sp; i += 2) + stbtt__csctx_rline_to(c, s[i], s[i+1]); + break; + + // hlineto/vlineto and vhcurveto/hvcurveto alternate horizontal and vertical + // starting from a different place. + + case 0x07: // vlineto + if (sp < 1) return STBTT__CSERR("vlineto stack"); + goto vlineto; + case 0x06: // hlineto + if (sp < 1) return STBTT__CSERR("hlineto stack"); + for (;;) { + if (i >= sp) break; + stbtt__csctx_rline_to(c, s[i], 0); + i++; + vlineto: + if (i >= sp) break; + stbtt__csctx_rline_to(c, 0, s[i]); + i++; + } + break; + + case 0x1F: // hvcurveto + if (sp < 4) return STBTT__CSERR("hvcurveto stack"); + goto hvcurveto; + case 0x1E: // vhcurveto + if (sp < 4) return STBTT__CSERR("vhcurveto stack"); + for (;;) { + if (i + 3 >= sp) break; + stbtt__csctx_rccurve_to(c, 0, s[i], s[i+1], s[i+2], s[i+3], (sp - i == 5) ? s[i + 4] : 0.0f); + i += 4; + hvcurveto: + if (i + 3 >= sp) break; + stbtt__csctx_rccurve_to(c, s[i], 0, s[i+1], s[i+2], (sp - i == 5) ? s[i+4] : 0.0f, s[i+3]); + i += 4; + } + break; + + case 0x08: // rrcurveto + if (sp < 6) return STBTT__CSERR("rcurveline stack"); + for (; i + 5 < sp; i += 6) + stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]); + break; + + case 0x18: // rcurveline + if (sp < 8) return STBTT__CSERR("rcurveline stack"); + for (; i + 5 < sp - 2; i += 6) + stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]); + if (i + 1 >= sp) return STBTT__CSERR("rcurveline stack"); + stbtt__csctx_rline_to(c, s[i], s[i+1]); + break; + + case 0x19: // rlinecurve + if (sp < 8) return STBTT__CSERR("rlinecurve stack"); + for (; i + 1 < sp - 6; i += 2) + stbtt__csctx_rline_to(c, s[i], s[i+1]); + if (i + 5 >= sp) return STBTT__CSERR("rlinecurve stack"); + stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]); + break; + + case 0x1A: // vvcurveto + case 0x1B: // hhcurveto + if (sp < 4) return STBTT__CSERR("(vv|hh)curveto stack"); + f = 0.0; + if (sp & 1) { f = s[i]; i++; } + for (; i + 3 < sp; i += 4) { + if (b0 == 0x1B) + stbtt__csctx_rccurve_to(c, s[i], f, s[i+1], s[i+2], s[i+3], 0.0); + else + stbtt__csctx_rccurve_to(c, f, s[i], s[i+1], s[i+2], 0.0, s[i+3]); + f = 0.0; + } + break; + + case 0x0A: // callsubr + if (!has_subrs) { + if (info->fdselect.size) + subrs = stbtt__cid_get_glyph_subrs(info, glyph_index); + has_subrs = 1; + } + // fallthrough + case 0x1D: // callgsubr + if (sp < 1) return STBTT__CSERR("call(g|)subr stack"); + v = (int) s[--sp]; + if (subr_stack_height >= 10) return STBTT__CSERR("recursion limit"); + subr_stack[subr_stack_height++] = b; + b = stbtt__get_subr(b0 == 0x0A ? subrs : info->gsubrs, v); + if (b.size == 0) return STBTT__CSERR("subr not found"); + b.cursor = 0; + clear_stack = 0; + break; + + case 0x0B: // return + if (subr_stack_height <= 0) return STBTT__CSERR("return outside subr"); + b = subr_stack[--subr_stack_height]; + clear_stack = 0; + break; + + case 0x0E: // endchar + stbtt__csctx_close_shape(c); + return 1; + + case 0x0C: { // two-byte escape + float dx1, dx2, dx3, dx4, dx5, dx6, dy1, dy2, dy3, dy4, dy5, dy6; + float dx, dy; + int b1 = stbtt__buf_get8(&b); + switch (b1) { + // @TODO These "flex" implementations ignore the flex-depth and resolution, + // and always draw beziers. + case 0x22: // hflex + if (sp < 7) return STBTT__CSERR("hflex stack"); + dx1 = s[0]; + dx2 = s[1]; + dy2 = s[2]; + dx3 = s[3]; + dx4 = s[4]; + dx5 = s[5]; + dx6 = s[6]; + stbtt__csctx_rccurve_to(c, dx1, 0, dx2, dy2, dx3, 0); + stbtt__csctx_rccurve_to(c, dx4, 0, dx5, -dy2, dx6, 0); + break; + + case 0x23: // flex + if (sp < 13) return STBTT__CSERR("flex stack"); + dx1 = s[0]; + dy1 = s[1]; + dx2 = s[2]; + dy2 = s[3]; + dx3 = s[4]; + dy3 = s[5]; + dx4 = s[6]; + dy4 = s[7]; + dx5 = s[8]; + dy5 = s[9]; + dx6 = s[10]; + dy6 = s[11]; + //fd is s[12] + stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, dy3); + stbtt__csctx_rccurve_to(c, dx4, dy4, dx5, dy5, dx6, dy6); + break; + + case 0x24: // hflex1 + if (sp < 9) return STBTT__CSERR("hflex1 stack"); + dx1 = s[0]; + dy1 = s[1]; + dx2 = s[2]; + dy2 = s[3]; + dx3 = s[4]; + dx4 = s[5]; + dx5 = s[6]; + dy5 = s[7]; + dx6 = s[8]; + stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, 0); + stbtt__csctx_rccurve_to(c, dx4, 0, dx5, dy5, dx6, -(dy1+dy2+dy5)); + break; + + case 0x25: // flex1 + if (sp < 11) return STBTT__CSERR("flex1 stack"); + dx1 = s[0]; + dy1 = s[1]; + dx2 = s[2]; + dy2 = s[3]; + dx3 = s[4]; + dy3 = s[5]; + dx4 = s[6]; + dy4 = s[7]; + dx5 = s[8]; + dy5 = s[9]; + dx6 = dy6 = s[10]; + dx = dx1+dx2+dx3+dx4+dx5; + dy = dy1+dy2+dy3+dy4+dy5; + if (STBTT_fabs(dx) > STBTT_fabs(dy)) + dy6 = -dy; + else + dx6 = -dx; + stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, dy3); + stbtt__csctx_rccurve_to(c, dx4, dy4, dx5, dy5, dx6, dy6); + break; + + default: + return STBTT__CSERR("unimplemented"); + } + } break; + + default: + if (b0 != 255 && b0 != 28 && (b0 < 32 || b0 > 254)) + return STBTT__CSERR("reserved operator"); + + // push immediate + if (b0 == 255) { + f = (float)stbtt__buf_get32(&b) / 0x10000; + } else { + stbtt__buf_skip(&b, -1); + f = (float)(stbtt_int16)stbtt__cff_int(&b); + } + if (sp >= 48) return STBTT__CSERR("push stack overflow"); + s[sp++] = f; + clear_stack = 0; + break; + } + if (clear_stack) sp = 0; + } + return STBTT__CSERR("no endchar"); + +#undef STBTT__CSERR +} + +static int stbtt__GetGlyphShapeT2(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) +{ + // runs the charstring twice, once to count and once to output (to avoid realloc) + stbtt__csctx count_ctx = STBTT__CSCTX_INIT(1); + stbtt__csctx output_ctx = STBTT__CSCTX_INIT(0); + if (stbtt__run_charstring(info, glyph_index, &count_ctx)) { + *pvertices = (stbtt_vertex*)STBTT_malloc(count_ctx.num_vertices*sizeof(stbtt_vertex), info->userdata); + output_ctx.pvertices = *pvertices; + if (stbtt__run_charstring(info, glyph_index, &output_ctx)) { + STBTT_assert(output_ctx.num_vertices == count_ctx.num_vertices); + return output_ctx.num_vertices; + } + } + *pvertices = NULL; + return 0; +} + +static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) +{ + stbtt__csctx c = STBTT__CSCTX_INIT(1); + int r = stbtt__run_charstring(info, glyph_index, &c); + if (x0) { + *x0 = r ? c.min_x : 0; + *y0 = r ? c.min_y : 0; + *x1 = r ? c.max_x : 0; + *y1 = r ? c.max_y : 0; + } + return r ? c.num_vertices : 0; +} + +STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) +{ + if (!info->cff.size) + return stbtt__GetGlyphShapeTT(info, glyph_index, pvertices); + else + return stbtt__GetGlyphShapeT2(info, glyph_index, pvertices); +} + +STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing) +{ + stbtt_uint16 numOfLongHorMetrics = ttUSHORT(info->data+info->hhea + 34); + if (glyph_index < numOfLongHorMetrics) { + if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*glyph_index); + if (leftSideBearing) *leftSideBearing = ttSHORT(info->data + info->hmtx + 4*glyph_index + 2); + } else { + if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*(numOfLongHorMetrics-1)); + if (leftSideBearing) *leftSideBearing = ttSHORT(info->data + info->hmtx + 4*numOfLongHorMetrics + 2*(glyph_index - numOfLongHorMetrics)); + } +} + +STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2) +{ + stbtt_uint8 *data = info->data + info->kern; + stbtt_uint32 needle, straw; + int l, r, m; + + // we only look at the first table. it must be 'horizontal' and format 0. + if (!info->kern) + return 0; + if (ttUSHORT(data+2) < 1) // number of tables, need at least 1 + return 0; + if (ttUSHORT(data+8) != 1) // horizontal flag must be set in format + return 0; + + l = 0; + r = ttUSHORT(data+10) - 1; + needle = glyph1 << 16 | glyph2; + while (l <= r) { + m = (l + r) >> 1; + straw = ttULONG(data+18+(m*6)); // note: unaligned read + if (needle < straw) + r = m - 1; + else if (needle > straw) + l = m + 1; + else + return ttSHORT(data+22+(m*6)); + } + return 0; +} + +STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2) +{ + if (!info->kern) // if no kerning table, don't waste time looking up both codepoint->glyphs + return 0; + return stbtt_GetGlyphKernAdvance(info, stbtt_FindGlyphIndex(info,ch1), stbtt_FindGlyphIndex(info,ch2)); +} + +STBTT_DEF void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing) +{ + stbtt_GetGlyphHMetrics(info, stbtt_FindGlyphIndex(info,codepoint), advanceWidth, leftSideBearing); +} + +STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap) +{ + if (ascent ) *ascent = ttSHORT(info->data+info->hhea + 4); + if (descent) *descent = ttSHORT(info->data+info->hhea + 6); + if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8); +} + +STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1) +{ + *x0 = ttSHORT(info->data + info->head + 36); + *y0 = ttSHORT(info->data + info->head + 38); + *x1 = ttSHORT(info->data + info->head + 40); + *y1 = ttSHORT(info->data + info->head + 42); +} + +STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float height) +{ + int fheight = ttSHORT(info->data + info->hhea + 4) - ttSHORT(info->data + info->hhea + 6); + return (float) height / fheight; +} + +STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, float pixels) +{ + int unitsPerEm = ttUSHORT(info->data + info->head + 18); + return pixels / unitsPerEm; +} + +STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *v) +{ + STBTT_free(v, info->userdata); +} + +////////////////////////////////////////////////////////////////////////////// +// +// antialiasing software rasterizer +// + +STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + int x0=0,y0=0,x1,y1; // =0 suppresses compiler warning + if (!stbtt_GetGlyphBox(font, glyph, &x0,&y0,&x1,&y1)) { + // e.g. space character + if (ix0) *ix0 = 0; + if (iy0) *iy0 = 0; + if (ix1) *ix1 = 0; + if (iy1) *iy1 = 0; + } else { + // move to integral bboxes (treating pixels as little squares, what pixels get touched)? + if (ix0) *ix0 = STBTT_ifloor( x0 * scale_x + shift_x); + if (iy0) *iy0 = STBTT_ifloor(-y1 * scale_y + shift_y); + if (ix1) *ix1 = STBTT_iceil ( x1 * scale_x + shift_x); + if (iy1) *iy1 = STBTT_iceil (-y0 * scale_y + shift_y); + } +} + +STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + stbtt_GetGlyphBitmapBoxSubpixel(font, glyph, scale_x, scale_y,0.0f,0.0f, ix0, iy0, ix1, iy1); +} + +STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + stbtt_GetGlyphBitmapBoxSubpixel(font, stbtt_FindGlyphIndex(font,codepoint), scale_x, scale_y,shift_x,shift_y, ix0,iy0,ix1,iy1); +} + +STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + stbtt_GetCodepointBitmapBoxSubpixel(font, codepoint, scale_x, scale_y,0.0f,0.0f, ix0,iy0,ix1,iy1); +} + +////////////////////////////////////////////////////////////////////////////// +// +// Rasterizer + +typedef struct stbtt__hheap_chunk +{ + struct stbtt__hheap_chunk *next; +} stbtt__hheap_chunk; + +typedef struct stbtt__hheap +{ + struct stbtt__hheap_chunk *head; + void *first_free; + int num_remaining_in_head_chunk; +} stbtt__hheap; + +static void *stbtt__hheap_alloc(stbtt__hheap *hh, size_t size, void *userdata) +{ + if (hh->first_free) { + void *p = hh->first_free; + hh->first_free = * (void **) p; + return p; + } else { + if (hh->num_remaining_in_head_chunk == 0) { + int count = (size < 32 ? 2000 : size < 128 ? 800 : 100); + stbtt__hheap_chunk *c = (stbtt__hheap_chunk *) STBTT_malloc(sizeof(stbtt__hheap_chunk) + size * count, userdata); + if (c == NULL) + return NULL; + c->next = hh->head; + hh->head = c; + hh->num_remaining_in_head_chunk = count; + } + --hh->num_remaining_in_head_chunk; + return (char *) (hh->head) + size * hh->num_remaining_in_head_chunk; + } +} + +static void stbtt__hheap_free(stbtt__hheap *hh, void *p) +{ + *(void **) p = hh->first_free; + hh->first_free = p; +} + +static void stbtt__hheap_cleanup(stbtt__hheap *hh, void *userdata) +{ + stbtt__hheap_chunk *c = hh->head; + while (c) { + stbtt__hheap_chunk *n = c->next; + STBTT_free(c, userdata); + c = n; + } +} + +typedef struct stbtt__edge { + float x0,y0, x1,y1; + int invert; +} stbtt__edge; + + +typedef struct stbtt__active_edge +{ + struct stbtt__active_edge *next; + #if STBTT_RASTERIZER_VERSION==1 + int x,dx; + float ey; + int direction; + #elif STBTT_RASTERIZER_VERSION==2 + float fx,fdx,fdy; + float direction; + float sy; + float ey; + #else + #error "Unrecognized value of STBTT_RASTERIZER_VERSION" + #endif +} stbtt__active_edge; + +#if STBTT_RASTERIZER_VERSION == 1 +#define STBTT_FIXSHIFT 10 +#define STBTT_FIX (1 << STBTT_FIXSHIFT) +#define STBTT_FIXMASK (STBTT_FIX-1) + +static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, float start_point, void *userdata) +{ + stbtt__active_edge *z = (stbtt__active_edge *) stbtt__hheap_alloc(hh, sizeof(*z), userdata); + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); + STBTT_assert(z != NULL); + if (!z) return z; + + // round dx down to avoid overshooting + if (dxdy < 0) + z->dx = -STBTT_ifloor(STBTT_FIX * -dxdy); + else + z->dx = STBTT_ifloor(STBTT_FIX * dxdy); + + z->x = STBTT_ifloor(STBTT_FIX * e->x0 + z->dx * (start_point - e->y0)); // use z->dx so when we offset later it's by the same amount + z->x -= off_x * STBTT_FIX; + + z->ey = e->y1; + z->next = 0; + z->direction = e->invert ? 1 : -1; + return z; +} +#elif STBTT_RASTERIZER_VERSION == 2 +static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, float start_point, void *userdata) +{ + stbtt__active_edge *z = (stbtt__active_edge *) stbtt__hheap_alloc(hh, sizeof(*z), userdata); + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); + STBTT_assert(z != NULL); + //STBTT_assert(e->y0 <= start_point); + if (!z) return z; + z->fdx = dxdy; + z->fdy = dxdy != 0.0f ? (1.0f/dxdy) : 0.0f; + z->fx = e->x0 + dxdy * (start_point - e->y0); + z->fx -= off_x; + z->direction = e->invert ? 1.0f : -1.0f; + z->sy = e->y0; + z->ey = e->y1; + z->next = 0; + return z; +} +#else +#error "Unrecognized value of STBTT_RASTERIZER_VERSION" +#endif + +#if STBTT_RASTERIZER_VERSION == 1 +// note: this routine clips fills that extend off the edges... ideally this +// wouldn't happen, but it could happen if the truetype glyph bounding boxes +// are wrong, or if the user supplies a too-small bitmap +static void stbtt__fill_active_edges(unsigned char *scanline, int len, stbtt__active_edge *e, int max_weight) +{ + // non-zero winding fill + int x0=0, w=0; + + while (e) { + if (w == 0) { + // if we're currently at zero, we need to record the edge start point + x0 = e->x; w += e->direction; + } else { + int x1 = e->x; w += e->direction; + // if we went to zero, we need to draw + if (w == 0) { + int i = x0 >> STBTT_FIXSHIFT; + int j = x1 >> STBTT_FIXSHIFT; + + if (i < len && j >= 0) { + if (i == j) { + // x0,x1 are the same pixel, so compute combined coverage + scanline[i] = scanline[i] + (stbtt_uint8) ((x1 - x0) * max_weight >> STBTT_FIXSHIFT); + } else { + if (i >= 0) // add antialiasing for x0 + scanline[i] = scanline[i] + (stbtt_uint8) (((STBTT_FIX - (x0 & STBTT_FIXMASK)) * max_weight) >> STBTT_FIXSHIFT); + else + i = -1; // clip + + if (j < len) // add antialiasing for x1 + scanline[j] = scanline[j] + (stbtt_uint8) (((x1 & STBTT_FIXMASK) * max_weight) >> STBTT_FIXSHIFT); + else + j = len; // clip + + for (++i; i < j; ++i) // fill pixels between x0 and x1 + scanline[i] = scanline[i] + (stbtt_uint8) max_weight; + } + } + } + } + + e = e->next; + } +} + +static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata) +{ + stbtt__hheap hh = { 0, 0, 0 }; + stbtt__active_edge *active = NULL; + int y,j=0; + int max_weight = (255 / vsubsample); // weight per vertical scanline + int s; // vertical subsample index + unsigned char scanline_data[512], *scanline; + + if (result->w > 512) + scanline = (unsigned char *) STBTT_malloc(result->w, userdata); + else + scanline = scanline_data; + + y = off_y * vsubsample; + e[n].y0 = (off_y + result->h) * (float) vsubsample + 1; + + while (j < result->h) { + STBTT_memset(scanline, 0, result->w); + for (s=0; s < vsubsample; ++s) { + // find center of pixel for this scanline + float scan_y = y + 0.5f; + stbtt__active_edge **step = &active; + + // update all active edges; + // remove all active edges that terminate before the center of this scanline + while (*step) { + stbtt__active_edge * z = *step; + if (z->ey <= scan_y) { + *step = z->next; // delete from list + STBTT_assert(z->direction); + z->direction = 0; + stbtt__hheap_free(&hh, z); + } else { + z->x += z->dx; // advance to position for current scanline + step = &((*step)->next); // advance through list + } + } + + // resort the list if needed + for(;;) { + int changed=0; + step = &active; + while (*step && (*step)->next) { + if ((*step)->x > (*step)->next->x) { + stbtt__active_edge *t = *step; + stbtt__active_edge *q = t->next; + + t->next = q->next; + q->next = t; + *step = q; + changed = 1; + } + step = &(*step)->next; + } + if (!changed) break; + } + + // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline + while (e->y0 <= scan_y) { + if (e->y1 > scan_y) { + stbtt__active_edge *z = stbtt__new_active(&hh, e, off_x, scan_y, userdata); + if (z != NULL) { + // find insertion point + if (active == NULL) + active = z; + else if (z->x < active->x) { + // insert at front + z->next = active; + active = z; + } else { + // find thing to insert AFTER + stbtt__active_edge *p = active; + while (p->next && p->next->x < z->x) + p = p->next; + // at this point, p->next->x is NOT < z->x + z->next = p->next; + p->next = z; + } + } + } + ++e; + } + + // now process all active edges in XOR fashion + if (active) + stbtt__fill_active_edges(scanline, result->w, active, max_weight); + + ++y; + } + STBTT_memcpy(result->pixels + j * result->stride, scanline, result->w); + ++j; + } + + stbtt__hheap_cleanup(&hh, userdata); + + if (scanline != scanline_data) + STBTT_free(scanline, userdata); +} + +#elif STBTT_RASTERIZER_VERSION == 2 + +// the edge passed in here does not cross the vertical line at x or the vertical line at x+1 +// (i.e. it has already been clipped to those) +static void stbtt__handle_clipped_edge(float *scanline, int x, stbtt__active_edge *e, float x0, float y0, float x1, float y1) +{ + if (y0 == y1) return; + STBTT_assert(y0 < y1); + STBTT_assert(e->sy <= e->ey); + if (y0 > e->ey) return; + if (y1 < e->sy) return; + if (y0 < e->sy) { + x0 += (x1-x0) * (e->sy - y0) / (y1-y0); + y0 = e->sy; + } + if (y1 > e->ey) { + x1 += (x1-x0) * (e->ey - y1) / (y1-y0); + y1 = e->ey; + } + + if (x0 == x) + STBTT_assert(x1 <= x+1); + else if (x0 == x+1) + STBTT_assert(x1 >= x); + else if (x0 <= x) + STBTT_assert(x1 <= x); + else if (x0 >= x+1) + STBTT_assert(x1 >= x+1); + else + STBTT_assert(x1 >= x && x1 <= x+1); + + if (x0 <= x && x1 <= x) + scanline[x] += e->direction * (y1-y0); + else if (x0 >= x+1 && x1 >= x+1) + ; + else { + STBTT_assert(x0 >= x && x0 <= x+1 && x1 >= x && x1 <= x+1); + scanline[x] += e->direction * (y1-y0) * (1-((x0-x)+(x1-x))/2); // coverage = 1 - average x position + } +} + +static void stbtt__fill_active_edges_new(float *scanline, float *scanline_fill, int len, stbtt__active_edge *e, float y_top) +{ + float y_bottom = y_top+1; + + while (e) { + // brute force every pixel + + // compute intersection points with top & bottom + STBTT_assert(e->ey >= y_top); + + if (e->fdx == 0) { + float x0 = e->fx; + if (x0 < len) { + if (x0 >= 0) { + stbtt__handle_clipped_edge(scanline,(int) x0,e, x0,y_top, x0,y_bottom); + stbtt__handle_clipped_edge(scanline_fill-1,(int) x0+1,e, x0,y_top, x0,y_bottom); + } else { + stbtt__handle_clipped_edge(scanline_fill-1,0,e, x0,y_top, x0,y_bottom); + } + } + } else { + float x0 = e->fx; + float dx = e->fdx; + float xb = x0 + dx; + float x_top, x_bottom; + float sy0,sy1; + float dy = e->fdy; + STBTT_assert(e->sy <= y_bottom && e->ey >= y_top); + + // compute endpoints of line segment clipped to this scanline (if the + // line segment starts on this scanline. x0 is the intersection of the + // line with y_top, but that may be off the line segment. + if (e->sy > y_top) { + x_top = x0 + dx * (e->sy - y_top); + sy0 = e->sy; + } else { + x_top = x0; + sy0 = y_top; + } + if (e->ey < y_bottom) { + x_bottom = x0 + dx * (e->ey - y_top); + sy1 = e->ey; + } else { + x_bottom = xb; + sy1 = y_bottom; + } + + if (x_top >= 0 && x_bottom >= 0 && x_top < len && x_bottom < len) { + // from here on, we don't have to range check x values + + if ((int) x_top == (int) x_bottom) { + float height; + // simple case, only spans one pixel + int x = (int) x_top; + height = sy1 - sy0; + STBTT_assert(x >= 0 && x < len); + scanline[x] += e->direction * (1-((x_top - x) + (x_bottom-x))/2) * height; + scanline_fill[x] += e->direction * height; // everything right of this pixel is filled + } else { + int x,x1,x2; + float y_crossing, step, sign, area; + // covers 2+ pixels + if (x_top > x_bottom) { + // flip scanline vertically; signed area is the same + float t; + sy0 = y_bottom - (sy0 - y_top); + sy1 = y_bottom - (sy1 - y_top); + t = sy0, sy0 = sy1, sy1 = t; + t = x_bottom, x_bottom = x_top, x_top = t; + // SOKOL FIXME: static analyzer fix 'Value stored to 'dx' is never read' + //dx = -dx; + dy = -dy; + // SOKOL FIXME: static analyzer fix 'Although the value stored to 'xb' is used in the enclosing expression, the value is never actually read from 'xb'' + /*t = x0,*/x0 = xb/*xb = t*/; + } + + x1 = (int) x_top; + x2 = (int) x_bottom; + // compute intersection with y axis at x1+1 + y_crossing = (x1+1 - x0) * dy + y_top; + + sign = e->direction; + // area of the rectangle covered from y0..y_crossing + area = sign * (y_crossing-sy0); + // area of the triangle (x_top,y0), (x+1,y0), (x+1,y_crossing) + scanline[x1] += area * (1-((x_top - x1)+(x1+1-x1))/2); + + step = sign * dy; + for (x = x1+1; x < x2; ++x) { + scanline[x] += area + step/2; + area += step; + } + y_crossing += dy * (x2 - (x1+1)); + + STBTT_assert(STBTT_fabs(area) <= 1.01f); + + scanline[x2] += area + sign * (1-((x2-x2)+(x_bottom-x2))/2) * (sy1-y_crossing); + + scanline_fill[x2] += sign * (sy1-sy0); + } + } else { + // if edge goes outside of box we're drawing, we require + // clipping logic. since this does not match the intended use + // of this library, we use a different, very slow brute + // force implementation + int x; + for (x=0; x < len; ++x) { + // cases: + // + // there can be up to two intersections with the pixel. any intersection + // with left or right edges can be handled by splitting into two (or three) + // regions. intersections with top & bottom do not necessitate case-wise logic. + // + // the old way of doing this found the intersections with the left & right edges, + // then used some simple logic to produce up to three segments in sorted order + // from top-to-bottom. however, this had a problem: if an x edge was epsilon + // across the x border, then the corresponding y position might not be distinct + // from the other y segment, and it might ignored as an empty segment. to avoid + // that, we need to explicitly produce segments based on x positions. + + // rename variables to clearly-defined pairs + float y0 = y_top; + float x1 = (float) (x); + float x2 = (float) (x+1); + float x3 = xb; + float y3 = y_bottom; + + // x = e->x + e->dx * (y-y_top) + // (y-y_top) = (x - e->x) / e->dx + // y = (x - e->x) / e->dx + y_top + float y1 = (x - x0) / dx + y_top; + float y2 = (x+1 - x0) / dx + y_top; + + if (x0 < x1 && x3 > x2) { // three segments descending down-right + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); + stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x2,y2); + stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); + } else if (x3 < x1 && x0 > x2) { // three segments descending down-left + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x2,y2); + stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x1,y1); + stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x3,y3); + } else if (x0 < x1 && x3 > x1) { // two segments across x, down-right + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); + stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x3,y3); + } else if (x3 < x1 && x0 > x1) { // two segments across x, down-left + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); + stbtt__handle_clipped_edge(scanline,x,e, x1,y1, x3,y3); + } else if (x0 < x2 && x3 > x2) { // two segments across x+1, down-right + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x2,y2); + stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); + } else if (x3 < x2 && x0 > x2) { // two segments across x+1, down-left + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x2,y2); + stbtt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); + } else { // one segment + stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x3,y3); + } + } + } + } + e = e->next; + } +} + +// directly AA rasterize edges w/o supersampling +static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata) +{ + stbtt__hheap hh = { 0, 0, 0 }; + stbtt__active_edge *active = NULL; + int y,j=0, i; + float scanline_data[129], *scanline, *scanline2; + + STBTT__NOTUSED(vsubsample); + + if (result->w > 64) + scanline = (float *) STBTT_malloc((result->w*2+1) * sizeof(float), userdata); + else + scanline = scanline_data; + + scanline2 = scanline + result->w; + + y = off_y; + e[n].y0 = (float) (off_y + result->h) + 1; + + while (j < result->h) { + // find center of pixel for this scanline + float scan_y_top = y + 0.0f; + float scan_y_bottom = y + 1.0f; + stbtt__active_edge **step = &active; + + STBTT_memset(scanline , 0, result->w*sizeof(scanline[0])); + STBTT_memset(scanline2, 0, (result->w+1)*sizeof(scanline[0])); + + // update all active edges; + // remove all active edges that terminate before the top of this scanline + while (*step) { + stbtt__active_edge * z = *step; + if (z->ey <= scan_y_top) { + *step = z->next; // delete from list + STBTT_assert(z->direction); + z->direction = 0; + stbtt__hheap_free(&hh, z); + } else { + step = &((*step)->next); // advance through list + } + } + + // insert all edges that start before the bottom of this scanline + while (e->y0 <= scan_y_bottom) { + if (e->y0 != e->y1) { + stbtt__active_edge *z = stbtt__new_active(&hh, e, off_x, scan_y_top, userdata); + if (z != NULL) { + STBTT_assert(z->ey >= scan_y_top); + // insert at front + z->next = active; + active = z; + } + } + ++e; + } + + // now process all active edges + if (active) + stbtt__fill_active_edges_new(scanline, scanline2+1, result->w, active, scan_y_top); + + { + float sum = 0; + for (i=0; i < result->w; ++i) { + float k; + int m; + sum += scanline2[i]; + k = scanline[i] + sum; + k = (float) STBTT_fabs(k)*255 + 0.5f; + m = (int) k; + if (m > 255) m = 255; + result->pixels[j*result->stride + i] = (unsigned char) m; + } + } + // advance all the edges + step = &active; + while (*step) { + stbtt__active_edge *z = *step; + z->fx += z->fdx; // advance to position for current scanline + step = &((*step)->next); // advance through list + } + + ++y; + ++j; + } + + stbtt__hheap_cleanup(&hh, userdata); + + if (scanline != scanline_data) + STBTT_free(scanline, userdata); +} +#else +#error "Unrecognized value of STBTT_RASTERIZER_VERSION" +#endif + +#define STBTT__COMPARE(a,b) ((a)->y0 < (b)->y0) + +static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n) +{ + int i,j; + for (i=1; i < n; ++i) { + stbtt__edge t = p[i], *a = &t; + j = i; + while (j > 0) { + stbtt__edge *b = &p[j-1]; + int c = STBTT__COMPARE(a,b); + if (!c) break; + p[j] = p[j-1]; + --j; + } + if (i != j) + p[j] = t; + } +} + +static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) +{ + /* threshhold for transitioning to insertion sort */ + while (n > 12) { + stbtt__edge t; + int c01,c12,c,m,i,j; + + /* compute median of three */ + m = n >> 1; + c01 = STBTT__COMPARE(&p[0],&p[m]); + c12 = STBTT__COMPARE(&p[m],&p[n-1]); + /* if 0 >= mid >= end, or 0 < mid < end, then use mid */ + if (c01 != c12) { + /* otherwise, we'll need to swap something else to middle */ + int z; + c = STBTT__COMPARE(&p[0],&p[n-1]); + /* 0>mid && midn => n; 0 0 */ + /* 0n: 0>n => 0; 0 n */ + z = (c == c12) ? 0 : n-1; + t = p[z]; + p[z] = p[m]; + p[m] = t; + } + /* now p[m] is the median-of-three */ + /* swap it to the beginning so it won't move around */ + t = p[0]; + p[0] = p[m]; + p[m] = t; + + /* partition loop */ + i=1; + j=n-1; + for(;;) { + /* handling of equality is crucial here */ + /* for sentinels & efficiency with duplicates */ + for (;;++i) { + if (!STBTT__COMPARE(&p[i], &p[0])) break; + } + for (;;--j) { + if (!STBTT__COMPARE(&p[0], &p[j])) break; + } + /* make sure we haven't crossed */ + if (i >= j) break; + t = p[i]; + p[i] = p[j]; + p[j] = t; + + ++i; + --j; + } + /* recurse on smaller side, iterate on larger */ + if (j < (n-i)) { + stbtt__sort_edges_quicksort(p,j); + p = p+i; + n = n-i; + } else { + stbtt__sort_edges_quicksort(p+i, n-i); + n = j; + } + } +} + +static void stbtt__sort_edges(stbtt__edge *p, int n) +{ + stbtt__sort_edges_quicksort(p, n); + stbtt__sort_edges_ins_sort(p, n); +} + +typedef struct +{ + float x,y; +} stbtt__point; + +static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, int *wcount, int windings, float scale_x, float scale_y, float shift_x, float shift_y, int off_x, int off_y, int invert, void *userdata) +{ + float y_scale_inv = invert ? -scale_y : scale_y; + stbtt__edge *e; + int n,i,j,k,m; +#if STBTT_RASTERIZER_VERSION == 1 + int vsubsample = result->h < 8 ? 15 : 5; +#elif STBTT_RASTERIZER_VERSION == 2 + int vsubsample = 1; +#else + #error "Unrecognized value of STBTT_RASTERIZER_VERSION" +#endif + // vsubsample should divide 255 evenly; otherwise we won't reach full opacity + + // now we have to blow out the windings into explicit edge lists + n = 0; + for (i=0; i < windings; ++i) + n += wcount[i]; + + e = (stbtt__edge *) STBTT_malloc(sizeof(*e) * (n+1), userdata); // add an extra one as a sentinel + if (e == 0) return; + n = 0; + + m=0; + for (i=0; i < windings; ++i) { + stbtt__point *p = pts + m; + m += wcount[i]; + j = wcount[i]-1; + for (k=0; k < wcount[i]; j=k++) { + int a=k,b=j; + // skip the edge if horizontal + if (p[j].y == p[k].y) + continue; + // add edge from j to k to the list + e[n].invert = 0; + if (invert ? p[j].y > p[k].y : p[j].y < p[k].y) { + e[n].invert = 1; + a=j,b=k; + } + e[n].x0 = p[a].x * scale_x + shift_x; + e[n].y0 = (p[a].y * y_scale_inv + shift_y) * vsubsample; + e[n].x1 = p[b].x * scale_x + shift_x; + e[n].y1 = (p[b].y * y_scale_inv + shift_y) * vsubsample; + ++n; + } + } + + // now sort the edges by their highest point (should snap to integer, and then by x) + //STBTT_sort(e, n, sizeof(e[0]), stbtt__edge_compare); + stbtt__sort_edges(e, n); + + // now, traverse the scanlines and find the intersections on each scanline, use xor winding rule + stbtt__rasterize_sorted_edges(result, e, n, vsubsample, off_x, off_y, userdata); + + STBTT_free(e, userdata); +} + +static void stbtt__add_point(stbtt__point *points, int n, float x, float y) +{ + if (!points) return; // during first pass, it's unallocated + points[n].x = x; + points[n].y = y; +} + +// tesselate until threshhold p is happy... @TODO warped to compensate for non-linear stretching +static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float objspace_flatness_squared, int n) +{ + // midpoint + float mx = (x0 + 2*x1 + x2)/4; + float my = (y0 + 2*y1 + y2)/4; + // versus directly drawn line + float dx = (x0+x2)/2 - mx; + float dy = (y0+y2)/2 - my; + if (n > 16) // 65536 segments on one curve better be enough! + return 1; + if (dx*dx+dy*dy > objspace_flatness_squared) { // half-pixel error allowed... need to be smaller if AA + stbtt__tesselate_curve(points, num_points, x0,y0, (x0+x1)/2.0f,(y0+y1)/2.0f, mx,my, objspace_flatness_squared,n+1); + stbtt__tesselate_curve(points, num_points, mx,my, (x1+x2)/2.0f,(y1+y2)/2.0f, x2,y2, objspace_flatness_squared,n+1); + } else { + stbtt__add_point(points, *num_points,x2,y2); + *num_points = *num_points+1; + } + return 1; +} + +static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float objspace_flatness_squared, int n) +{ + // @TODO this "flatness" calculation is just made-up nonsense that seems to work well enough + float dx0 = x1-x0; + float dy0 = y1-y0; + float dx1 = x2-x1; + float dy1 = y2-y1; + float dx2 = x3-x2; + float dy2 = y3-y2; + float dx = x3-x0; + float dy = y3-y0; + float longlen = (float) (STBTT_sqrt(dx0*dx0+dy0*dy0)+STBTT_sqrt(dx1*dx1+dy1*dy1)+STBTT_sqrt(dx2*dx2+dy2*dy2)); + float shortlen = (float) STBTT_sqrt(dx*dx+dy*dy); + float flatness_squared = longlen*longlen-shortlen*shortlen; + + if (n > 16) // 65536 segments on one curve better be enough! + return; + + if (flatness_squared > objspace_flatness_squared) { + float x01 = (x0+x1)/2; + float y01 = (y0+y1)/2; + float x12 = (x1+x2)/2; + float y12 = (y1+y2)/2; + float x23 = (x2+x3)/2; + float y23 = (y2+y3)/2; + + float xa = (x01+x12)/2; + float ya = (y01+y12)/2; + float xb = (x12+x23)/2; + float yb = (y12+y23)/2; + + float mx = (xa+xb)/2; + float my = (ya+yb)/2; + + stbtt__tesselate_cubic(points, num_points, x0,y0, x01,y01, xa,ya, mx,my, objspace_flatness_squared,n+1); + stbtt__tesselate_cubic(points, num_points, mx,my, xb,yb, x23,y23, x3,y3, objspace_flatness_squared,n+1); + } else { + stbtt__add_point(points, *num_points,x3,y3); + *num_points = *num_points+1; + } +} + +// returns number of contours +static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, float objspace_flatness, int **contour_lengths, int *num_contours, void *userdata) +{ + stbtt__point *points=0; + int num_points=0; + + float objspace_flatness_squared = objspace_flatness * objspace_flatness; + int i,n=0,start=0, pass; + + // count how many "moves" there are to get the contour count + for (i=0; i < num_verts; ++i) + if (vertices[i].type == STBTT_vmove) + ++n; + + *num_contours = n; + if (n == 0) return 0; + + *contour_lengths = (int *) STBTT_malloc(sizeof(**contour_lengths) * n, userdata); + + if (*contour_lengths == 0) { + *num_contours = 0; + return 0; + } + + // make two passes through the points so we don't need to realloc + for (pass=0; pass < 2; ++pass) { + float x=0,y=0; + if (pass == 1) { + points = (stbtt__point *) STBTT_malloc(num_points * sizeof(points[0]), userdata); + if (points == NULL) goto error; + } + num_points = 0; + n= -1; + for (i=0; i < num_verts; ++i) { + switch (vertices[i].type) { + case STBTT_vmove: + // start the next contour + if (n >= 0) + (*contour_lengths)[n] = num_points - start; + ++n; + start = num_points; + + x = vertices[i].x, y = vertices[i].y; + stbtt__add_point(points, num_points++, x,y); + break; + case STBTT_vline: + x = vertices[i].x, y = vertices[i].y; + stbtt__add_point(points, num_points++, x, y); + break; + case STBTT_vcurve: + stbtt__tesselate_curve(points, &num_points, x,y, + vertices[i].cx, vertices[i].cy, + vertices[i].x, vertices[i].y, + objspace_flatness_squared, 0); + x = vertices[i].x, y = vertices[i].y; + break; + case STBTT_vcubic: + stbtt__tesselate_cubic(points, &num_points, x,y, + vertices[i].cx, vertices[i].cy, + vertices[i].cx1, vertices[i].cy1, + vertices[i].x, vertices[i].y, + objspace_flatness_squared, 0); + x = vertices[i].x, y = vertices[i].y; + break; + } + } + (*contour_lengths)[n] = num_points - start; + } + + return points; +error: + STBTT_free(points, userdata); + STBTT_free(*contour_lengths, userdata); + *contour_lengths = 0; + *num_contours = 0; + return NULL; +} + +STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, float flatness_in_pixels, stbtt_vertex *vertices, int num_verts, float scale_x, float scale_y, float shift_x, float shift_y, int x_off, int y_off, int invert, void *userdata) +{ + float scale = scale_x > scale_y ? scale_y : scale_x; + int winding_count, *winding_lengths; + stbtt__point *windings = stbtt_FlattenCurves(vertices, num_verts, flatness_in_pixels / scale, &winding_lengths, &winding_count, userdata); + if (windings) { + stbtt__rasterize(result, windings, winding_lengths, winding_count, scale_x, scale_y, shift_x, shift_y, x_off, y_off, invert, userdata); + STBTT_free(winding_lengths, userdata); + STBTT_free(windings, userdata); + } +} + +STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata) +{ + STBTT_free(bitmap, userdata); +} + +STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff) +{ + int ix0,iy0,ix1,iy1; + stbtt__bitmap gbm; + stbtt_vertex *vertices; + int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); + + if (scale_x == 0) scale_x = scale_y; + if (scale_y == 0) { + if (scale_x == 0) { + STBTT_free(vertices, info->userdata); + return NULL; + } + scale_y = scale_x; + } + + stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale_x, scale_y, shift_x, shift_y, &ix0,&iy0,&ix1,&iy1); + + // now we get the size + gbm.w = (ix1 - ix0); + gbm.h = (iy1 - iy0); + gbm.pixels = NULL; // in case we error + + if (width ) *width = gbm.w; + if (height) *height = gbm.h; + if (xoff ) *xoff = ix0; + if (yoff ) *yoff = iy0; + + if (gbm.w && gbm.h) { + gbm.pixels = (unsigned char *) STBTT_malloc(gbm.w * gbm.h, info->userdata); + if (gbm.pixels) { + gbm.stride = gbm.w; + + stbtt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, shift_x, shift_y, ix0, iy0, 1, info->userdata); + } + } + STBTT_free(vertices, info->userdata); + return gbm.pixels; +} + +STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff) +{ + return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y, 0.0f, 0.0f, glyph, width, height, xoff, yoff); +} + +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph) +{ + int ix0,iy0; + stbtt_vertex *vertices; + int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); + stbtt__bitmap gbm; + + stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale_x, scale_y, shift_x, shift_y, &ix0,&iy0,0,0); + gbm.pixels = output; + gbm.w = out_w; + gbm.h = out_h; + gbm.stride = out_stride; + + if (gbm.w && gbm.h) + stbtt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, shift_x, shift_y, ix0,iy0, 1, info->userdata); + + STBTT_free(vertices, info->userdata); +} + +STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph) +{ + stbtt_MakeGlyphBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, 0.0f,0.0f, glyph); +} + +STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff) +{ + return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y,shift_x,shift_y, stbtt_FindGlyphIndex(info,codepoint), width,height,xoff,yoff); +} + +STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint) +{ + stbtt_MakeGlyphBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, shift_x, shift_y, stbtt_FindGlyphIndex(info,codepoint)); +} + +STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff) +{ + return stbtt_GetCodepointBitmapSubpixel(info, scale_x, scale_y, 0.0f,0.0f, codepoint, width,height,xoff,yoff); +} + +STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint) +{ + stbtt_MakeCodepointBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, 0.0f,0.0f, codepoint); +} + +////////////////////////////////////////////////////////////////////////////// +// +// bitmap baking +// +// This is SUPER-CRAPPY packing to keep source code small + +static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, // font location (use offset=0 for plain .ttf) + float pixel_height, // height of font in pixels + unsigned char *pixels, int pw, int ph, // bitmap to be filled in + int first_char, int num_chars, // characters to bake + stbtt_bakedchar *chardata) +{ + float scale; + int x,y,bottom_y, i; + stbtt_fontinfo f; + f.userdata = NULL; + if (!stbtt_InitFont(&f, data, offset)) + return -1; + STBTT_memset(pixels, 0, pw*ph); // background of 0 around pixels + x=y=1; + bottom_y = 1; + + scale = stbtt_ScaleForPixelHeight(&f, pixel_height); + + for (i=0; i < num_chars; ++i) { + int advance, lsb, x0,y0,x1,y1,gw,gh; + int g = stbtt_FindGlyphIndex(&f, first_char + i); + stbtt_GetGlyphHMetrics(&f, g, &advance, &lsb); + stbtt_GetGlyphBitmapBox(&f, g, scale,scale, &x0,&y0,&x1,&y1); + gw = x1-x0; + gh = y1-y0; + if (x + gw + 1 >= pw) + y = bottom_y, x = 1; // advance to next row + if (y + gh + 1 >= ph) // check if it fits vertically AFTER potentially moving to next row + return -i; + STBTT_assert(x+gw < pw); + STBTT_assert(y+gh < ph); + stbtt_MakeGlyphBitmap(&f, pixels+x+y*pw, gw,gh,pw, scale,scale, g); + chardata[i].x0 = (stbtt_int16) x; + chardata[i].y0 = (stbtt_int16) y; + chardata[i].x1 = (stbtt_int16) (x + gw); + chardata[i].y1 = (stbtt_int16) (y + gh); + chardata[i].xadvance = scale * advance; + chardata[i].xoff = (float) x0; + chardata[i].yoff = (float) y0; + x = x + gw + 1; + if (y+gh+1 > bottom_y) + bottom_y = y+gh+1; + } + return bottom_y; +} + +STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int opengl_fillrule) +{ + float d3d_bias = opengl_fillrule ? 0 : -0.5f; + float ipw = 1.0f / pw, iph = 1.0f / ph; + const stbtt_bakedchar *b = chardata + char_index; + int round_x = STBTT_ifloor((*xpos + b->xoff) + 0.5f); + int round_y = STBTT_ifloor((*ypos + b->yoff) + 0.5f); + + q->x0 = round_x + d3d_bias; + q->y0 = round_y + d3d_bias; + q->x1 = round_x + b->x1 - b->x0 + d3d_bias; + q->y1 = round_y + b->y1 - b->y0 + d3d_bias; + + q->s0 = b->x0 * ipw; + q->t0 = b->y0 * iph; + q->s1 = b->x1 * ipw; + q->t1 = b->y1 * iph; + + *xpos += b->xadvance; +} + +////////////////////////////////////////////////////////////////////////////// +// +// rectangle packing replacement routines if you don't have stb_rect_pack.h +// + +#ifndef STB_RECT_PACK_VERSION + +typedef int stbrp_coord; + +//////////////////////////////////////////////////////////////////////////////////// +// // +// // +// COMPILER WARNING ?!?!? // +// // +// // +// if you get a compile warning due to these symbols being defined more than // +// once, move #include "stb_rect_pack.h" before #include "stb_truetype.h" // +// // +//////////////////////////////////////////////////////////////////////////////////// + +typedef struct +{ + int width,height; + int x,y,bottom_y; +} stbrp_context; + +typedef struct +{ + unsigned char x; +} stbrp_node; + +struct stbrp_rect +{ + stbrp_coord x,y; + int id,w,h,was_packed; +}; + +static void stbrp_init_target(stbrp_context *con, int pw, int ph, stbrp_node *nodes, int num_nodes) +{ + con->width = pw; + con->height = ph; + con->x = 0; + con->y = 0; + con->bottom_y = 0; + STBTT__NOTUSED(nodes); + STBTT__NOTUSED(num_nodes); +} + +static void stbrp_pack_rects(stbrp_context *con, stbrp_rect *rects, int num_rects) +{ + int i; + for (i=0; i < num_rects; ++i) { + if (con->x + rects[i].w > con->width) { + con->x = 0; + con->y = con->bottom_y; + } + if (con->y + rects[i].h > con->height) + break; + rects[i].x = con->x; + rects[i].y = con->y; + rects[i].was_packed = 1; + con->x += rects[i].w; + if (con->y + rects[i].h > con->bottom_y) + con->bottom_y = con->y + rects[i].h; + } + for ( ; i < num_rects; ++i) + rects[i].was_packed = 0; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// bitmap baking +// +// This is SUPER-AWESOME (tm Ryan Gordon) packing using stb_rect_pack.h. If +// stb_rect_pack.h isn't available, it uses the BakeFontBitmap strategy. + +STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, int pw, int ph, int stride_in_bytes, int padding, void *alloc_context) +{ + stbrp_context *context = (stbrp_context *) STBTT_malloc(sizeof(*context) ,alloc_context); + int num_nodes = pw - padding; + stbrp_node *nodes = (stbrp_node *) STBTT_malloc(sizeof(*nodes ) * num_nodes,alloc_context); + + if (context == NULL || nodes == NULL) { + if (context != NULL) STBTT_free(context, alloc_context); + if (nodes != NULL) STBTT_free(nodes , alloc_context); + return 0; + } + + spc->user_allocator_context = alloc_context; + spc->width = pw; + spc->height = ph; + spc->pixels = pixels; + spc->pack_info = context; + spc->nodes = nodes; + spc->padding = padding; + spc->stride_in_bytes = stride_in_bytes != 0 ? stride_in_bytes : pw; + spc->h_oversample = 1; + spc->v_oversample = 1; + + stbrp_init_target(context, pw-padding, ph-padding, nodes, num_nodes); + + if (pixels) + STBTT_memset(pixels, 0, pw*ph); // background of 0 around pixels + + return 1; +} + +STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc) +{ + STBTT_free(spc->nodes , spc->user_allocator_context); + STBTT_free(spc->pack_info, spc->user_allocator_context); +} + +STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h_oversample, unsigned int v_oversample) +{ + STBTT_assert(h_oversample <= STBTT_MAX_OVERSAMPLE); + STBTT_assert(v_oversample <= STBTT_MAX_OVERSAMPLE); + if (h_oversample <= STBTT_MAX_OVERSAMPLE) + spc->h_oversample = h_oversample; + if (v_oversample <= STBTT_MAX_OVERSAMPLE) + spc->v_oversample = v_oversample; +} + +#define STBTT__OVER_MASK (STBTT_MAX_OVERSAMPLE-1) + +static void stbtt__h_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, unsigned int kernel_width) +{ + unsigned char buffer[STBTT_MAX_OVERSAMPLE]; + int safe_w = w - kernel_width; + int j; + STBTT_memset(buffer, 0, STBTT_MAX_OVERSAMPLE); // suppress bogus warning from VS2013 -analyze + for (j=0; j < h; ++j) { + int i; + unsigned int total; + STBTT_memset(buffer, 0, kernel_width); + + total = 0; + + // make kernel_width a constant in common cases so compiler can optimize out the divide + switch (kernel_width) { + case 2: + for (i=0; i <= safe_w; ++i) { + total += pixels[i] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 2); + } + break; + case 3: + for (i=0; i <= safe_w; ++i) { + total += pixels[i] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 3); + } + break; + case 4: + for (i=0; i <= safe_w; ++i) { + total += pixels[i] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 4); + } + break; + case 5: + for (i=0; i <= safe_w; ++i) { + total += pixels[i] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 5); + } + break; + default: + for (i=0; i <= safe_w; ++i) { + total += pixels[i] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / kernel_width); + } + break; + } + + for (; i < w; ++i) { + STBTT_assert(pixels[i] == 0); + total -= buffer[i & STBTT__OVER_MASK]; + pixels[i] = (unsigned char) (total / kernel_width); + } + + pixels += stride_in_bytes; + } +} + +static void stbtt__v_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, unsigned int kernel_width) +{ + unsigned char buffer[STBTT_MAX_OVERSAMPLE]; + int safe_h = h - kernel_width; + int j; + STBTT_memset(buffer, 0, STBTT_MAX_OVERSAMPLE); // suppress bogus warning from VS2013 -analyze + for (j=0; j < w; ++j) { + int i; + unsigned int total; + STBTT_memset(buffer, 0, kernel_width); + + total = 0; + + // make kernel_width a constant in common cases so compiler can optimize out the divide + switch (kernel_width) { + case 2: + for (i=0; i <= safe_h; ++i) { + total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 2); + } + break; + case 3: + for (i=0; i <= safe_h; ++i) { + total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 3); + } + break; + case 4: + for (i=0; i <= safe_h; ++i) { + total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 4); + } + break; + case 5: + for (i=0; i <= safe_h; ++i) { + total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 5); + } + break; + default: + for (i=0; i <= safe_h; ++i) { + total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK]; + buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / kernel_width); + } + break; + } + + for (; i < h; ++i) { + STBTT_assert(pixels[i*stride_in_bytes] == 0); + total -= buffer[i & STBTT__OVER_MASK]; + pixels[i*stride_in_bytes] = (unsigned char) (total / kernel_width); + } + + pixels += 1; + } +} + +static float stbtt__oversample_shift(int oversample) +{ + if (!oversample) + return 0.0f; + + // The prefilter is a box filter of width "oversample", + // which shifts phase by (oversample - 1)/2 pixels in + // oversampled space. We want to shift in the opposite + // direction to counter this. + return (float)-(oversample - 1) / (2.0f * (float)oversample); +} + +// rects array must be big enough to accommodate all characters in the given ranges +STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects) +{ + int i,j,k; + + k=0; + for (i=0; i < num_ranges; ++i) { + float fh = ranges[i].font_size; + float scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); + ranges[i].h_oversample = (unsigned char) spc->h_oversample; + ranges[i].v_oversample = (unsigned char) spc->v_oversample; + for (j=0; j < ranges[i].num_chars; ++j) { + int x0,y0,x1,y1; + int codepoint = ranges[i].array_of_unicode_codepoints == NULL ? ranges[i].first_unicode_codepoint_in_range + j : ranges[i].array_of_unicode_codepoints[j]; + int glyph = stbtt_FindGlyphIndex(info, codepoint); + stbtt_GetGlyphBitmapBoxSubpixel(info,glyph, + scale * spc->h_oversample, + scale * spc->v_oversample, + 0,0, + &x0,&y0,&x1,&y1); + rects[k].w = (stbrp_coord) (x1-x0 + spc->padding + spc->h_oversample-1); + rects[k].h = (stbrp_coord) (y1-y0 + spc->padding + spc->v_oversample-1); + ++k; + } + } + + return k; +} + +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int prefilter_x, int prefilter_y, float *sub_x, float *sub_y, int glyph) +{ + stbtt_MakeGlyphBitmapSubpixel(info, + output, + out_w - (prefilter_x - 1), + out_h - (prefilter_y - 1), + out_stride, + scale_x, + scale_y, + shift_x, + shift_y, + glyph); + + if (prefilter_x > 1) + stbtt__h_prefilter(output, out_w, out_h, out_stride, prefilter_x); + + if (prefilter_y > 1) + stbtt__v_prefilter(output, out_w, out_h, out_stride, prefilter_y); + + *sub_x = stbtt__oversample_shift(prefilter_x); + *sub_y = stbtt__oversample_shift(prefilter_y); +} + +// rects array must be big enough to accommodate all characters in the given ranges +STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects) +{ + int i,j,k, return_value = 1; + + // save current values + int old_h_over = spc->h_oversample; + int old_v_over = spc->v_oversample; + + k = 0; + for (i=0; i < num_ranges; ++i) { + float fh = ranges[i].font_size; + float scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); + float recip_h,recip_v,sub_x,sub_y; + spc->h_oversample = ranges[i].h_oversample; + spc->v_oversample = ranges[i].v_oversample; + recip_h = 1.0f / spc->h_oversample; + recip_v = 1.0f / spc->v_oversample; + sub_x = stbtt__oversample_shift(spc->h_oversample); + sub_y = stbtt__oversample_shift(spc->v_oversample); + for (j=0; j < ranges[i].num_chars; ++j) { + stbrp_rect *r = &rects[k]; + if (r->was_packed) { + stbtt_packedchar *bc = &ranges[i].chardata_for_range[j]; + int advance, lsb, x0,y0,x1,y1; + int codepoint = ranges[i].array_of_unicode_codepoints == NULL ? ranges[i].first_unicode_codepoint_in_range + j : ranges[i].array_of_unicode_codepoints[j]; + int glyph = stbtt_FindGlyphIndex(info, codepoint); + stbrp_coord pad = (stbrp_coord) spc->padding; + + // pad on left and top + r->x += pad; + r->y += pad; + r->w -= pad; + r->h -= pad; + stbtt_GetGlyphHMetrics(info, glyph, &advance, &lsb); + stbtt_GetGlyphBitmapBox(info, glyph, + scale * spc->h_oversample, + scale * spc->v_oversample, + &x0,&y0,&x1,&y1); + stbtt_MakeGlyphBitmapSubpixel(info, + spc->pixels + r->x + r->y*spc->stride_in_bytes, + r->w - spc->h_oversample+1, + r->h - spc->v_oversample+1, + spc->stride_in_bytes, + scale * spc->h_oversample, + scale * spc->v_oversample, + 0,0, + glyph); + + if (spc->h_oversample > 1) + stbtt__h_prefilter(spc->pixels + r->x + r->y*spc->stride_in_bytes, + r->w, r->h, spc->stride_in_bytes, + spc->h_oversample); + + if (spc->v_oversample > 1) + stbtt__v_prefilter(spc->pixels + r->x + r->y*spc->stride_in_bytes, + r->w, r->h, spc->stride_in_bytes, + spc->v_oversample); + + bc->x0 = (stbtt_int16) r->x; + bc->y0 = (stbtt_int16) r->y; + bc->x1 = (stbtt_int16) (r->x + r->w); + bc->y1 = (stbtt_int16) (r->y + r->h); + bc->xadvance = scale * advance; + bc->xoff = (float) x0 * recip_h + sub_x; + bc->yoff = (float) y0 * recip_v + sub_y; + bc->xoff2 = (x0 + r->w) * recip_h + sub_x; + bc->yoff2 = (y0 + r->h) * recip_v + sub_y; + } else { + return_value = 0; // if any fail, report failure + } + + ++k; + } + } + + // restore original values + spc->h_oversample = old_h_over; + spc->v_oversample = old_v_over; + + return return_value; +} + +STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects) +{ + stbrp_pack_rects((stbrp_context *) spc->pack_info, rects, num_rects); +} + +STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges) +{ + stbtt_fontinfo info; + int i,j,n, return_value = 1; + //stbrp_context *context = (stbrp_context *) spc->pack_info; + stbrp_rect *rects; + + // flag all characters as NOT packed + for (i=0; i < num_ranges; ++i) + for (j=0; j < ranges[i].num_chars; ++j) + ranges[i].chardata_for_range[j].x0 = + ranges[i].chardata_for_range[j].y0 = + ranges[i].chardata_for_range[j].x1 = + ranges[i].chardata_for_range[j].y1 = 0; + + n = 0; + for (i=0; i < num_ranges; ++i) + n += ranges[i].num_chars; + + rects = (stbrp_rect *) STBTT_malloc(sizeof(*rects) * n, spc->user_allocator_context); + if (rects == NULL) + return 0; + + info.userdata = spc->user_allocator_context; + stbtt_InitFont(&info, fontdata, stbtt_GetFontOffsetForIndex(fontdata,font_index)); + + n = stbtt_PackFontRangesGatherRects(spc, &info, ranges, num_ranges, rects); + + stbtt_PackFontRangesPackRects(spc, rects, n); + + return_value = stbtt_PackFontRangesRenderIntoRects(spc, &info, ranges, num_ranges, rects); + + STBTT_free(rects, spc->user_allocator_context); + return return_value; +} + +STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, float font_size, + int first_unicode_codepoint_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range) +{ + stbtt_pack_range range; + range.first_unicode_codepoint_in_range = first_unicode_codepoint_in_range; + range.array_of_unicode_codepoints = NULL; + range.num_chars = num_chars_in_range; + range.chardata_for_range = chardata_for_range; + range.font_size = font_size; + return stbtt_PackFontRanges(spc, fontdata, font_index, &range, 1); +} + +STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int align_to_integer) +{ + float ipw = 1.0f / pw, iph = 1.0f / ph; + const stbtt_packedchar *b = chardata + char_index; + + if (align_to_integer) { + float x = (float) STBTT_ifloor((*xpos + b->xoff) + 0.5f); + float y = (float) STBTT_ifloor((*ypos + b->yoff) + 0.5f); + q->x0 = x; + q->y0 = y; + q->x1 = x + b->xoff2 - b->xoff; + q->y1 = y + b->yoff2 - b->yoff; + } else { + q->x0 = *xpos + b->xoff; + q->y0 = *ypos + b->yoff; + q->x1 = *xpos + b->xoff2; + q->y1 = *ypos + b->yoff2; + } + + q->s0 = b->x0 * ipw; + q->t0 = b->y0 * iph; + q->s1 = b->x1 * ipw; + q->t1 = b->y1 * iph; + + *xpos += b->xadvance; +} + +////////////////////////////////////////////////////////////////////////////// +// +// sdf computation +// + +#define STBTT_min(a,b) ((a) < (b) ? (a) : (b)) +#define STBTT_max(a,b) ((a) < (b) ? (b) : (a)) + +static int stbtt__ray_intersect_bezier(float orig[2], float ray[2], float q0[2], float q1[2], float q2[2], float hits[2][2]) +{ + float q0perp = q0[1]*ray[0] - q0[0]*ray[1]; + float q1perp = q1[1]*ray[0] - q1[0]*ray[1]; + float q2perp = q2[1]*ray[0] - q2[0]*ray[1]; + float roperp = orig[1]*ray[0] - orig[0]*ray[1]; + + float a = q0perp - 2*q1perp + q2perp; + float b = q1perp - q0perp; + float c = q0perp - roperp; + + float s0 = 0., s1 = 0.; + int num_s = 0; + + if (a != 0.0) { + float discr = b*b - a*c; + if (discr > 0.0) { + float rcpna = -1 / a; + float d = (float) sqrt(discr); + s0 = (b+d) * rcpna; + s1 = (b-d) * rcpna; + if (s0 >= 0.0 && s0 <= 1.0) + num_s = 1; + if (d > 0.0 && s1 >= 0.0 && s1 <= 1.0) { + if (num_s == 0) s0 = s1; + ++num_s; + } + } + } else { + // 2*b*s + c = 0 + // s = -c / (2*b) + s0 = c / (-2 * b); + if (s0 >= 0.0 && s0 <= 1.0) + num_s = 1; + } + + if (num_s == 0) + return 0; + else { + float rcp_len2 = 1 / (ray[0]*ray[0] + ray[1]*ray[1]); + float rayn_x = ray[0] * rcp_len2, rayn_y = ray[1] * rcp_len2; + + float q0d = q0[0]*rayn_x + q0[1]*rayn_y; + float q1d = q1[0]*rayn_x + q1[1]*rayn_y; + float q2d = q2[0]*rayn_x + q2[1]*rayn_y; + float rod = orig[0]*rayn_x + orig[1]*rayn_y; + + float q10d = q1d - q0d; + float q20d = q2d - q0d; + float q0rd = q0d - rod; + + hits[0][0] = q0rd + s0*(2.0f - 2.0f*s0)*q10d + s0*s0*q20d; + hits[0][1] = a*s0+b; + + if (num_s > 1) { + hits[1][0] = q0rd + s1*(2.0f - 2.0f*s1)*q10d + s1*s1*q20d; + hits[1][1] = a*s1+b; + return 2; + } else { + return 1; + } + } +} + +static int equal(float *a, float *b) +{ + return (a[0] == b[0] && a[1] == b[1]); +} + +static int stbtt__compute_crossings_x(float x, float y, int nverts, stbtt_vertex *verts) +{ + int i; + float orig[2], ray[2] = { 1, 0 }; + float y_frac; + int winding = 0; + + orig[0] = x; + orig[1] = y; + + // make sure y never passes through a vertex of the shape + y_frac = (float) fmod(y, 1.0f); + if (y_frac < 0.01f) + y += 0.01f; + else if (y_frac > 0.99f) + y -= 0.01f; + orig[1] = y; + + // test a ray from (-infinity,y) to (x,y) + for (i=0; i < nverts; ++i) { + if (verts[i].type == STBTT_vline) { + int x0 = (int) verts[i-1].x, y0 = (int) verts[i-1].y; + int x1 = (int) verts[i ].x, y1 = (int) verts[i ].y; + if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) { + float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; + if (x_inter < x) + winding += (y0 < y1) ? 1 : -1; + } + } + if (verts[i].type == STBTT_vcurve) { + int x0 = (int) verts[i-1].x , y0 = (int) verts[i-1].y ; + int x1 = (int) verts[i ].cx, y1 = (int) verts[i ].cy; + int x2 = (int) verts[i ].x , y2 = (int) verts[i ].y ; + int ax = STBTT_min(x0,STBTT_min(x1,x2)), ay = STBTT_min(y0,STBTT_min(y1,y2)); + int by = STBTT_max(y0,STBTT_max(y1,y2)); + if (y > ay && y < by && x > ax) { + float q0[2],q1[2],q2[2]; + float hits[2][2]; + q0[0] = (float)x0; + q0[1] = (float)y0; + q1[0] = (float)x1; + q1[1] = (float)y1; + q2[0] = (float)x2; + q2[1] = (float)y2; + if (equal(q0,q1) || equal(q1,q2)) { + x0 = (int)verts[i-1].x; + y0 = (int)verts[i-1].y; + x1 = (int)verts[i ].x; + y1 = (int)verts[i ].y; + if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) { + float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; + if (x_inter < x) + winding += (y0 < y1) ? 1 : -1; + } + } else { + int num_hits = stbtt__ray_intersect_bezier(orig, ray, q0, q1, q2, hits); + if (num_hits >= 1) + if (hits[0][0] < 0) + winding += (hits[0][1] < 0 ? -1 : 1); + if (num_hits >= 2) + if (hits[1][0] < 0) + winding += (hits[1][1] < 0 ? -1 : 1); + } + } + } + } + return winding; +} + +static float stbtt__cuberoot( float x ) +{ + if (x<0) + return -(float) STBTT_pow(-x,1.0f/3.0f); + else + return (float) STBTT_pow( x,1.0f/3.0f); +} + +// x^3 + c*x^2 + b*x + a = 0 +static int stbtt__solve_cubic(float a, float b, float c, float* r) +{ + float s = -a / 3; + float p = b - a*a / 3; + float q = a * (2*a*a - 9*b) / 27 + c; + float p3 = p*p*p; + float d = q*q + 4*p3 / 27; + if (d >= 0) { + float z = (float) STBTT_sqrt(d); + float u = (-q + z) / 2; + float v = (-q - z) / 2; + u = stbtt__cuberoot(u); + v = stbtt__cuberoot(v); + r[0] = s + u + v; + return 1; + } else { + float u = (float) STBTT_sqrt(-p/3); + float v = (float) STBTT_acos(-STBTT_sqrt(-27/p3) * q / 2) / 3; // p3 must be negative, since d is negative + float m = (float) STBTT_cos(v); + float n = (float) STBTT_cos(v-3.141592/2)*1.732050808f; + r[0] = s + u * 2 * m; + r[1] = s - u * (m + n); + r[2] = s - u * (m - n); + + //STBTT_assert( STBTT_fabs(((r[0]+a)*r[0]+b)*r[0]+c) < 0.05f); // these asserts may not be safe at all scales, though they're in bezier t parameter units so maybe? + //STBTT_assert( STBTT_fabs(((r[1]+a)*r[1]+b)*r[1]+c) < 0.05f); + //STBTT_assert( STBTT_fabs(((r[2]+a)*r[2]+b)*r[2]+c) < 0.05f); + return 3; + } +} + +STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) +{ + float scale_x = scale, scale_y = scale; + int ix0,iy0,ix1,iy1; + int w,h; + unsigned char *data; + + // if one scale is 0, use same scale for both + if (scale_x == 0) scale_x = scale_y; + if (scale_y == 0) { + if (scale_x == 0) return NULL; // if both scales are 0, return NULL + scale_y = scale_x; + } + + stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale, scale, 0.0f,0.0f, &ix0,&iy0,&ix1,&iy1); + + // if empty, return NULL + if (ix0 == ix1 || iy0 == iy1) + return NULL; + + ix0 -= padding; + iy0 -= padding; + ix1 += padding; + iy1 += padding; + + w = (ix1 - ix0); + h = (iy1 - iy0); + + if (width ) *width = w; + if (height) *height = h; + if (xoff ) *xoff = ix0; + if (yoff ) *yoff = iy0; + + // invert for y-downwards bitmaps + scale_y = -scale_y; + + { + int x,y,i,j; + float *precompute; + stbtt_vertex *verts; + int num_verts = stbtt_GetGlyphShape(info, glyph, &verts); + data = (unsigned char *) STBTT_malloc(w * h, info->userdata); + precompute = (float *) STBTT_malloc(num_verts * sizeof(float), info->userdata); + + for (i=0,j=num_verts-1; i < num_verts; j=i++) { + if (verts[i].type == STBTT_vline) { + float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; + float x1 = verts[j].x*scale_x, y1 = verts[j].y*scale_y; + float dist = (float) STBTT_sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)); + precompute[i] = (dist == 0) ? 0.0f : 1.0f / dist; + } else if (verts[i].type == STBTT_vcurve) { + float x2 = verts[j].x *scale_x, y2 = verts[j].y *scale_y; + float x1 = verts[i].cx*scale_x, y1 = verts[i].cy*scale_y; + float x0 = verts[i].x *scale_x, y0 = verts[i].y *scale_y; + float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; + float len2 = bx*bx + by*by; + if (len2 != 0.0f) + precompute[i] = 1.0f / (bx*bx + by*by); + else + precompute[i] = 0.0f; + } else + precompute[i] = 0.0f; + } + + for (y=iy0; y < iy1; ++y) { + for (x=ix0; x < ix1; ++x) { + float val; + float min_dist = 999999.0f; + float sx = (float) x + 0.5f; + float sy = (float) y + 0.5f; + float x_gspace = (sx / scale_x); + float y_gspace = (sy / scale_y); + + int winding = stbtt__compute_crossings_x(x_gspace, y_gspace, num_verts, verts); // @OPTIMIZE: this could just be a rasterization, but needs to be line vs. non-tesselated curves so a new path + + for (i=0; i < num_verts; ++i) { + float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; + + // check against every point here rather than inside line/curve primitives -- @TODO: wrong if multiple 'moves' in a row produce a garbage point, and given culling, probably more efficient to do within line/curve + float dist2 = (x0-sx)*(x0-sx) + (y0-sy)*(y0-sy); + if (dist2 < min_dist*min_dist) + min_dist = (float) STBTT_sqrt(dist2); + + if (verts[i].type == STBTT_vline) { + float x1 = verts[i-1].x*scale_x, y1 = verts[i-1].y*scale_y; + + // coarse culling against bbox + //if (sx > STBTT_min(x0,x1)-min_dist && sx < STBTT_max(x0,x1)+min_dist && + // sy > STBTT_min(y0,y1)-min_dist && sy < STBTT_max(y0,y1)+min_dist) + float dist = (float) STBTT_fabs((x1-x0)*(y0-sy) - (y1-y0)*(x0-sx)) * precompute[i]; + STBTT_assert(i != 0); + if (dist < min_dist) { + // check position along line + // x' = x0 + t*(x1-x0), y' = y0 + t*(y1-y0) + // minimize (x'-sx)*(x'-sx)+(y'-sy)*(y'-sy) + float dx = x1-x0, dy = y1-y0; + float px = x0-sx, py = y0-sy; + // minimize (px+t*dx)^2 + (py+t*dy)^2 = px*px + 2*px*dx*t + t^2*dx*dx + py*py + 2*py*dy*t + t^2*dy*dy + // derivative: 2*px*dx + 2*py*dy + (2*dx*dx+2*dy*dy)*t, set to 0 and solve + float t = -(px*dx + py*dy) / (dx*dx + dy*dy); + if (t >= 0.0f && t <= 1.0f) + min_dist = dist; + } + } else if (verts[i].type == STBTT_vcurve) { + float x2 = verts[i-1].x *scale_x, y2 = verts[i-1].y *scale_y; + float x1 = verts[i ].cx*scale_x, y1 = verts[i ].cy*scale_y; + float box_x0 = STBTT_min(STBTT_min(x0,x1),x2); + float box_y0 = STBTT_min(STBTT_min(y0,y1),y2); + float box_x1 = STBTT_max(STBTT_max(x0,x1),x2); + float box_y1 = STBTT_max(STBTT_max(y0,y1),y2); + // coarse culling against bbox to avoid computing cubic unnecessarily + if (sx > box_x0-min_dist && sx < box_x1+min_dist && sy > box_y0-min_dist && sy < box_y1+min_dist) { + int num=0; + float ax = x1-x0, ay = y1-y0; + float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; + float mx = x0 - sx, my = y0 - sy; + float res[3],px,py,t,it; + float a_inv = precompute[i]; + if (a_inv == 0.0) { // if a_inv is 0, it's 2nd degree so use quadratic formula + float a = 3*(ax*bx + ay*by); + float b = 2*(ax*ax + ay*ay) + (mx*bx+my*by); + float c = mx*ax+my*ay; + if (a == 0.0) { // if a is 0, it's linear + if (b != 0.0) { + res[num++] = -c/b; + } + } else { + float discriminant = b*b - 4*a*c; + if (discriminant < 0) + num = 0; + else { + float root = (float) STBTT_sqrt(discriminant); + res[0] = (-b - root)/(2*a); + res[1] = (-b + root)/(2*a); + num = 2; // don't bother distinguishing 1-solution case, as code below will still work + } + } + } else { + float b = 3*(ax*bx + ay*by) * a_inv; // could precompute this as it doesn't depend on sample point + float c = (2*(ax*ax + ay*ay) + (mx*bx+my*by)) * a_inv; + float d = (mx*ax+my*ay) * a_inv; + num = stbtt__solve_cubic(b, c, d, res); + } + if (num >= 1 && res[0] >= 0.0f && res[0] <= 1.0f) { + t = res[0], it = 1.0f - t; + px = it*it*x0 + 2*t*it*x1 + t*t*x2; + py = it*it*y0 + 2*t*it*y1 + t*t*y2; + dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); + if (dist2 < min_dist * min_dist) + min_dist = (float) STBTT_sqrt(dist2); + } + if (num >= 2 && res[1] >= 0.0f && res[1] <= 1.0f) { + t = res[1], it = 1.0f - t; + px = it*it*x0 + 2*t*it*x1 + t*t*x2; + py = it*it*y0 + 2*t*it*y1 + t*t*y2; + dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); + if (dist2 < min_dist * min_dist) + min_dist = (float) STBTT_sqrt(dist2); + } + if (num >= 3 && res[2] >= 0.0f && res[2] <= 1.0f) { + t = res[2], it = 1.0f - t; + px = it*it*x0 + 2*t*it*x1 + t*t*x2; + py = it*it*y0 + 2*t*it*y1 + t*t*y2; + dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); + if (dist2 < min_dist * min_dist) + min_dist = (float) STBTT_sqrt(dist2); + } + } + } + } + if (winding == 0) + min_dist = -min_dist; // if outside the shape, value is negative + val = onedge_value + pixel_dist_scale * min_dist; + if (val < 0) + val = 0; + else if (val > 255) + val = 255; + data[(y-iy0)*w+(x-ix0)] = (unsigned char) val; + } + } + STBTT_free(precompute, info->userdata); + STBTT_free(verts, info->userdata); + } + return data; +} + +STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) +{ + return stbtt_GetGlyphSDF(info, scale, stbtt_FindGlyphIndex(info, codepoint), padding, onedge_value, pixel_dist_scale, width, height, xoff, yoff); +} + +STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata) +{ + STBTT_free(bitmap, userdata); +} + +////////////////////////////////////////////////////////////////////////////// +// +// font name matching -- recommended not to use this +// + +// check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string +static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, stbtt_int32 len1, stbtt_uint8 *s2, stbtt_int32 len2) +{ + stbtt_int32 i=0; + + // convert utf16 to utf8 and compare the results while converting + while (len2) { + stbtt_uint16 ch = s2[0]*256 + s2[1]; + if (ch < 0x80) { + if (i >= len1) return -1; + if (s1[i++] != ch) return -1; + } else if (ch < 0x800) { + if (i+1 >= len1) return -1; + if (s1[i++] != 0xc0 + (ch >> 6)) return -1; + if (s1[i++] != 0x80 + (ch & 0x3f)) return -1; + } else if (ch >= 0xd800 && ch < 0xdc00) { + stbtt_uint32 c; + stbtt_uint16 ch2 = s2[2]*256 + s2[3]; + if (i+3 >= len1) return -1; + c = ((ch - 0xd800) << 10) + (ch2 - 0xdc00) + 0x10000; + if (s1[i++] != 0xf0 + (c >> 18)) return -1; + if (s1[i++] != 0x80 + ((c >> 12) & 0x3f)) return -1; + if (s1[i++] != 0x80 + ((c >> 6) & 0x3f)) return -1; + if (s1[i++] != 0x80 + ((c ) & 0x3f)) return -1; + s2 += 2; // plus another 2 below + len2 -= 2; + } else if (ch >= 0xdc00 && ch < 0xe000) { + return -1; + } else { + if (i+2 >= len1) return -1; + if (s1[i++] != 0xe0 + (ch >> 12)) return -1; + if (s1[i++] != 0x80 + ((ch >> 6) & 0x3f)) return -1; + if (s1[i++] != 0x80 + ((ch ) & 0x3f)) return -1; + } + s2 += 2; + len2 -= 2; + } + return i; +} + +static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len1, char *s2, int len2) +{ + return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((stbtt_uint8*) s1, len1, (stbtt_uint8*) s2, len2); +} + +// returns results in whatever encoding you request... but note that 2-byte encodings +// will be BIG-ENDIAN... use stbtt_CompareUTF8toUTF16_bigendian() to compare +STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID) +{ + stbtt_int32 i,count,stringOffset; + stbtt_uint8 *fc = font->data; + stbtt_uint32 offset = font->fontstart; + stbtt_uint32 nm = stbtt__find_table(fc, offset, "name"); + if (!nm) return NULL; + + count = ttUSHORT(fc+nm+2); + stringOffset = nm + ttUSHORT(fc+nm+4); + for (i=0; i < count; ++i) { + stbtt_uint32 loc = nm + 6 + 12 * i; + if (platformID == ttUSHORT(fc+loc+0) && encodingID == ttUSHORT(fc+loc+2) + && languageID == ttUSHORT(fc+loc+4) && nameID == ttUSHORT(fc+loc+6)) { + *length = ttUSHORT(fc+loc+8); + return (const char *) (fc+stringOffset+ttUSHORT(fc+loc+10)); + } + } + return NULL; +} + +static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name, stbtt_int32 nlen, stbtt_int32 target_id, stbtt_int32 next_id) +{ + stbtt_int32 i; + stbtt_int32 count = ttUSHORT(fc+nm+2); + stbtt_int32 stringOffset = nm + ttUSHORT(fc+nm+4); + + for (i=0; i < count; ++i) { + stbtt_uint32 loc = nm + 6 + 12 * i; + stbtt_int32 id = ttUSHORT(fc+loc+6); + if (id == target_id) { + // find the encoding + stbtt_int32 platform = ttUSHORT(fc+loc+0), encoding = ttUSHORT(fc+loc+2), language = ttUSHORT(fc+loc+4); + + // is this a Unicode encoding? + if (platform == 0 || (platform == 3 && encoding == 1) || (platform == 3 && encoding == 10)) { + stbtt_int32 slen = ttUSHORT(fc+loc+8); + stbtt_int32 off = ttUSHORT(fc+loc+10); + + // check if there's a prefix match + stbtt_int32 matchlen = stbtt__CompareUTF8toUTF16_bigendian_prefix(name, nlen, fc+stringOffset+off,slen); + if (matchlen >= 0) { + // check for target_id+1 immediately following, with same encoding & language + if (i+1 < count && ttUSHORT(fc+loc+12+6) == next_id && ttUSHORT(fc+loc+12) == platform && ttUSHORT(fc+loc+12+2) == encoding && ttUSHORT(fc+loc+12+4) == language) { + slen = ttUSHORT(fc+loc+12+8); + off = ttUSHORT(fc+loc+12+10); + if (slen == 0) { + if (matchlen == nlen) + return 1; + } else if (matchlen < nlen && name[matchlen] == ' ') { + ++matchlen; + if (stbtt_CompareUTF8toUTF16_bigendian_internal((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen)) + return 1; + } + } else { + // if nothing immediately following + if (matchlen == nlen) + return 1; + } + } + } + + // @TODO handle other encodings + } + } + return 0; +} + +static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *name, stbtt_int32 flags) +{ + stbtt_int32 nlen = (stbtt_int32) STBTT_strlen((char *) name); + stbtt_uint32 nm,hd; + if (!stbtt__isfont(fc+offset)) return 0; + + // check italics/bold/underline flags in macStyle... + if (flags) { + hd = stbtt__find_table(fc, offset, "head"); + if ((ttUSHORT(fc+hd+44) & 7) != (flags & 7)) return 0; + } + + nm = stbtt__find_table(fc, offset, "name"); + if (!nm) return 0; + + if (flags) { + // if we checked the macStyle flags, then just check the family and ignore the subfamily + if (stbtt__matchpair(fc, nm, name, nlen, 16, -1)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 1, -1)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 3, -1)) return 1; + } else { + if (stbtt__matchpair(fc, nm, name, nlen, 16, 17)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 1, 2)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 3, -1)) return 1; + } + + return 0; +} + +static int stbtt_FindMatchingFont_internal(unsigned char *font_collection, char *name_utf8, stbtt_int32 flags) +{ + stbtt_int32 i; + for (i=0;;++i) { + stbtt_int32 off = stbtt_GetFontOffsetForIndex(font_collection, i); + if (off < 0) return off; + if (stbtt__matches((stbtt_uint8 *) font_collection, off, (stbtt_uint8*) name_utf8, flags)) + return off; + } +} + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +#endif + +STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, + float pixel_height, unsigned char *pixels, int pw, int ph, + int first_char, int num_chars, stbtt_bakedchar *chardata) +{ + return stbtt_BakeFontBitmap_internal((unsigned char *) data, offset, pixel_height, pixels, pw, ph, first_char, num_chars, chardata); +} + +STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index) +{ + return stbtt_GetFontOffsetForIndex_internal((unsigned char *) data, index); +} + +STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data) +{ + return stbtt_GetNumberOfFonts_internal((unsigned char *) data); +} + +STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset) +{ + return stbtt_InitFont_internal(info, (unsigned char *) data, offset); +} + +STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags) +{ + return stbtt_FindMatchingFont_internal((unsigned char *) fontdata, (char *) name, flags); +} + +STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2) +{ + return stbtt_CompareUTF8toUTF16_bigendian_internal((char *) s1, len1, (char *) s2, len2); +} + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif + +#endif // STB_TRUETYPE_IMPLEMENTATION + + +// FULL VERSION HISTORY +// +// 1.16 (2017-07-12) SDF support +// 1.15 (2017-03-03) make more arguments const +// 1.14 (2017-01-16) num-fonts-in-TTC function +// 1.13 (2017-01-02) support OpenType fonts, certain Apple fonts +// 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual +// 1.11 (2016-04-02) fix unused-variable warning +// 1.10 (2016-04-02) allow user-defined fabs() replacement +// fix memory leak if fontsize=0.0 +// fix warning from duplicate typedef +// 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use alloc userdata for PackFontRanges +// 1.08 (2015-09-13) document stbtt_Rasterize(); fixes for vertical & horizontal edges +// 1.07 (2015-08-01) allow PackFontRanges to accept arrays of sparse codepoints; +// allow PackFontRanges to pack and render in separate phases; +// fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?); +// fixed an assert() bug in the new rasterizer +// replace assert() with STBTT_assert() in new rasterizer +// 1.06 (2015-07-14) performance improvements (~35% faster on x86 and x64 on test machine) +// also more precise AA rasterizer, except if shapes overlap +// remove need for STBTT_sort +// 1.05 (2015-04-15) fix misplaced definitions for STBTT_STATIC +// 1.04 (2015-04-15) typo in example +// 1.03 (2015-04-12) STBTT_STATIC, fix memory leak in new packing, various fixes +// 1.02 (2014-12-10) fix various warnings & compile issues w/ stb_rect_pack, C++ +// 1.01 (2014-12-08) fix subpixel position when oversampling to exactly match +// non-oversampled; STBTT_POINT_SIZE for packed case only +// 1.00 (2014-12-06) add new PackBegin etc. API, w/ support for oversampling +// 0.99 (2014-09-18) fix multiple bugs with subpixel rendering (ryg) +// 0.9 (2014-08-07) support certain mac/iOS fonts without an MS platformID +// 0.8b (2014-07-07) fix a warning +// 0.8 (2014-05-25) fix a few more warnings +// 0.7 (2013-09-25) bugfix: subpixel glyph bug fixed in 0.5 had come back +// 0.6c (2012-07-24) improve documentation +// 0.6b (2012-07-20) fix a few more warnings +// 0.6 (2012-07-17) fix warnings; added stbtt_ScaleForMappingEmToPixels, +// stbtt_GetFontBoundingBox, stbtt_IsGlyphEmpty +// 0.5 (2011-12-09) bugfixes: +// subpixel glyph renderer computed wrong bounding box +// first vertex of shape can be off-curve (FreeSans) +// 0.4b (2011-12-03) fixed an error in the font baking example +// 0.4 (2011-12-01) kerning, subpixel rendering (tor) +// bugfixes for: +// codepoint-to-glyph conversion using table fmt=12 +// codepoint-to-glyph conversion using table fmt=4 +// stbtt_GetBakedQuad with non-square texture (Zer) +// updated Hello World! sample to use kerning and subpixel +// fixed some warnings +// 0.3 (2009-06-24) cmap fmt=12, compound shapes (MM) +// userdata, malloc-from-userdata, non-zero fill (stb) +// 0.2 (2009-03-11) Fix unsigned/signed char warnings +// 0.1 (2009-03-09) First public release +// + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/settings.cfg b/settings.cfg index 71e6294..a66236c 100644 --- a/settings.cfg +++ b/settings.cfg @@ -1,4 +1,4 @@ -master_volume 0 +master_volume 0.205032 music_volume 1 sfx_volume 1 fullscreen 0 diff --git a/src/assets/asset_manager.jai b/src/assets/asset_manager.jai index e559717..6a2db38 100644 --- a/src/assets/asset_manager.jai +++ b/src/assets/asset_manager.jai @@ -6,8 +6,7 @@ Pool :: #import "Pool"; #load "loaders.jai"; -// MAX_PACK_SIZE, MAX_WORLD_SIZE, MAX_CHUNKS_SIZE, MAX_SHGRID_SIZE, -// MAX_RDM_ATLAS_SIZE, MAX_RDM_MANIFEST_SIZE are injected as build strings +// MAX_PACK_SIZE, MAX_WORLD_SIZE and MAX_CHUNKS_SIZE are injected as build strings // by first.jai after scanning the actual asset files at compile time. MAX_FETCH_SLOTS :: 16; @@ -25,9 +24,6 @@ Fetch_Type :: enum { PACK; WORLD; WORLD_CHUNKS; - RDM_ATLAS; - RDM_MANIFEST; - SHGRID; } Fetch_Request :: struct { @@ -38,9 +34,8 @@ Fetch_Request :: struct { // PACK pack_name : string; - // WORLD / RDM / SH + // WORLD world_name : string; - chunk_key : Chunk_Key; // WORLD_CHUNKS: JSON carried forward from the WORLD fetch world_json_data : []u8; @@ -66,17 +61,11 @@ g_asset_manager : Asset_Manager; #scope_file -#load "rdm_loader.jai"; -#load "sh_loader.jai"; - fetch_type_buffer_size :: (type: Fetch_Type) -> s64 { if #complete type == { case .PACK; return MAX_PACK_SIZE; case .WORLD; return MAX_WORLD_SIZE; case .WORLD_CHUNKS; return MAX_CHUNKS_SIZE; - case .RDM_ATLAS; return MAX_RDM_ATLAS_SIZE; - case .RDM_MANIFEST; return MAX_RDM_MANIFEST_SIZE; - case .SHGRID; return MAX_SHGRID_SIZE; } } @@ -136,15 +125,6 @@ handle_fetch_failed :: (req: *Fetch_Request) { free(req.world_json_data.data); log_error("Failed to load chunks.bin for world '%'", req.world_name); - case .RDM_ATLAS; - log_info("RDM: no global atlas for world '%' (ok if none baked yet)", req.world_name); - - case .RDM_MANIFEST; - log_info("RDM: no manifest for world '%' (ok if none baked yet)", req.world_name); - - case .SHGRID; - sh_loader_handle_failed(req); - } } @@ -189,61 +169,11 @@ process_completed_fetch :: (req: *Fetch_Request, data: []u8) { world, ok := load_world_from_json(json_str, data); if ok { set_loaded_world(world); - rdm_loader_enqueue_world(*get_current_world().world); - shgrid_loader_enqueue_world(*get_current_world().world); log_info("Loaded world: %", req.world_name); } else { log_error("Failed to parse world '%'", req.world_name); } - case .RDM_ATLAS; - curworld := get_current_world(); - if !curworld.valid || curworld.world.name != req.world_name then return; - - header_size := cast(s64) size_of(RDM_File_Header); - if data.count < header_size { - log_error("RDM: global atlas too small (world %)", req.world_name); - return; - } - header := cast(*RDM_File_Header) data.data; - if header.magic != RDM_FILE_MAGIC { - log_error("RDM: bad atlas magic (world %)", req.world_name); - return; - } - atlas_pixel_bytes := cast(u64) header.width * cast(u64) header.height * 4 * size_of(u16); - atlas_imgdata: sg_image_data; - atlas_imgdata.subimage[0][0] = .{ data.data + header_size, atlas_pixel_bytes }; - atlas_desc: sg_image_desc = .{ - render_target = false, - width = header.width, - height = header.height, - pixel_format = sg_pixel_format.RGBA16F, - sample_count = 1, - data = atlas_imgdata, - }; - if g_rdm_atlas.id != 0 then sg_destroy_image(g_rdm_atlas); - g_rdm_atlas = sg_make_image(*atlas_desc); - log_debug("RDM: loaded global atlas (%x%)", header.width, header.height); - - case .RDM_MANIFEST; - curworld := get_current_world(); - if !curworld.valid || curworld.world.name != req.world_name then return; - - json_str : string; - json_str.data = data.data; - json_str.count = data.count; - ok, entries := Jaison.json_parse_string(json_str, [..]Rdm_Atlas_Entry,, temp); - if !ok { - log_error("RDM: failed to parse manifest for world '%'", req.world_name); - return; - } - array_reset_keeping_memory(*curworld.world.rdm_lookup); - for e: entries array_add(*curworld.world.rdm_lookup, e); - log_debug("RDM: loaded manifest (% entries)", entries.count); - - case .SHGRID; - sh_loader_handle_completed(req, data); - } } @@ -252,7 +182,7 @@ Loaded_Pack :: struct { nameHash : u32 = 0; data_buffer : []u8; content : Load_Package; - textures : Table(string, sg_image); + textures : Table(string, Texture); animations : Table(string, Animation); audio : Table(string, Audio_Data); pool : Pool.Pool; @@ -263,7 +193,7 @@ add_resources_from_pack :: (pack: *Loaded_Pack) { Queued_Sheet_File :: struct { name : string; - image : sg_image; + image : Texture; sheet_w : s32; sheet_h : s32; sheet : Aseprite_Sheet; @@ -300,9 +230,6 @@ add_resources_from_pack :: (pack: *Loaded_Pack) { } else { queuedSheet.sheet = sheet; } - case "colorgrade.png"; - img, x, y := create_texture_from_memory(v.data); - add_image_to_lut_list(img, v.name); case "wav"; audio := load_wav_from_memory(v.data); table_set(*pack.audio, name, audio); @@ -421,7 +348,7 @@ dispatch_slots :: () { #scope_export free_resources_from_pack :: (pack: *Loaded_Pack) { - for pack.textures sg_destroy_image(it); + for pack.textures texture_destroy(it); table_reset(*pack.textures); table_reset(*pack.audio); table_reset(*pack.animations); @@ -499,9 +426,9 @@ load_pack :: (name: string, priority: Load_Priority = .LOADING_SCREEN) { #scope_file #scope_export -get_texture_from_pack :: (pack: string, path: string) -> (sg_image) { +get_texture_from_pack :: (pack: string, path: string) -> (Texture) { found, pack := find_pack_by_name(pack); - invalid_img : sg_image; + invalid_img : Texture; if !found { return invalid_img; @@ -539,7 +466,16 @@ add_font_from_pack :: (pack: string, path: string) { log_error("Failed to find font % from pack", path); return; } - state.font_default.fons_font = fonsAddFontMem(state.fons, "sans", entry.data.data, xx entry.data.count, 0); + state.font_default.face = font_face_add("sans", entry.data); +} + +// For files that may legitimately be absent from a pack. +get_raw_file_from_pack :: (pack: string, path: string) -> ([]u8, found: bool) { + pack_ok, loaded := find_pack_by_name(pack); + if !pack_ok return .[], false; + ok, entry := table_find(*loaded.content.lookup, path); + if !ok return .[], false; + return entry.data, true; } load_string_from_pack :: (pack: string, path: string) -> string { diff --git a/src/assets/loaders.jai b/src/assets/loaders.jai index 10a2c5d..eda2ab6 100644 --- a/src/assets/loaders.jai +++ b/src/assets/loaders.jai @@ -1,26 +1,9 @@ -create_texture_from_memory :: (data: []u8) -> (sg_image, s32, s32) { +create_texture_from_memory :: (data: []u8) -> (Texture, s32, s32) { x, y, channels : s32; image := stbi.stbi_load_from_memory(data.data, xx data.count, *x, *y, *channels, 4); - - subimg : [6][16]sg_range; - subimg[0][0] = .{ - ptr = image, - size = xx (x * y * 4) - }; - - img := sg_alloc_image(); - - sg_init_image(img, *(sg_image_desc.{ - width = x, - height = y, - pixel_format = sg_pixel_format.RGBA8, - data = .{ - subimage = subimg - } - })); - + texture := texture_create(x, y, .{x * y * 4, image}); stbi.stbi_image_free(image); - return img, x, y; + return texture, x, y; } create_string_from_memory :: (data: []u8) -> string { diff --git a/src/assets/rdm_loader.jai b/src/assets/rdm_loader.jai deleted file mode 100644 index 148dc79..0000000 --- a/src/assets/rdm_loader.jai +++ /dev/null @@ -1,58 +0,0 @@ -// RDM streaming helpers. -// The unified fetch queue lives in asset_manager.jai; these functions -// enqueue and cancel the world-level global RDM atlas + manifest. - -#scope_export - -rdm_loader_enqueue_world :: (world: *World) { - already_atlas := false; - already_manifest := false; - - for g_asset_manager.slots { - if !it.occupied continue; - if it.req.world_name != world.name continue; - if it.req.type == .RDM_ATLAS then already_atlas = true; - if it.req.type == .RDM_MANIFEST then already_manifest = true; - } - for g_asset_manager.queue { - if it.world_name != world.name continue; - if it.type == .RDM_ATLAS then already_atlas = true; - if it.type == .RDM_MANIFEST then already_manifest = true; - } - - if !already_atlas { - req : Fetch_Request; - req.type = .RDM_ATLAS; - req.priority = .LOADING_SCREEN; - req.world_name = world.name; - req.path = rdm_global_atlas_filename(world.name); - array_add(*g_asset_manager.queue, req); - } - if !already_manifest { - req : Fetch_Request; - req.type = .RDM_MANIFEST; - req.priority = .LOADING_SCREEN; - req.world_name = world.name; - req.path = rdm_global_manifest_filename(world.name); - array_add(*g_asset_manager.queue, req); - } -} - -// Drain all pending RDM work. -rdm_loader_cancel_all :: () { - new_count := 0; - for i: 0..g_asset_manager.queue.count - 1 { - item := g_asset_manager.queue[i]; - if item.type != .RDM_ATLAS && item.type != .RDM_MANIFEST { - g_asset_manager.queue[new_count] = item; - new_count += 1; - } - } - g_asset_manager.queue.count = new_count; - - for *slot: g_asset_manager.slots { - if !slot.occupied then continue; - if slot.req.type != .RDM_ATLAS && slot.req.type != .RDM_MANIFEST then continue; - slot.req.world_name = ""; - } -} diff --git a/src/assets/sh_loader.jai b/src/assets/sh_loader.jai deleted file mode 100644 index 4882445..0000000 --- a/src/assets/sh_loader.jai +++ /dev/null @@ -1,119 +0,0 @@ -// SH probe grid streaming helpers. -// The unified fetch queue lives in asset_manager.jai; these functions -// add entries to that queue and handle completed/failed fetches. - -#scope_export - -shgrid_loader_enqueue_world :: (world: *World) { - for *chunk: world.chunks { - if chunk.sh_valid then continue; - - already := false; - for g_asset_manager.slots { - if !it.occupied then continue; - if it.req.type == .SHGRID && - it.req.world_name == world.name && it.req.chunk_key == chunk.coord { - already = true; - break; - } - } - if already then continue; - - for g_asset_manager.queue { - if it.type == .SHGRID && - it.world_name == world.name && it.chunk_key == chunk.coord { - already = true; - break; - } - } - if already then continue; - - req : Fetch_Request; - req.type = .SHGRID; - req.priority = .LOADING_SCREEN; - req.world_name = world.name; - req.chunk_key = chunk.coord; - req.path = shgrid_filename(world.name, chunk.coord); - array_add(*g_asset_manager.queue, req); - } -} - -sh_loader_handle_failed :: (req: *Fetch_Request) { - log_error("SH: failed to load probe grid for chunk %", req.chunk_key); -} - -sh_loader_handle_completed :: (req: *Fetch_Request, data: []u8) { - curworld := get_current_world(); - if !curworld.valid || curworld.world.name != req.world_name then return; - - header_size := cast(s64) size_of(SH_Grid_File_Header); - if data.count < header_size { - log_error("SH: probe grid too small for chunk %", req.chunk_key); - return; - } - sh_header := cast(*SH_Grid_File_Header) data.data; - if sh_header.magic != SH_FILE_MAGIC { - log_error("SH: bad magic for chunk %", req.chunk_key); - return; - } - n := sh_header.probe_n; - if n != SH_PROBE_N { - log_error("SH: probe_n mismatch for chunk % (file=%, expected=%) — re-bake required", req.chunk_key, n, SH_PROBE_N); - return; - } - total_values := cast(s64) n * n * n * 12; - bytes_per_val := ifx sh_header.version >= 2 then size_of(u16) else size_of(float); - if data.count < header_size + total_values * bytes_per_val { - log_error("SH: probe grid data too short for chunk %", req.chunk_key); - return; - } - - // Pack flat [n^3 * 12] coefficients → 3-RGBA16F-texels-per-probe 2D texture layout. - // Texture dims: (n*3) x (n*n). Probe (px,py,pz) at row (pz*n+py), col (px*3+k). - // Coefficient layout in 3 texels (12 slots): - // t0: R.c0-3 t1: G.c0-3 t2: B.c0-3 - tex_w := n * 3; - n_tex := cast(s64) tex_w * n * n; - packed := NewArray(n_tex * 4, u16); - if sh_header.version >= 2 { - src := cast(*u16) (data.data + header_size); - for pz: 0..n-1 for py: 0..n-1 for px: 0..n-1 { - probe_idx := px + py * n + pz * n * n; - s := src + probe_idx * 12; - for k: 0..2 { - tex_idx := (pz * n + py) * tex_w + (px * 3 + k); - d := packed.data + tex_idx * 4; - for ch: 0..3 d[ch] = (s + k * 4 + ch).*; - } - } - } else { - src := cast(*float) (data.data + header_size); - for pz: 0..n-1 for py: 0..n-1 for px: 0..n-1 { - probe_idx := px + py * n + pz * n * n; - s := src + probe_idx * 12; - for k: 0..2 { - tex_idx := (pz * n + py) * tex_w + (px * 3 + k); - d := packed.data + tex_idx * 4; - for ch: 0..3 d[ch] = f32_to_f16((s + k * 4 + ch).*); - } - } - } - - sh_imgdata : sg_image_data; - sh_imgdata.subimage[0][0] = .{ packed.data, cast(u64)(n_tex * 4 * size_of(u16)) }; - sh_desc : sg_image_desc = .{ - width = tex_w, - height = n * n, - pixel_format = sg_pixel_format.RGBA16F, - sample_count = 1, - data = sh_imgdata, - }; - chunk := table_find_pointer(*curworld.world.chunks, req.chunk_key); - if chunk != null { - if chunk.sh_probe_grid.id != 0 then sg_destroy_image(chunk.sh_probe_grid); - chunk.sh_probe_grid = sg_make_image(*sh_desc); - chunk.sh_valid = true; - log_debug("SH: loaded probe grid for chunk %", req.chunk_key); - } - free(packed.data); -} diff --git a/src/editor/editor.jai b/src/editor/editor.jai index 7e07560..62b269a 100644 --- a/src/editor/editor.jai +++ b/src/editor/editor.jai @@ -6,10 +6,10 @@ #load "trile_editor.jai"; #load "level_editor.jai"; #load "particle_editor.jai"; + #load "material_studio.jai"; } #if FLAG_TACOMA_ENABLED { #load "tacoma.jai"; } #load "console.jai"; -#load "textureDebugger.jai"; #scope_file @@ -18,6 +18,7 @@ Editor_View :: enum { Trile_Editor; Level_Editor; Particle_Editor; + Material_Editor; }; current_editor_view : Editor_View = .Trile_Editor; @@ -62,6 +63,8 @@ draw_editor_ui :: (theme: *GR.Overall_Theme) { if keybind_button(r, "Trile studio", .STUDIO_TRILE, *t_button_selectable(theme, current_editor_view == .Trile_Editor)) { clear_particles(); current_editor_view = .Trile_Editor; } r.x -= r.w; if keybind_button(r, "Particle studio", .STUDIO_MATERIAL, *t_button_selectable(theme, current_editor_view == .Particle_Editor)) { clear_particles(); current_editor_view = .Particle_Editor; } + r.x -= r.w; + if keybind_button(r, "Material studio", .STUDIO_SWATCHES, *t_button_selectable(theme, current_editor_view == .Material_Editor)) { clear_particles(); current_editor_view = .Material_Editor; } if current_editor_view == { case .Trile_Editor; @@ -70,23 +73,19 @@ draw_editor_ui :: (theme: *GR.Overall_Theme) { draw_level_editor_ui(theme); case .Particle_Editor; draw_particle_editor_ui(theme); + case .Material_Editor; + draw_material_studio_ui(theme); } } draw_profiler(); } - draw_texture_debugger(theme); - draw_postprocess_popup(theme); - draw_lighting_popup(theme); GR.draw_popups(); immediate_flush(); } draw_editor :: () { #if OS != .WASM { - disable_dof_post_process = false; if !in_editor_view then return; - disable_dof_post_process = true; - if current_editor_view == { case .Trile_Editor; diff --git a/src/editor/iprof.jai b/src/editor/iprof.jai index afcfa11..107512b 100644 --- a/src/editor/iprof.jai +++ b/src/editor/iprof.jai @@ -36,14 +36,7 @@ draw_line :: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2, color: Vector4 } text_width :: (text: string) -> float { - if text.count < 1 { - return 0; - } - - fonsSetFont(state.fons, state.font_default.fons_font); - fonsSetSize(state.fons, xx iprof_font.character_height); - w := fonsTextBounds(state.fons, 0.0, 0.0, text.data, text.data + text.count, null); - return cast(float) w; + return text_measure(state.font_default.face, xx iprof_font.character_height, text); } draw_rectangle_prof :: (x0: float, y0: float, x1: float, y1: float, color: Vector4) { diff --git a/src/editor/level_editor.jai b/src/editor/level_editor.jai index 9c25ad1..491bd8c 100644 --- a/src/editor/level_editor.jai +++ b/src/editor/level_editor.jai @@ -56,7 +56,6 @@ inspector_x : s32; inspector_y : s32; inspector_z : s32; inspector_emitter_def : s32 = -1; -inspector_rdm_roughness : int = 0; inspector_note_deactivate : bool; inspector_note_activate_next : bool; @@ -131,11 +130,7 @@ get_level_editor_camera :: () -> Camera { camera.position = camera.target; camera.position += cameraDir * cameraDist; - if is_in_reflection_pass { - camera.position.y *= -1; - camera.target.y *= -1; - } - + return camera; } @@ -487,7 +482,6 @@ add_trile :: (name: string, x: s32, y: s32, z: s32, orientation: u8 = 0) { for *group: chunk.groups { if group.trile_name == name { array_add(*group.instances, inst); - recompute_group_bounds(group); added = true; break; } @@ -496,10 +490,9 @@ add_trile :: (name: string, x: s32, y: s32, z: s32, orientation: u8 = 0) { group: Chunk_Trile_Group; group.trile_name = sprint("%", name); array_add(*group.instances, inst); - recompute_group_bounds(*group); array_add(*chunk.groups, group); } - invalidate_buried_around(*curworld.world, x, y, z); + upload_chunk(chunk); trile, ok := get_trile(name); if !ok || trile.skip_collision then return; chunk_set_occupancy_mask_at(chunk, lx, ly, lz, occupancy_state_for(trile, orientation)); @@ -519,17 +512,13 @@ remove_trile :: (x: s32, y: s32, z: s32) { for inst, idx: group.instances { if inst.x == lx && inst.y == ly && inst.z == lz { array_unordered_remove_by_index(*group.instances, idx); - if group.is_buried.count > idx { - array_unordered_remove_by_index(*group.is_buried, idx); - } - recompute_group_bounds(group); removed = true; break; } } if removed break; } - if removed invalidate_buried_around(*curworld.world, x, y, z); + if removed upload_chunk(chunk); chunk_set_occupancy_mask_at(chunk, lx, ly, lz, .FREE); } @Command @@ -790,7 +779,7 @@ tick_level_editor :: () { } } -create_level_editor_preview_tasks :: () { +draw_level_editor_preview :: (view: View_Id) { curworld := get_current_world(); if !curworld.valid then return; @@ -802,20 +791,8 @@ create_level_editor_preview_tasks :: () { if current_tool_mode == .INSPECTOR { name, orientation, found := get_trile_at(*curworld.world, xx px, xx py, xx pz); cursor_trile := ifx found then name else (ifx editor_current_trile then editor_current_trile.name else ""); - if cursor_trile != "" { - ck := world_to_chunk_coord(xx px, xx py, xx pz); - lx, ly, lz := world_to_local(xx px, xx py, xx pz); - positions: [..]Trile_Instance; - positions.allocator = temp; - array_add(*positions, Trile_Instance.{lx, ly, lz, xx orientation}); - task: Rendering_Task_Trile; - task.trile = cursor_trile; - task.positions = positions; - task.worldConf = *curworld.world.conf; - task.preview_mode = 1; - task.chunk_key = ck; - add_rendering_task(task); - } + mesh, ok := get_trile_mesh(cursor_trile); + if ok draw_trile(view, mesh, .{xx px, xx py, xx pz}, orientation, .ADD_PREVIEW); return; } @@ -880,37 +857,10 @@ create_level_editor_preview_tasks :: () { is_delete := (current_tool_mode == .AREA && area_active && area_delete) || (current_tool_mode == .LINE && line_active && line_delete); - chunk_groups: [..] struct { key: Chunk_Key; instances: [..]Trile_Instance; }; - chunk_groups.allocator = temp; - for pos : positions { - wx := cast(s32) pos.x; wy := cast(s32) pos.y; wz := cast(s32) pos.z; - ck := world_to_chunk_coord(wx, wy, wz); - lx, ly, lz := world_to_local(wx, wy, wz); - found := false; - for *grp : chunk_groups { - if grp.key == ck { - array_add(*grp.instances, Trile_Instance.{lx, ly, lz, ori_u8}); - found = true; - break; - } - } - if !found { - instances: [..]Trile_Instance; - instances.allocator = temp; - array_add(*instances, Trile_Instance.{lx, ly, lz, ori_u8}); - array_add(*chunk_groups, .{ck, instances}); - } - } - - for grp : chunk_groups { - task: Rendering_Task_Trile; - task.trile = editor_current_trile.name; - task.positions = grp.instances; - task.worldConf = *curworld.world.conf; - task.chunk_key = grp.key; - task.preview_mode = ifx is_delete then cast(s32)2 else cast(s32)1; - add_rendering_task(task); - } + mesh, ok := get_trile_mesh(editor_current_trile.name); + if !ok then return; + tint := ifx is_delete then Trile_Tint.DELETE_PREVIEW else .ADD_PREVIEW; + for positions draw_trile(view, mesh, it.xyz, ori_u8, tint); } get_trile_at :: (world: *World, wx: s32, wy: s32, wz: s32) -> (name: string, orientation: u8, found: bool) { @@ -958,36 +908,6 @@ draw_inspector_panel :: (r: *GR.Rect, theme: *GR.Overall_Theme) { if has_trile { GR.label(r.*, tprint("Trile: % orient: %", trile_name, orientation), *t_label_left(theme)); r.y += r.h; - r.h = ui_h(3, 2); - GR.label(r.*, "-- RDM --", *t_label_left(theme)); - r.y += r.h; - r.h = ui_h(4, 0); - rdm_on := is_rdm_instance_enabled(world, inspector_x, inspector_y, inspector_z); - label := ifx rdm_on then "RDM: ON (sharp specular)" else "RDM: OFF (sky reflection)"; - if GR.button(r.*, label, *theme.button_theme, 300) { - set_rdm_instance_enabled(world, inspector_x, inspector_y, inspector_z, !rdm_on); - } - r.y += r.h; - - if rdm_on { - cur_size := get_rdm_instance_size(world, inspector_x, inspector_y, inspector_z); - tile_w := 2 * cur_size; - tile_h := 3 * cur_size; - size_label := tprint("Size: % (% x % px)", cur_size, tile_w, tile_h); - GR.label(r.*, size_label, *t_label_left(theme)); - r.y += r.h; - - r2 := r.*; - r2.w = r.w / 2; - if GR.button(r2, "- size", *theme.button_theme, 304) { - set_rdm_instance_size(world, inspector_x, inspector_y, inspector_z, rdm_cycle_size(cur_size, -1)); - } - r2.x += r2.w; - if GR.button(r2, "+ size", *theme.button_theme, 305) { - set_rdm_instance_size(world, inspector_x, inspector_y, inspector_z, rdm_cycle_size(cur_size, +1)); - } - r.y += r.h; - } } else { GR.label(r.*, "Trile: (empty)", *t_label_left(theme)); r.y += r.h; @@ -1081,60 +1001,6 @@ draw_inspector_panel :: (r: *GR.Rect, theme: *GR.Overall_Theme) { r.y += r.h; } - r.h = ui_h(3, 2); - r.y += r.h * 0.5; - GR.label(r.*, "-- RDM --", *t_label_left(theme)); - r.y += r.h; - - rdm_flagged := is_rdm_instance_enabled(world, inspector_x, inspector_y, inspector_z); - if rdm_flagged { - GR.label(r.*, "RDM: flagged", *t_label_left(theme)); - r.y += r.h; - - rect, has_rect := rdm_get_atlas_rect(world, inspector_x, inspector_y, inspector_z); - if has_rect { - GR.label(r.*, tprint("Rect: %.2,%.2 %.2x%.2", rect.x, rect.y, rect.z, rect.w), *t_label_left(theme)); - r.y += r.h; - - r.y += r.h * 0.5; - tex_size := r.w * 0.9; - tex_r : GR.Rect; - tex_r.x = r.x + (r.w - tex_size) * 0.5; - tex_r.y = r.y; - tex_r.w = tex_size; - tex_r.h = tex_size * 1.5; - - fy0 := 1.0 - rect.y; - fy1 := 1.0 - (rect.y + rect.w); - uv0 := Vector2.{rect.x, fy0}; - uv1 := Vector2.{rect.x + rect.z, fy0}; - uv2 := Vector2.{rect.x + rect.z, fy1}; - uv3 := Vector2.{rect.x, fy1}; - - uiTex := New(Ui_Texture,, temp); - uiTex.tex = g_rdm_atlas; - if uiTex.tex.id != INVALID_ID { - set_shader_for_images(uiTex); - immediate_quad( - .{tex_r.x, tex_r.y}, - .{tex_r.x + tex_r.w, tex_r.y}, - .{tex_r.x + tex_r.w, tex_r.y + tex_r.h}, - .{tex_r.x, tex_r.y + tex_r.h}, - .{1,1,1,1}, - uv0, uv1, uv2, uv3 - ); - set_shader_for_color(); - immediate_flush(); - } - r.y += tex_r.h + r.h * 0.5; - } else { - GR.label(r.*, "RDM: not yet baked", *t_label_left(theme)); - r.y += r.h; - } - } else { - GR.label(r.*, "RDM: not flagged", *t_label_left(theme)); - r.y += r.h; - } } draw_entity_tool_panel :: (r: *GR.Rect, theme: *GR.Overall_Theme) { @@ -1245,7 +1111,7 @@ entity_autoedit :: (rect: GR.Rect, e: *Entity, theme: *GR.Overall_Theme) { #insert #run,stallable gen_entity_dispatch("autoedit(rect, cast(*%)e, theme, 400)"); } -add_editor_billboards :: () { +draw_editor_billboards :: (view: View_Id) { if !editor_billboards_visible then return; curworld := get_current_world(); if !curworld.valid then return; @@ -1255,45 +1121,31 @@ add_editor_billboards :: () { for e: curworld.world.entities { marker := entity_marker_animation(e); if marker == null then continue; - task : Rendering_Task_Billboard; - task.position = e.position + ENTITY_PIVOT; - task.animation = marker; - task.frame = 0; - add_rendering_task(task); + draw_animation_frame(view, marker, 0, e.position + ENTITY_PIVOT); } anim := get_animation_from_string("game_core.ball"); if anim == null then return; for inst: curworld.world.emitter_instances { - task : Rendering_Task_Billboard; - task.position = inst.position; - task.animation = anim; - task.frame = 0; - add_rendering_task(task); + draw_animation_frame(view, anim, 0, inst.position); } for note: curworld.world.notes { - task : Rendering_Task_Billboard; - task.position = .{cast(float)note.position.x + 0.5, cast(float)note.position.y + 0.5, cast(float)note.position.z + 0.5}; - task.animation = anim; - task.frame = 0; - add_rendering_task(task); + draw_animation_frame(view, anim, 0, .{cast(float)note.position.x + 0.5, cast(float)note.position.y + 0.5, cast(float)note.position.z + 0.5}); } } draw_level_editor :: () { curworld := get_current_world(); if !curworld.valid then return; - cam := get_level_editor_camera(); - ph := effective_plane_height(*curworld.world.conf); - create_set_cam_rendering_task(cam, ph); - create_world_rendering_tasks(*curworld.world, cam, ph); - add_entity_render_tasks(*curworld.world); + view := add_view(.{camera = get_level_editor_camera(), environment = *curworld.world.environment}); + draw_entities(view, *curworld.world); + draw_live_particles(view); if show_trile_preview && !trile_preview_disabled { - create_level_editor_preview_tasks(); + draw_level_editor_preview(view); } - add_editor_billboards(); + draw_editor_billboards(view); debug_grid(floor(cameraCenter.x), editor_edit_y(), floor(cameraCenter.y), 20, .{0.3, 0.3, 0.35, 0.7}); } diff --git a/src/editor/material_studio.jai b/src/editor/material_studio.jai new file mode 100644 index 0000000..5640019 --- /dev/null +++ b/src/editor/material_studio.jai @@ -0,0 +1,78 @@ +#scope_file + +ms_selected : u8; +ms_scroll : float; +ms_name_input : string; + +#scope_export + +draw_material_studio_ui :: (theme: *GR.Overall_Theme) { + panel := GR.get_rect(0, ui_h(5,0), ui_w(20, 20), ui_h(95, 0)); + ui_add_mouse_occluder(panel); + draw_bg_rectangle(panel, theme); + row_h := ui_h(4, 0); + + r := panel; + r.h = row_h; + if GR.button(r, "New material", *theme.button_theme) { + id, ok := swatch_add("new", u8.[255, 255, 255]); + if ok { + ms_selected = id; + ms_name_input = copy_string(g_swatches[id].name); + } + } + r.y += row_h; + + grid := r; + grid.h = ui_h(25, 0); + previous := ms_selected; + region, inside := GR.begin_scrollable_region(grid, *theme.scrollable_region_theme); + end_y := draw_swatch_grid(inside, *ms_scroll, *ms_selected, theme); + GR.end_scrollable_region(region, inside.x + inside.w, end_y, *ms_scroll); + if ms_selected != previous ms_name_input = copy_string(g_swatches[ms_selected].name); + r.y += grid.h + row_h * 0.5; + + if ms_selected == 0 || !g_swatches[ms_selected].used return; + swatch := *g_swatches[ms_selected]; + + a, new_text := GR.text_input(r, ms_name_input, *theme.text_input_theme, 128); + if a & .ENTERED { + ms_name_input = copy_string(new_text); + swatch.name = copy_string(new_text); + } + r.y += row_h; + + r.h = ui_h(30, 0); + color := swatch_color(ms_selected); + GR.color_picker(r, *color, *theme.color_picker_theme); + for 0..2 swatch.color[it] = cast(u8) clamp(color.component[it] * 255 + 0.5, 0, 255); + r.y += r.h; + + r.h = ui_h(3, 2); + GR.label(r, "Roughness", *t_label_left(theme)); + r.y += r.h; + GR.slider(r, *swatch.roughness, 0, 7, 1, *theme.slider_theme); + r.y += r.h; + GR.label(r, "Metallic", *t_label_left(theme)); + r.y += r.h; + GR.slider(r, *swatch.metallic, 0, 3, 1, *theme.slider_theme); + r.y += r.h; + GR.label(r, "Emittance", *t_label_left(theme)); + r.y += r.h; + GR.slider(r, *swatch.emittance, 0, 127, 1, *theme.slider_theme); + r.y += r.h * 2; + + r.h = row_h; + if GR.button(r, "Save", *theme.button_theme) { + striles(); + for trile: get_trile_table_ptr() update_trile_thumbnail(trile.name); + } + r.y += row_h; + + if swatch_in_use(ms_selected) { + GR.label(r, "In use, can't delete", *t_label_left(theme)); + } else if GR.button(r, "Delete", *theme.button_theme) { + swatch.* = .{}; + ms_selected = 0; + } +} diff --git a/src/editor/particle_editor.jai b/src/editor/particle_editor.jai index 6d916fa..3aa93ed 100644 --- a/src/editor/particle_editor.jai +++ b/src/editor/particle_editor.jai @@ -184,7 +184,8 @@ draw_particle_editor_ui :: (theme: *GR.Overall_Theme) { } draw_particle_editor :: () { - create_set_cam_rendering_task(pe_cam, 0.0); + view := add_view(.{camera = pe_cam, environment = New(Environment,, temp), draw_world = false}); + draw_live_particles(view); if pe_selected_index >= 0 && pe_selected_index < cast(s32)g_emitter_defs.count { def := *g_emitter_defs[pe_selected_index]; diff --git a/src/editor/picker.jai b/src/editor/picker.jai index 20613ab..9bee414 100644 --- a/src/editor/picker.jai +++ b/src/editor/picker.jai @@ -59,7 +59,7 @@ draw_trile_picker :: (r_in: GR.Rect, theme: *GR.Overall_Theme) { btn_theme.frame_color_down = .{0, 0, 0, 0}; btn_theme.frame_color_flash = .{0, 0, 0, 0}; - atlas_valid := g_thumbnail_atlas.tex.id != INVALID_ID; + atlas_valid := g_thumbnail_atlas.tex.id != 0; region, inside := GR.begin_scrollable_region(r, *theme.scrollable_region_theme); diff --git a/src/editor/rdm_disk.jai b/src/editor/rdm_disk.jai deleted file mode 100644 index c43fa9d..0000000 --- a/src/editor/rdm_disk.jai +++ /dev/null @@ -1,48 +0,0 @@ -// RDM disk format helpers shared by the baking tool (tacoma) and the -// sfetch-based streaming loader (rdm_loader.jai). - -RDM_File_Header :: struct { - magic: u32; - width: s32; - height: s32; -} - -RDM_FILE_MAGIC :: u32.[0x4D445254][0]; // "TRDM" as little-endian u32 - -rdm_global_atlas_filename :: (world_name: string) -> string { - return sprint("%/worlds/%/rdm_atlas.rdm", GAME_RESOURCES_DIR, world_name); -} - -rdm_global_manifest_filename :: (world_name: string) -> string { - return sprint("%/worlds/%/rdm_manifest.json", GAME_RESOURCES_DIR, world_name); -} - -// SH probe grid (1 probe per trile per axis = 32x32x32 per 32x32x32 chunk) - -SH_FILE_MAGIC :: u32.[0x44475348][0]; // "SHGD" as little-endian u32 -SH_PROBE_N :: 32; // probes per axis (1 per trile in a 32-trile chunk) -SH_TEX_W :: SH_PROBE_N * 3; // 96 — 3 RGBA texels per probe along X - -SH_Grid_File_Header :: struct { - magic: u32; - version: u16; - probe_n: s32; -} - -shgrid_filename :: (world_name: string, chunk_key: Chunk_Key) -> string { - return sprint("%/worlds/%/%_%_%.shgrid", GAME_RESOURCES_DIR, world_name, chunk_key.x, chunk_key.y, chunk_key.z); -} - -f32_to_f16 :: (f: float) -> u16 { - b := (cast(*u32) *f).*; - sign := (b >> 31) & 0x1; - exp := cast(s32)((b >> 23) & 0xFF) - 127; - mant := b & 0x7FFFFF; - if exp >= 16 return cast(u16)((sign << 15) | 0x7C00); // clamp to inf - if exp >= -14 return cast(u16)((sign << 15) | (cast(u32)(exp + 15) << 10) | (mant >> 13)); - if exp >= -24 { - shift := cast(u32)(-exp - 1); - return cast(u16)((sign << 15) | ((mant | 0x800000) >> shift)); - } - return cast(u16)(sign << 15); // underflow → ±0 -} diff --git a/src/editor/rdm_disk_test.jai b/src/editor/rdm_disk_test.jai deleted file mode 100644 index f9cb8e6..0000000 --- a/src/editor/rdm_disk_test.jai +++ /dev/null @@ -1,35 +0,0 @@ -test_f32_to_f16 :: () { - s := begin_suite("f32_to_f16"); - - check(*s, "0.0 → 0x0000", f32_to_f16(0.0) == 0x0000); - check(*s, "-0.0 → 0x8000", f32_to_f16(-0.0) == 0x8000); - check(*s, "1.0 → 0x3C00", f32_to_f16(1.0) == 0x3C00); - check(*s, "-1.0 → 0xBC00", f32_to_f16(-1.0) == 0xBC00); - check(*s, "0.5 → 0x3800", f32_to_f16(0.5) == 0x3800); - check(*s, "2.0 → 0x4000", f32_to_f16(2.0) == 0x4000); - check(*s, "1.5 → 0x3E00", f32_to_f16(1.5) == 0x3E00); - - // Max normal f16 = 65504 - check(*s, "65504.0 → 0x7BFF", f32_to_f16(65504.0) == 0x7BFF); - - // Min normal f16 = 2^-14 - check(*s, "2^-14 → 0x0400", f32_to_f16(cast(float)(1.0 / 16384.0)) == 0x0400); - - // Overflow clamps to infinity - check(*s, "65536.0 → 0x7C00 (inf)", f32_to_f16(65536.0) == 0x7C00); - check(*s, "1e10 → 0x7C00 (inf)", f32_to_f16(1.0e10) == 0x7C00); - check(*s, "-65536.0 → 0xFC00 (-inf)", f32_to_f16(-65536.0) == 0xFC00); - - // Denormals: 2^-15 is the largest f16 denormal base - check(*s, "2^-15 → 0x0200", f32_to_f16(cast(float)(1.0 / 32768.0)) == 0x0200); - // Smallest representable f16 denormal = 2^-24 - check(*s, "2^-24 → 0x0001", f32_to_f16(cast(float)(1.0 / 16777216.0)) == 0x0001); - - // Underflow to zero - check(*s, "2^-25 → 0x0000", f32_to_f16(cast(float)(1.0 / 33554432.0)) == 0x0000); - check(*s, "-2^-25 → 0x8000", f32_to_f16(cast(float)(-1.0 / 33554432.0)) == 0x8000); - - end_suite(s); -} - -#run test_f32_to_f16(); diff --git a/src/editor/textureDebugger.jai b/src/editor/textureDebugger.jai deleted file mode 100644 index 503bbd7..0000000 --- a/src/editor/textureDebugger.jai +++ /dev/null @@ -1,145 +0,0 @@ -#scope_file - -subwindow : GR.Subwindow_Info; -subwindow_initted : bool = false; - -pp_subwindow : GR.Subwindow_Info; -pp_subwindow_initted : bool = false; - -lighting_subwindow : GR.Subwindow_Info; -lighting_subwindow_initted : bool = false; -// @Hack: This is probably kinda a bad idea, I don't really know atm how else to get the theme into the subwindow. -theme_ptr : GR.Overall_Theme; - -current_pipeline : s32 = 0; -current_slot : s32 = 0; -pipeline_names : []string = .["shadowmap", "reflection", "main", "position", "normal", "ssao", "bloom", "dof", "rdm_atlas"]; - -draw_subwindow_texture_debug :: (state: *GR.Subwindow_State, r: GR.Rect, data: *void) { - r2 := r; - r2.h = ui_h(5,0); - r2.w = r.w; - GR.dropdown(r2, pipeline_names, *current_pipeline, *theme_ptr.dropdown_theme); - - r2.y = r.y + r2.h; - r2.h = r.h - r2.h; - r2.x = r.x; - r2.w = r.w; - - uiTex := New(Ui_Texture ,,temp); - - image : sg_image; - if current_pipeline == { - case 0; image = g_shadowmap_img; - case 1; image = gPipelines.plane.bind.images[0]; - case 2; image = g_rendertex; - case 3; image = g_gbuf_position; - case 4; image = g_gbuf_normal; - case 5; image = g_ssaobuf; - case 6; image = g_bloom_up_1; - case 7; image = g_dof_tex; - case 8; image = g_rdm_atlas; - } - - uiTex.tex = image; - - if uiTex.tex.id != INVALID_ID { - set_shader_for_images(uiTex); - immediate_quad(.{r2.x, r2.y}, .{r2.x + r2.w, r2.y}, .{r2.x + r2.w, r2.y + r2.h}, .{r2.x, r2.y + r2.h}); - set_shader_for_color(); - } - immediate_flush(); -} - -draw_subwindow_lighting :: (state: *GR.Subwindow_State, r: GR.Rect, data: *void) { - ui_add_mouse_occluder(r); - autoedit(r, *current_lighting_config, *theme_ptr); -} - -draw_subwindow_post_process :: (state: *GR.Subwindow_State, r: GR.Rect, data: *void) { - r2 := r; - ui_add_mouse_occluder(r); - r3 := r; - r3.h = ui_h(5,0); - r2.h -= r3.h; - r2.y += r3.h; - if GR.button(r3, "Save postprocessing", *theme_ptr.button_theme) { - #if OS != .WASM { - file :: #import "File"; - save_post_process(); - } - } - r3.y += r3.h; - r2.h -= r3.h; - r2.y += r3.h; - - - GR.dropdown(r3, LUT_name_list, *g_current_lut_texture_index, *theme_ptr.dropdown_theme); - - autoedit(r2, *current_post_process, *theme_ptr); -} - -#scope_export - -draw_texture_debug :: () { -} - -toggle_texdebug :: () { - subwindow.open = !subwindow.open; -} @Command - -toggle_pp :: () { - pp_subwindow.open = !pp_subwindow.open; -} @Command - -toggle_lighting :: () { - lighting_subwindow.open = !lighting_subwindow.open; -} @Command - -draw_postprocess_popup :: (theme: *GR.Overall_Theme) { - if !pp_subwindow.open then return; - if !pp_subwindow_initted { - theme_ptr = theme; - r := GR.get_rect(ui_w(40, 0), ui_w(40, 0), ui_h(50,0), ui_h(50,0)); - pp_subwindow.rect = r; - pp_subwindow.draw = draw_subwindow_post_process; - pp_subwindow.title_text = "Post Process"; - pp_subwindow.open = false; - pp_subwindow_initted = true; - } - if pp_subwindow.open { // The Subwindow starts open, but pressing the Close button can close it. - pp_subwindow_state := GR.add_subwindow(*pp_subwindow, *theme.subwindow_theme); - } -} - -draw_lighting_popup :: (theme: *GR.Overall_Theme) { - if !lighting_subwindow.open then return; - if !lighting_subwindow_initted { - theme_ptr = theme; - r := GR.get_rect(ui_w(55, 0), ui_w(40, 0), ui_h(50,0), ui_h(40,0)); - lighting_subwindow.rect = r; - lighting_subwindow.draw = draw_subwindow_lighting; - lighting_subwindow.title_text = "Lighting"; - lighting_subwindow.open = false; - lighting_subwindow_initted = true; - } - if lighting_subwindow.open { - GR.add_subwindow(*lighting_subwindow, *theme.subwindow_theme); - } -} - -draw_texture_debugger :: (theme: *GR.Overall_Theme) { - if !subwindow.open then return; - if !subwindow_initted { - theme_ptr = theme; - r := GR.get_rect(ui_w(40, 0), ui_w(40, 0), ui_h(50,0), ui_h(50,0)); - subwindow.rect = r; - subwindow.draw = draw_subwindow_texture_debug; - subwindow.title_text = "Texture Debugger"; - subwindow.open = false; - subwindow_initted = true; - } - if subwindow.open { // The Subwindow starts open, but pressing the Close button can close it. - subwindow_state := GR.add_subwindow(*subwindow, *theme.subwindow_theme); - } -} diff --git a/src/editor/trile_editor.jai b/src/editor/trile_editor.jai index ecf3bc8..ae64799 100644 --- a/src/editor/trile_editor.jai +++ b/src/editor/trile_editor.jai @@ -5,10 +5,6 @@ zoom : float = 3.0; brush_radius : int = 5; -roughness : u8 = 0; -metallic : u8 = 0; -emittance : u8 = 0; - hovered_trixel_x : int = -1; hovered_trixel_y : int = -1; hovered_trixel_z : int = -1; @@ -39,7 +35,6 @@ current_tab : Trile_Editor_Tab = .TOOLSET; current_tool : Trile_Editor_Tool = .PAINT; current_mode : Trile_Editor_Tool_Mode = .AREA; -colorMuls : [16][16][16]Vector3; tiling_preview_active : bool; tiling_axis : s32 = 0; // 0=+X, 1=+Z, 2=-X, 3=-Z tiling_orientation : s32 = 0; // 0-23 = face(0..5)*4 + twist(0..3) @@ -47,10 +42,10 @@ tiling_neighbor_trile_name : string; tiling_neighbor_trile_input : string; UNDO_MAX :: 32; -undo_trixels : [UNDO_MAX][16][16][16] Trixel; +undo_trixels : [UNDO_MAX][16][16][16]u8; undo_count : int = 0; undo_head : int = 0; -redo_trixels : [UNDO_MAX][16][16][16] Trixel; +redo_trixels : [UNDO_MAX][16][16][16]u8; redo_count : int = 0; redo_head : int = 0; @@ -59,7 +54,7 @@ meta_name_input : string; #scope_export ntrile :: (name: string) { - set_trile_gfx(editor_current_trile.name, generate_trile_gfx_matias(editor_current_trile)); + trile_changed(editor_current_trile); newt : Trile; newt.name = sprint("%", name); set_trile(newt.name, newt); @@ -68,7 +63,7 @@ ntrile :: (name: string) { } @Command cpytrile :: (trile: string, destination: string) { - set_trile_gfx(editor_current_trile.name, generate_trile_gfx_matias(editor_current_trile)); + trile_changed(editor_current_trile); newt : Trile; newt.name = sprint("%", destination); newt.trixels = get_trile(trile).trixels; @@ -78,7 +73,7 @@ cpytrile :: (trile: string, destination: string) { } @Command ltrile :: (name: string) { - set_trile_gfx(editor_current_trile.name, generate_trile_gfx_matias(editor_current_trile)); + trile_changed(editor_current_trile); nt := get_trile(name); if !nt { console_add_output_line("Failed to load a trile with that name..."); @@ -108,6 +103,7 @@ do_undo :: () { undo_count -= 1; editor_current_trile.trixels = undo_trixels[undo_head]; trile_gen_heightmap(editor_current_trile); + trile_changed(editor_current_trile); } do_redo :: () { @@ -119,20 +115,15 @@ do_redo :: () { redo_count -= 1; editor_current_trile.trixels = redo_trixels[redo_head]; trile_gen_heightmap(editor_current_trile); + trile_changed(editor_current_trile); } apply_tool_to_trixel :: (x: s64, y: s64, z: s64) { - if current_tool == .PAINT { - editor_current_trile.trixels[x][y][z].material.color = current_color; - editor_current_trile.trixels[x][y][z].material.metallic = metallic; - editor_current_trile.trixels[x][y][z].material.roughness = roughness; - editor_current_trile.trixels[x][y][z].material.emittance = emittance; - } - if current_tool == .ADD { - editor_current_trile.trixels[x][y][z].empty = false; - } - if current_tool == .REMOVE { - editor_current_trile.trixels[x][y][z].empty = true; + trixel := *editor_current_trile.trixels[x][y][z]; + if current_tool == { + case .PAINT; if trixel.* != 0 trixel.* = current_swatch; + case .ADD; if trixel.* == 0 trixel.* = current_swatch; + case .REMOVE; trixel.* = 0; } } @@ -197,13 +188,13 @@ handle_tool_click :: () { #scope_export -current_color : Vector3 = .{1.0, 0.0, 0.0}; +current_swatch : u8 = 1; reset_trile :: () { for x: 0..15 { for y: 0..15 { for z: 0..15 { - editor_current_trile.trixels[x][y][z].empty = false; + editor_current_trile.trixels[x][y][z] = current_swatch; } } } @@ -229,6 +220,7 @@ tick_trile_editor :: () { if input_button_states[Key_Code.MOUSE_BUTTON_LEFT] & .START { handle_tool_click(); + trile_changed(editor_current_trile); } mindist : float = 999999; @@ -239,8 +231,7 @@ tick_trile_editor :: () { for x: 0..15 { for y: 0..15 { for z: 0..15 { - t := editor_current_trile.trixels[x][y][z]; - if t.empty then continue; + if editor_current_trile.trixels[x][y][z] == 0 then continue; cube : Collision_Cube; cube.position = Vector3.{cast(float) x, cast(float) y, cast(float) z} * TRIXEL_SIZE; @@ -259,25 +250,18 @@ tick_trile_editor :: () { } } - for x: 0..15 { - for y: 0..15 { - for z: 0..15 { - highlighted := false; - if hovered_trixel_x >= 0 { - if current_mode == .BRUSH { - center : Vector3 = .{xx hovered_trixel_x, xx hovered_trixel_y, xx hovered_trixel_z}; - highlighted = length(Vector3.{xx x, xx y, xx z} - center) <= xx brush_radius; - } else if current_mode == .AREA && area_active { - highlighted = x >= min(area_start_x, hovered_trixel_x) && x <= max(area_start_x, hovered_trixel_x) - && y >= min(area_start_y, hovered_trixel_y) && y <= max(area_start_y, hovered_trixel_y) - && z >= min(area_start_z, hovered_trixel_z) && z <= max(area_start_z, hovered_trixel_z); - } else { - highlighted = x == hovered_trixel_x && y == hovered_trixel_y && z == hovered_trixel_z; - } - } - colorMuls[x][y][z] = ifx highlighted then Vector3.{0.6, 0.0, 0.0} else .{1.0, 1.0, 1.0}; - } + if hovered_trixel_x >= 0 { + lo := Vector3.{xx hovered_trixel_x, xx hovered_trixel_y, xx hovered_trixel_z}; + hi := lo; + if current_mode == .BRUSH { + lo -= Vector3.{1, 1, 1} * cast(float) brush_radius; + hi += Vector3.{1, 1, 1} * cast(float) brush_radius; + } else if current_mode == .AREA && area_active { + corner := Vector3.{xx area_start_x, xx area_start_y, xx area_start_z}; + lo = min(lo, corner); + hi = max(hi, corner); } + debug_aabb_3d_overlay(lo * TRIXEL_SIZE, (hi + Vector3.{1, 1, 1}) * TRIXEL_SIZE, .{0.9, 0.1, 0.1, 1}); } if !input_button_states[Key_Code.CTRL] & .DOWN { @@ -324,10 +308,7 @@ get_trile_editor_camera :: () -> Camera { return camera; } -global_palette_scroll : float = 0.0; -trile_palette_scroll : float = 0.0; -use_color_picker : bool = false; -selected_palette : s32 = 0; +swatch_scroll : float = 0.0; draw_tool_tab :: (theme: *GR.Overall_Theme, area: GR.Rect) { r := area; @@ -348,126 +329,34 @@ draw_tool_tab :: (theme: *GR.Overall_Theme, area: GR.Rect) { GR.slider(r, *brush_radius, 0, 12, 1, *theme.slider_theme); r.y += r.h * 2; if keybind_button(r, "Save and gen", .SAVE, *theme.button_theme) { - set_trile_gfx(editor_current_trile.name, generate_trile_gfx_matias(editor_current_trile)); + trile_changed(editor_current_trile); striles(); update_trile_thumbnail(editor_current_trile.name); }; } -draw_swatches :: (entries: []Palette_Entry, inside: GR.Rect, block: float, scroll: *float, id_offset: s32, theme: *GR.Overall_Theme) -> (end_y: float) { - cols := max(1, cast(int)(inside.w / block)); - for entry, idx: entries { - er : GR.Rect; - er.x = inside.x + (idx % cols) * block; - er.y = inside.y - scroll.* + (idx / cols) * block; - er.w = block; er.h = block; - btn := theme.button_theme; - btn.surface_color = .{entry.r, entry.g, entry.b, 1.0}; - if GR.button(er, "", *btn, id_offset + cast(s32)idx) { - current_color = .{entry.r, entry.g, entry.b}; - roughness = xx entry.roughness; - metallic = xx entry.metallic; - emittance = xx entry.emittance; - } - } - rows := ifx entries.count > 0 then (entries.count + cols - 1) / cols else 0; - return inside.y + rows * block; -} - draw_material_tab :: (theme: *GR.Overall_Theme, area: GR.Rect) { - r := area; - row_h := ui_h(4, 0); - block := ui_h(3, 2); - bottom := area.y + area.h; - sliders_h := ui_h(18, 0); - - r.h = row_h; - half := r.w / 2; - r.w = half; - if GR.button(r, "Palette", *t_button_selectable(theme, !use_color_picker)) then use_color_picker = false; - r.x += half; - if GR.button(r, "Color Picker", *t_button_selectable(theme, use_color_picker)) then use_color_picker = true; - r.x = area.x; r.w = area.w; - r.y += row_h; - - available := bottom - r.y - sliders_h; - top_h := ifx use_color_picker then ui_h(42, 0) else available / 2; - bot_h := available - top_h; - - r.h = top_h; - if use_color_picker { - GR.color_picker(r, *current_color, *theme.color_picker_theme); - } else { - if g_palettes.count > 1 { - r.h = row_h; - pal_w := r.w / cast(float)g_palettes.count; - for pal, idx: g_palettes { - pr := r; - pr.x = area.x + idx * pal_w; - pr.w = pal_w; - if GR.button(pr, pal.name, *t_button_selectable(theme, cast(s32)idx == selected_palette), cast(s32)idx + 20000) { - selected_palette = cast(s32)idx; - global_palette_scroll = 0; - } - } - r.y += row_h; - top_h -= row_h; - r.h = top_h; - } - entries : []Palette_Entry; - if g_palettes.count > 0 { - selected_palette = clamp(selected_palette, 0, cast(s32)g_palettes.count - 1); - entries = g_palettes[selected_palette].entries; - } - region, inside := GR.begin_scrollable_region(r, *theme.scrollable_region_theme); - end_y := draw_swatches(entries, inside, block, *global_palette_scroll, 0, theme); - GR.end_scrollable_region(region, inside.x + inside.w, end_y, *global_palette_scroll); - } - r.y += top_h; - - unique_mats : [..]Material; - unique_mats.allocator = temp; - for x: 0..15 for y: 0..15 for z: 0..15 { - trix := editor_current_trile.trixels[x][y][z]; - if trix.empty then continue; - mr, mg, mb, ma := material_to_rgba(trix.material); - key := (cast(u32)mr << 24) | (cast(u32)mg << 16) | (cast(u32)mb << 8) | cast(u32)ma; - already := false; - for um: unique_mats { - ur, ug, ub, ua := material_to_rgba(um); - if ((cast(u32)ur << 24) | (cast(u32)ug << 16) | (cast(u32)ub << 8) | cast(u32)ua) == key { already = true; break; } - } - if !already array_add(*unique_mats, trix.material); - } - as_entries : [..]Palette_Entry; - as_entries.allocator = temp; - for mat: unique_mats { - e : Palette_Entry; - e.r = mat.color.x; e.g = mat.color.y; e.b = mat.color.z; - e.roughness = mat.roughness; e.metallic = mat.metallic; e.emittance = mat.emittance; - array_add(*as_entries, e); - } - - r.h = bot_h * 0.75; - region2, inside2 := GR.begin_scrollable_region(r, *theme.scrollable_region_theme); - end_y2 := draw_swatches(as_entries, inside2, block, *trile_palette_scroll, 10000, theme); - GR.end_scrollable_region(region2, inside2.x + inside2.w, end_y2, *trile_palette_scroll); - r.y += bot_h * 0.75; - - r.h = ui_h(3, 2); - GR.label(r, "Roughness", *t_label_left(theme)); - r.y += r.h; - GR.slider(r, *roughness, 0, 7, 1, *theme.slider_theme); - r.y += r.h; - GR.label(r, "Metallic", *t_label_left(theme)); - r.y += r.h; - GR.slider(r, *metallic, 0, 3, 1, *theme.slider_theme); - r.y += r.h; - GR.label(r, "Emittance", *t_label_left(theme)); - r.y += r.h; - GR.slider(r, *emittance, 0, 127, 1, *theme.slider_theme); + region, inside := GR.begin_scrollable_region(area, *theme.scrollable_region_theme); + end_y := draw_swatch_grid(inside, *swatch_scroll, *current_swatch, theme); + GR.end_scrollable_region(region, inside.x + inside.w, end_y, *swatch_scroll); } +// Shared with the material studio. Returns the bottom of the grid. +draw_swatch_grid :: (inside: GR.Rect, scroll: *float, selected: *u8, theme: *GR.Overall_Theme) -> float { + block := ui_h(3, 2); + cols := max(1, cast(int)(inside.w / block)); + n := 0; + for g_swatches { + if !it.used continue; + r := GR.Rect.{inside.x + (n % cols) * block, inside.y - scroll.* + (n / cols) * block, block, block}; + btn := t_button_selectable(theme, selected.* == it_index); + c := swatch_color(cast(u8) it_index); + btn.surface_color = .{c.x, c.y, c.z, 1}; + if GR.button(r, "", *btn, cast(s32) it_index) selected.* = cast(u8) it_index; + n += 1; + } + return inside.y + ((n + cols - 1) / cols) * block; +} TILING_AXIS_NAMES :: string.["+ X", "+ Z", "- X", "- Z", "+ Y", "- Y"]; @@ -485,53 +374,6 @@ get_tiling_camera_target :: () -> Vector3 { return Vector3.{0.5, 0.5, 0.5} + off * 0.5; } -// Build rotation matrices matching the same GLSL convention used in shader_trile.glsl. -// In Jai row-major passed as GLSL column-major: GLSL out[i] = sum_j M_jai[j][i]*v[j]. -tiling_rot_x :: (a: float) -> Matrix4 { - c := cos(a); s := sin(a); - m : Matrix4; - m._11 = 1; - m._22 = c; m._23 = s; - m._32 = -s; m._33 = c; - m._44 = 1; - return m; -} -tiling_rot_y :: (a: float) -> Matrix4 { - c := cos(a); s := sin(a); - m : Matrix4; - m._11 = c; m._13 = s; - m._22 = 1; - m._31 = -s; m._33 = c; - m._44 = 1; - return m; -} -tiling_rot_z :: (a: float) -> Matrix4 { - c := cos(a); s := sin(a); - m : Matrix4; - m._11 = c; m._21 = s; - m._12 = -s; m._22 = c; - m._33 = 1; - m._44 = 1; - return m; -} -// Matches get_orientation_matrix(ori) from shader_trile.glsl. -// Jai A*B applies A_eff first in GLSL, so twist*base = twist applied second = same as GLSL base*rot_y(twist). -make_orientation_matrix :: (ori: s32) -> Matrix4 { - face := ori / 4; - twist := ori % 4; - twist_mat : Matrix4; - identity(*twist_mat); - if twist > 0 twist_mat = tiling_rot_y(cast(float)twist * PI / 2.0); - base_mat : Matrix4; - if face == 0 { identity(*base_mat); } - else if face == 1 { base_mat = tiling_rot_x(PI); } - else if face == 2 { base_mat = tiling_rot_z(-PI * 0.5); } - else if face == 3 { base_mat = tiling_rot_z( PI * 0.5); } - else if face == 4 { base_mat = tiling_rot_x( PI * 0.5); } - else { base_mat = tiling_rot_x(-PI * 0.5); } - return twist_mat * base_mat; -} - get_tiling_neighbor_trile :: () -> *Trile { if tiling_neighbor_trile_name.count > 0 { t := get_trile(tiling_neighbor_trile_name); @@ -541,13 +383,17 @@ get_tiling_neighbor_trile :: () -> *Trile { } draw_trile_editor :: () { - create_set_cam_rendering_task(get_trile_editor_camera(), 0.0); - w := New(World,, temp); - create_sky_rendering_task(*w.conf); - create_trixel_rendering_task(editor_current_trile, *colorMuls); + // A trile is drawn in the light of the world it will sit in. + environment := New(Environment,, temp); + curworld := get_current_world(); + if curworld.valid environment = *curworld.world.environment; + + view := add_view(.{camera = get_trile_editor_camera(), environment = environment, draw_world = false}); + mesh, ok := get_trile_mesh(editor_current_trile.name); + if ok draw_trile(view, mesh, .{}, 0); if tiling_preview_active { - neighbor_trile := get_tiling_neighbor_trile(); - create_trixel_rendering_task(neighbor_trile, null, world_offset = get_tiling_world_offset(), brightness = 0.75, tile_rotation = make_orientation_matrix(tiling_orientation), is_secondary = true); + neighbor, neighbor_ok := get_trile_mesh(get_tiling_neighbor_trile().name); + if neighbor_ok draw_trile(view, neighbor, get_tiling_world_offset(), xx tiling_orientation); } } @@ -643,7 +489,7 @@ draw_trile_editor_ui :: (theme: *GR.Overall_Theme) { // View mode buttons — bottom center of the 3D viewport. btn_w := 11.0 * vw; btn_h := cast(float) ui_h(4, 0); - bar_w := btn_w * 5.0; + bar_w := btn_w * 3.0; bar_x := 100.0 * vw / 2.0 - bar_w / 2.0; bar_y := 100.0 * vh - btn_h - 1.5 * vh; @@ -653,14 +499,6 @@ draw_trile_editor_ui :: (theme: *GR.Overall_Theme) { r2 : GR.Rect; r2.x = bar_x; r2.y = bar_y; r2.w = btn_w; r2.h = btn_h; - if keybind_button(r2, "Lit", .TRIXEL_VIEW_LIT, *t_button_selectable(theme, trixel_view_mode == 0)) then trixel_view_mode = 0; - r2.x += btn_w; - if keybind_button(r2, "Normals", .TRIXEL_VIEW_NORMALS, *t_button_selectable(theme, trixel_view_mode == 1)) then trixel_view_mode = 1; - r2.x += btn_w; - if keybind_button(r2, "Albedo", .TRIXEL_VIEW_ALBEDO, *t_button_selectable(theme, trixel_view_mode == 2)) then trixel_view_mode = 2; - r2.x += btn_w; - if keybind_button(r2, "Mixed", .TRIXEL_VIEW_MIXED, *t_button_selectable(theme, trixel_view_mode == 3)) then trixel_view_mode = 3; - r2.x += btn_w; if keybind_button(r2, "Tile", .TRIXEL_VIEW_TILE, *t_button_selectable(theme, tiling_preview_active)) { tiling_preview_active = !tiling_preview_active; } diff --git a/src/editor/trile_thumbnails.jai b/src/editor/trile_thumbnails.jai index d1586cc..b4605df 100644 --- a/src/editor/trile_thumbnails.jai +++ b/src/editor/trile_thumbnails.jai @@ -65,9 +65,9 @@ render_thumbnail :: (trile: *Trile, out: *[THUMB_SIZE * THUMB_SIZE * 4] u8) { for 0..199 { if ix >= 0 && ix < 16 && iy >= 0 && iy < 16 && iz >= 0 && iz < 16 { - if !trile.trixels[ix][iy][iz].empty { + if trile.trixels[ix][iy][iz] != 0 { hit = true; - hc = trile.trixels[ix][iy][iz].material.color; + hc = swatch_color(trile.trixels[ix][iy][iz]); break; } } @@ -106,9 +106,7 @@ render_thumbnail :: (trile: *Trile, out: *[THUMB_SIZE * THUMB_SIZE * 4] u8) { } upload_atlas :: () { - imgdata : sg_image_data; - imgdata.subimage[0][0] = .{ g_thumbnail_atlas_buf.data, cast(u64)(ATLAS_SIZE * ATLAS_SIZE * 4) }; - sg_update_image(g_thumbnail_atlas.tex, *imgdata); + texture_update(g_thumbnail_atlas.tex, g_thumbnail_atlas_buf); } #scope_export @@ -147,7 +145,7 @@ update_trile_thumbnail :: (name: string) { render_thumbnail(trile, *thumb); blit_slot(*thumb, slot); - if g_thumbnail_atlas.tex.id != INVALID_ID { + if g_thumbnail_atlas.tex.id != 0 { upload_atlas(); } } @@ -167,12 +165,5 @@ init_trile_thumbnails :: () { blit_slot(*thumb, slot); } - desc := sg_image_desc.{ - width = xx ATLAS_SIZE, - height = xx ATLAS_SIZE, - pixel_format = .RGBA8, - usage = .DYNAMIC, - }; - g_thumbnail_atlas.tex = sg_make_image(*desc); - upload_atlas(); + g_thumbnail_atlas.tex = texture_create(xx ATLAS_SIZE, xx ATLAS_SIZE, g_thumbnail_atlas_buf); } diff --git a/src/entities.jai b/src/entities.jai index f5a9a8e..206d02f 100644 --- a/src/entities.jai +++ b/src/entities.jai @@ -11,13 +11,13 @@ // EDITOR_MARKER :: "pack.animation"; // optional, editor-only billboard // } @Entity // entity_tick :: (using foo: *Foo, dt: float) {} // optional -// entity_draw :: (foo: *Foo) {} // optional +// entity_draw :: (foo: *Foo, view: View_Id) {} // optional // // Fields of type float, s32, bool, string or Vector3 are editable and saved; // @Slider / @Color notes pick the editor widget. // // Each frame the game calls tick_entities, then tick_entity_emitters, then -// add_entity_render_tasks. The level editor calls the last two only: it shows +// draw_entities. The level editor calls the last two only: it shows // entities and their particles without running their game logic. #scope_export @@ -131,7 +131,7 @@ free_all_entities :: (world: *World) { // Concrete per-type overloads in game code take precedence over these. entity_tick :: (e: *$T/Entity, dt: float) {} -entity_draw :: (e: *$T/Entity) { draw_entity_parts(e); } +entity_draw :: (e: *$T/Entity, view: View_Id) { draw_entity_parts(e, view); } tick_entities :: (world: *World, dt: float) { for e: world.entities entity_dispatch_tick(e, dt); @@ -141,8 +141,8 @@ entity_dispatch_tick :: (e: *Entity, dt: float) { #insert #run,stallable gen_entity_dispatch("entity_tick(cast(*%)e, dt)"); } -entity_dispatch_draw :: (e: *Entity) { - #insert #run,stallable gen_entity_dispatch("entity_draw(cast(*%)e)"); +entity_dispatch_draw :: (e: *Entity, view: View_Id) { + #insert #run,stallable gen_entity_dispatch("entity_draw(cast(*%)e, view)"); } // Dispatches a call on the entity's concrete type. '%' in 'call' becomes the type @@ -182,56 +182,28 @@ tick_entity_emitters :: (world: *World, dt: float) { } } -// Once per frame, from the game and from the editor. Trile draws are batched per -// (trile, chunk) and flushed as TRILE_DYNAMIC tasks at the end. -add_entity_render_tasks :: (world: *World) { - array_reset_keeping_memory(*entity_trile_batches); - for e: world.entities entity_dispatch_draw(e); - for *batch: entity_trile_batches { - task : Rendering_Task_Trile_Dynamic; - task.trile = batch.trile; - task.positions = batch.positions; - task.chunk_key = batch.chunk_key; - task.worldConf = *world.conf; - add_rendering_task(task); - } +// Once per frame, from the game and from the editor. +draw_entities :: (view: View_Id, world: *World) { + for e: world.entities entity_dispatch_draw(e, view); } -entity_draw_trile :: (e: *Entity, trile: string, offset: Vector3, orientation: u8 = 0) { - pos := entity_trile_point(e, offset); - ori := compose_orientations(e.orientation, orientation); - key := world_to_chunk_coord(cast(s32) floor(pos.x), cast(s32) floor(pos.y), cast(s32) floor(pos.z)); - instance := Vector4.{pos.x, pos.y, pos.z, cast(float) ori}; - - for *batch: entity_trile_batches { - if batch.trile == trile && batch.chunk_key == key { - array_add(*batch.positions, instance); - return; - } - } - batch : Entity_Trile_Batch; - batch.trile = trile; - batch.chunk_key = key; - batch.positions.allocator = temp; - array_add(*batch.positions, instance); - array_add(*entity_trile_batches, batch); +entity_draw_trile :: (e: *Entity, view: View_Id, trile: string, offset: Vector3, orientation: u8 = 0) { + mesh, ok := get_trile_mesh(trile); + if !ok return; + draw_trile(view, mesh, entity_trile_point(e, offset), compose_orientations(e.orientation, orientation)); } -entity_draw_billboard :: (e: *Entity, animation: string, offset: Vector3, frame: s32 = 0) { +entity_draw_billboard :: (e: *Entity, view: View_Id, animation: string, offset: Vector3, frame: s32 = 0) { anim := get_animation_from_string(animation); if anim == null return; - task : Rendering_Task_Billboard; - task.position = entity_point(e, offset); - task.animation = anim; - task.frame = frame; - add_rendering_task(task); + draw_animation_frame(view, anim, frame, entity_point(e, offset)); } -draw_entity_parts :: (e: *Entity) { +draw_entity_parts :: (e: *Entity, view: View_Id) { for part: get_entity_parts(e.type) { if part.kind == { - case .TRILE; entity_draw_trile(e, part.trile, part.offset, part.orientation); - case .BILLBOARD; entity_draw_billboard(e, part.animation, part.offset); + case .TRILE; entity_draw_trile(e, view, part.trile, part.offset, part.orientation); + case .BILLBOARD; entity_draw_billboard(e, view, part.animation, part.offset); case .EMITTER; // tick_entity_emitters handles these } } @@ -308,14 +280,6 @@ entity_saved_members :: (type: Type) -> []Type_Info_Struct_Member { return result; } -Entity_Trile_Batch :: struct { - trile : string; - chunk_key : Chunk_Key; - positions : [..]Vector4; -} - -entity_trile_batches : [..]Entity_Trile_Batch; - #if FLAG_TEST_ENGINE { // The two placement helpers use different pivots, and getting them the wrong // way round only shows up as parts drifting off a rotated entity, so both are diff --git a/src/input/keybinds.jai b/src/input/keybinds.jai index 3d539b8..9ec4974 100644 --- a/src/input/keybinds.jai +++ b/src/input/keybinds.jai @@ -39,11 +39,8 @@ Editor_Action :: enum { STUDIO_TRILE; STUDIO_LEVEL; STUDIO_MATERIAL; + STUDIO_SWATCHES; // Trile editor — view modes - TRIXEL_VIEW_LIT; - TRIXEL_VIEW_NORMALS; - TRIXEL_VIEW_ALBEDO; - TRIXEL_VIEW_MIXED; TRIXEL_VIEW_TILE; // Trile editor — tiling controls TRIXEL_TILING_AXIS; @@ -214,10 +211,7 @@ set_default_bindings :: () { set(.STUDIO_TRILE, cast(Key_Code) #char "1", ctrl = true); set(.STUDIO_LEVEL, cast(Key_Code) #char "2", ctrl = true); set(.STUDIO_MATERIAL, cast(Key_Code) #char "3", ctrl = true); - set(.TRIXEL_VIEW_LIT, cast(Key_Code) #char "5"); - set(.TRIXEL_VIEW_NORMALS, cast(Key_Code) #char "6"); - set(.TRIXEL_VIEW_ALBEDO, cast(Key_Code) #char "7"); - set(.TRIXEL_VIEW_MIXED, cast(Key_Code) #char "8"); + set(.STUDIO_SWATCHES, cast(Key_Code) #char "4", ctrl = true); set(.TRIXEL_VIEW_TILE, cast(Key_Code) #char "9"); set(.TRIXEL_TILING_AXIS, cast(Key_Code) #char "Q"); set(.TRIXEL_TILING_ROTATE, cast(Key_Code) #char "R"); diff --git a/src/main.jai b/src/main.jai index 52aaff8..51d9454 100644 --- a/src/main.jai +++ b/src/main.jai @@ -35,7 +35,6 @@ FLAG_USE_TEST_GAME :: FLAG_TEST_ENGINE || FLAG_TEST_EXE_ENGINE; #load "rendering/rendering.jai"; #load "input/hotkeys.jai"; #load "ui/ui.jai"; -#load "editor/rdm_disk.jai"; #if !FLAG_RELEASE_BUILD { #load "editor/editor.jai"; } #load "time.jai"; #load "events.jai"; @@ -51,7 +50,6 @@ FLAG_USE_TEST_GAME :: FLAG_TEST_ENGINE || FLAG_TEST_EXE_ENGINE; #load "assets/asset_manager.jai"; #load "settings_menu.jai"; #load "loading_screen.jai"; -#load "ui/demo.jai"; #if FLAG_USE_TEST_GAME { #load "../test_game/game.jai"; @@ -68,11 +66,7 @@ V_MAJOR :: 0; V_MINOR :: 7; state: struct { - pass_action_clear : sg_pass_action; - pass_action_clear_gbuf : sg_pass_action; - pass_action : sg_pass_action; dpi_scale : float; - fons : *FONScontext; font_default : Ui_Font; }; @@ -102,15 +96,6 @@ round_pow2 :: (v: float) -> s32 { debug_font : *Font; init :: () { - sg_setup(*(sg_desc.{ - environment = cast,force(sg_environment) sglue_environment(), - logger = .{ func = slog_func }, - attachments_pool_size = 64, - buffer_pool_size = 1024, - })); - sgl_setup(*(sgl_desc_t.{ - logger = .{ func = slog_func }, - })); sfetch_setup(*(sfetch_desc_t.{ max_requests = 128, num_channels = 2, @@ -128,18 +113,7 @@ init :: () { stm_setup(); state.dpi_scale = sapp_dpi_scale(); atlas_dim := round_pow2(1024.0 * state.dpi_scale); - fons_context := sfons_create(*(sfons_desc_t.{ - width = atlas_dim, - height = atlas_dim, - })); - state.fons = fons_context; - state.font_default.fons_font = FONS_INVALID; - create_pipelines(); - - state.pass_action_clear.colors[0] = .{ load_action = .CLEAR, clear_value = .{ r = 0, g = 0, b = 0, a = 0 } }; - state.pass_action_clear_gbuf.colors[0] = .{ load_action = .CLEAR, clear_value = .{ r = 0, g = 0, b = 1000, a = 0 } }; - state.pass_action_clear_gbuf.colors[2] = .{ load_action = .CLEAR, clear_value = .{ r = 0, g = 0, b = 0, a = 0 } }; - state.pass_action.colors[0] = .{ load_action = .LOAD }; + text_init(atlas_dim); g_mixer.paused = true; @@ -159,9 +133,6 @@ init :: () { } init_after_core :: () { - init_plane_textures(); - init_brdf_lut(); - add_font_from_pack("boot", "DroidSerif-Regular.ttf"); ui_init_font_fields(*state.font_default); init_ui(); @@ -182,8 +153,6 @@ init_after_core :: () { init_keybinds(); init_settings_menu(); } - init_rendering(); - load_post_process_from_pack(); audio_init(); @@ -197,7 +166,6 @@ init_after_core :: () { // #if UNCAPPED_FRAMES then sapp_glx_swapinterval(0); } -is_in_reflection_pass : bool = false; delta_time_accumulator : float64 = 0; @@ -219,7 +187,6 @@ frame :: () { if show_loading_screen() { input_per_frame_event_and_flag_update(); if init_after_core_done { - fonsClearState(state.fons); draw_loading_screen(); tick_ui(); ui_pass(); @@ -238,7 +205,6 @@ frame :: () { g_mixer.paused = false; } - fonsClearState(state.fons); add_frame_profiling_point("After loading logic"); @@ -266,7 +232,6 @@ frame :: () { delta_time_accumulator -= (1.0/480.0); } } - fonsClearState(state.fons); for event: Input.events_this_frame { GR.getrect_handle_event(event); } @@ -289,7 +254,6 @@ frame :: () { draw_editor(); } - add_particle_render_tasks(); add_frame_profiling_point("After editor draw"); render(); add_frame_profiling_point("After rendering"); @@ -308,7 +272,6 @@ frame :: () { cleanup :: () { log_info("Cleanup called...."); audio_cleanup(); - sg_shutdown(); } get_window_size :: () -> (s32, s32) { diff --git a/src/meta/meta.jai b/src/meta/meta.jai index aeebb46..b399c6d 100644 --- a/src/meta/meta.jai +++ b/src/meta/meta.jai @@ -5,7 +5,6 @@ #load "hacks.jai"; #load "console_commands.jai"; #load "entity_types.jai"; -#load "shaderload.jai"; endframe_modified := false; pointerimage_modified := false; diff --git a/src/meta/shaderload.jai b/src/meta/shaderload.jai deleted file mode 100644 index cfb66a5..0000000 --- a/src/meta/shaderload.jai +++ /dev/null @@ -1,16 +0,0 @@ -#scope_file - -get_shader_paths :: () -> []string { - util :: #import "File_Utilities"; - return util.file_list("./src/shaders/jai"); -} - -#scope_export - -add_shaders_to_workspace :: (w: Workspace) { - file :: #import "File"; - paths := get_shader_paths(); - for paths { - add_build_file(file.get_absolute_path(it), w); - } -} diff --git a/src/orientation.jai b/src/orientation.jai index e71437e..2f472f9 100644 --- a/src/orientation.jai +++ b/src/orientation.jai @@ -1,12 +1,7 @@ -// The 24 axis-aligned cube rotations, encoded as 'face * 4 + twist' exactly as -// the trile shaders decode them (see get_orientation_matrix in -// shader_trile_shadow.glsl). Everything here mirrors that decode, so a rotation -// applied to a position on the CPU lines up with the geometry the GPU draws. -// -// Note the shaders build their mat3s from columns, which makes each of their -// rot_* helpers the transpose of the usual form. The matrices below are the -// effective row-major operators (v' = M * v), so they match what the shader -// actually does rather than what its helper names suggest. +// The 24 axis-aligned cube rotations, encoded as 'face * 4 + twist'. These +// matrices are the reference: the renderer has to turn an orientation into +// exactly this rotation, so that placement on the CPU lines up with what is +// drawn. They are row-major operators (v' = M * v). ORIENTATION_COUNT :: 24; diff --git a/src/particles/particles.jai b/src/particles/particles.jai index 1e84440..4c3db06 100644 --- a/src/particles/particles.jai +++ b/src/particles/particles.jai @@ -97,16 +97,14 @@ tick_emitter_instance :: (inst: *Particle_Emitter_Instance, dt: float) { } } -add_particle_render_tasks :: () { +// Live particles are global, so the game and each editor view draw them into +// their own view. +draw_live_particles :: (view: View_Id) { Batch :: struct { anim_name : string; blend_mode : Particle_Blend_Mode; anim : *Animation; - sheet : sg_image; - count : s32; - pos_size : *[MAX_PARTICLES]Vector4; - uv_rects : *[MAX_PARTICLES]Vector4; - colors : *[MAX_PARTICLES]Vector4; + particles : [..]Particle_Instance; } batches : [..] Batch; @@ -133,67 +131,33 @@ add_particle_render_tasks :: () { anim := get_animation_from_string(def.animation_name); if anim == null then continue; if anim.frames.count == 0 then continue; - array_add(*batches, .{ - anim_name = def.animation_name, - blend_mode = def.blend_mode, - anim = anim, - sheet = anim.sheet, - pos_size = New([MAX_PARTICLES]Vector4,, temp), - uv_rects = New([MAX_PARTICLES]Vector4,, temp), - colors = New([MAX_PARTICLES]Vector4,, temp), - }); - batch = *batches[batches.count - 1]; + batch = array_add(*batches); + batch.anim_name = def.animation_name; + batch.blend_mode = def.blend_mode; + batch.anim = anim; + batch.particles.allocator = temp; } - if batch.count >= MAX_PARTICLES then continue; - t := p.age / p.lifetime; - size := def.size_start + (def.size_end - def.size_start) * t; - col := lerp_color(def.color_start, def.color_end, t); - - idx := batch.count; - batch.pos_size.*[idx] = .{p.position.x, p.position.y, p.position.z, size}; - anim := batch.anim; - frame_count := anim.frames.count; - frame := cast(s32)(t * cast(float)frame_count); - if frame < 0 then frame = 0; - if frame >= frame_count then frame = cast(s32)(frame_count - 1); + frame := clamp(cast(s32)(t * cast(float)anim.frames.count), 0, cast(s32)(anim.frames.count - 1)); f := anim.frames[frame]; - batch.uv_rects.*[idx] = .{ - cast(float)f.x / cast(float)anim.sheet_w, - cast(float)f.y / cast(float)anim.sheet_h, - cast(float)f.w / cast(float)anim.sheet_w, - cast(float)f.h / cast(float)anim.sheet_h, - }; - - batch.colors.*[idx] = col; - batch.count += 1; + array_add(*batch.particles, .{ + position = p.position, + size = def.size_start + (def.size_end - def.size_start) * t, + uv_rect = .{ + cast(float)f.x / cast(float)anim.sheet_w, + cast(float)f.y / cast(float)anim.sheet_h, + cast(float)f.w / cast(float)anim.sheet_w, + cast(float)f.h / cast(float)anim.sheet_h, + }, + color = lerp_color(def.color_start, def.color_end, t), + }); } - buf_task := New(Rendering_Task_Particles_Buffer,, temp); - total_count : s32 = 0; - - for *b: batches { - if b.count <= 0 then continue; - - instance_offset := total_count; - memcpy(*buf_task.pos_size[instance_offset], cast(*void)b.pos_size, b.count * size_of(Vector4)); - memcpy(*buf_task.uv_rects[instance_offset], cast(*void)b.uv_rects, b.count * size_of(Vector4)); - memcpy(*buf_task.colors[instance_offset], cast(*void)b.colors, b.count * size_of(Vector4)); - total_count += b.count; - - draw_task : Rendering_Task_Particles; - draw_task.count = b.count; - draw_task.instance_offset = instance_offset; - draw_task.blend_mode = b.blend_mode; - draw_task.sheet = b.sheet; - add_rendering_task(draw_task); - } - - if total_count > 0 { - buf_task.total_count = total_count; - add_rendering_task(buf_task.*); + for batches { + blend := ifx it.blend_mode == .ADDITIVE then Blend_Mode.ADDITIVE else .ALPHA; + draw_particles(view, it.anim.sheet, blend, it.particles); } } @@ -202,7 +166,7 @@ particle_water_height :: () -> (has_water: bool, height: float) { if in_editor_view && !editor_shows_water() return false, 0; } curworld := get_current_world(); - if !curworld.valid return false, 0; + if !curworld.valid || curworld.world.conf.indoor return false, 0; return true, effective_plane_height(*curworld.world.conf); } diff --git a/src/platform_specific/common.jai b/src/platform_specific/common.jai index 0bc87bb..85d702c 100644 --- a/src/platform_specific/common.jai +++ b/src/platform_specific/common.jai @@ -1,9 +1,4 @@ #import,dir "../../modules/sokol-jai/sokol/app"(DEBUG = !FLAG_RELEASE_BUILD); -#import,dir "../../modules/sokol-jai/sokol/gfx"(DEBUG = !FLAG_RELEASE_BUILD); -#import,dir "../../modules/sokol-jai/sokol/gl"(DEBUG = !FLAG_RELEASE_BUILD); -#import,dir "../../modules/sokol-jai/sokol/glue"(DEBUG = !FLAG_RELEASE_BUILD); -#import,dir "../../modules/sokol-jai/sokol/shape"(DEBUG = !FLAG_RELEASE_BUILD); -#import,dir "../../modules/sokol-jai/sokol/fontstash"; #import,dir "../../modules/sokol-jai/sokol/log"(DEBUG = !FLAG_RELEASE_BUILD); #import,dir "../../modules/sokol-jai/sokol/time"(DEBUG = !FLAG_RELEASE_BUILD); #import,dir "../../modules/sokol-jai/sokol/fetch"(DEBUG = !FLAG_RELEASE_BUILD); diff --git a/src/rendering/animation.jai b/src/rendering/animation.jai index 00574d8..e793def 100644 --- a/src/rendering/animation.jai +++ b/src/rendering/animation.jai @@ -33,10 +33,26 @@ animation_player_tick :: (player: *Animation_Player) { } } -animation_draw :: (player: *Animation_Player, position: Vector3, flipX: bool = false, flipY: bool = false, faceDir : Vector3 = .{-100, -100, -100}) { +animation_draw :: (view: View_Id, player: *Animation_Player, position: Vector3, flip_x := false, face := BILLBOARD_FACE_CAMERA) { animation_player_tick(player); if player.current_animation == null then return; - create_billboard_rendering_task(position, player.current_animation, player.current_frame, flipX, flipY, faceDir); + draw_animation_frame(view, player.current_animation, player.current_frame, position, flip_x, face); +} + +// Sprites are 16 pixels to a world unit. +draw_animation_frame :: (view: View_Id, anim: *Animation, frame_index: s32, position: Vector3, flip_x := false, face := BILLBOARD_FACE_CAMERA) { + frame := anim.frames[frame_index]; + uv := Vector4.{ + cast(float) frame.x / anim.sheet_w, + cast(float) frame.y / anim.sheet_h, + cast(float) frame.w / anim.sheet_w, + cast(float) frame.h / anim.sheet_h, + }; + if flip_x { + uv.x += uv.z; + uv.z = -uv.z; + } + draw_billboard(view, anim.sheet, uv, .{cast(float)(frame.w / 16), cast(float)(frame.h / 16)}, position, face); } animation_set :: (player: *Animation_Player, animation: string) { @@ -70,7 +86,7 @@ Frame :: struct { Animation :: struct { name : string; - sheet : sg_image; + sheet : Texture; sheet_w : s32; sheet_h : s32; frames : [..]Frame; diff --git a/src/rendering/arbtri.jai b/src/rendering/arbtri.jai deleted file mode 100644 index 0c6857f..0000000 --- a/src/rendering/arbtri.jai +++ /dev/null @@ -1,147 +0,0 @@ -Arb_Tri :: struct { - pos : [3]Vector3; - col : [3]Vector4; - uv : [3]Vector2; -} - -Arb_Draw_Command_Type :: enum { - INVALID; - DRAW_TEXT; - FLUSH_TRI; - SET_TEXTURE; - PREPARE_TEXT; - FONT_BOUNDARY; - QUAD_OCCLUDER; - REMOVE_TEXTURE; - SET_SCISSOR; - REMOVE_SCISSOR; -} - -Arb_Draw_Command :: struct { - type : Arb_Draw_Command_Type = .INVALID; - - // for triangles - tri_offset : int = 0; - tri_count : int = 0; - texture : *Ui_Texture; - - // for text - layer: s32 = 0; - - scissor: Ui_Rect; - -} - -Arb_Tri_State :: struct { - active : bool = false; - trilist : [..]Arb_Tri; - command_list : [..]Arb_Draw_Command; - latest_flush : int = 0; -} - -arbTriState : Arb_Tri_State; - -init_arb_state :: () { - gPipelines.arbtri.bind.images[0] = default_texture.tex; - array_reset_keeping_memory(*arbTriState.trilist); - array_reset_keeping_memory(*arbTriState.command_list); - arbTriState.active = true; - arbTriState.latest_flush = 0; -} - -arb_tri_command_add :: (command: Arb_Draw_Command) { - if !arbTriState.active { - init_arb_state(); - } - - array_add(*arbTriState.command_list, command); -} - -arb_tri_add :: (tri: Arb_Tri) { - if !arbTriState.active { - init_arb_state(); - } - - array_add(*arbTriState.trilist, tri); -} - -transform_to_screen_x :: (coord: float) -> float { - w, h := get_window_size(); - return (coord / cast(float) w) * 2.0 - 1.0; -} - -transform_to_screen_y :: (coord: float) -> float { - w, h := get_window_size(); - return (coord / cast(float) h) * 2.0 - 1.0; -} - -arb_tri_flush :: () { - if !arbTriState.active { - return; - } - - - - arbTriState.active = false; - - w, h := get_window_size(); - inv_w := 2.0 / cast(float) w; - inv_h := 2.0 / cast(float) h; - - for tri, i : arbTriState.trilist { - bgn := i * 3 * 9; - for 0..2 { - gArbtriMem[bgn + it * 9 + 0] = tri.pos[it].x * inv_w - 1.0; - gArbtriMem[bgn + it * 9 + 1] = -(tri.pos[it].y * inv_h - 1.0); - gArbtriMem[bgn + it * 9 + 2] = 0; - gArbtriMem[bgn + it * 9 + 3] = tri.col[it].x; - gArbtriMem[bgn + it * 9 + 4] = tri.col[it].y; - gArbtriMem[bgn + it * 9 + 5] = tri.col[it].z; - gArbtriMem[bgn + it * 9 + 6] = tri.col[it].w; - gArbtriMem[bgn + it * 9 + 7] = tri.uv[it].x; - gArbtriMem[bgn + it * 9 + 8] = tri.uv[it].y; - } - } - - upload_size := arbTriState.trilist.count * 3 * 9 * size_of(float); - if upload_size > 0 { - sg_update_buffer(gPipelines.arbtri.bind.vertex_buffers[0], *(sg_range.{ ptr = gArbtriMem.data, size = xx upload_size })); - } - - flush_arb_commands(); -} - -debug_arb_flush : bool : false; - -layer : s32 = 0; - -flush_arb_commands :: () { - sfons_flush(state.fons); // All the text has been drawn, now flush it to the atlas. - layer = 0; - if debug_arb_flush then print(" --- !BEGIN FLUSH! ---- \n"); - for arbTriState.command_list { - if debug_arb_flush then print("[command] %\n", it.type); - if it.type == { - case .SET_TEXTURE; - gPipelines.arbtri.bind.images[0] = it.texture.tex; - gCurrentTexture = it.texture; - case .REMOVE_TEXTURE; - gCurrentTexture = null; - case .FLUSH_TRI; - sg_apply_pipeline(gPipelines.arbtri.pipeline); - sg_apply_bindings(*gPipelines.arbtri.bind); - sg_draw(xx (it.tri_offset * 3), xx (it.tri_count * 3), 1); - case .PREPARE_TEXT; - case .SET_SCISSOR; - s := it.scissor; - w,h := get_window_size(); - sgl_viewport(0,0,w,h,true); - sg_apply_scissor_rect(s.x, s.y, s.w, s.h, true); - case .REMOVE_SCISSOR; - w,h := get_window_size(); - sg_apply_scissor_rect(0, 0, w, h, true); - case .DRAW_TEXT; - sgl_draw_layer(it.layer); - } - } -} diff --git a/src/rendering/backend.jai b/src/rendering/backend.jai deleted file mode 100644 index 3688a9d..0000000 --- a/src/rendering/backend.jai +++ /dev/null @@ -1,155 +0,0 @@ -#scope_export - -Render_Command_Buckets :: struct { - setup : [..]*Render_Command; - shadow : [..]*Render_Command; - reflection : [..]*Render_Command; - main : [..]*Render_Command; - gbuffer : [..]*Render_Command; - ui : [..]*Render_Command; -} - -render_command_buckets : Render_Command_Buckets; - -Render_Command_Type :: enum { - INVALID; - DRAW_SKY; - SET_CAMERA; - DRAW_GROUND; - ADD_TRILE_POSITIONS; - ADD_TRILE_POSITIONS_F32; - DRAW_TRILE_POSITIONS; - ADD_TRILE_RDM_POSITION; - DRAW_TRILE_RDM; - UPDATE_TRIXELS; - DRAW_TRIXELS; - SET_LIGHT; - DRAW_BILLBOARD; - UPDATE_PARTICLES; - DRAW_PARTICLES; -} - -Render_Command :: struct { - type: Render_Command_Type = .INVALID; -} - -Render_Command_Sky :: struct { - #as using c : Render_Command; - c.type = .DRAW_SKY; - worldConfig : *World_Config; -} - -Render_Command_Set_Light :: struct { - #as using c : Render_Command; - c.type = .SET_LIGHT; - worldConfig : *World_Config; -} - -Render_Command_Add_Trile_Positions :: struct { - #as using c : Render_Command; - c.type = .ADD_TRILE_POSITIONS; - positions : []Trile_Instance; - chunk : Chunk_Key; -} - -// Like Add_Trile_Positions, but takes float world-space positions directly -// (xyz = position, w = orientation 0..23). Appends into the same instance -// buffer / offset list, so draws go through Render_Command_Draw_Trile_Positions. -Render_Command_Add_Trile_Positions_F32 :: struct { - #as using c : Render_Command; - c.type = .ADD_TRILE_POSITIONS_F32; - positions : []Vector4; -} - -Render_Command_Draw_Trile_Positions :: struct { - #as using c : Render_Command; - c.type = .DRAW_TRILE_POSITIONS; - trile : string; - chunk_key : Chunk_Key; - amount : s32; - conf : *World_Config; - preview_mode : s32 = 0; // 0=normal, 1=add preview (blue), 2=delete preview (red) - offset_index : s32 = 0; // index into trile_offsets, assigned at task-conversion time - lod_index : s32 = 0; -} - -Render_Command_Add_Trile_RDM_Position :: struct { - #as using c : Render_Command; - c.type = .ADD_TRILE_RDM_POSITION; - position : Vector4; -} - -Render_Command_Draw_Trile_RDM :: struct { - #as using c : Render_Command; - c.type = .DRAW_TRILE_RDM; - trile : string; - conf : *World_Config; - atlas_rect : Vector4; - offset_index : s32 = 0; -} - -Render_Command_Update_Trixels :: struct { - #as using c : Render_Command; - c.type = .UPDATE_TRIXELS; - trile : *Trile; - colMultipliers : *[16][16][16]Vector3; - is_secondary : bool; -} - -Render_Command_Draw_Billboard :: struct { - #as using c : Render_Command; - c.type = .DRAW_BILLBOARD; - position : Vector3; - animation : *Animation; - frame : s32; - flipX : bool; - flipY : bool; - faceDir : Vector3 = .{-100, -100, -100}; -} - -Render_Command_Draw_Trixels :: struct { - #as using c : Render_Command; - c.type = .DRAW_TRIXELS; - world_offset : Vector3; - brightness : float = 1.0; - tile_rotation : Matrix4 = .{_11=1, _22=1, _33=1, _44=1}; - is_secondary : bool; -} - -Render_Command_Update_Particles :: struct { - #as using c : Render_Command; - c.type = .UPDATE_PARTICLES; - total_count : s32; - pos_size : [MAX_PARTICLES]Vector4; - uv_rects : [MAX_PARTICLES]Vector4; - colors : [MAX_PARTICLES]Vector4; -} - -Render_Command_Draw_Particles :: struct { - #as using c : Render_Command; - c.type = .DRAW_PARTICLES; - count : s32; - instance_offset : s32; - blend_mode : Particle_Blend_Mode; - sheet : sg_image; -} - -Render_Command_Draw_Ground :: struct { - #as using c : Render_Command; - c.type = .DRAW_GROUND; - worldConfig : *World_Config; -} - -Render_Command_Set_Camera :: struct { - #as using c : Render_Command; - c.type = .SET_CAMERA; - camera: Camera; -} - -process_command_buckets :: () { - backend_process_command_buckets(); -} - -#scope_file -#load "backend_sokol.jai"; - diff --git a/src/rendering/backend_sokol.jai b/src/rendering/backend_sokol.jai deleted file mode 100644 index 7e27d98..0000000 --- a/src/rendering/backend_sokol.jai +++ /dev/null @@ -1,775 +0,0 @@ -camera: Camera; - -trixel_count : s32 = 0; -trixel_secondary_count : s32 = 0; -trixel_secondary_vbuf : sg_buffer; -trixel_view_mode : s32 = 0; -bypass_postprocess : bool = false; -bypass_shadows : bool = false; -bypass_reflections : bool = false; - -trile_offsets : [..]s32; -trile_rdm_offsets : [..]s32; - -current_world_config : *World_Config = null; -in_shadowmap_pass : bool = false; -in_reflection_pass : bool = false; -in_gbuffer_pass : bool = false; -shadow_mvp : Matrix4; - -backend_handle_command :: (cmd: *Render_Command) { - if cmd.type == { - case .ADD_TRILE_POSITIONS; - add_command := cast(*Render_Command_Add_Trile_Positions)cmd; - backend_add_trile_positions(add_command.positions, add_command.chunk); - case .ADD_TRILE_POSITIONS_F32; - add_f32_command := cast(*Render_Command_Add_Trile_Positions_F32)cmd; - backend_add_trile_positions_f32(add_f32_command.positions); - case .DRAW_TRILE_POSITIONS; - draw_command := cast(*Render_Command_Draw_Trile_Positions)cmd; - backend_draw_trile_positions(draw_command.trile, draw_command.amount, draw_command.conf, draw_command.chunk_key, draw_command.preview_mode, draw_command.offset_index, draw_command.lod_index); - case .ADD_TRILE_RDM_POSITION; - add_command := cast(*Render_Command_Add_Trile_RDM_Position)cmd; - backend_add_trile_rdm_position(add_command.position); - case .DRAW_TRILE_RDM; - draw_command := cast(*Render_Command_Draw_Trile_RDM)cmd; - backend_draw_trile_rdm(draw_command.trile, draw_command.conf, draw_command.atlas_rect, draw_command.offset_index); - case .DRAW_SKY; - sky_command := cast(*Render_Command_Sky)cmd; - backend_draw_sky(sky_command.worldConfig); - case .SET_CAMERA; - camera_command := cast(*Render_Command_Set_Camera)cmd; - camera = camera_command.camera; - case .DRAW_GROUND; - ground_command := cast(*Render_Command_Draw_Ground)cmd; - if in_gbuffer_pass { - backend_draw_ground_gbuf(ground_command.worldConfig); - } else { - backend_draw_ground(ground_command.worldConfig); - } - case .UPDATE_TRIXELS; - trixel_update_command := cast(*Render_Command_Update_Trixels)cmd; - backend_update_trixels(trixel_update_command); - case .DRAW_TRIXELS; - draw_trixels_cmd := cast(*Render_Command_Draw_Trixels)cmd; - backend_draw_trixels(draw_trixels_cmd.*); - case .SET_LIGHT; - set_light_command := cast(*Render_Command_Set_Light)cmd; - current_world_config = set_light_command.worldConfig; - case .DRAW_BILLBOARD; - command := cast(*Render_Command_Draw_Billboard)cmd; - if !in_gbuffer_pass { - backend_draw_billboard(command.position, command.animation, command.frame, command.flipX, command.faceDir); - } else { - backend_gbuffer_draw_billboard(command.position, command.animation, command.frame, command.flipX, command.faceDir); - } - case .UPDATE_PARTICLES; - update_cmd := cast(*Render_Command_Update_Particles)cmd; - backend_update_particle_buffers(update_cmd); - case .DRAW_PARTICLES; - particles_cmd := cast(*Render_Command_Draw_Particles)cmd; - backend_draw_particles(particles_cmd); - } -} - -backend_update_trixels :: (cmd: Render_Command_Update_Trixels) { - if cmd.trile == null then return; - - trixels : [4096]Position_Color; - count : s32 = 0; - - for x: 0..15 { - for y: 0..15 { - for z: 0..15 { - if cmd.trile.trixels[x][y][z].empty then continue; - - trixels[count].pos.x = x * (1.0 / 16.0) + TRIXEL_SIZE_HALF; - trixels[count].pos.y = y * (1.0 / 16.0) + TRIXEL_SIZE_HALF; - trixels[count].pos.z = z * (1.0 / 16.0) + TRIXEL_SIZE_HALF; - cm : Vector3 = .{1, 1, 1}; - if cmd.colMultipliers cm = (cmd.colMultipliers.*)[x][y][z]; - trixels[count].pos.w = ifx (cm.x == 1.0 && cm.y == 1.0 && cm.z == 1.0) then 0.0 else 1.0; - trixel_color := cmd.trile.trixels[x][y][z].material.color * cm; - trixels[count].col = .{trixel_color.x, trixel_color.y, trixel_color.z, material_encode_to_float(cmd.trile.trixels[x][y][z].material)}; - count += 1; - } - } - } - - range := sg_range.{ ptr = trixels.data, size = size_of(type_of(trixels)) }; - if cmd.is_secondary { - trixel_secondary_count = count; - sg_update_buffer(trixel_secondary_vbuf, *range); - } else { - trixel_count = count; - sg_update_buffer(gPipelines.trixel.bind.vertex_buffers[2], *range); - } -} - -backend_draw_trixels :: (cmd: Render_Command_Draw_Trixels) { - count := ifx cmd.is_secondary then trixel_secondary_count else trixel_count; - if count == 0 then return; - - mvp := create_viewproj(*camera); - vs_params : Vs_Params; - vs_params.mvp = mvp.floats; - vs_params.camera = camera.position.component; - vs_params.world_offset = cmd.world_offset.component; - vs_params.tile_rotation = cmd.tile_rotation.floats; - - world_conf : Trixel_World_Config; - wc : *World_Config = *(World_Config.{}); - world_config_to_shader_type(wc, *world_conf); - - fs_params : Trixel_Fs_Params; - fs_params.view_mode = trixel_view_mode; - fs_params.brightness = cmd.brightness; - - bind := gPipelines.trixel.bind; - if cmd.is_secondary bind.vertex_buffers[2] = trixel_secondary_vbuf; - - sg_apply_pipeline(gPipelines.trixel.pipeline); - sg_apply_bindings(*bind); - sg_apply_uniforms(UB_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_apply_uniforms(UB_trixel_world_config, *(sg_range.{ptr = *world_conf, size = size_of(type_of(world_conf))})); - sg_apply_uniforms(UB_trixel_fs_params, *(sg_range.{ ptr = *fs_params, size = size_of(type_of(fs_params)) })); - sg_draw(0, 36, count); -} - -// @Note: We store these as Trile_Instances in the loaded world, -// and we need to transform them to Vector4 at some point, and -// this seems like the most convinient place to do that without -// having to constantly allocate. -trile_position_staging : [..]Vector4; - -backend_add_trile_positions :: (positions : []Trile_Instance, chunk: Chunk_Key) { - array_reset_keeping_memory(*trile_position_staging); - for position : positions { - array_add(*trile_position_staging, Vector4.{ - cast(float)(position.x + chunk.x * 32.0), - cast(float)(position.y + chunk.y * 32.0), - cast(float)(position.z + chunk.z * 32.0), - cast(float)(position.orientation) - }); - } - - offset := sg_append_buffer(gPipelines.trile.bind.vertex_buffers[3], *(sg_range.{ - ptr = trile_position_staging.data, - size = size_of(Vector4) * cast(u64)trile_position_staging.count, - })); - array_add(*trile_offsets, offset); -} - -backend_add_trile_positions_f32 :: (positions : []Vector4) { - offset := sg_append_buffer(gPipelines.trile.bind.vertex_buffers[3], *(sg_range.{ - ptr = positions.data, - size = size_of(Vector4) * cast(u64)positions.count, - })); - array_add(*trile_offsets, offset); -} - -backend_draw_trile_positions :: (trile : string, amount : s32, worldConf: *World_Config, chunk_key: Chunk_Key, preview_mode: s32 = 0, offset_index: s32 = 0, lod_index: s32 = 0) { - if in_gbuffer_pass { - backend_draw_trile_positions_gbuffer(trile, amount, worldConf, offset_index, lod_index); - } else { - backend_draw_trile_positions_main(trile, amount, worldConf, chunk_key, preview_mode, offset_index, lod_index); - } -} - -backend_draw_trile_positions_gbuffer :: (trile : string, amount : s32, worldConf: *World_Config, offset_index: s32, lod_index: s32 = 0) { - if offset_index >= trile_offsets.count then return; - mvp := create_viewproj(*camera); - view := create_lookat(*camera); - vs_params : Gbuffer_Vs_Params; - vs_params.mvp = mvp.floats; - vs_params.view_matrix = view.floats; - sg_apply_pipeline(gPipelines.gbuffer.pipeline); - world_conf : Trile_World_Config; - world_config_to_shader_type(worldConf, *world_conf); - - offset := trile_offsets[offset_index]; - - trilegfx, success := get_trile_gfx(trile); - if !success { - log_warn("Failed to get trile: %\n", trile); - return; - } - - vbuf, nbuf, cbuf : sg_buffer; - vcount : s64; - if lod_index == 0 { - vbuf = trilegfx.vertex_buffer; - nbuf = trilegfx.normal_buffer; - cbuf = trilegfx.centre_buffer; - vcount = trilegfx.vertex_count; - } else { - lod := ifx lod_index == 1 then *trilegfx.lod_4 else *trilegfx.lod_2; - if lod.vertex_count == 0 return; - vbuf = lod.vertex_buffer; - nbuf = lod.normal_buffer; - cbuf = lod.color_buffer; // unused by gbuffer shader; bound to satisfy pipeline layout - vcount = lod.vertex_count; - } - - bindings : sg_bindings; - bindings.vertex_buffers[0] = vbuf; - bindings.vertex_buffers[1] = nbuf; - bindings.vertex_buffers[2] = cbuf; - bindings.vertex_buffers[3] = gPipelines.trile.bind.vertex_buffers[3]; - bindings.vertex_buffer_offsets[3] = offset; - bindings.samplers[0] = gPipelines.trile.bind.samplers[0]; - bindings.images[0] = trilegfx.trixel_colors; - - sg_apply_bindings(*bindings); - sg_apply_uniforms(UB_gbuffer_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params))})); - sg_draw(0, cast(s32) vcount, amount); -} - -backend_draw_trile_positions_main :: (trile : string, amount : s32, worldConf: *World_Config, chunk_key: Chunk_Key, preview_mode: s32 = 0, offset_index: s32 = 0, lod_index: s32 = 0) { - start_frame_profiling_group("Draw trile positions"); - if offset_index >= trile_offsets.count { - end_frame_profiling_group("Draw trile positions"); - return; - } - - trilegfx, success := get_trile_gfx(trile); - if !success { - log_warn("Failed to get trile: %\n", trile); - return; - } - - offset := trile_offsets[offset_index]; - - // Pick mesh source based on LOD level. For shadow + gbuffer we keep the original pipeline - // and just swap which buffers feed it; the shader's centre attribute is unused so we bind - // the LOD color buffer as a placeholder to satisfy the pipeline layout. - vbuf, nbuf, cbuf : sg_buffer; - vcount : s64; - if lod_index == 0 { - vbuf = trilegfx.vertex_buffer; - nbuf = trilegfx.normal_buffer; - cbuf = trilegfx.centre_buffer; - vcount = trilegfx.vertex_count; - } else { - lod := ifx lod_index == 1 then *trilegfx.lod_4 else *trilegfx.lod_2; - if lod.vertex_count == 0 { - end_frame_profiling_group("Draw trile positions"); - return; - } - vbuf = lod.vertex_buffer; - nbuf = lod.normal_buffer; - cbuf = lod.color_buffer; - vcount = lod.vertex_count; - } - - if in_shadowmap_pass { - vs_params : Trile_Shadow_Vs_Params; - vs_params.mvp = shadow_mvp.floats; - bindings : sg_bindings; - bindings.vertex_buffers[0] = vbuf; - bindings.vertex_buffers[1] = nbuf; - bindings.vertex_buffers[2] = cbuf; - bindings.vertex_buffers[3] = gPipelines.trile.bind.vertex_buffers[3]; - bindings.vertex_buffer_offsets[3] = offset; - sg_apply_pipeline(gPipelines.trile_shadow.pipeline); - sg_apply_bindings(*bindings); - sg_apply_uniforms(UB_trile_shadow_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_draw(0, cast(s32) vcount, amount); - end_frame_profiling_group("Draw trile positions"); - return; - } - - mvp := create_viewproj(*camera); - - if lod_index >= 1 { - // LOD path: dedicated shader, vertex color, no ray-march/SSAO/shadow/SH/BRDF. - sg_apply_pipeline(gPipelines.trile_lod.pipeline); - - lod_vs : Trile_Lod_Vs_Params; - lod_vs.mvp = mvp.floats; - lod_vs.camera = camera.position.component; - - lod_fs : Trile_Lod_Fs_Params; - lod_fs.skyBase = worldConf.skyBase.component; - lod_fs.sunPosition = worldConf.sunPosition.component; - lod_fs.sunLightColor = worldConf.sunLightColor.component; - lod_fs.sunIntensity = worldConf.sunIntensity; - lc := *current_lighting_config; - lod_fs.ambient_color = lc.ambient_color.component; - lod_fs.ambient_intensity = lc.ambient_intensity; - lod_fs.planeHeight = effective_plane_height(worldConf); - lod_fs.deepColor = worldConf.deepColor.component; - lod_fs.is_reflection = ifx in_reflection_pass then cast(s32)1 else cast(s32)0; - lod_fs.fog_start = FOG_START; - lod_fs.fog_end = FOG_END; - - bindings : sg_bindings; - bindings.vertex_buffers[0] = vbuf; - bindings.vertex_buffers[1] = nbuf; - bindings.vertex_buffers[2] = cbuf; - bindings.vertex_buffers[3] = gPipelines.trile.bind.vertex_buffers[3]; - bindings.vertex_buffer_offsets[3] = offset; - - sg_apply_bindings(*bindings); - sg_apply_uniforms(UB_trile_lod_vs_params, *(sg_range.{ ptr = *lod_vs, size = size_of(type_of(lod_vs)) })); - sg_apply_uniforms(UB_trile_lod_fs_params, *(sg_range.{ ptr = *lod_fs, size = size_of(type_of(lod_fs)) })); - sg_draw(0, cast(s32) vcount, amount); - end_frame_profiling_group("Draw trile positions"); - return; - } - - vs_params : Trile_Vs_Params; - vs_params.mvp = mvp.floats; - vs_params.mvp_shadow = shadow_mvp.floats; - vs_params.camera = camera.position.component; - sg_apply_pipeline(gPipelines.trile.pipeline); - world_conf : Trile_World_Config; - world_config_to_shader_type(worldConf, *world_conf); - world_conf.planeHeight = effective_plane_height(worldConf); - - bindings : sg_bindings; - bindings.vertex_buffers[0] = vbuf; - bindings.vertex_buffers[1] = nbuf; - bindings.vertex_buffers[2] = cbuf; - bindings.vertex_buffers[3] = gPipelines.trile.bind.vertex_buffers[3]; - bindings.vertex_buffer_offsets[3] = offset; - bindings.samplers[0] = gPipelines.trile.bind.samplers[0]; - bindings.images[0] = trilegfx.trixel_colors; - bindings.images[1] = g_ssaobuf; - bindings.samplers[2] = g_shadowmap_sampler; - bindings.images[2] = g_shadowmap; - bindings.images[3] = g_brdf_lut; - bindings.images[4] = g_sh_irradiance; - bindings.samplers[3] = gPipelines.trile.bind.samplers[3]; - - curworld := get_current_world(); - chunk := table_find_pointer(*curworld.world.chunks, chunk_key); - - fs_params : Trile_Fs_Params; - fs_params.mvp_shadow = shadow_mvp.floats; - fs_params.is_reflection = ifx in_reflection_pass then cast(s32)1 else cast(s32)0; - w, h := get_render_size(); - fs_params.screen_w = w; - fs_params.screen_h = h; - lc := *current_lighting_config; - fs_params.ambient_intensity = lc.ambient_intensity; - fs_params.emissive_scale = lc.emissive_scale; - fs_params.indirect_diff_scale = lc.indirect_diff_scale; - fs_params.indirect_spec_scale = lc.indirect_spec_scale; - fs_params.ambient_color = lc.ambient_color.component; - fs_params.is_preview = preview_mode; - fs_params.indirect_tint = lc.indirect_tint.component; - fs_params.sh_enabled = ifx (chunk != null && chunk.sh_valid && !in_reflection_pass) then cast(s32)1 else cast(s32)0; - fs_params.fog_start = FOG_START; - fs_params.fog_end = FOG_END; - - sg_apply_bindings(*bindings); - sg_apply_uniforms(UB_trile_fs_params, *(sg_range.{ ptr = *fs_params, size = size_of(type_of(fs_params)) })); - sg_apply_uniforms(UB_trile_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params))})); - sg_apply_uniforms(UB_trile_world_config, *(sg_range.{ptr = *world_conf, size = size_of(type_of(world_conf))})); - add_frame_profiling_point("After drawing setup"); - sg_draw(0, cast(s32) vcount, amount); - end_frame_profiling_group("Draw trile positions"); -} -backend_add_trile_rdm_position :: (position: Vector4) { - pos := position; - offset := sg_append_buffer(gPipelines.trile_rdm.bind.vertex_buffers[3], *(sg_range.{ - ptr = *pos, - size = size_of(Vector4), - })); - array_add(*trile_rdm_offsets, offset); -} - -backend_draw_trile_rdm :: (trile: string, worldConf: *World_Config, atlas_rect: Vector4, offset_index: s32) { - if offset_index >= trile_rdm_offsets.count then return; - - trilegfx, success := get_trile_gfx(trile); - if !success { - log_warn("Failed to get trile: %\n", trile); - return; - } - offset := trile_rdm_offsets[offset_index]; - - mvp := create_viewproj(*camera); - vs_params : Trile_Rdm_Vs_Params; - vs_params.mvp = mvp.floats; - vs_params.mvp_shadow = shadow_mvp.floats; - vs_params.camera = camera.position.component; - - sg_apply_pipeline(gPipelines.trile_rdm.pipeline); - world_conf : Trile_Rdm_World_Config; - world_config_to_shader_type(worldConf, *world_conf); - world_conf.planeHeight = effective_plane_height(worldConf); - - bindings : sg_bindings; - bindings.vertex_buffers[0] = trilegfx.vertex_buffer; - bindings.vertex_buffers[1] = trilegfx.normal_buffer; - bindings.vertex_buffers[2] = trilegfx.centre_buffer; - bindings.vertex_buffers[3] = gPipelines.trile_rdm.bind.vertex_buffers[3]; - bindings.vertex_buffer_offsets[3] = offset; - bindings.samplers[SMP_rdm_trilesmp] = gPipelines.trile_rdm.bind.samplers[SMP_rdm_trilesmp]; - bindings.samplers[SMP_rdm_shadowsmp] = g_shadowmap_sampler; - bindings.samplers[SMP_rdm_linsmp] = gPipelines.trile_rdm.bind.samplers[SMP_rdm_linsmp]; - bindings.images[IMG_rdm_triletex] = trilegfx.trixel_colors; - bindings.images[IMG_rdm_ssaotex] = g_ssaobuf; - bindings.images[IMG_rdm_shadowtex] = g_shadowmap; - bindings.images[IMG_rdm_brdflut] = g_brdf_lut; - bindings.images[IMG_rdm_shirradiance] = g_sh_irradiance; - bindings.images[IMG_rdm_atlas] = g_rdm_atlas; - - curworld := get_current_world(); - fs_params : Trile_Rdm_Fs_Params; - fs_params.mvp_shadow = shadow_mvp.floats; - fs_params.is_reflection = 0; - w, h := get_render_size(); - fs_params.screen_w = w; - fs_params.screen_h = h; - lc := *current_lighting_config; - fs_params.ambient_intensity = lc.ambient_intensity; - fs_params.emissive_scale = lc.emissive_scale; - fs_params.indirect_diff_scale = lc.indirect_diff_scale; - fs_params.indirect_spec_scale = lc.indirect_spec_scale; - fs_params.ambient_color = lc.ambient_color.component; - fs_params.is_preview = 0; - fs_params.indirect_tint = lc.indirect_tint.component; - fs_params.sh_enabled = ifx curworld.valid then cast(s32)1 else cast(s32)0; - fs_params.atlas_rect = atlas_rect.component; - - sg_apply_bindings(*bindings); - sg_apply_uniforms(UB_trile_rdm_fs_params, *(sg_range.{ ptr = *fs_params, size = size_of(type_of(fs_params)) })); - sg_apply_uniforms(UB_trile_rdm_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_apply_uniforms(UB_trile_rdm_world_config, *(sg_range.{ ptr = *world_conf, size = size_of(type_of(world_conf)) })); - sg_draw(0, cast(s32) trilegfx.vertex_count, 1); -} - -backend_draw_sky :: (wc: *World_Config) { - mvp := create_viewproj(*camera); - vs_params : Sky_Vs_Params; - - world_conf : Sky_World_Config; - - world_config_to_shader_type(wc, *world_conf); - - vs_params.mvp = mvp.floats; - sg_apply_pipeline(gPipelines.sky.pipeline); - sg_apply_bindings(*gPipelines.sky.bind); - sg_apply_uniforms(UB_sky_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_apply_uniforms(UB_sky_world_config, *(sg_range.{ptr = *world_conf, size = size_of(type_of(world_conf))})); - sg_draw(0, 36, 1); -} - -backend_draw_ground :: (wc: *World_Config) { - mvp := create_viewproj(*camera); - vs_params : Plane_Vs_Params; - world_conf : Plane_World_Config; - plane_data : Plane_Data; - w, h := get_render_size(); - plane_data.mvp_shadow = shadow_mvp.floats; - plane_data.screen_w = w; - plane_data.screen_h = h; - plane_data.cameraPosition = camera.position.component; - plane_data.reflectionDistortion = wc.waterDistortion; - plane_data.shininess = wc.waterShininess; - - world_config_to_shader_type(wc, *world_conf); - - vs_params.mvp = mvp.floats; - vs_params.planeHeight = effective_plane_height(wc); - sg_apply_pipeline(gPipelines.plane.pipeline); - gPipelines.plane.bind.samplers[1] = g_shadowmap_sampler; - gPipelines.plane.bind.images[1] = g_shadowmap; - sg_apply_bindings(*gPipelines.plane.bind); - sg_apply_uniforms(UB_plane_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_apply_uniforms(UB_plane_world_config, *(sg_range.{ptr = *world_conf, size = size_of(type_of(world_conf))})); - sg_apply_uniforms(UB_plane_data, *(sg_range.{ptr = *plane_data, size = size_of(type_of(plane_data))})); - sg_draw(0, 6, 2); -} - -backend_draw_billboard :: (position: Vector3, anim: *Animation, frame_idx: s32, flipX: bool, faceDir: Vector3) { - if !anim then return; - mvp := create_viewproj(*camera); - vs_params : Billboard_Vs_Params; - gPipelines.billboard.bind.images[0] = anim.sheet; - frame := anim.frames[frame_idx]; - vs_params.uvs = Vector4.{ - cast(float) frame.x / cast(float)anim.sheet_w, - cast(float) frame.y / cast(float)anim.sheet_h, - cast(float) frame.w / cast(float)anim.sheet_w, - cast(float) frame.h / cast(float)anim.sheet_h, - }.component; - if flipX { - vs_params.uvs[0] += vs_params.uvs[2]; - vs_params.uvs[2] *= -1.0; - } - vs_params.size = Vector2.{cast(float)(frame.w / 16), cast(float)(frame.h / 16)}.component; - vs_params.cam = camera.position.component; - vs_params.faceDir = faceDir.component; - if !in_shadowmap_pass { - vs_params.mvp = mvp.floats; - } else { - vs_params.mvp = shadow_mvp.floats; - } - vs_params.offset = position.component; - sg_apply_pipeline(gPipelines.billboard.pipeline); - sg_apply_bindings(*gPipelines.billboard.bind); - sg_apply_uniforms(UB_billboard_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_draw(0, 6, 1); -} - -backend_gbuffer_draw_billboard :: (position: Vector3, anim: *Animation, frame_idx: s32, flipX: bool, faceDir: Vector3) { - if !anim then return; - mvp := create_viewproj(*camera); - view := create_lookat(*camera); - vs_params : Gbuffer_Billboard_Vs_Params; - vs_params.view_matrix = view.floats; - gPipelines.gbuffer_billboard.bind.images[0] = anim.sheet; - frame := anim.frames[frame_idx]; - vs_params.uvs = Vector4.{ - cast(float) frame.x / cast(float)anim.sheet_w, - cast(float) frame.y / cast(float)anim.sheet_h, - cast(float) frame.w / cast(float)anim.sheet_w, - cast(float) frame.h / cast(float)anim.sheet_h, - }.component; - if flipX { - vs_params.uvs[0] += vs_params.uvs[2]; - vs_params.uvs[2] *= -1.0; - } - vs_params.size = Vector2.{cast(float)(frame.w / 16), cast(float)(frame.h / 16)}.component; - vs_params.cam = camera.position.component; - vs_params.faceDir = faceDir.component; - if !in_shadowmap_pass { - vs_params.mvp = mvp.floats; - } else { - vs_params.mvp = shadow_mvp.floats; - } - vs_params.offset = position.component; - sg_apply_pipeline(gPipelines.gbuffer_billboard.pipeline); - sg_apply_bindings(*gPipelines.gbuffer_billboard.bind); - sg_apply_uniforms(UB_gbuffer_billboard_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_draw(0, 6, 1); -} - -backend_update_particle_buffers :: (cmd: *Render_Command_Update_Particles) { - if cmd.total_count <= 0 then return; - byte_size := cast(u64)(cmd.total_count * size_of(Vector4)); - inst_buf1 := gPipelines.particle_additive.bind.vertex_buffers[1]; - inst_buf2 := gPipelines.particle_additive.bind.vertex_buffers[2]; - inst_buf3 := gPipelines.particle_additive.bind.vertex_buffers[3]; - sg_update_buffer(inst_buf1, *(sg_range.{ ptr = cmd.pos_size.data, size = byte_size })); - sg_update_buffer(inst_buf2, *(sg_range.{ ptr = cmd.uv_rects.data, size = byte_size })); - sg_update_buffer(inst_buf3, *(sg_range.{ ptr = cmd.colors.data, size = byte_size })); -} - -backend_draw_particles :: (cmd: *Render_Command_Draw_Particles) { - if cmd.count <= 0 then return; - - pip := ifx cmd.blend_mode == .ALPHA then *gPipelines.particle_alpha else *gPipelines.particle_additive; - - byte_offset := cmd.instance_offset * size_of(Vector4); - bind := pip.bind; - bind.vertex_buffer_offsets[1] = byte_offset; - bind.vertex_buffer_offsets[2] = byte_offset; - bind.vertex_buffer_offsets[3] = byte_offset; - - mvp := create_viewproj(*camera); - vs_params : Particle_Vs_Params; - vs_params.mvp = mvp.floats; - vs_params.cam = camera.position.component; - - sg_apply_pipeline(pip.pipeline); - bind.images[IMG_particle_sprite] = cmd.sheet; - sg_apply_bindings(*bind); - sg_apply_uniforms(UB_particle_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_draw(0, 6, cmd.count); -} - -backend_draw_ground_gbuf :: (wc: *World_Config) { - mvp := create_viewproj(*camera); - view := create_lookat(*camera); - vs_params : Gbuffer_Vs_Params; - vs_params.mvp = mvp.floats; - vs_params.view_matrix = view.floats; - vs_params.isGround = 1; - vs_params.planeHeight = effective_plane_height(wc); - sg_apply_pipeline(gPipelines.gbuffer.pipeline); - - bindings : sg_bindings; - bindings.vertex_buffers[0] = g_plane_gbuffer_vertex_buffer; - bindings.vertex_buffers[1] = g_plane_gbuffer_normal_buffer; - bindings.vertex_buffers[2] = g_plane_gbuffer_center_buffer; - bindings.vertex_buffers[3] = g_plane_gbuffer_instance_buffer; - - sg_apply_bindings(*bindings); - sg_apply_uniforms(UB_gbuffer_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params))})); - sg_draw(0, 6, 1); -} - -draw_sh_irradiance_pass :: () { - curworld := get_current_world(); - if !curworld.valid then return; - - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_sh_irradiance_attach })); - sg_apply_pipeline(gPipelines.sh_irradiance.pipeline); - - view := create_lookat(*camera); - inv_view := isometry_inverse(view); - - lc := *current_lighting_config; - - params : Sh_Deferred_Params; - params.inv_view = inv_view.floats; - params.ambient = .[lc.ambient_color.x, lc.ambient_color.y, lc.ambient_color.z, lc.ambient_intensity]; - - for *chunk: curworld.world.chunks { - if !chunk.sh_valid then continue; - - gPipelines.sh_irradiance.bind.images[0] = g_gbuf_worldpos; - gPipelines.sh_irradiance.bind.images[1] = g_gbuf_normal; - gPipelines.sh_irradiance.bind.images[2] = chunk.sh_probe_grid; - sg_apply_bindings(*gPipelines.sh_irradiance.bind); - - ck := chunk.coord; - params.chunk_origin = .[cast(float)(ck.x * 32), cast(float)(ck.y * 32), cast(float)(ck.z * 32), 0]; - sg_apply_uniforms(UB_sh_deferred_params, *(sg_range.{ ptr = *params, size = size_of(type_of(params)) })); - sg_draw(0, 6, 1); - } - - sg_end_pass(); -} - -backend_process_command_buckets :: () { - // 1. Set up textures and buffers. - start_frame_profiling_group("Setup"); - for render_command_buckets.setup { - backend_handle_command(it); - } - end_frame_profiling_group("Setup"); - - start_frame_profiling_group("Shadow pass"); - // 2. Shadow pass - if current_world_config != null { - shadow_mvp = create_shadow_viewproj(*camera, current_world_config); - in_shadowmap_pass = true; - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_shadowmap_attachments})); - if !bypass_shadows { - for render_command_buckets.shadow { - backend_handle_command(it); - } - } - sg_end_pass(); - in_shadowmap_pass = false; - } - end_frame_profiling_group("Shadow pass"); - - start_frame_profiling_group("Reflection pass"); - // 3. Reflection pass - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = gPipelines.plane.attachments})); - if !bypass_reflections { - in_reflection_pass = true; - for render_command_buckets.reflection { - backend_handle_command(it); - } - in_reflection_pass = false; - } - sg_end_pass(); - end_frame_profiling_group("Reflection pass"); - - // 4. G-Buffer pass - start_frame_profiling_group("G-Buffer pass"); - in_gbuffer_pass = true; - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear_gbuf, attachments = g_gbuf_attachments})); - for render_command_buckets.gbuffer { - backend_handle_command(it); - } - sg_end_pass(); - in_gbuffer_pass = false; - end_frame_profiling_group("G-Buffer pass"); - - start_frame_profiling_group("SSAO pass"); - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_ssao_attachments })); - sg_apply_pipeline(gPipelines.ssao.pipeline); - gPipelines.ssao.bind.images[0] = g_gbuf_position; - gPipelines.ssao.bind.images[1] = g_gbuf_normal; - gPipelines.ssao.bind.images[2] = g_ssao_noise_buf; - sg_apply_bindings(*gPipelines.ssao.bind); - ssao_fs_uniform : Ssao_Fs_Params; - mvp := create_perspective(*camera); - ssao_fs_uniform.projection = mvp.floats; - ssao_fs_uniform.samples = g_ssao_samples; - ssao_fs_uniform.ssao_power = current_post_process.ssao; - sg_apply_uniforms(UB_ssao_fs_params, *(sg_range.{ ptr = *ssao_fs_uniform, size = size_of(type_of(ssao_fs_uniform)) })); - sg_draw(0, 6, 1); - sg_end_pass(); - end_frame_profiling_group("SSAO pass"); - - start_frame_profiling_group("SH irradiance pass"); - draw_sh_irradiance_pass(); - end_frame_profiling_group("SH irradiance pass"); - - // 5. Main pass - start_frame_profiling_group("Main pass"); - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_rendertex_attachments})); - for render_command_buckets.main { - backend_handle_command(it); - } - debug_draw_flush_gpu(); - sg_end_pass(); - end_frame_profiling_group("Main pass"); - - start_frame_profiling_group("Postprocess pass"); - if !bypass_postprocess { - bloom_process(); - dof_downsample_process(); - dof_bokeh_process(); - } - - end_frame_profiling_group("Postprocess pass"); - - start_frame_profiling_group("Final pass"); - // Begin drawing to swapchain - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, swapchain = cast,force(sg_swapchain) sglue_swapchain() })); - - // Draw the render texture and do post processing: - sg_apply_pipeline(gPipelines.postprocess.pipeline); - gPipelines.postprocess.bind.images[0] = g_rendertex; - gPipelines.postprocess.bind.images[1] = LUT_list[g_current_lut_texture_index].image; - gPipelines.postprocess.bind.images[2] = g_bloom_up_1; - gPipelines.postprocess.bind.images[3] = g_dof_tex; - gPipelines.postprocess.bind.images[4] = g_gbuf_position; - sg_apply_bindings(*gPipelines.postprocess.bind); - post_process_config_uniform : Post_Process_Config; - if bypass_postprocess { - neutral : Post_Process; - neutral.tonemap = current_post_process.tonemap; - fill_uniform_with_engine_data(*post_process_config_uniform, *neutral); - } else { - fill_uniform_with_engine_data(*post_process_config_uniform, *current_post_process); - } - sg_apply_uniforms(UB_post_process_config, *(sg_range.{ ptr = *post_process_config_uniform, size = size_of(type_of(post_process_config_uniform)) })); - dof_config_uniform : Dof_Config; - dof_config_uniform.dof_disabled = ifx disable_dof_post_process then cast(s32)1 else cast(s32)0; - dof_config_uniform.dof_max = current_post_process.dof_max; - dof_config_uniform.dof_point = current_post_process.dof_point; - sg_apply_uniforms(UB_dof_config, *(sg_range.{ ptr = *dof_config_uniform, size = size_of(type_of(dof_config_uniform)) })); - sg_draw(0, 6, 1); - - sgl_defaults(); - sgl_matrix_mode_projection(); - sgl_ortho(0.0, sapp_widthf(), sapp_heightf(), 0.0, -1.0, +1.0); - arb_tri_flush(); - - sg_end_pass(); - end_frame_profiling_group("Final pass"); - - sg_commit(); - - array_reset_keeping_memory(*render_command_buckets.setup); - array_reset_keeping_memory(*render_command_buckets.shadow); - array_reset_keeping_memory(*render_command_buckets.reflection); - array_reset_keeping_memory(*render_command_buckets.main); - array_reset_keeping_memory(*render_command_buckets.gbuffer); - array_reset_keeping_memory(*render_command_buckets.ui); - array_reset_keeping_memory(*trile_offsets); - array_reset_keeping_memory(*trile_rdm_offsets); - current_world_config = null; -} diff --git a/src/rendering/backend_sokol_helpers.jai b/src/rendering/backend_sokol_helpers.jai deleted file mode 100644 index 104a2b0..0000000 --- a/src/rendering/backend_sokol_helpers.jai +++ /dev/null @@ -1,81 +0,0 @@ -bloom_process :: () { - w, h := get_render_size(); - fw := cast(float)w; - fh := cast(float)h; - - // Prefilter: threshold + downsample full-res → down_1 (w/2) - { - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_bloom_down_1_attach })); - sg_apply_pipeline(gPipelines.bloom_prefilter.pipeline); - p : Bloom_Prefilter_Params; - p.src_texel_x = 1.0 / fw; - p.src_texel_y = 1.0 / fh; - p.threshold = current_post_process.bloom_treshold; - gPipelines.bloom_prefilter.bind.images[IMG_bloom_prefilter_src] = g_rendertex; - sg_apply_uniforms(UB_bloom_prefilter_params, *(sg_range.{ ptr = *p, size = size_of(type_of(p)) })); - sg_apply_bindings(*gPipelines.bloom_prefilter.bind); - sg_draw(0, 6, 1); - sg_end_pass(); - } - - // Downsample chain - bloom_downsample :: (src: sg_image, dst_attach: sg_attachments, src_w: float, src_h: float) { - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = dst_attach })); - sg_apply_pipeline(gPipelines.bloom_downsample.pipeline); - p : Bloom_Downsample_Params; - p.src_texel_x = 1.0 / src_w; - p.src_texel_y = 1.0 / src_h; - gPipelines.bloom_downsample.bind.images[IMG_bloom_downsample_src] = src; - sg_apply_uniforms(UB_bloom_downsample_params, *(sg_range.{ ptr = *p, size = size_of(type_of(p)) })); - sg_apply_bindings(*gPipelines.bloom_downsample.bind); - sg_draw(0, 6, 1); - sg_end_pass(); - } - bloom_downsample(g_bloom_down_1, g_bloom_down_2_attach, fw/2, fh/2); - bloom_downsample(g_bloom_down_2, g_bloom_down_3_attach, fw/4, fh/4); - bloom_downsample(g_bloom_down_3, g_bloom_down_4_attach, fw/8, fh/8); - - // Upsample chain: tent(small) + large → dest - bloom_upsample :: (small: sg_image, large: sg_image, dst_attach: sg_attachments, small_w: float, small_h: float) { - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = dst_attach })); - sg_apply_pipeline(gPipelines.bloom_upsample.pipeline); - p : Bloom_Upsample_Params; - p.src_texel_x = 1.0 / small_w; - p.src_texel_y = 1.0 / small_h; - gPipelines.bloom_upsample.bind.images[IMG_bloom_upsample_small] = small; - gPipelines.bloom_upsample.bind.images[IMG_bloom_upsample_large] = large; - sg_apply_uniforms(UB_bloom_upsample_params, *(sg_range.{ ptr = *p, size = size_of(type_of(p)) })); - sg_apply_bindings(*gPipelines.bloom_upsample.bind); - sg_draw(0, 6, 1); - sg_end_pass(); - } - bloom_upsample(g_bloom_down_4, g_bloom_down_3, g_bloom_up_3_attach, fw/16, fh/16); - bloom_upsample(g_bloom_up_3, g_bloom_down_2, g_bloom_up_2_attach, fw/8, fh/8); - bloom_upsample(g_bloom_up_2, g_bloom_down_1, g_bloom_up_1_attach, fw/4, fh/4); -} - -dof_downsample_process :: () { - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_dof_downsample_attach })); - sg_apply_pipeline(gPipelines.dof_downsample.pipeline); - gPipelines.dof_downsample.bind.images[IMG_dof_downsample_src] = g_rendertex; - sg_apply_bindings(*gPipelines.dof_downsample.bind); - sg_draw(0, 6, 1); - sg_end_pass(); -} - -dof_bokeh_process :: () { - w, h := get_render_size(); - half_w := cast(float)(w / 2); - half_h := cast(float)(h / 2); - radius := current_post_process.dof_blur_size * 3.0; - sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, attachments = g_dof_attach })); - sg_apply_pipeline(gPipelines.dof_blur.pipeline); - params : Dof_Blur_Params; - params.bokeh_radius_x = radius / half_w; - params.bokeh_radius_y = radius / half_h; - gPipelines.dof_blur.bind.images[IMG_dof_blur_src] = g_dof_downsample_tex; - sg_apply_uniforms(UB_dof_blur_params, *(sg_range.{ ptr = *params, size = size_of(type_of(params)) })); - sg_apply_bindings(*gPipelines.dof_blur.bind); - sg_draw(0, 6, 1); - sg_end_pass(); -} diff --git a/src/rendering/core.jai b/src/rendering/core.jai deleted file mode 100644 index db626dc..0000000 --- a/src/rendering/core.jai +++ /dev/null @@ -1,19 +0,0 @@ -#scope_export - -#load "backend.jai"; - -init_rendering :: () { - init_ssao(); -} - -// Core rendering function, runs several passes. -render :: () { - tasks_to_commands(); - add_frame_profiling_point("After task->command conversion"); - start_frame_profiling_group("Rendering command bucket processing"); - process_command_buckets(); - end_frame_profiling_group("Rendering command bucket processing"); -} - -#scope_file - diff --git a/src/rendering/debug_draw.jai b/src/rendering/debug_draw.jai index 375a5b5..681cf89 100644 --- a/src/rendering/debug_draw.jai +++ b/src/rendering/debug_draw.jai @@ -1,8 +1,8 @@ DEBUG_LINE_MAX :: 65536; DEBUG_OVERLAY_LINE_MAX :: 8192; -// One record per line, uploaded as instance data: the line pipeline expands each -// into a screen-space quad so lines can have a real pixel width. +// Debug lines are the one draw without a view: they are collected globally and +// drawn in every view that renders to the screen, then cleared by render(). Debug_Line :: struct { a : Vector3; b : Vector3; @@ -151,35 +151,3 @@ debug_aabb_3d :: (mn: Vector3, mx: Vector3, col: Vector4) { debug_line(.{mn.x, mn.y, mx.z}, .{mn.x, mx.y, mx.z}, col); debug_line(.{mx.x, mn.y, mx.z}, .{mx.x, mx.y, mx.z}, col); } - -flush_debug_lines :: (pipe: *Pipeline_Binding, lines: []Debug_Line, count: *int, params: *Debugline_Vs_Params) { - if count.* == 0 then return; - // Buffer 0 is the shared static quad; buffer 1 is this pipeline's instances. - sg_update_buffer( - pipe.bind.vertex_buffers[1], - *(sg_range.{ - ptr = lines.data, - size = cast(u64)(count.* * size_of(Debug_Line)), - }) - ); - sg_apply_pipeline(pipe.pipeline); - sg_apply_bindings(*pipe.bind); - sg_apply_uniforms(UB_debugline_vs_params, *(sg_range.{ ptr = params, size = size_of(Debugline_Vs_Params) })); - sg_draw(0, 6, xx count.*); - count.* = 0; -} - -debug_draw_flush_gpu :: () { - if g_debug_line_count == 0 && g_overlay_line_count == 0 then return; - - w, h := get_window_size(); - mvp := create_viewproj(*camera); - params : Debugline_Vs_Params; - params.mvp = mvp.floats; - params.viewport = .[cast(float)w, cast(float)h, 0, 0]; - - flush_debug_lines(*gPipelines.debugline, g_debug_lines, *g_debug_line_count, *params); - flush_debug_lines(*gPipelines.debugline_overlay, g_overlay_lines, *g_overlay_line_count, *params); -} - -#assert size_of(Debug_Line) == 44 "Debug_Line must stay tightly packed: the pipeline layout hardcodes its field offsets."; diff --git a/src/rendering/helpers.jai b/src/rendering/helpers.jai deleted file mode 100644 index 3e77cec..0000000 --- a/src/rendering/helpers.jai +++ /dev/null @@ -1,207 +0,0 @@ -fill_uniform_with_engine_data :: (uniform: *$A, enginedata: *$B) { - generate_copy_code :: () -> string { - builder : String_Builder; - ti := type_info(A); - for ti.members { - if it.name == "_" then continue; // skip padding - if it.type == type_info(Vector3) then print_to_builder(*builder, "uniform.% = enginedata.%.component;\n", it.name, it.name); - else print_to_builder(*builder, "uniform.% = enginedata.%;\n", it.name, it.name); - } - return builder_to_string(*builder); - } - #insert #run,stallable generate_copy_code(); -} - -extract_frustum_planes :: (mvp: Matrix4) -> [6]Vector4 { - planes : [6]Vector4; - m := mvp; - planes[0] = .{m._14+m._11, m._24+m._21, m._34+m._31, m._44+m._41}; // left - planes[1] = .{m._14-m._11, m._24-m._21, m._34-m._31, m._44-m._41}; // right - planes[2] = .{m._14+m._12, m._24+m._22, m._34+m._32, m._44+m._42}; // bottom - planes[3] = .{m._14-m._12, m._24-m._22, m._34-m._32, m._44-m._42}; // top - planes[4] = .{m._14+m._13, m._24+m._23, m._34+m._33, m._44+m._43}; // near - planes[5] = .{m._14-m._13, m._24-m._23, m._34-m._33, m._44-m._43}; // far - return planes; -} - -aabb_in_frustum :: inline (planes: [6]Vector4, bmin: Vector3, bmax: Vector3) -> bool { - for plane: planes { - px := ifx plane.x >= 0 then bmax.x else bmin.x; - py := ifx plane.y >= 0 then bmax.y else bmin.y; - pz := ifx plane.z >= 0 then bmax.z else bmin.z; - if plane.x*px + plane.y*py + plane.z*pz + plane.w < 0 return false; - } - return true; -} - -LOD_NEAR_DIST :: 40.0; -LOD_FAR_DIST :: 80.0; - -// 3-band LOD selection: instances closer than LOD_DISTANCES[i] use LOD level i. -// i = 0 → full detail -// i = 1 → 4^3 cube grid -// i = 2 → 2^3 cube grid -// beyond LOD_DISTANCES[2] → culled. -LOD_DISTANCES :: float.[50.0, 100.0, 200.0]; -FOG_START :: 60.0; -FOG_END :: 195.0; - - -shad_gathered : [..]Gathered_Positions; -rdm_extra : [..]Gathered_Positions; -rdm_main : [..]Gathered_Rdm_Position; -gathered_per_lod : [3][..]Gathered_Positions; - -Gathered_Positions :: struct { - trile : string; - chunk_key : Chunk_Key; - positions : [..]Vector4; -} - -Gathered_Rdm_Position :: struct { - name: string; - position: Vector4; -} - -gathered_chunk_tasks : [..]Gathered_Positions; - -create_world_rendering_tasks :: (world: *World, camera: Camera, plane_height: float = 0) { - create_sky_rendering_task(*world.conf); - create_set_light_rendering_task(*world.conf); - - cam_mvp := create_viewproj(*camera); - shadow_mvp := create_shadow_viewproj(*camera, *world.conf); - cam_planes := extract_frustum_planes(cam_mvp); - shadow_planes := extract_frustum_planes(shadow_mvp); - - reflect_cam := camera; - reflect_cam.position *= .{1, -1, 1}; - reflect_cam.position.y += plane_height * 2; - reflect_cam.target *= .{1, -1, 1}; - reflect_cam.target.y += plane_height * 2; - reflect_mvp := create_viewproj(*reflect_cam); - reflect_planes := extract_frustum_planes(reflect_mvp); - - for chunk: world.chunks { - // Skip chunks that are completely out of view. - bmin := Vector3.{ - chunk.coord.x * 32.0, - chunk.coord.y * 32.0, - chunk.coord.z * 32.0 - }; - bmax := bmin + .{32, 32, 32}; - in_cam := aabb_in_frustum(cam_planes, bmin, bmax); - in_reflect := aabb_in_frustum(reflect_planes, bmin, bmax); - in_shad := aabb_in_frustum(shadow_planes, bmin, bmax); - vis := in_cam || in_reflect || in_shad; - if !vis then continue; - - for group : chunk.groups { - if group.instances.count < 1 then continue; - - - gmin := group.bounding_min; - gmax := group.bounding_max; - - gmin += Vector3.{cast(float)chunk.coord.x * 32, cast(float)chunk.coord.y * 32, cast(float)chunk.coord.z * 32}; - gmax += Vector3.{cast(float)chunk.coord.x * 32, cast(float)chunk.coord.y * 32, cast(float)chunk.coord.z * 32}; - in_cam := aabb_in_frustum(cam_planes, gmin, gmax); - in_reflect := aabb_in_frustum(reflect_planes, gmin, gmax); - in_shad := aabb_in_frustum(shadow_planes, gmin, gmax); - vis := in_cam || in_reflect || in_shad; - - if !vis then continue; - - diff := group.average_pos - camera.position; - dist := length(diff); - lod_index : s32 = 0; - for lod_dist : LOD_DISTANCES { - if dist < lod_dist then break; - lod_index += 1; - } - - task := Rendering_Task_Trile.{ - trile = group.trile_name, - chunk_key = chunk.coord, - positions = group.instances, - worldConf = *world.conf, - lod_index = lod_index - }; - add_rendering_task(task); - } - - } - - create_ground_rendering_task(world); -} - -create_sky_rendering_task :: (conf: *World_Config) { - skytask := Rendering_Task_Sky.{type = .SKY, worldConfig = conf}; - add_rendering_task(skytask); -} - -create_set_light_rendering_task :: (conf: *World_Config) { - lighttask := Rendering_Task_Set_Light.{type = .SET_LIGHT, worldConfig = conf}; - add_rendering_task(lighttask); -} - -TRIXEL_IDENTITY : Matrix4 : .{_11=1, _22=1, _33=1, _44=1}; - -create_trixel_rendering_task :: (trile: *Trile, muls: *[16][16][16]Vector3, world_offset: Vector3 = .{}, brightness: float = 1.0, tile_rotation: Matrix4 = TRIXEL_IDENTITY, is_secondary: bool = false) { - trixeltask := Rendering_Task_Trixels.{type = .TRIXELS, trile = trile, colMultipliers = muls, world_offset = world_offset, brightness = brightness, tile_rotation = tile_rotation, is_secondary = is_secondary}; - add_rendering_task(trixeltask); -} - -create_ground_rendering_task :: (world: *World) { - groundtask := Rendering_Task_Ground.{type = .GROUND, world = world}; - add_rendering_task(groundtask); -} - -create_billboard_rendering_task :: (position: Vector3, animation: *Animation, frame: s32, flipX: bool, flipY: bool, faceDir : Vector3 = .{-100, -100, -100}) { - billboardtask := Rendering_Task_Billboard.{type = .BILLBOARD, position = position, animation = animation, frame = frame, flipX = flipX, flipY = flipY, faceDir = faceDir }; - add_rendering_task(billboardtask); -} - -create_set_cam_rendering_task :: (cam: Camera, planeHeight: float) { - camtask := Rendering_Task_Set_Camera.{type = .SET_CAMERA, camera = cam, planeHeight = planeHeight}; - add_rendering_task(camtask); -} - -get_low_res :: (width: s32, height: s32, max_dimension: s32 = 720) -> (s32, s32) { - if width == 0 || height == 0 { - return 0, 0; - } - aspect_ratio := cast(float)width / cast(float)height; - w: s32; - h: s32; - if width > height { - w = max_dimension; - h = cast(s32)floor(cast(float)w / aspect_ratio); - } else { - h = max_dimension; - w = cast(s32)floor(cast(float)h * aspect_ratio); - } - - return w, h; -} - -get_render_size :: () -> (s32, s32) { - w,h := get_window_size(); - // w, h = get_low_res(w,h, 480); - return w, h; -} - -flip_y_if_plat :: inline (v: Vector2) -> Vector2 { - return .{v.x, flip_if_plat(v.y)}; -} - -// Some platforms draw UVs in weird reverse way -// so this function here does the flip on those platforms -// so we don't need to do the platform check in many places. -flip_if_plat :: inline (n: float) -> float { - #if OS == .MACOS { - return 1 - n; - } else { - return n; - } -} diff --git a/src/rendering/lodgen.jai b/src/rendering/lodgen.jai deleted file mode 100644 index 75c48c0..0000000 --- a/src/rendering/lodgen.jai +++ /dev/null @@ -1,153 +0,0 @@ -// LOD bake for triles. Independent of meshgen.jai's quad-mesh path. -// -// Approach: -// 1. Downsample the 16^3 source trixels into a smaller N^3 grid of LOD voxels -// (avg color across non-empty source trixels in each block, empty if all empty). -// 2. Bake a cube-grid mesh: one cube per non-empty LOD voxel, only emit faces whose -// neighbor in the LOD grid is empty (or out of bounds). Color is baked into the -// vertex color buffer. -// 3. The result feeds a separate trile_lod pipeline that uses vertex color and skips -// texture sampling, ray-march, SSAO, shadow, SH, etc. - -LOD_Voxel :: struct { - color : Vector3; - empty : bool; -} - -downsample_trile :: (src: *Trile, target_size: int) -> []LOD_Voxel { - block := 16 / target_size; // source trixels per LOD voxel along one axis - out := NewArray(target_size * target_size * target_size, LOD_Voxel,, temp); - for lx: 0..target_size-1 { - for ly: 0..target_size-1 { - for lz: 0..target_size-1 { - sum_r, sum_g, sum_b : float; - count : int = 0; - for dx: 0..block-1 { - for dy: 0..block-1 { - for dz: 0..block-1 { - sx := lx * block + dx; - sy := ly * block + dy; - sz := lz * block + dz; - if src.trixels[sx][sy][sz].empty continue; - c := src.trixels[sx][sy][sz].material.color; - sum_r += c.x; - sum_g += c.y; - sum_b += c.z; - count += 1; - } - } - } - idx := (lx * target_size + ly) * target_size + lz; - if count == 0 { - out[idx].empty = true; - } else { - out[idx].color = .{ sum_r / count, sum_g / count, sum_b / count }; - out[idx].empty = false; - } - } - } - } - return out; -} - -bake_lod_cube_mesh :: (lod: []LOD_Voxel, target_size: int) -> Trile_GFX_LOD { - inv_n := 1.0 / cast(float)target_size; - - verts : [..]float; - norms : [..]float; - colors : [..]float; - verts.allocator = temp; - norms.allocator = temp; - colors.allocator = temp; - - voxel_at :: (lod: []LOD_Voxel, n: int, x: int, y: int, z: int) -> LOD_Voxel #expand { - idx := (x * n + y) * n + z; - return lod[idx]; - } - - // Each face: 4 corners (offsets in [0,1] within a unit voxel) + outward normal. - Face :: struct { - nx, ny, nz : float; - ax, ay, az : float; - bx, by, bz : float; - cx, cy, cz : float; - dx, dy, dz : float; - } - // Order: -X, +X, -Y, +Y, -Z, +Z. CCW winding when viewed from outside. - faces :: Face.[ - .{ -1, 0, 0, 0,0,0, 0,0,1, 0,1,1, 0,1,0 }, - .{ 1, 0, 0, 1,0,0, 1,1,0, 1,1,1, 1,0,1 }, - .{ 0,-1, 0, 0,0,0, 1,0,0, 1,0,1, 0,0,1 }, - .{ 0, 1, 0, 0,1,0, 0,1,1, 1,1,1, 1,1,0 }, - .{ 0, 0,-1, 0,0,0, 0,1,0, 1,1,0, 1,0,0 }, - .{ 0, 0, 1, 1,0,1, 1,1,1, 0,1,1, 0,0,1 }, - ]; - neighbor_offsets :: int.[ -1, 1, -1, 1, -1, 1 ]; - neighbor_axes :: int.[ 0, 0, 1, 1, 2, 2 ]; // 0=x, 1=y, 2=z - - for lx: 0..target_size-1 { - for ly: 0..target_size-1 { - for lz: 0..target_size-1 { - v := voxel_at(lod, target_size, lx, ly, lz); - if v.empty continue; - - base_x := cast(float)lx * inv_n; - base_y := cast(float)ly * inv_n; - base_z := cast(float)lz * inv_n; - - for f: 0..5 { - nx, ny, nz := lx, ly, lz; - if neighbor_axes[f] == 0 nx += neighbor_offsets[f]; - else if neighbor_axes[f] == 1 ny += neighbor_offsets[f]; - else nz += neighbor_offsets[f]; - - visible := false; - if nx < 0 || nx >= target_size || ny < 0 || ny >= target_size || nz < 0 || nz >= target_size { - visible = true; - } else { - if voxel_at(lod, target_size, nx, ny, nz).empty visible = true; - } - if !visible continue; - - face := faces[f]; - push_vert :: (px: float, py: float, pz: float) #expand { - array_add(*verts, base_x + px * inv_n); - array_add(*verts, base_y + py * inv_n); - array_add(*verts, base_z + pz * inv_n); - array_add(*norms, face.nx); - array_add(*norms, face.ny); - array_add(*norms, face.nz); - array_add(*colors, v.color.x); - array_add(*colors, v.color.y); - array_add(*colors, v.color.z); - } - // tri 1: a b c - push_vert(face.ax, face.ay, face.az); - push_vert(face.bx, face.by, face.bz); - push_vert(face.cx, face.cy, face.cz); - // tri 2: a c d - push_vert(face.ax, face.ay, face.az); - push_vert(face.cx, face.cy, face.cz); - push_vert(face.dx, face.dy, face.dz); - } - } - } - } - - out : Trile_GFX_LOD; - out.vertex_count = verts.count / 3; - if out.vertex_count == 0 return out; - - out.vertex_buffer = sg_make_buffer(*(sg_buffer_desc.{ data = .{ ptr = verts.data, size = xx (verts.count * 4) } })); - out.normal_buffer = sg_make_buffer(*(sg_buffer_desc.{ data = .{ ptr = norms.data, size = xx (norms.count * 4) } })); - out.color_buffer = sg_make_buffer(*(sg_buffer_desc.{ data = .{ ptr = colors.data, size = xx (colors.count * 4) } })); - return out; -} - -destroy_trile_gfx_lod :: (lod: *Trile_GFX_LOD) { - if lod.vertex_count == 0 return; - sg_destroy_buffer(lod.vertex_buffer); - sg_destroy_buffer(lod.normal_buffer); - sg_destroy_buffer(lod.color_buffer); - lod.vertex_count = 0; -} diff --git a/src/rendering/meshgen.jai b/src/rendering/meshgen.jai deleted file mode 100644 index 3df3d1b..0000000 --- a/src/rendering/meshgen.jai +++ /dev/null @@ -1,509 +0,0 @@ -Trile_Side :: enum_flags u8 { - TOP :: 0x1; // Larger Y - LEFT :: 0x2; // Larger Z - RIGHT :: 0x4; // Smaller Z - FRONT :: 0x8; // Larger X - BACK :: 0x10; // Smaller X - BOTTOM :: 0x20; // Smaller Ys -} - -trileSideValues : [6]Trile_Side = .[.TOP, .LEFT, .RIGHT, .FRONT, .BACK, .BOTTOM]; - -sides_with_air_exposure :: (trileptr: *Trile, x: int, y: int, z: int) -> u8 { - res : u8 = 0; - if trileptr.trixels[x][y][z].empty then return res; - - // Top - if y == 15 || trileptr.trixels[x][y+1][z].empty then res |= xx Trile_Side.TOP; - // Bottom - if y == 0 || trileptr.trixels[x][y-1][z].empty then res |= xx Trile_Side.BOTTOM; - // Left - if z == 15 || trileptr.trixels[x][y][z+1].empty then res |= xx Trile_Side.LEFT; - // Right - if z == 0 || trileptr.trixels[x][y][z-1].empty then res |= xx Trile_Side.RIGHT; - // Front - if x == 15 || trileptr.trixels[x+1][y][z].empty then res |= xx Trile_Side.FRONT; - // Back - if x == 0 || trileptr.trixels[x-1][y][z].empty then res |= xx Trile_Side.BACK; - - return res; -} - -draw_trile_side_triangles :: (vecs: *[]float, normals: *[]float, index: *int, side: Trile_Side, x: int, y: int, z: int) { - points : [4][3]float; - normal : [3]float; - - if side == Trile_Side.TOP { - points[0][0] = 1; points[0][1] = 1; points[0][2] = 1; - points[1][0] = 1; points[1][1] = 1; points[1][2] = 0; - points[2][0] = 0; points[2][1] = 1; points[2][2] = 1; - points[3][0] = 0; points[3][1] = 1; points[3][2] = 0; - normal[0] = 0; normal[1] = 1; normal[2] = 0; - } - if side == Trile_Side.BOTTOM { - points[0][0] = 1; points[0][1] = 0; points[0][2] = 1; - points[2][0] = 1; points[2][1] = 0; points[2][2] = 0; - points[1][0] = 0; points[1][1] = 0; points[1][2] = 1; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 0; - normal[0] = 0; normal[1] = -1; normal[2] = 0; - } - if side == Trile_Side.FRONT { - points[0][0] = 1; points[0][1] = 1; points[0][2] = 1; - points[2][0] = 1; points[2][1] = 1; points[2][2] = 0; - points[1][0] = 1; points[1][1] = 0; points[1][2] = 1; - points[3][0] = 1; points[3][1] = 0; points[3][2] = 0; - normal[0] = 1; normal[1] = 0; normal[2] = 0; - } - if side == Trile_Side.BACK { - points[0][0] = 0; points[0][1] = 1; points[0][2] = 1; - points[1][0] = 0; points[1][1] = 1; points[1][2] = 0; - points[2][0] = 0; points[2][1] = 0; points[2][2] = 1; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 0; - normal[0] = -1; normal[1] = 0; normal[2] = 0; - } - if side == Trile_Side.LEFT { - points[0][0] = 1; points[0][1] = 1; points[0][2] = 1; - points[2][0] = 1; points[2][1] = 0; points[2][2] = 1; - points[1][0] = 0; points[1][1] = 1; points[1][2] = 1; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 1; - normal[0] = 0; normal[1] = 0; normal[2] = 1; - } - if side == Trile_Side.RIGHT { - points[0][0] = 1; points[0][1] = 1; points[0][2] = 0; - points[1][0] = 1; points[1][1] = 0; points[1][2] = 0; - points[2][0] = 0; points[2][1] = 1; points[2][2] = 0; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 0; - normal[0] = 0; normal[1] = 0; normal[2] = -1; - } - - for 0..2 { - vecs.*[index.*] = (x + points[it][0]) * TRIXEL_SIZE; - vecs.*[index.*+1] = (y + points[it][1]) * TRIXEL_SIZE; - vecs.*[index.*+2] = (z + points[it][2]) * TRIXEL_SIZE; - normals.*[index.*] = normal[0]; - normals.*[index.*+1] = normal[1]; - normals.*[index.*+2] = normal[2]; - index.* = index.* + 3; - } - - for < 0..2 { - vecs.*[index.*] = (x + points[it][0]) * TRIXEL_SIZE; - vecs.*[index.*+1] = (y + points[it][1]) * TRIXEL_SIZE; - vecs.*[index.*+2] = (z + points[it][2]) * TRIXEL_SIZE; - normals.*[index.*] = normal[0]; - normals.*[index.*+1] = normal[1]; - normals.*[index.*+2] = normal[2]; - index.* = index.* + 3; - } -} - -draw_trile_side_quad :: (vecs: *[..]float, norms: *[..]float, side: Trile_Side, x: int, y: int, z: int) { - points : [4][3]float; - normal : [3]float; - - if side == { - case Trile_Side.TOP; - points[0][0] = 1; points[0][1] = 1; points[0][2] = 1; - points[1][0] = 1; points[1][1] = 1; points[1][2] = 0; - points[2][0] = 0; points[2][1] = 1; points[2][2] = 1; - points[3][0] = 0; points[3][1] = 1; points[3][2] = 0; - normal[0] = 0; normal[1] = 1; normal[2] = 0; - case Trile_Side.BOTTOM; - points[0][0] = 1; points[0][1] = 0; points[0][2] = 1; - points[2][0] = 1; points[2][1] = 0; points[2][2] = 0; - points[1][0] = 0; points[1][1] = 0; points[1][2] = 1; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 0; - normal[0] = 0; normal[1] = -1; normal[2] = 0; - case Trile_Side.FRONT; - points[0][0] = 1; points[0][1] = 1; points[0][2] = 1; - points[2][0] = 1; points[2][1] = 1; points[2][2] = 0; - points[1][0] = 1; points[1][1] = 0; points[1][2] = 1; - points[3][0] = 1; points[3][1] = 0; points[3][2] = 0; - normal[0] = 1; normal[1] = 0; normal[2] = 0; - case Trile_Side.BACK; - points[0][0] = 0; points[0][1] = 1; points[0][2] = 1; - points[1][0] = 0; points[1][1] = 1; points[1][2] = 0; - points[2][0] = 0; points[2][1] = 0; points[2][2] = 1; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 0; - normal[0] = -1; normal[1] = 0; normal[2] = 0; - case Trile_Side.LEFT; - points[0][0] = 1; points[0][1] = 1; points[0][2] = 1; - points[2][0] = 1; points[2][1] = 0; points[2][2] = 1; - points[1][0] = 0; points[1][1] = 1; points[1][2] = 1; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 1; - normal[0] = 0; normal[1] = 0; normal[2] = 1; - case Trile_Side.RIGHT; - points[0][0] = 1; points[0][1] = 1; points[0][2] = 0; - points[1][0] = 1; points[1][1] = 0; points[1][2] = 0; - points[2][0] = 0; points[2][1] = 1; points[2][2] = 0; - points[3][0] = 0; points[3][1] = 0; points[3][2] = 0; - normal[0] = 0; normal[1] = 0; normal[2] = -1; - } - - order : [4]int = .[0,1,3,2]; - coords : [3]int = .[x,y,z]; - for i: 0..3 { - for j: 0..2 { - array_add(vecs, (coords[j]+points[order[i]][j])*TRIXEL_SIZE); - array_add(norms, normal[j]); - } - } -} - -generate_basic_quad_mesh :: (trileptr: *Trile, vecs: *[..]float, norms: *[..]float) { - for x: 0..15 { - for y: 0..15 { - for z: 0..15 { - exposure: u8 = sides_with_air_exposure(trileptr, x, y, z); - for trileSideValues { - if (cast(u8)it) & exposure then draw_trile_side_quad(vecs, norms, it, x, y, z); - } - } - } - } -} - -quads_to_triangles :: (quadVecs: *[..]float, triangleVecs: *[..]float, quadNorms: *[..]float, triangleNorms: *[..]float) { - assert(quadVecs.count % (3*4) == 0); - assert(quadVecs.count == quadNorms.count); - i := 0; - while i < quadVecs.count { - quadStart : *float = *(quadVecs.*[i]); - normStart : *float = *(quadNorms.*[i]); - for j : 0..4 { - for k : 0..2 { - array_add(triangleVecs, quadStart[(j%4)*3+k]); - array_add(triangleNorms, normStart[(j%4)*3+k]); - } - if j == 2 { - for k : 0..2 { - //add the third point twice to get 2 triangles - array_add(triangleVecs, quadStart[(j%4)*3+k]); - array_add(triangleNorms, normStart[(j%4)*3+k]); - } - } - } - i += 3*4; - } -} - -Quad :: struct { - topRight : Vector2; - bottomLeft : Vector2; -}; - -operator < :: (a: Quad, b: Quad) -> bool { - if a.topRight.x == b.topRight.x then return a.topRight.y < b.topRight.y; - return a.topRight.x < b.topRight.x; -} - -quad_comp :: (a: Quad, b: Quad) -> bool { - if a.topRight != b.topRight then return false; - if a.bottomLeft != b.bottomLeft then return false; - return true; -} - -quad_hash :: (q: Quad) -> u32 { - return sdbm_hash(*q, size_of(Quad)); -} - -Quad_Set :: Table(Quad, bool, quad_hash, quad_comp); -Quads :: [6][..]Quad_Set; - -side_to_quad_list_index :: (side: Trile_Side) -> s32 { - if #complete side == { - case Trile_Side.TOP; - return 0; - case Trile_Side.BOTTOM; - return 1; - case Trile_Side.FRONT; - return 2; - case Trile_Side.BACK; - return 3; - case Trile_Side.LEFT; - return 4; - case Trile_Side.RIGHT; - return 5; - } -} - -init_quads :: (quads: *Quads) { // NOTE: unsure about if this is correctly ported. - for side : trileSideValues { - idx := side_to_quad_list_index(side); - for i : 0..15 { - quadset : Quad_Set; - table_add(*quadset, .{.{16,16}, .{0,0}}, true); - array_add(*(quads.*[idx]), quadset); - } - } -} - -// Looking at the side, what axis should be used as x,y and z, -// so that x and z are parallel to the side. -// (And not all of it seems to work when the used x and y and normal of the side abide by the left hand rule) -change_perspective :: (x: *$T, y: *T, z: *T, side: Trile_Side) -> (*T,*T,*T) { - if #complete side == { - case Trile_Side.TOP; - return x, z, y; - case Trile_Side.BOTTOM; - return z, x, y; - case Trile_Side.FRONT; - return z, y, x; - case Trile_Side.BACK; - return y, z, x; - case Trile_Side.LEFT; - return y, x, z; - case Trile_Side.RIGHT; - return x, y, z; - } -} - -quad2d_add_to_quads3d :: (quads2d: *[..]Vector2, quads3d: *[..]Vector3, side: Trile_Side, depth: int, normals: *[..]float) { - x, y, z : float; - normal : [3]float; - offset : float = 0.0; - - ux, uy, uz := change_perspective(*x, *y, *z, side); - - if side == { - case Trile_Side.TOP; - normal[0] = 0; - normal[1] = 1; - normal[2] = 0; - offset = 1; - case Trile_Side.BOTTOM; - normal[0] = 0; - normal[1] = -1; - normal[2] = 0; - case Trile_Side.FRONT; - normal[0] = 1; - normal[1] = 0; - normal[2] = 0; - offset = 1; - case Trile_Side.BACK; - normal[0] = -1; - normal[1] = 0; - normal[2] = 0; - case Trile_Side.LEFT; - normal[0] = 0; - normal[1] = 0; - normal[2] = 1; - offset = 1; - case Trile_Side.RIGHT; - normal[0] = 0; - normal[1] = 0; - normal[2] = -1; - } - - for quad : quads2d.* { - uz.* = (depth + offset) * TRIXEL_SIZE; - ux.* = quad.x * TRIXEL_SIZE; - uy.* = quad.y * TRIXEL_SIZE; - - array_add(quads3d, .{x,y,z}); - array_add(normals, normal[0]); - array_add(normals, normal[1]); - array_add(normals, normal[2]); - } -} - -quads_to_vecs :: (quads: *Quads, vecs: *[..]float, normals: *[..]float) { - quads3d : [..]Vector3; - - for side : trileSideValues { - idx := side_to_quad_list_index(side); - for 0..quads.*[idx].count-1 { - quads2d : [..]Vector2; - table := *(quads.*[idx][it]); - for k, v : table { - array_add(*quads2d, v.bottomLeft); - array_add(*quads2d, .{v.bottomLeft.x, v.topRight.y}); - array_add(*quads2d, v.topRight); - array_add(*quads2d, .{v.topRight.x, v.bottomLeft.y}); - } - quad2d_add_to_quads3d(*quads2d, *quads3d, side, it, normals); - } - } - for quad : quads3d { - array_add(vecs, quad.x); - array_add(vecs, quad.y); - array_add(vecs, quad.z); - } -} - -a_is_inside_b :: (a: Quad, b: Quad) -> bool { - if (b.topRight.x >= a.topRight.x) && (b.topRight.y >= a.topRight.y) { - if (b.bottomLeft.x <= a.bottomLeft.x) && (b.bottomLeft.y <= a.bottomLeft.y) { - return true; - } - } - return false; -} - - -remove_quad :: (quad: Quad, quadSet: *Quad_Set) { - parent : Quad; - - for v, k : quadSet { - if k < quad then continue; - if a_is_inside_b(quad, k) { - parent = k; - table_remove(quadSet, k); - break; - } - } - - topLeft : Vector2 = .{quad.bottomLeft.x,quad.topRight.y}; - bottomRight : Vector2 = .{quad.topRight.x,quad.bottomLeft.y}; - - if quad.topRight.x != parent.topRight.x { - table_add(quadSet, .{parent.topRight,bottomRight}, true); - } - - if quad.topRight.y != parent.topRight.y { - table_add(quadSet, .{.{quad.topRight.x,parent.topRight.y},.{parent.bottomLeft.x,quad.topRight.y}}, true); - } - if quad.bottomLeft.y != parent.bottomLeft.y { - table_add(quadSet, .{.{parent.topRight.x,quad.bottomLeft.y},.{quad.bottomLeft.x,parent.bottomLeft.y}}, true); - } - if quad.bottomLeft.x != parent.bottomLeft.x { - table_add(quadSet, .{topLeft,parent.bottomLeft}, true); - } -} - -remove_not_seen :: (trilept: *Trile, quads: *Quads) { - for x: 0..15 { - for y: 0..15 { - for z: 0..15 { - exposure: u8 = sides_with_air_exposure(trilept, x, y, z); - for side: trileSideValues { - if !((cast(u8)side) & exposure) { - ux, uy, uz := change_perspective(*x, *y, *z, side); - remove_quad(.{.{cast(float)ux.*+1, cast(float)uy.*+1}, .{cast(float)ux.*, cast(float)uy.*}}, *quads.*[side_to_quad_list_index(side)][uz.*]); - } - } - } - } - } -} - -generate_optimized_quad_mesh :: (trilept: *Trile, vecs: *[..]float, normals: *[..]float) { - quads : Quads; - init_quads(*quads); - remove_not_seen(trilept, *quads); - quads_to_vecs(*quads, vecs, normals); -} - -Pool :: #import "Pool"; -meshgenpool : Pool.Pool; - -generate_trile_gfx_matias :: (trileptr : *Trile) -> Trile_GFX { - // @ToDo: Only do this if we haven't yet done it. - if !meshgenpool.block_allocator.proc then Pool.set_allocators(*meshgenpool); - - old_alloc := context.allocator; - new_context := context; - new_context.allocator = .{Pool.pool_allocator_proc, *meshgenpool}; - push_context new_context { - triangleVecs : [..]float; - triangleNorms : [..]float; - quadVecs : [..]float; - quadNorms : [..]float; - - generate_optimized_quad_mesh(trileptr,*quadVecs,*quadNorms); - - quads_to_triangles(*quadVecs, *triangleVecs,*quadNorms, *triangleNorms); - - trile_vert_buffer_info := sg_buffer_desc.{ data = .{ ptr = triangleVecs.data, size = xx (triangleVecs.count * 4) } }; - trile_vert_buffer := sg_make_buffer(*trile_vert_buffer_info); - - trile_normal_buffer_info := sg_buffer_desc.{ data = .{ ptr = triangleNorms.data, size = xx (triangleNorms.count * 4) } }; - trile_normal_buffer := sg_make_buffer(*trile_normal_buffer_info); - - log_debug("Successfully generated mesh for trile with % triangles.", triangleVecs.count / 3 / 3); - - centres : [..]float; - - // Generate triangle centers. - for 0..(triangleVecs.count/3/3)-1 { - x1 := triangleVecs[it * 9 + 0]; - x2 := triangleVecs[it * 9 + 3]; - x3 := triangleVecs[it * 9 + 6]; - xr := (x1+x2+x3) / 3.0; - - y1 := triangleVecs[it * 9 + 1]; - y2 := triangleVecs[it * 9 + 4]; - y3 := triangleVecs[it * 9 + 7]; - yr := (y1+y2+y3) / 3.0; - - z1 := triangleVecs[it * 9 + 2]; - z2 := triangleVecs[it * 9 + 5]; - z3 := triangleVecs[it * 9 + 8]; - zr := (z1+z2+z3) / 3.0; - - for 0..2 { - array_add(*centres, xr); - array_add(*centres, yr); - array_add(*centres, zr); - } - } - - trile_centre_buffer_info := sg_buffer_desc.{ data = .{ ptr = centres.data, size = xx (centres.count * 4) } }; - trile_centre_buffer := sg_make_buffer(*trile_centre_buffer_info); - - // Create the texture for the trile, from which it gets it's colors for trixels. - - materialdata : [16*16*16*4]u8; - counter : int = 0; - - for x: 0..15 { - for y: 0..15 { - for z: 0..15 { - if trileptr.trixels[x][y][z].empty { - // @ToDo: add some null pattern here to help in shader side. - materialdata[counter + 0] = 0; - materialdata[counter + 1] = 0; - materialdata[counter + 2] = 0; - materialdata[counter + 3] = 0; - counter += 4; - } else { - r,g,b,a := material_to_rgba(trileptr.trixels[x][y][z].material); - materialdata[counter + 0] = r; - materialdata[counter + 1] = g; - materialdata[counter + 2] = b; - materialdata[counter + 3] = a; - counter += 4; - } - } - } - } - - imgdata : sg_image_data; - imgdata.subimage[0][0] = .{materialdata.data, materialdata.count}; - - texdesc : sg_image_desc = .{ - render_target = false, - width = 16, - height = 16*16, - pixel_format = sg_pixel_format.RGBA8, - sample_count = 1, - data = imgdata - }; - - img := sg_make_image(*texdesc); - - state := sg_query_image_state(img); - log_debug("IMG: %", state); - - context.allocator = old_alloc; - vecsCopy := array_copy(triangleVecs); - Pool.reset(*meshgenpool); - - lod4_voxels := downsample_trile(trileptr, 4); - lod_4 := bake_lod_cube_mesh(lod4_voxels, 4); - lod2_voxels := downsample_trile(trileptr, 2); - lod_2 := bake_lod_cube_mesh(lod2_voxels, 2); - - return .{ img, trile_vert_buffer, trile_normal_buffer, trile_centre_buffer, vecsCopy, triangleVecs.count / 3, lod_4, lod_2 }; - } -} diff --git a/src/rendering/meshgen_2.jai b/src/rendering/meshgen_2.jai deleted file mode 100644 index 79534e6..0000000 --- a/src/rendering/meshgen_2.jai +++ /dev/null @@ -1,34 +0,0 @@ -Trile_Side :: enum_flags u8 { - TOP :: 0x1; // Larger Y - LEFT :: 0x2; // Larger Z - RIGHT :: 0x4; // Smaller Z - FRONT :: 0x8; // Larger X - BACK :: 0x10; // Smaller X - BOTTOM :: 0x20; // Smaller Ys -} - -trileSideValues : [6]Trile_Side = .[.TOP, .LEFT, .RIGHT, .FRONT, .BACK, .BOTTOM]; - -swap_xyz_for_side :: (x: int, y: int, z: int, Trile_Side) -> (int, int, int) { - -} - -sides_with_air_exposure :: (trileptr: *Trile, x: int, y: int, z: int) -> u8 { - res : u8 = 0; - if trileptr.trixels[x][y][z].empty then return res; - - if y == 15 || trileptr.trixels[x][y+1][z].empty then res |= xx Trile_Side.TOP; - if y == 0 || trileptr.trixels[x][y-1][z].empty then res |= xx Trile_Side.BOTTOM; - if z == 15 || trileptr.trixels[x][y][z+1].empty then res |= xx Trile_Side.LEFT; - if z == 0 || trileptr.trixels[x][y][z-1].empty then res |= xx Trile_Side.RIGHT; - if x == 15 || trileptr.trixels[x+1][y][z].empty then res |= xx Trile_Side.FRONT; - if x == 0 || trileptr.trixels[x-1][y][z].empty then res |= xx Trile_Side.BACK; - - return res; -} - -meshgen :: (trile: *Trile) { - for trileSideValues { - - } -} diff --git a/src/rendering/pipelines.jai b/src/rendering/pipelines.jai deleted file mode 100644 index 2c50c87..0000000 --- a/src/rendering/pipelines.jai +++ /dev/null @@ -1,1759 +0,0 @@ -SHADOWMAP_SIZE :: 1500; - -Pipeline_Binding :: struct { - pipeline : sg_pipeline; - bind : sg_bindings; - attachments : sg_attachments; - pass_action : sg_pass_action; -} - -g_specular_lut : sg_image; -g_brdf_lut : sg_image; -g_rdm_fallback : sg_image; // 1x1 black image used when a chunk has no baked RDM data -g_rdm_atlas : sg_image; // global RGBA16F atlas holding RDM hemispheres for flagged instances (populated in Steps 5-6) -g_sh_fallback : sg_image; // 1x1 black 2D image used when a chunk has no SH probe grid - -g_shadowmap : sg_image; -g_shadowmap_img : sg_image; -g_shadowmap_attachments : sg_attachments; -g_shadowmap_sampler : sg_sampler; - -g_rendertex : sg_image; -g_rendertex_depth : sg_image; -g_rendertex_attachments : sg_attachments; - -g_gbuf_position : sg_image; -g_gbuf_normal : sg_image; -g_gbuf_worldpos : sg_image; -g_gbuf_depth : sg_image; -g_gbuf_attachments : sg_attachments; - -g_ssaobuf : sg_image; -g_ssao_noise_buf : sg_image; -g_ssaobuf_depth : sg_image; -g_ssao_attachments : sg_attachments; - -g_sh_irradiance : sg_image; -g_sh_irradiance_attach : sg_attachments; - -g_postprocess_a : sg_image; -g_postprocess_b : sg_image; -g_postprocess_a_depth : sg_image; -g_postprocess_b_depth : sg_image; -g_postprocess_attach_a : sg_attachments; -g_postprocess_attach_b : sg_attachments; - -g_bloom_down_1 : sg_image; g_bloom_down_1_attach : sg_attachments; -g_bloom_down_2 : sg_image; g_bloom_down_2_attach : sg_attachments; -g_bloom_down_3 : sg_image; g_bloom_down_3_attach : sg_attachments; -g_bloom_down_4 : sg_image; g_bloom_down_4_attach : sg_attachments; -g_bloom_up_3 : sg_image; g_bloom_up_3_attach : sg_attachments; -g_bloom_up_2 : sg_image; g_bloom_up_2_attach : sg_attachments; -g_bloom_up_1 : sg_image; g_bloom_up_1_attach : sg_attachments; - -g_dof_tex : sg_image; -g_dof_attach : sg_attachments; -g_dof_downsample_tex : sg_image; -g_dof_downsample_attach: sg_attachments; - - -gPipelines : struct { - // G-Buffer generation for SSAO and other effects - gbuffer: Pipeline_Binding; - - // Arbitrary triangle rendering for rendering 2D things on the screen. - // Used for UI rendering. - arbtri : Pipeline_Binding; - - // Trixel rendering. Used for Trile editor rendering, in-game triles are rendered from - // generated meshes. - trixel : Pipeline_Binding; - - // Sky rendering. - sky : Pipeline_Binding; - - // Renders sets of triles - trile : Pipeline_Binding; - - // Per-instance variant for triles flagged with sharp-specular RDM lookup - trile_rdm : Pipeline_Binding; - - // Depth-only shadow pass for triles (no lighting/RDM) - trile_shadow : Pipeline_Binding; - - // Cube-grid LOD pipeline for distant triles (vertex color, no ray-march) - trile_lod : Pipeline_Binding; - - // Renders the ground plane. (just water) - plane : Pipeline_Binding; - - // Post-processing pipeline - postprocess : Pipeline_Binding; - - op : Pipeline_Binding; - - mix : Pipeline_Binding; - - bloom_prefilter : Pipeline_Binding; - bloom_downsample : Pipeline_Binding; - bloom_upsample : Pipeline_Binding; - - dof_downsample : Pipeline_Binding; - dof_blur : Pipeline_Binding; - - billboard : Pipeline_Binding; - - gbuffer_billboard : Pipeline_Binding; - - particle_additive : Pipeline_Binding; - particle_alpha : Pipeline_Binding; - - ssao: Pipeline_Binding; - - sh_irradiance: Pipeline_Binding; - - debugline : Pipeline_Binding; - // Same shader, but depth testing disabled so editor gizmos draw on top. - debugline_overlay : Pipeline_Binding; -} - -create_final_image :: () { - // @ToDo: Some smarter logic for this. - w,h := get_render_size(); - - - if g_rendertex.id != INVALID_ID then sg_destroy_image(g_rendertex); - if g_rendertex_depth.id != INVALID_ID then sg_destroy_image(g_rendertex_depth); - - img_desc := sg_image_desc.{ - width = w, - height = h, - pixel_format = .RGBA16F, - render_target = true, - }; - depth_desc := sg_image_desc.{ - width = w, - height = h, - pixel_format = .DEPTH, - render_target = true, - }; - g_rendertex = sg_make_image(*img_desc); - g_rendertex_depth = sg_make_image(*depth_desc); - attachmentsDesc : sg_attachments_desc; - attachmentsDesc = .{ - colors[0].image = g_rendertex, - depth_stencil.image = g_rendertex_depth, - }; - sg_destroy_attachments(g_rendertex_attachments); - g_rendertex_attachments = sg_make_attachments(*attachmentsDesc); -} - -create_shadowmap_image :: () { - w : s32 = SHADOWMAP_SIZE; - h : s32 = SHADOWMAP_SIZE; - - if g_shadowmap.id != INVALID_ID then sg_destroy_image(g_shadowmap); - - depth_desc := sg_image_desc.{ - width = w, - height = h, - pixel_format = .DEPTH, - render_target = true, - }; - img_desc := sg_image_desc.{ - width = w, - height = h, - pixel_format = .RGBA16F, - render_target = true, - }; - g_shadowmap = sg_make_image(*depth_desc); - g_shadowmap_img = sg_make_image(*img_desc); - attachmentsDesc : sg_attachments_desc; - attachmentsDesc = .{ - colors[0].image = g_shadowmap_img, - depth_stencil.image = g_shadowmap, - }; - sg_destroy_attachments(g_shadowmap_attachments); - g_shadowmap_attachments = sg_make_attachments(*attachmentsDesc); -} - -create_pipelines :: () { - create_gbuffer_images(); - create_gbuffer_pipeline(); - create_arbtri_pipeline(); - create_trixel_pipeline(); - create_trile_pipeline(); - create_trile_rdm_pipeline(); - create_trile_shadow_pipeline(); - create_trile_lod_pipeline(); - create_sky_pipeline(); - create_plane_pipeline(); - create_postprocess_pipeline(); - create_ssao_pipeline(); - create_op_pipeline(); - create_mix_pipeline(); - create_bloom_prefilter_pipeline(); - create_bloom_downsample_pipeline(); - create_bloom_upsample_pipeline(); - create_dof_downsample_pipeline(); - create_dof_blur_pipeline(); - create_billboard_pipeline(); - create_gbuffer_billboard_pipeline(); - create_particle_pipeline(); - create_debugline_pipeline(); - - create_shadowmap_image(); - create_final_image(); - create_ssao_images(); - create_sh_irradiance_pipeline(); - create_sh_irradiance_image(); - create_gbuffer_impostors(); -} - -create_gbuffer_images :: () { - w,h := get_render_size(); - - if g_gbuf_position.id != INVALID_ID then sg_destroy_image(g_gbuf_position); - if g_gbuf_normal.id != INVALID_ID then sg_destroy_image(g_gbuf_normal); - if g_gbuf_worldpos.id != INVALID_ID then sg_destroy_image(g_gbuf_worldpos); - if g_gbuf_depth.id != INVALID_ID then sg_destroy_image(g_gbuf_depth); - - img_desc := sg_image_desc.{ - width = w, - height = h, - pixel_format = .RGBA16F, - render_target = true, - }; - depth_desc := sg_image_desc.{ - width = w, - height = h, - pixel_format = .DEPTH, - render_target = true, - }; - - g_gbuf_position = sg_make_image(*img_desc); - g_gbuf_normal = sg_make_image(*img_desc); - g_gbuf_worldpos = sg_make_image(*img_desc); - g_gbuf_depth = sg_make_image(*depth_desc); - - attachmentsDesc : sg_attachments_desc; - attachmentsDesc = .{ - colors[0].image = g_gbuf_position, - colors[1].image = g_gbuf_normal, - colors[2].image = g_gbuf_worldpos, - depth_stencil.image = g_gbuf_depth, - }; - sg_destroy_attachments(g_gbuf_attachments); - g_gbuf_attachments = sg_make_attachments(*attachmentsDesc); -} - -TRIXEL_SIZE_HALF : float : 1.0/32.0; -TRIXEL_SIZE : float : 1.0/16.0; - -gArbtriMem : [100000*3*9]float; - -Position_Color :: struct { - pos: Vector4; - col: Vector4; -} - -create_trixel_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := trixel_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - pipeline.layout.buffers[1].stride = 4*3; - pipeline.layout.buffers[2].step_func = .PER_INSTANCE; - - pipeline.layout.attrs[ATTR_trixel_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.layout.attrs[ATTR_trixel_normal] = .{ format = .FLOAT3, buffer_index = 1 }; - pipeline.layout.attrs[ATTR_trixel_inst] = .{ format = .FLOAT4, buffer_index = 2 }; - pipeline.layout.attrs[ATTR_trixel_inst_col] = .{ format = .FLOAT4, buffer_index = 2 }; - pipeline.index_type = .UINT16; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - - color_state := sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - - }; - - vertices : [24]Vector3 = .[ - .{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2}, - .{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2} - ]; - - normals : [24]Vector3 = .[ - .{0.0, 0.0, 1.0}, - .{0.0, 0.0, 1.0}, - .{0.0, 0.0, 1.0}, - .{0.0, 0.0, 1.0}, - .{0.0, 0.0,-1.0}, - .{0.0, 0.0,-1.0}, - .{0.0, 0.0,-1.0}, - .{0.0, 0.0,-1.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0,-1.0, 0.0}, - .{0.0,-1.0, 0.0}, - .{0.0,-1.0, 0.0}, - .{0.0,-1.0, 0.0}, - .{1.0, 0.0, 0.0}, - .{1.0, 0.0, 0.0}, - .{1.0, 0.0, 0.0}, - .{1.0, 0.0, 0.0}, - .{-1.0, 0.0, 0.0}, - .{-1.0, 0.0, 0.0}, - .{-1.0, 0.0, 0.0}, - .{-1.0, 0.0, 0.0} - ]; - - k : u16 = 0; - i : u16 = 0; - - indices : [36]u16; - - while i < 36 { - indices[i] = 4*k; - indices[i + 1] = 4*k + 1; - indices[i + 2] = 4*k + 2; - indices[i + 3] = 4*k; - indices[i + 4] = 4*k + 2; - indices[i + 5] = 4*k + 3; - k += 1; - i += 6; - } - - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.trixel.pipeline = sg_make_pipeline(*pipeline); - - ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 36 * 2 } }; - vbuffer := sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 24 * 3 * 4 } }; - nbuffer := sg_buffer_desc.{ data = .{ ptr = normals.data, size = 24 * 3 * 4 } }; - instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 4096 * size_of(Position_Color)}; - - gPipelines.trixel.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.trixel.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.trixel.bind.vertex_buffers[1] = sg_make_buffer(*nbuffer); - gPipelines.trixel.bind.vertex_buffers[2] = sg_make_buffer(*instance_buffer); - - secondary_instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 4096 * size_of(Position_Color)}; - trixel_secondary_vbuf = sg_make_buffer(*secondary_instance_buffer); -} - -create_gbuffer_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := gbuffer_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - pipeline.layout.buffers[1].stride = 4*3; - - pipeline.layout.buffers[3].step_func = .PER_INSTANCE; - - instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 16 * 4096 * 4 * 4}; - - pipeline.layout.attrs[ATTR_trile_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.layout.attrs[ATTR_trile_normal] = .{ format = .FLOAT3, buffer_index = 1 }; - pipeline.layout.attrs[ATTR_trile_centre] = .{ format = .FLOAT3, buffer_index = 2 }; - pipeline.layout.attrs[ATTR_trile_instance] = .{ format = .FLOAT4, buffer_index = 3 }; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - - color_state_pos := sg_color_target_state.{ - pixel_format = .RGBA16F, - }; - color_state_normal := sg_color_target_state.{ - pixel_format = .RGBA16F, - }; - - - pipeline.color_count = 3; - pipeline.colors[0] = color_state_pos; - pipeline.colors[1] = color_state_normal; - pipeline.colors[2] = .{ pixel_format = .RGBA16F }; - - gPipelines.gbuffer.pipeline = sg_make_pipeline(*pipeline); - gPipelines.gbuffer.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - gPipelines.gbuffer.bind.vertex_buffers[3] = sg_make_buffer(*instance_buffer); -} - -create_trile_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := trile_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - pipeline.layout.buffers[1].stride = 4*3; - - pipeline.layout.buffers[3].step_func = .PER_INSTANCE; - - instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 16 * 4096 * 4 * 4}; - - pipeline.layout.attrs[ATTR_trile_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.layout.attrs[ATTR_trile_normal] = .{ format = .FLOAT3, buffer_index = 1 }; - pipeline.layout.attrs[ATTR_trile_centre] = .{ format = .FLOAT3, buffer_index = 2 }; - pipeline.layout.attrs[ATTR_trile_instance] = .{ format = .FLOAT4, buffer_index = 3 }; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - - color_state := sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - }; - - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.trile.pipeline = sg_make_pipeline(*pipeline); - gPipelines.trile.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - gPipelines.trile.bind.vertex_buffers[3] = sg_make_buffer(*instance_buffer); - gPipelines.trile.bind.samplers[3] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); -} - -create_trile_rdm_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := trile_rdm_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - pipeline.layout.buffers[1].stride = 4*3; - pipeline.layout.buffers[3].step_func = .PER_INSTANCE; - - instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 16 * 64 }; - - pipeline.layout.attrs[ATTR_trile_rdm_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.layout.attrs[ATTR_trile_rdm_normal] = .{ format = .FLOAT3, buffer_index = 1 }; - pipeline.layout.attrs[ATTR_trile_rdm_centre] = .{ format = .FLOAT3, buffer_index = 2 }; - pipeline.layout.attrs[ATTR_trile_rdm_instance] = .{ format = .FLOAT4, buffer_index = 3 }; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - - pipeline.color_count = 1; - pipeline.colors[0] = sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA, - }, - }; - - gPipelines.trile_rdm.pipeline = sg_make_pipeline(*pipeline); - gPipelines.trile_rdm.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - gPipelines.trile_rdm.bind.vertex_buffers[3] = sg_make_buffer(*instance_buffer); - gPipelines.trile_rdm.bind.samplers[3] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); -} - -create_trile_shadow_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := trile_shadow_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - pipeline.layout.buffers[1].stride = 4*3; - pipeline.layout.buffers[3].step_func = .PER_INSTANCE; - // Explicit locations matching layout(location=N) in the shader. - pipeline.layout.attrs[0] = .{ format = .FLOAT3, buffer_index = 0 }; // position - pipeline.layout.attrs[1] = .{ format = .FLOAT3, buffer_index = 1 }; // normal (slot match) - pipeline.layout.attrs[2] = .{ format = .FLOAT3, buffer_index = 2 }; // centre (slot match) - pipeline.layout.attrs[3] = .{ format = .FLOAT4, buffer_index = 3 }; // instance - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - pipeline.color_count = 1; - pipeline.colors[0].pixel_format = .RGBA16F; - gPipelines.trile_shadow.pipeline = sg_make_pipeline(*pipeline); -} - -create_trile_lod_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := trile_lod_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - pipeline.layout.buffers[1].stride = 4*3; - pipeline.layout.buffers[2].stride = 4*3; - pipeline.layout.buffers[3].step_func = .PER_INSTANCE; - - pipeline.layout.attrs[ATTR_trile_lod_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.layout.attrs[ATTR_trile_lod_normal] = .{ format = .FLOAT3, buffer_index = 1 }; - pipeline.layout.attrs[ATTR_trile_lod_color] = .{ format = .FLOAT3, buffer_index = 2 }; - pipeline.layout.attrs[ATTR_trile_lod_instance] = .{ format = .FLOAT4, buffer_index = 3 }; - - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - - pipeline.color_count = 1; - pipeline.colors[0] = sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA, - }, - }; - - gPipelines.trile_lod.pipeline = sg_make_pipeline(*pipeline); -} - -create_sky_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := sky_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - - pipeline.layout.attrs[ATTR_sky_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.index_type = .UINT16; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - - color_state := sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - }; - - - vertices : [24]Vector3 = .[ - .{-1, -1, 1}, - .{1, -1, 1}, - .{1, 1, 1}, - .{-1, 1, 1}, - .{-1, -1, -1}, - .{-1, 1, -1}, - .{1, 1, -1}, - .{1, -1, -1}, - .{-1, 1, -1}, - .{-1, 1, 1}, - .{1, 1, 1}, - .{1, 1, -1}, - .{-1, -1, -1}, - .{1, -1, -1}, - .{1, -1, 1}, - .{-1, -1, 1}, - .{1, -1, -1}, - .{1, 1, -1}, - .{1, 1, 1}, - .{1, -1, 1}, - .{-1, -1, -1}, - .{-1, -1, 1}, - .{-1, 1, 1}, - .{-1, 1, -1} - ]; - - k : u16 = 0; - i : u16 = 0; - - indices : [36]u16; - - while i < 36 { - indices[i] = 4*k; - indices[i + 1] = 4*k + 1; - indices[i + 2] = 4*k + 2; - indices[i + 3] = 4*k; - indices[i + 4] = 4*k + 2; - indices[i + 5] = 4*k + 3; - k += 1; - i += 6; - } - - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.sky.pipeline = sg_make_pipeline(*pipeline); - - ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 36 * 2 } }; - vbuffer := sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 24 * 3 * 4 } }; - - gPipelines.sky.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.sky.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); -} - -create_plane_pipeline_reflection_images :: () { - binding := *gPipelines.plane.bind; - if binding.images[4].id != INVALID_ID then sg_destroy_image(binding.images[4]); - if binding.images[5].id != INVALID_ID then sg_destroy_image(binding.images[5]); - if binding.images[0].id != INVALID_ID then sg_destroy_image(binding.images[0]); - - w, h := get_render_size(); - img_desc := sg_image_desc.{ - width = w/3, - height = h/3, - pixel_format = .RGBA16F, - render_target = true, - }; - depth_desc := sg_image_desc.{ - width = w/3, - height = h/3, - pixel_format = .DEPTH, - render_target = true, - }; - binding.images[4] = sg_make_image(*img_desc); - img_desc.sample_count = 1; - binding.images[0] = sg_make_image(*img_desc); - binding.images[5] = sg_make_image(*depth_desc); - - attachmentsDesc : sg_attachments_desc; - attachmentsDesc = .{ - colors[0].image = gPipelines.plane.bind.images[0], - depth_stencil.image = gPipelines.plane.bind.images[5], - }; - - sg_destroy_attachments(gPipelines.plane.attachments); - gPipelines.plane.attachments = sg_make_attachments(*attachmentsDesc); -} - -create_plane_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := plane_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - - - pipeline.layout.attrs[ATTR_plane_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.index_type = .UINT16; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH - }; - - color_state := sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - }; - - vertices: [4]Vector3 = .[ - .{-1.0, 0.0, -1.0}, - .{ 1.0, 0.0, -1.0}, - .{ 1.0, 0.0, 1.0}, - .{-1.0, 0.0, 1.0}, - ]; - - indices: [6]u16 = .[ - 0, 1, 2, - 0, 2, 3, - ]; - - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.plane.pipeline = sg_make_pipeline(*pipeline); - - ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 6 * 2 } }; - vbuffer := sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 4 * 3 * 4 } }; - - gPipelines.plane.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.plane.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - create_plane_pipeline_reflection_images(); - - - - gPipelines.plane.pass_action = .{ - colors[0] = .{ load_action = .CLEAR, clear_value = .{ 0.25, 0.25, 0.25, 1.0 } }, - }; - - gPipelines.plane.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); - - g_shadowmap_sampler = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - compare = .LESS, - })); - - gPipelines.plane.bind.samplers[1] = g_shadowmap_sampler; - - gPipelines.plane.bind.samplers[2] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .REPEAT, - wrap_v = .REPEAT, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); - - ground_img_desc := sg_image_desc.{ - width = 1000, - height = 1000, - pixel_format = .RGBA8, - render_target = false, - sample_count = 1, - usage = .DYNAMIC, - }; -} - -create_arbtri_pipeline :: () { - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := triangle_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_triangle_position] = .{ format = .FLOAT3 }; - pipeline.layout.attrs[ATTR_triangle_color0] = .{ format = .FLOAT4 }; - pipeline.layout.attrs[ATTR_triangle_uv] = .{ format = .FLOAT2 }; - - color_state := sg_color_target_state.{ - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - }; - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.arbtri.pipeline = sg_make_pipeline(*pipeline); - - buffer := sg_buffer_desc.{ usage = .DYNAMIC, size = size_of(type_of(gArbtriMem)) }; - gPipelines.arbtri.bind.vertex_buffers[0] = sg_make_buffer(*buffer); - gPipelines.arbtri.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - -} - -create_postprocess_pipeline :: () { - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := postprocess_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_postprocess_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_postprocess_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - - color_state := sg_color_target_state.{ - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - }; - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.postprocess.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), // top-let - -1.0, -1.0, 0.0, flip_if_plat(0.0), // bottom-let - 1.0, -1.0, 1.0, flip_if_plat(0.0), // bottom-right - 1.0, 1.0, 1.0, flip_if_plat(1.0), // top-right - ]; - quad_indices : [6]u16 = .[ - 0, 1, 2, 0, 2, 3 - ]; - - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ - ptr = quad_vertices.data, - size = 16 * 4 - }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ - ptr = quad_indices.data, - size = 6 * 2 - }, - type = .INDEXBUFFER, - }; - - gPipelines.postprocess.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.postprocess.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.postprocess.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - - gPipelines.postprocess.bind.samplers[1] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); - - gPipelines.postprocess.bind.samplers[2] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); - - gPipelines.postprocess.bind.samplers[3] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); - - gPipelines.postprocess.bind.samplers[4] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - -} - -// Takes in a texture, manipulates it and outputs it. -create_op_pipeline :: () { - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := op_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_op_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_op_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - - color_state := sg_color_target_state.{ - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - }, - pixel_format = .RGBA16F, - }; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH - }; - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.op.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), // top-let - -1.0, -1.0, 0.0, flip_if_plat(0.0), // bottom-let - 1.0, -1.0, 1.0, flip_if_plat(0.0), // bottom-right - 1.0, 1.0, 1.0, flip_if_plat(1.0), // top-right - ]; - quad_indices : [6]u16 = .[ - 0, 1, 2, 0, 2, 3 - ]; - - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ - ptr = quad_vertices.data, - size = 16 * 4 - }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ - ptr = quad_indices.data, - size = 6 * 2 - }, - type = .INDEXBUFFER, - }; - - gPipelines.op.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.op.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.op.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - -} - -create_billboard_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := billboard_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - - pipeline.layout.attrs[ATTR_billboard_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.index_type = .UINT16; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH - }; - - color_state := sg_color_target_state.{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - } - }; - - vertices: [4]Vector3 = .[ - .{ 0.0, 0.0, 0.0}, - .{ 1.0, 0.0, 0.0}, - .{ 1.0, 1.0, 0.0}, - .{ 0.0, 1.0, 0.0}, - ]; - - indices: [6]u16 = .[ - 0, 1, 2, - 0, 2, 3, - ]; - - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.billboard.pipeline = sg_make_pipeline(*pipeline); - - ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 6 * 2 } }; - vbuffer := sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 4 * 3 * 4 } }; - - gPipelines.billboard.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.billboard.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - - gPipelines.billboard.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); -} - -create_gbuffer_billboard_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := gbuffer_billboard_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 4*3; - - pipeline.layout.attrs[ATTR_billboard_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.index_type = .UINT16; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH - }; - - color_state_pos := sg_color_target_state.{ - pixel_format = .RGBA16F, - }; - color_state_normal := sg_color_target_state.{ - pixel_format = .RGBA16F, - }; - - - pipeline.color_count = 3; - pipeline.colors[0] = color_state_pos; - pipeline.colors[1] = color_state_normal; - pipeline.colors[2] = .{ pixel_format = .RGBA16F }; - - vertices: [4]Vector3 = .[ - .{ 0.0, 0.0, 0.0}, - .{ 1.0, 0.0, 0.0}, - .{ 1.0, 1.0, 0.0}, - .{ 0.0, 1.0, 0.0}, - ]; - - indices: [6]u16 = .[ - 0, 1, 2, - 0, 2, 3, - ]; - - gPipelines.gbuffer_billboard.pipeline = sg_make_pipeline(*pipeline); - - ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 6 * 2 } }; - vbuffer := sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 4 * 3 * 4 } }; - - gPipelines.gbuffer_billboard.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.gbuffer_billboard.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - - gPipelines.gbuffer_billboard.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); -} - -// Takes in 2-3 textures, and mixes them. -create_mix_pipeline :: () { - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := mix_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_mix_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_mix_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - - color_state := sg_color_target_state.{ - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - }, - pixel_format = .RGBA16F, - }; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH - }; - - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - - gPipelines.mix.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), // top-let - -1.0, -1.0, 0.0, flip_if_plat(0.0), // bottom-let - 1.0, -1.0, 1.0, flip_if_plat(0.0), // bottom-right - 1.0, 1.0, 1.0, flip_if_plat(1.0), // top-right - ]; - quad_indices : [6]u16 = .[ - 0, 1, 2, 0, 2, 3 - ]; - - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ - ptr = quad_vertices.data, - size = 16 * 4 - }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ - ptr = quad_indices.data, - size = 6 * 2 - }, - type = .INDEXBUFFER, - }; - - gPipelines.mix.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.mix.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.mix.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - -} - -bloom_quad_vbuffer : sg_buffer; -bloom_quad_ibuffer : sg_buffer; - -create_bloom_quad_buffers :: () { - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), - -1.0, -1.0, 0.0, flip_if_plat(0.0), - 1.0, -1.0, 1.0, flip_if_plat(0.0), - 1.0, 1.0, 1.0, flip_if_plat(1.0), - ]; - quad_indices : [6]u16 = .[ 0, 1, 2, 0, 2, 3 ]; - bloom_quad_vbuffer = sg_make_buffer(*(sg_buffer_desc.{ size = size_of(float) * 16, data = .{ ptr = quad_vertices.data, size = 16 * 4 }})); - bloom_quad_ibuffer = sg_make_buffer(*(sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ ptr = quad_indices.data, size = 6 * 2 }, type = .INDEXBUFFER })); -} - -linear_clamp_sampler :: () -> sg_sampler { - return sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); -} - -create_bloom_prefilter_pipeline :: () { - create_bloom_quad_buffers(); - pipeline: sg_pipeline_desc; - pipeline.shader = sg_make_shader(*bloom_prefilter_shader_desc(sg_query_backend())); - pipeline.layout.attrs[ATTR_bloom_prefilter_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_bloom_prefilter_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - pipeline.depth.pixel_format = .NONE; - pipeline.color_count = 1; - pipeline.colors[0] = .{ pixel_format = .RGBA16F }; - gPipelines.bloom_prefilter.pipeline = sg_make_pipeline(*pipeline); - gPipelines.bloom_prefilter.bind.vertex_buffers[0] = bloom_quad_vbuffer; - gPipelines.bloom_prefilter.bind.index_buffer = bloom_quad_ibuffer; - gPipelines.bloom_prefilter.bind.samplers[SMP_bloom_prefilter_src_smp] = linear_clamp_sampler(); -} - -create_bloom_downsample_pipeline :: () { - pipeline: sg_pipeline_desc; - pipeline.shader = sg_make_shader(*bloom_downsample_shader_desc(sg_query_backend())); - pipeline.layout.attrs[ATTR_bloom_downsample_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_bloom_downsample_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - pipeline.depth.pixel_format = .NONE; - pipeline.color_count = 1; - pipeline.colors[0] = .{ pixel_format = .RGBA16F }; - gPipelines.bloom_downsample.pipeline = sg_make_pipeline(*pipeline); - gPipelines.bloom_downsample.bind.vertex_buffers[0] = bloom_quad_vbuffer; - gPipelines.bloom_downsample.bind.index_buffer = bloom_quad_ibuffer; - gPipelines.bloom_downsample.bind.samplers[SMP_bloom_downsample_src_smp] = linear_clamp_sampler(); -} - -create_bloom_upsample_pipeline :: () { - pipeline: sg_pipeline_desc; - pipeline.shader = sg_make_shader(*bloom_upsample_shader_desc(sg_query_backend())); - pipeline.layout.attrs[ATTR_bloom_upsample_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_bloom_upsample_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - pipeline.depth.pixel_format = .NONE; - pipeline.color_count = 1; - pipeline.colors[0] = .{ pixel_format = .RGBA16F }; - gPipelines.bloom_upsample.pipeline = sg_make_pipeline(*pipeline); - gPipelines.bloom_upsample.bind.vertex_buffers[0] = bloom_quad_vbuffer; - gPipelines.bloom_upsample.bind.index_buffer = bloom_quad_ibuffer; - gPipelines.bloom_upsample.bind.samplers[SMP_bloom_upsample_small_smp] = linear_clamp_sampler(); - gPipelines.bloom_upsample.bind.samplers[SMP_bloom_upsample_large_smp] = linear_clamp_sampler(); -} - -create_dof_downsample_pipeline :: () { - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := dof_downsample_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_dof_downsample_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_dof_downsample_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - pipeline.depth.pixel_format = .NONE; - - pipeline.color_count = 1; - pipeline.colors[0] = .{ pixel_format = .RGBA16F }; - - gPipelines.dof_downsample.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), - -1.0, -1.0, 0.0, flip_if_plat(0.0), - 1.0, -1.0, 1.0, flip_if_plat(0.0), - 1.0, 1.0, 1.0, flip_if_plat(1.0), - ]; - quad_indices : [6]u16 = .[ - 0, 1, 2, 0, 2, 3 - ]; - - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ - ptr = quad_vertices.data, - size = 16 * 4 - }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ - ptr = quad_indices.data, - size = 6 * 2 - }, - type = .INDEXBUFFER, - }; - - gPipelines.dof_downsample.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.dof_downsample.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.dof_downsample.bind.samplers[SMP_dof_downsample_src_smp] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); -} - -create_dof_blur_pipeline :: () { - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := dof_blur_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_dof_blur_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_dof_blur_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - pipeline.depth.pixel_format = .NONE; - - pipeline.color_count = 1; - pipeline.colors[0] = .{ pixel_format = .RGBA16F }; - - gPipelines.dof_blur.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), - -1.0, -1.0, 0.0, flip_if_plat(0.0), - 1.0, -1.0, 1.0, flip_if_plat(0.0), - 1.0, 1.0, 1.0, flip_if_plat(1.0), - ]; - quad_indices : [6]u16 = .[ - 0, 1, 2, 0, 2, 3 - ]; - - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ - ptr = quad_vertices.data, - size = 16 * 4 - }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ - ptr = quad_indices.data, - size = 6 * 2 - }, - type = .INDEXBUFFER, - }; - - gPipelines.dof_blur.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.dof_blur.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.dof_blur.bind.samplers[SMP_dof_blur_src_smp] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .LINEAR, - mag_filter = .LINEAR, - })); -} - -create_sh_irradiance_image :: () { - w, h := get_render_size(); - if g_sh_irradiance.id != INVALID_ID then sg_destroy_image(g_sh_irradiance); - g_sh_irradiance = sg_make_image(*(sg_image_desc.{ - width = w / 2, - height = h / 2, - pixel_format = .RGBA16F, - render_target = true, - sample_count = 1, - })); - sg_destroy_attachments(g_sh_irradiance_attach); - g_sh_irradiance_attach = sg_make_attachments(*(sg_attachments_desc.{ - colors[0].image = g_sh_irradiance, - })); -} - -create_sh_irradiance_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := sh_deferred_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.attrs[ATTR_sh_deferred_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_sh_deferred_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - pipeline.depth.pixel_format = .NONE; - pipeline.color_count = 1; - pipeline.colors[0] = .{ pixel_format = .RGBA16F }; - gPipelines.sh_irradiance.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), - -1.0, -1.0, 0.0, flip_if_plat(0.0), - 1.0, -1.0, 1.0, flip_if_plat(0.0), - 1.0, 1.0, 1.0, flip_if_plat(1.0), - ]; - quad_indices : [6]u16 = .[ 0, 1, 2, 0, 2, 3 ]; - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ ptr = quad_vertices.data, size = 16 * 4 }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ ptr = quad_indices.data, size = 6 * 2 }, type = .INDEXBUFFER }; - gPipelines.sh_irradiance.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.sh_irradiance.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.sh_irradiance.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); -} - -create_ssao_images :: () { - if g_ssaobuf.id != INVALID_ID then sg_destroy_image(g_ssaobuf); - if g_ssaobuf_depth.id != INVALID_ID then sg_destroy_image(g_ssaobuf_depth); - if g_postprocess_a.id != INVALID_ID then sg_destroy_image(g_postprocess_a); - if g_postprocess_a_depth.id != INVALID_ID then sg_destroy_image(g_postprocess_a_depth); - if g_postprocess_b.id != INVALID_ID then sg_destroy_image(g_postprocess_b); - if g_postprocess_b_depth.id != INVALID_ID then sg_destroy_image(g_postprocess_b_depth); - w,h := get_render_size(); - img_desc := sg_image_desc.{ - width = w/2, - height = h/2, - render_target = true, - pixel_format = .RGBA16F - }; - img_desc.sample_count = 1; - g_ssaobuf = sg_make_image(*img_desc); - img_desc.width *= 2; img_desc.height *= 2; - g_postprocess_a = sg_make_image(*img_desc); - g_postprocess_b = sg_make_image(*img_desc); - img_desc = sg_image_desc.{ - width = w/2, - height = h/2, - pixel_format = .DEPTH, - render_target = true, - }; - img_desc.sample_count = 1; - g_ssaobuf_depth = sg_make_image(*img_desc); - img_desc.width *= 2; img_desc.height *= 2; - g_postprocess_a_depth = sg_make_image(*img_desc); - g_postprocess_b_depth = sg_make_image(*img_desc); - - attachmentsDesc := sg_attachments_desc.{ - colors[0].image = g_ssaobuf, - depth_stencil.image = g_ssaobuf_depth - }; - sg_destroy_attachments(g_ssao_attachments); - g_ssao_attachments = sg_make_attachments(*attachmentsDesc); - - attachmentsDescA := sg_attachments_desc.{ - colors[0].image = g_postprocess_a, - depth_stencil.image = g_postprocess_a_depth - }; - attachmentsDescB := sg_attachments_desc.{ - colors[0].image = g_postprocess_b, - depth_stencil.image = g_postprocess_b_depth - }; - sg_destroy_attachments(g_postprocess_attach_a); - g_postprocess_attach_a = sg_make_attachments(*attachmentsDescA); - sg_destroy_attachments(g_postprocess_attach_b); - g_postprocess_attach_b = sg_make_attachments(*attachmentsDescB); - - bloom_levels := sg_image.[g_bloom_down_1, g_bloom_down_2, g_bloom_down_3, g_bloom_down_4, g_bloom_up_3, g_bloom_up_2, g_bloom_up_1]; - for * bloom_levels { if it.id != INVALID_ID then sg_destroy_image((.*)it); } - - make_bloom_level :: (img: *sg_image, attach: *sg_attachments, width: s32, height: s32) { - (.*)img = sg_make_image(*(sg_image_desc.{ width=width, height=height, pixel_format=.RGBA16F, render_target=true, sample_count=1 })); - sg_destroy_attachments((.*)attach); - (.*)attach = sg_make_attachments(*(sg_attachments_desc.{ colors[0].image = (.*)img })); - } - - make_bloom_level(*g_bloom_down_1, *g_bloom_down_1_attach, w/2, h/2); - make_bloom_level(*g_bloom_down_2, *g_bloom_down_2_attach, w/4, h/4); - make_bloom_level(*g_bloom_down_3, *g_bloom_down_3_attach, w/8, h/8); - make_bloom_level(*g_bloom_down_4, *g_bloom_down_4_attach, w/16, h/16); - make_bloom_level(*g_bloom_up_3, *g_bloom_up_3_attach, w/8, h/8); - make_bloom_level(*g_bloom_up_2, *g_bloom_up_2_attach, w/4, h/4); - make_bloom_level(*g_bloom_up_1, *g_bloom_up_1_attach, w/2, h/2); - - if g_dof_tex.id != INVALID_ID then sg_destroy_image(g_dof_tex); - if g_dof_downsample_tex.id != INVALID_ID then sg_destroy_image(g_dof_downsample_tex); - - dof_img_desc := sg_image_desc.{ - width = w/2, - height = h/2, - pixel_format = .RGBA16F, - render_target = true, - sample_count = 1, - }; - g_dof_tex = sg_make_image(*dof_img_desc); - g_dof_downsample_tex = sg_make_image(*dof_img_desc); - - sg_destroy_attachments(g_dof_attach); - g_dof_attach = sg_make_attachments(*(sg_attachments_desc.{ - colors[0].image = g_dof_tex, - })); - sg_destroy_attachments(g_dof_downsample_attach); - g_dof_downsample_attach = sg_make_attachments(*(sg_attachments_desc.{ - colors[0].image = g_dof_downsample_tex, - })); -} - -create_ssao_pipeline :: () { - init_ssao(); - platconf := get_plat_conf(); - pipeline: sg_pipeline_desc; - shader_desc := ssao_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - - pipeline.layout.attrs[ATTR_ssao_position] = .{ format = .FLOAT2 }; - pipeline.layout.attrs[ATTR_ssao_uv] = .{ format = .FLOAT2 }; - pipeline.index_type = .UINT16; - - color_state := sg_color_target_state.{ - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA - }, - pixel_format = .RGBA16F, - }; - - pipeline.color_count = 1; - pipeline.depth = .{ - write_enabled = true, - compare = .LESS_EQUAL, - pixel_format = .DEPTH - }; - pipeline.colors[0] = color_state; - - gPipelines.ssao.pipeline = sg_make_pipeline(*pipeline); - - quad_vertices : [16]float = .[ - -1.0, 1.0, 0.0, flip_if_plat(1.0), // top-let - -1.0, -1.0, 0.0, flip_if_plat(0.0), // bottom-let - 1.0, -1.0, 1.0, flip_if_plat(0.0), // bottom-right - 1.0, 1.0, 1.0, flip_if_plat(1.0), // top-right - ]; - quad_indices : [6]u16 = .[ - 0, 1, 2, 0, 2, 3 - ]; - - vbuffer := sg_buffer_desc.{ size = size_of(float) * 16, data = .{ - ptr = quad_vertices.data, - size = 16 * 4 - }}; - ibuffer := sg_buffer_desc.{ size = size_of(u16) * 6, data = .{ - ptr = quad_indices.data, - size = 6 * 2 - }, - type = .INDEXBUFFER, - }; - - gPipelines.ssao.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer); - gPipelines.ssao.bind.index_buffer = sg_make_buffer(*ibuffer); - gPipelines.ssao.bind.samplers[0] = sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .REPEAT, - wrap_v = .REPEAT, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - - - imgdata : sg_image_data; - imgdata.subimage[0][0] = .{g_ssao_noise.data, cast(u64) (16*4*4)}; - texdesc : sg_image_desc = .{ - render_target = false, - width = 4, - height = 4, - pixel_format = sg_pixel_format.RGBA32F, - sample_count = 1, - data = imgdata - }; - g_ssao_noise_buf = sg_make_image(*texdesc); -} - -init_plane_textures :: () { - gPipelines.plane.bind.images[2] = get_texture_from_pack("core", "utiltex/water_small.png"); -} - -init_brdf_lut :: () { - g_brdf_lut = get_texture_from_pack("core", "utiltex/lut.png"); - if g_brdf_lut.id == INVALID_ID { - // Create a 1x1 fallback so sokol doesn't drop draw calls - pixels : [4]u8 = .[255, 255, 255, 255]; - imgdata : sg_image_data; - imgdata.subimage[0][0] = .{ pixels.data, 4 }; - desc := sg_image_desc.{ - width = 1, - height = 1, - pixel_format = .RGBA8, - data = imgdata, - }; - g_brdf_lut = sg_make_image(*desc); - } - - { - pixels : [4]u8 = .[0, 0, 0, 0]; - imgdata : sg_image_data; - imgdata.subimage[0][0] = .{ pixels.data, 4 }; - desc := sg_image_desc.{ - width = 1, - height = 1, - pixel_format = .RGBA8, - data = imgdata, - }; - g_rdm_fallback = sg_make_image(*desc); - - zero_sh : [4]u16 = .[0, 0, 0, 0]; - sh_imgdata : sg_image_data; - sh_imgdata.subimage[0][0] = .{ zero_sh.data, size_of(type_of(zero_sh)) }; - sh_desc := sg_image_desc.{ - width = 1, - height = 1, - pixel_format = .RGBA16F, - data = sh_imgdata, - }; - g_sh_fallback = sg_make_image(*sh_desc); - - zero_atlas : [4]u16 = .[0, 0, 0, 0]; - atlas_imgdata : sg_image_data; - atlas_imgdata.subimage[0][0] = .{ zero_atlas.data, size_of(type_of(zero_atlas)) }; - atlas_desc := sg_image_desc.{ - width = 1, - height = 1, - pixel_format = .RGBA16F, - data = atlas_imgdata, - }; - g_rdm_atlas = sg_make_image(*atlas_desc); - } -} - -g_plane_gbuffer_vertex_buffer : sg_buffer; -g_plane_gbuffer_normal_buffer : sg_buffer; -g_plane_gbuffer_center_buffer : sg_buffer; -g_plane_gbuffer_instance_buffer : sg_buffer; - -create_gbuffer_impostors :: () { - plane_vertices: [6]Vector3 = .[ - .{-1.0, 0.0, -1.0}, - .{ 1.0, 0.0, -1.0}, - .{ 1.0, 0.0, 1.0}, - .{-1.0, 0.0, -1.0}, - .{ 1.0, 0.0, 1.0}, - .{-1.0, 0.0, 1.0}, - ]; - vbuffer := sg_buffer_desc.{ size = size_of(float) * 18, data = .{ - ptr = plane_vertices.data, - size = 6 * 3 * 4 - }}; - g_plane_gbuffer_vertex_buffer = sg_make_buffer(*vbuffer); - - plane_normals: [6]Vector3 = .[ - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - ]; - nbuffer := sg_buffer_desc.{ size = size_of(float) * 18, data = .{ - ptr = plane_normals.data, - size = 6 * 3 * 4 - }}; - g_plane_gbuffer_normal_buffer = sg_make_buffer(*nbuffer); - - plane_centers: [2]Vector3 = .[ // these are useless, just to fill the pipeline requirement. - .{0.0, 1.0, 0.0}, - .{0.0, 1.0, 0.0}, - ]; - cbuffer := sg_buffer_desc.{ size = size_of(float) * 6, data = .{ - ptr = plane_centers.data, - size = 3 * 2 * 4 - }}; - g_plane_gbuffer_center_buffer = sg_make_buffer(*cbuffer); - - instances: [1]Vector4 = .[.{0,0,0,0}]; - instance_buffer := sg_buffer_desc.{size = 4 * 4, data = .{ - ptr = instances.data, - size = 4*4, - }}; - g_plane_gbuffer_instance_buffer = sg_make_buffer(*instance_buffer); - -} - -create_particle_pipeline :: () { - pipeline: sg_pipeline_desc; - shader_desc := particle_shader_desc(sg_query_backend()); - shd := sg_make_shader(*shader_desc); - pipeline.shader = shd; - - pipeline.layout.buffers[0].stride = 4 * 3; - pipeline.layout.buffers[1].stride = 4 * 4; - pipeline.layout.buffers[1].step_func = .PER_INSTANCE; - pipeline.layout.buffers[2].stride = 4 * 4; - pipeline.layout.buffers[2].step_func = .PER_INSTANCE; - pipeline.layout.buffers[3].stride = 4 * 4; - pipeline.layout.buffers[3].step_func = .PER_INSTANCE; - - pipeline.layout.attrs[ATTR_particle_position] = .{ format = .FLOAT3, buffer_index = 0 }; - pipeline.layout.attrs[ATTR_particle_inst_pos_size] = .{ format = .FLOAT4, buffer_index = 1 }; - pipeline.layout.attrs[ATTR_particle_inst_uv_rect] = .{ format = .FLOAT4, buffer_index = 2 }; - pipeline.layout.attrs[ATTR_particle_inst_color] = .{ format = .FLOAT4, buffer_index = 3 }; - - pipeline.index_type = .UINT16; - pipeline.depth = .{ - write_enabled = false, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - pipeline.color_count = 1; - - pipeline.colors[0] = .{ - pixel_format = .RGBA16F, - blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE, - src_factor_alpha = .ONE, - dst_factor_alpha = .ONE, - }, - }; - gPipelines.particle_additive.pipeline = sg_make_pipeline(*pipeline); - - pipeline.colors[0].blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA, - src_factor_alpha = .ONE, - dst_factor_alpha = .ONE_MINUS_SRC_ALPHA, - }; - gPipelines.particle_alpha.pipeline = sg_make_pipeline(*pipeline); - - vertices: [4]Vector3 = .[ - .{ 0.0, 0.0, 0.0 }, - .{ 1.0, 0.0, 0.0 }, - .{ 1.0, 1.0, 0.0 }, - .{ 0.0, 1.0, 0.0 }, - ]; - - indices: [6]u16 = .[ - 0, 1, 2, - 0, 2, 3, - ]; - - idx_buf := sg_make_buffer(*(sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 6 * 2 } })); - vtx_buf := sg_make_buffer(*(sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 4 * 3 * 4 } })); - inst1 := sg_make_buffer(*(sg_buffer_desc.{ size = cast(u64)(MAX_PARTICLES * size_of(Vector4)), usage = .STREAM })); - inst2 := sg_make_buffer(*(sg_buffer_desc.{ size = cast(u64)(MAX_PARTICLES * size_of(Vector4)), usage = .STREAM })); - inst3 := sg_make_buffer(*(sg_buffer_desc.{ size = cast(u64)(MAX_PARTICLES * size_of(Vector4)), usage = .STREAM })); - smp := sg_make_sampler(*(sg_sampler_desc.{ - wrap_u = .CLAMP_TO_EDGE, - wrap_v = .CLAMP_TO_EDGE, - min_filter = .NEAREST, - mag_filter = .NEAREST, - })); - - setup_bind :: (bind: *sg_bindings, idx_buf: sg_buffer, vtx_buf: sg_buffer, inst1: sg_buffer, inst2: sg_buffer, inst3: sg_buffer, smp: sg_sampler) { - bind.index_buffer = idx_buf; - bind.vertex_buffers[0] = vtx_buf; - bind.vertex_buffers[1] = inst1; - bind.vertex_buffers[2] = inst2; - bind.vertex_buffers[3] = inst3; - bind.samplers[SMP_particle_spritesmp] = smp; - } - setup_bind(*gPipelines.particle_additive.bind, idx_buf, vtx_buf, inst1, inst2, inst3, smp); - setup_bind(*gPipelines.particle_alpha.bind, idx_buf, vtx_buf, inst1, inst2, inst3, smp); -} - -create_debugline_pipeline :: () { - // The two corner coordinates of a quad: x picks the side of the line, y picks - // the end. The vertex shader turns those into a screen-space widened line. - corners := float.[ - -1, 0, 1, 0, 1, 1, - -1, 0, 1, 1, -1, 1, - ]; - quad_desc := sg_buffer_desc.{ - data = .{ ptr = corners.data, size = size_of(type_of(corners)) }, - label = "debug_line_quad", - }; - quad_buffer := sg_make_buffer(*quad_desc); - - buf_desc := sg_buffer_desc.{ - size = DEBUG_LINE_MAX * size_of(Debug_Line), - usage = .DYNAMIC, - label = "debug_line_instances", - }; - gPipelines.debugline.bind.vertex_buffers[0] = quad_buffer; - gPipelines.debugline.bind.vertex_buffers[1] = sg_make_buffer(*buf_desc); - - overlay_buf_desc := sg_buffer_desc.{ - size = DEBUG_OVERLAY_LINE_MAX * size_of(Debug_Line), - usage = .DYNAMIC, - label = "debug_line_overlay_instances", - }; - gPipelines.debugline_overlay.bind.vertex_buffers[0] = quad_buffer; - gPipelines.debugline_overlay.bind.vertex_buffers[1] = sg_make_buffer(*overlay_buf_desc); - - pipeline : sg_pipeline_desc; - shader_desc := debugline_shader_desc(sg_query_backend()); - pipeline.shader = sg_make_shader(*shader_desc); - pipeline.layout.buffers[0].stride = 2 * size_of(float); - pipeline.layout.buffers[1].stride = size_of(Debug_Line); - pipeline.layout.buffers[1].step_func = .PER_INSTANCE; - pipeline.layout.attrs[ATTR_debugline_a_corner] = .{ format = .FLOAT2, buffer_index = 0, offset = 0 }; - pipeline.layout.attrs[ATTR_debugline_a_pos_a] = .{ format = .FLOAT3, buffer_index = 1, offset = 0 }; - pipeline.layout.attrs[ATTR_debugline_a_pos_b] = .{ format = .FLOAT3, buffer_index = 1, offset = 12 }; - pipeline.layout.attrs[ATTR_debugline_a_col] = .{ format = .FLOAT4, buffer_index = 1, offset = 24 }; - pipeline.layout.attrs[ATTR_debugline_a_width] = .{ format = .FLOAT, buffer_index = 1, offset = 40 }; - pipeline.depth = .{ - write_enabled = false, - compare = .LESS_EQUAL, - pixel_format = .DEPTH, - }; - color_state := sg_color_target_state.{ - pixel_format = .RGBA16F, - }; - pipeline.color_count = 1; - pipeline.colors[0] = color_state; - pipeline.label = "debugline_pipeline"; - gPipelines.debugline.pipeline = sg_make_pipeline(*pipeline); - - pipeline.depth.compare = .ALWAYS; - pipeline.colors[0].blend = .{ - enabled = true, - src_factor_rgb = .SRC_ALPHA, - dst_factor_rgb = .ONE_MINUS_SRC_ALPHA, - }; - pipeline.label = "debugline_overlay_pipeline"; - gPipelines.debugline_overlay.pipeline = sg_make_pipeline(*pipeline); -} diff --git a/src/rendering/post_processing.jai b/src/rendering/post_processing.jai deleted file mode 100644 index 4f7fae1..0000000 --- a/src/rendering/post_processing.jai +++ /dev/null @@ -1,107 +0,0 @@ -disable_dof_post_process : bool = false; - -Post_Process :: struct { - exposure : float = 1.0; @Slider,0,3,0.1; - contrast : float = 1.0; @Slider,0,3,0.1; - saturation : float = 1.0; @Slider,0.0,5.0,0.1; - gamma : float = 1.0; @Slider,0.3,3.0,0.1; - tonemap : float = 0.0; @Slider,0,1,1; - ssao : float = 0.0; @Slider,0,5,0.1; - ssao_size : s32 = 1; @Slider,0,5,1; - dilate_separation : float = 1.0; @Slider,0,6,0.1; - dilate_size : s32 = 0; @Slider,0,10,1; - dilate_min : float = 0.1; @Slider,0,1,0.1; - dilate_max : float = 0.3; @Slider,0,1,0.1; - dof_blur_size : float = 1.0; @Slider,0.0,2.0,0.1; - dof_min : float = 1.0; @Slider,0,10,1; - dof_max : float = 3.0; @Slider,0,50,1; - dof_point : float = 5.0; @Slider,0,30,1; - bloom_treshold : float = 0.4; @Slider,0,1,0.1; - bloom_amount : float = 0.0; @Slider,0,5,0.1; - - vignette_intensity: float = 0.0; @Slider,0,1,0.1; - vignette_radius : float = 0.5; @Slider,0,1,0.1; - scanlines_intensity: float = 0.0; @Slider,0,1,0.1; - scanlines_density : float = 1.0; @Slider,0,10,0.1; - chromatic_aberration_intensity: float = 0.0; @Slider,0,0.05,0.001; - film_grain_intensity: float = 0.0; @Slider,0,0.5,0.001; - barrel_distortion_intensity: float = 0.0; @Slider,-2,2,0.1; - lut_mode: s32 = 0; @Slider,0,2,1; // 0 -> no LUT, 1 -> LUT with interpolation 2 -> LUT no iterpolate - dither_intensity: float = 0.0; @Slider,0,1,0.05; -} - - -current_post_process : Post_Process; - -Lighting_Config :: struct { - ambient_intensity : float = 0.35; @Slider,0,2,0.05 - emissive_scale : float = 5.0; @Slider,0,20,0.5 - indirect_diff_scale : float = 1.0; @Slider,0,3,0.1 - indirect_spec_scale : float = 1.0; @Slider,0,3,0.1 - ambient_color : Vector3 = .{0.3,0.3,0.4}; @Color - indirect_tint : Vector3 = .{1.05,1.0,0.9}; @Color -} - -current_lighting_config : Lighting_Config; - -Post_Process_Save :: struct { - #as using pp: Post_Process; - lut_name: string; -} - -load_post_process_from_pack :: () { - s := load_string_from_pack("game_core", "postprocess.json"); - success, save := Jaison.json_parse_string(s, Post_Process_Save,, temp); - if success { - current_post_process = save.pp; - // Restore LUT selection by name. - if save.lut_name.count > 0 { - for LUT_list { - if it.name == save.lut_name { - g_current_lut_texture_index = cast(s32) it_index; - break; - } - } - } - } -} - -save_post_process :: () { - #if OS != .WASM { - file :: #import "File"; - save: Post_Process_Save; - save.pp = current_post_process; - if g_current_lut_texture_index >= 0 && g_current_lut_texture_index < LUT_list.count { - save.lut_name = LUT_list[g_current_lut_texture_index].name; - } - json := Jaison.json_write_string(save, " "); - file.write_entire_file(tprint("%/game_core/postprocess.json", GAME_RESOURCES_DIR), json); - } -} - -reset_post_process :: () { - load_post_process_from_pack(); -} @Command - -Color_LUT :: struct { - name: string; - image: sg_image; -} - -LUT_list : [..]Color_LUT; -LUT_name_list : [..]string; -g_current_lut_texture_index : s32 = 0; - - -add_image_to_lut_list :: (img: sg_image, name: string) { - for LUT_list { - if it.name == name then return; - } - - newSheet := Color_LUT.{ - name = sprint("%", name), - image = img, - }; - array_add(*LUT_list, newSheet); - array_add(*LUT_name_list, newSheet.name); -} diff --git a/src/rendering/rendering.jai b/src/rendering/rendering.jai index d79e943..50d2f29 100644 --- a/src/rendering/rendering.jai +++ b/src/rendering/rendering.jai @@ -1,49 +1,21 @@ -/* +// Rendering. Everything outside this directory goes through the Scene API in +// scene.jai and text.jai. - The rendering pipeline. - - @ToDo: Write something smart about our rendering - architecture. - -*/ - -#load "sky.jai"; -#load "ssao.jai"; -#load "core.jai"; -#load "tasks.jai"; +#load "scene.jai"; +#load "text.jai"; #load "camera.jai"; -#load "arbtri.jai"; #load "debug_draw.jai"; -#load "meshgen.jai"; -#load "lodgen.jai"; -#load "helpers.jai"; #load "animation.jai"; -#load "pipelines.jai"; -#load "post_processing.jai"; -#load "backend_sokol_helpers.jai"; -#scope_file - -initted : bool; -old_w : int; -old_h : int; - -on_window_resize :: () { - // Recreate textures that are rendering targets and dependent on window size. - create_plane_pipeline_reflection_images(); - create_final_image(); - create_ssao_images(); - create_sh_irradiance_image(); - // Reset glyph cache so stale sizes from resizing don't fill the atlas. - w, h : s32; - fonsGetAtlasSize(state.fons, *w, *h); - fonsResetAtlas(state.fons, w, h); +render :: () { + text_end_frame(); + scene_end_frame(); + g_debug_line_count = 0; + g_overlay_line_count = 0; } -#scope_export - check_and_handle_window_resize :: () { - w,h := get_window_size(); + w, h := get_window_size(); if !initted { old_w = w; old_h = h; @@ -52,6 +24,13 @@ check_and_handle_window_resize :: () { } if w != old_w || h != old_h { old_w = w; old_h = h; - on_window_resize(); + // UI font sizes follow the window, so stale sizes would fill the atlas. + text_reset_atlas(); } } + +#scope_file + +initted : bool; +old_w : int; +old_h : int; diff --git a/src/rendering/scene.jai b/src/rendering/scene.jai new file mode 100644 index 0000000..8c26b71 --- /dev/null +++ b/src/rendering/scene.jai @@ -0,0 +1,200 @@ +// The Scene API. Game, editor and UI code say what to draw through this file; +// how it gets drawn is the renderer's business. The world is persistent: chunks +// are uploaded when loaded or edited. Everything else is submitted every frame +// and dropped by render(). + +Trile_Mesh :: struct { id: u32; } +Texture :: struct { id: u32; } +Font_Face :: struct { id: s32; } +View_Id :: struct { index: s32; } + +// Grows as each part of the renderer comes back: sky, sun, fog, water, post. +Environment :: struct { +} + +View :: struct { + camera : Camera; + environment : *Environment; + draw_world : bool = true; +} + +Trile_Tint :: enum u8 { + NONE; + ADD_PREVIEW; + DELETE_PREVIEW; +} + +// A billboard with this face direction turns to face the camera. +BILLBOARD_FACE_CAMERA :: Vector3.{-100, -100, -100}; + +Blend_Mode :: enum u8 { + ALPHA; + ADDITIVE; +} + +Particle_Instance :: struct { + position : Vector3; + size : float; + uv_rect : Vector4; // x, y, w, h in the sheet, normalized + color : Vector4; +} + +// Screen-space, in pixels from the top left. +Ui_Vertex :: struct { + position : Vector2; + uv : Vector2; + color : Vector4; +} + +// --- Persistent resources ------------------------------------------------- + +trile_mesh_create :: (trile: *Trile) -> Trile_Mesh { + scene.trile_mesh_count += 1; + return .{scene.trile_mesh_count}; +} + +trile_mesh_update :: (mesh: Trile_Mesh, trile: *Trile) { +} + +trile_mesh_destroy :: (mesh: Trile_Mesh) { +} + +// Pixels are RGBA8. +texture_create :: (width: s32, height: s32, pixels: []u8) -> Texture { + scene.texture_count += 1; + return .{scene.texture_count}; +} + +texture_update :: (texture: Texture, pixels: []u8) { +} + +texture_destroy :: (texture: Texture) { +} + +// --- Persistent world ----------------------------------------------------- + +World_Group :: struct { + mesh : Trile_Mesh; + instances : []Trile_Instance; +} + +// Replaces whatever the chunk held before. The groups are copied. +world_set_chunk :: (key: Chunk_Key, groups: []World_Group) { + chunk := find_or_add(*scene.chunks, key); + for chunk.groups array_free(it.instances); + array_reset_keeping_memory(*chunk.groups); + for groups { + group := array_add(*chunk.groups); + group.mesh = it.mesh; + group.instances = array_copy(it.instances); + } +} + +world_remove_chunk :: (key: Chunk_Key) { + chunk := table_find_pointer(*scene.chunks, key); + if !chunk return; + for chunk.groups array_free(it.instances); + array_free(chunk.groups); + table_remove(*scene.chunks, key); +} + +world_clear :: () { + for chunk: scene.chunks { + for chunk.groups array_free(it.instances); + array_free(chunk.groups); + } + table_reset(*scene.chunks); +} + +// --- Per frame ------------------------------------------------------------ + +add_view :: (view: View) -> View_Id { + array_add(*scene.views, view); + return .{xx (scene.views.count - 1)}; +} + +draw_trile :: (view: View_Id, mesh: Trile_Mesh, position: Vector3, orientation: u8, tint := Trile_Tint.NONE) { + array_add(*scene.triles, .{view, mesh, position, orientation, tint}); +} + +// uv_rect is x, y, w, h in the sheet, normalized; a negative w mirrors it. +draw_billboard :: (view: View_Id, sheet: Texture, uv_rect: Vector4, size: Vector2, position: Vector3, face := BILLBOARD_FACE_CAMERA) { + array_add(*scene.billboards, .{view, sheet, uv_rect, size, position, face}); +} + +draw_particles :: (view: View_Id, sheet: Texture, blend: Blend_Mode, particles: []Particle_Instance) { + array_add(*scene.particles, .{view, sheet, blend, array_copy(particles,, temp)}); +} + +// Untextured triangles pass a zero texture. +ui_triangles :: (vertices: []Ui_Vertex, texture: Texture) { + array_add(*scene.ui, .{texture = texture, vertices = array_copy(vertices,, temp)}); +} + +ui_scissor :: (x: s32, y: s32, w: s32, h: s32) { + array_add(*scene.ui, .{scissor = .{x, y, w, h}, set_scissor = true}); +} + +ui_scissor_clear :: () { + array_add(*scene.ui, .{clear_scissor = true}); +} + +// --- Renderer side: only src/rendering reads these ------------------------- + +Scene_Chunk :: struct { + groups : [..]World_Group; +} + +Scene_Trile :: struct { + view : View_Id; + mesh : Trile_Mesh; + position : Vector3; + orientation : u8; + tint : Trile_Tint; +} + +Scene_Billboard :: struct { + view : View_Id; + sheet : Texture; + uv_rect : Vector4; + size : Vector2; + position : Vector3; + face : Vector3; +} + +Scene_Particles :: struct { + view : View_Id; + sheet : Texture; + blend : Blend_Mode; + particles : []Particle_Instance; +} + +// One entry of the UI stream: either a batch of triangles or a scissor change. +Scene_Ui :: struct { + texture : Texture; + vertices : []Ui_Vertex; + scissor : Ui_Rect; + set_scissor : bool; + clear_scissor : bool; +} + +scene : struct { + trile_mesh_count : u32; + texture_count : u32; + + chunks : Table(Chunk_Key, Scene_Chunk, chunk_key_hash, chunk_key_compare); + + views : [..]View; + triles : [..]Scene_Trile; + billboards : [..]Scene_Billboard; + particles : [..]Scene_Particles; + ui : [..]Scene_Ui; +} + +scene_end_frame :: () { + array_reset_keeping_memory(*scene.views); + array_reset_keeping_memory(*scene.triles); + array_reset_keeping_memory(*scene.billboards); + array_reset_keeping_memory(*scene.particles); + array_reset_keeping_memory(*scene.ui); +} diff --git a/src/rendering/sky.jai b/src/rendering/sky.jai deleted file mode 100644 index a96da02..0000000 --- a/src/rendering/sky.jai +++ /dev/null @@ -1,78 +0,0 @@ -draw_sky :: (cam: *Camera, worldConfig: *World_Config = null) { - mvp := create_viewproj(cam); - vs_params : Sky_Vs_Params; - - world_conf : Sky_World_Config; - - wc : *World_Config = ifx worldConfig == null then *(World_Config.{}) else worldConfig; - - world_config_to_shader_type(wc, *world_conf); - - vs_params.mvp = mvp.floats; - sg_apply_pipeline(gPipelines.sky.pipeline); - sg_apply_bindings(*gPipelines.sky.bind); - sg_apply_uniforms(UB_sky_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) })); - sg_apply_uniforms(UB_sky_world_config, *(sg_range.{ptr = *world_conf, size = size_of(type_of(world_conf))})); - sg_draw(0, 36, 1); -} - -get_frustum_corners :: (cam: *Camera) -> [8]Vector3 { - mat_view := create_lookat(cam); - mat_proj := create_perspective(cam); - - corners : [8]Vector3; - corners[0] = unproject(Vector3.{-1, -1, -1}, mat_proj, mat_view); - corners[1] = unproject(Vector3.{1, -1, -1}, mat_proj, mat_view); - corners[2] = unproject(Vector3.{1, 1, -1}, mat_proj, mat_view); - corners[3] = unproject(Vector3.{-1, 1, -1}, mat_proj, mat_view); - corners[4] = unproject(Vector3.{-1, -1, 1}, mat_proj, mat_view); - corners[5] = unproject(Vector3.{1, -1, 1}, mat_proj, mat_view); - corners[6] = unproject(Vector3.{1, 1, 1}, mat_proj, mat_view); - corners[7] = unproject(Vector3.{-1, 1, 1}, mat_proj, mat_view); - return corners; -} - -create_shadow_viewproj :: (cam: *Camera, conf: *World_Config) -> Matrix4 { - up: Vector3 = .{0, 1, 0}; - targetToPos := conf.sunPosition; - A := normalize(targetToPos); - B := normalize(cross(up, A)); - C := cross(A, B); - - camcpy := cam.*; - camcpy.far = 50; - camcpy.near = 0.5; - - frustum_corners := get_frustum_corners(*camcpy); - - avg : Vector3; - for frustum_corners { - avg += it; - } - avg /= 8.0; - sunCameraPosition := -targetToPos * 50.0; - - view := Matrix4.{ - B.x, C.x, A.x, 0, - B.y, C.y, A.y, 0, - B.z, C.z, A.z, 0, - -dot(B, sunCameraPosition), -dot(C, sunCameraPosition), -dot(A, sunCameraPosition), 1 - }; - proj := matrix_ortho(-30, 30, -30, 30, 0, 100); - return view*proj; -} - -// taken from raymath.h -matrix_ortho :: (left: float, right: float, bottom: float, top: float, near: float, far: float) -> Matrix4 { - rl := right - left; - tb := top - bottom; - fn := far - near; - - return Matrix4.{ - 2.0/rl,0,0,0, - 0,2.0/tb,0,0, - 0,0,-2/fn,0, - -(left + right)/rl, -(top+bottom)/tb, (far+near)/fn, 1 - }; - -} diff --git a/src/rendering/ssao.jai b/src/rendering/ssao.jai deleted file mode 100644 index 17fd032..0000000 --- a/src/rendering/ssao.jai +++ /dev/null @@ -1,33 +0,0 @@ -#scope_file - -Random :: #import "Random"; - -#scope_export - -g_ssao_samples : [64][4]float; -g_ssao_noise : [16*4]float; - -init_ssao :: () { - for 0..63 { - vec := Vector3.{ - Random.random_get_zero_to_one() * 2 - 1, - Random.random_get_zero_to_one() * 2 - 1, - Random.random_get_zero_to_one(), - }; - vec = normalize(vec); - vec *= Random.random_get_zero_to_one(); - scale := cast(float)it/64.0; - scale = lerp(0.1, 1.0, scale*scale); - vec *= scale; - g_ssao_samples[it][0] = vec.x; - g_ssao_samples[it][1] = vec.y; - g_ssao_samples[it][2] = vec.z; - g_ssao_samples[it][3] = 0; - } - for 0..15 { - g_ssao_noise[it*4+0] = Random.random_get_zero_to_one() * 2 - 1; - g_ssao_noise[it*4+1] = Random.random_get_zero_to_one() * 2 - 1; - g_ssao_noise[it*4+2] = 0.0; - g_ssao_noise[it*4+3] = 0.0; - } -} diff --git a/src/rendering/tasks.jai b/src/rendering/tasks.jai deleted file mode 100644 index 74b5453..0000000 --- a/src/rendering/tasks.jai +++ /dev/null @@ -1,278 +0,0 @@ -#scope_export - -Rendering_Task_Type :: enum { - INVALID; - GROUND; // We need to add an ability to invalidate buffer here too. - SKY; - SET_CAMERA; - SET_LIGHT; - TRILE; // We need to add an ability to invalidate buffer instead of updating it constantly. Also probably have a buffer for static world triles and one for moving ones. - TRILE_DYNAMIC; - TRILE_RDM; - TRIXELS; - BILLBOARD; - PARTICLES; - PARTICLES_BUFFER; -}; - -Rendering_Task :: struct { - type : Rendering_Task_Type = .INVALID; -}; - -Rendering_Task_World :: struct { - #as using t : Rendering_Task; - world : *World; -} - -Rendering_Task_Sky :: struct { - #as using t : Rendering_Task; - t.type = .SKY; - worldConfig : *World_Config; -} - -Rendering_Task_Set_Light :: struct { - #as using t : Rendering_Task; - t.type = .SET_LIGHT; - worldConfig : *World_Config; -} - -Rendering_Task_Ground :: struct { - #as using t : Rendering_Task; - t.type = .GROUND; - world : *World; -} - -Rendering_Task_Billboard :: struct { - #as using t : Rendering_Task; - t.type = .BILLBOARD; - position : Vector3; - animation : *Animation; - frame : s32; - flipX : bool; - flipY : bool; - faceDir : Vector3 = .{-100, -100, -100}; -} - -Rendering_Task_Trile :: struct { - #as using t : Rendering_Task; - t.type = .TRILE; - trile : string; - chunk_key : Chunk_Key; - positions : []Trile_Instance; - worldConf : *World_Config; - preview_mode : s32 = 0; // 0=normal, 1=add preview (blue), 2=delete preview (red) - shadow_only : bool = false; // only submit to shadow bucket (frustum-culled from camera) - skip_main : bool = false; // RDM-flagged instances still cast shadows / write gbuffer / reflect, but main pass uses the RDM pipeline - lod_index : s32 = 0; // 0 = full detail, 1 = 4^3 LOD, 2 = 2^3 LOD -} - -// Triles at arbitrary float world positions (entities, moving things). -// Shares the instance buffer and pipelines with the static TRILE path, so it -// participates in main/gbuffer/shadow/reflection just like world triles. -// chunk_key is the enclosing chunk, used only for SH probe lookup. -Rendering_Task_Trile_Dynamic :: struct { - #as using t : Rendering_Task; - t.type = .TRILE_DYNAMIC; - trile : string; - positions : []Vector4; // xyz = world position, w = orientation 0..23 - chunk_key : Chunk_Key; - worldConf : *World_Config; -} - -Rendering_Task_Trile_RDM :: struct { - #as using t : Rendering_Task; - t.type = .TRILE_RDM; - trile : string; - position : Vector4; // xyz=world position, w=orientation - atlas_rect : Vector4; // global atlas UV rect (zeros until Step 6 wires the manifest) - worldConf : *World_Config; -} - -Rendering_Task_Trixels :: struct { - #as using t : Rendering_Task; - t.type = .TRIXELS; - colMultipliers : *[16][16][16]Vector3; - trile : *Trile; - world_offset : Vector3; - brightness : float = 1.0; - tile_rotation : Matrix4 = .{_11=1, _22=1, _33=1, _44=1}; - is_secondary : bool; -} - -Rendering_Task_Particles :: struct { - #as using t : Rendering_Task; - t.type = .PARTICLES; - count : s32; - instance_offset : s32; - blend_mode : Particle_Blend_Mode; - sheet : sg_image; -} - -Rendering_Task_Particles_Buffer :: struct { - #as using t : Rendering_Task; - t.type = .PARTICLES_BUFFER; - total_count : s32; - pos_size : [MAX_PARTICLES]Vector4; - uv_rects : [MAX_PARTICLES]Vector4; - colors : [MAX_PARTICLES]Vector4; -} - -Rendering_Task_Set_Camera :: struct { - #as using t : Rendering_Task; - camera : Camera; - planeHeight : float; -} - -rendering_tasklist_clear :: () { - array_reset_keeping_memory(*rendering_tasklist); -} - -add_rendering_task :: (task: $T) { - task_ptr := New(T,, temp); - task_ptr.* = task; - array_add(*rendering_tasklist, task_ptr); -} - -rendering_tasklist : [..]*Rendering_Task; - -tasks_to_commands :: () { - trile_add_counter: s32 = 0; - trile_rdm_add_counter: s32 = 0; - for rendering_tasklist { - if it.type == { - case .SET_LIGHT; - lighttask := (cast(*Rendering_Task_Set_Light)it); - lightcmd := New(Render_Command_Set_Light,, temp); - lightcmd.worldConfig = lighttask.worldConfig; - array_add(*render_command_buckets.setup, lightcmd); - case .TRIXELS; - trixelsTask := (cast(*Rendering_Task_Trixels)it); - updateCommand := New(Render_Command_Update_Trixels,, temp); - updateCommand.trile = trixelsTask.trile; - updateCommand.colMultipliers = trixelsTask.colMultipliers; - updateCommand.is_secondary = trixelsTask.is_secondary; - array_add(*render_command_buckets.setup, updateCommand); - drawCommand := New(Render_Command_Draw_Trixels,, temp); - drawCommand.world_offset = trixelsTask.world_offset; - drawCommand.brightness = trixelsTask.brightness; - drawCommand.tile_rotation = trixelsTask.tile_rotation; - drawCommand.is_secondary = trixelsTask.is_secondary; - array_add(*render_command_buckets.main, drawCommand); - // Currently no need to draw trixels anywhere but the editor so no - // need for drawing them in the planar reflection pass... - // array_add(*render_command_buckets.reflection, drawCommand); - - case .TRILE; - trileTask := (cast(*Rendering_Task_Trile)it); - addPositionsCmd := New(Render_Command_Add_Trile_Positions,, temp); - addPositionsCmd.positions = trileTask.positions; - addPositionsCmd.chunk = trileTask.chunk_key; - array_add(*render_command_buckets.setup, addPositionsCmd); - drawPositionsCmd := New(Render_Command_Draw_Trile_Positions,, temp); - drawPositionsCmd.trile = trileTask.trile; - drawPositionsCmd.chunk_key = trileTask.chunk_key; - drawPositionsCmd.amount = cast(s32)trileTask.positions.count; - drawPositionsCmd.conf = trileTask.worldConf; - drawPositionsCmd.preview_mode = trileTask.preview_mode; - drawPositionsCmd.offset_index = trile_add_counter; - drawPositionsCmd.lod_index = trileTask.lod_index; - trile_add_counter += 1; - if trileTask.shadow_only { - array_add(*render_command_buckets.shadow, drawPositionsCmd); - } else if trileTask.preview_mode != 0 { - array_add(*render_command_buckets.main, drawPositionsCmd); - } else if trileTask.skip_main { - array_add(*render_command_buckets.reflection, drawPositionsCmd); - array_add(*render_command_buckets.gbuffer, drawPositionsCmd); - array_add(*render_command_buckets.shadow, drawPositionsCmd); - } else { - array_add(*render_command_buckets.reflection, drawPositionsCmd); - array_add(*render_command_buckets.main, drawPositionsCmd); - array_add(*render_command_buckets.gbuffer, drawPositionsCmd); - array_add(*render_command_buckets.shadow, drawPositionsCmd); - } - case .TRILE_DYNAMIC; - dynTask := (cast(*Rendering_Task_Trile_Dynamic)it); - addF32Cmd := New(Render_Command_Add_Trile_Positions_F32,, temp); - addF32Cmd.positions = dynTask.positions; - array_add(*render_command_buckets.setup, addF32Cmd); - drawDynCmd := New(Render_Command_Draw_Trile_Positions,, temp); - drawDynCmd.trile = dynTask.trile; - drawDynCmd.chunk_key = dynTask.chunk_key; - drawDynCmd.amount = cast(s32)dynTask.positions.count; - drawDynCmd.conf = dynTask.worldConf; - drawDynCmd.offset_index = trile_add_counter; - trile_add_counter += 1; - array_add(*render_command_buckets.reflection, drawDynCmd); - array_add(*render_command_buckets.main, drawDynCmd); - array_add(*render_command_buckets.gbuffer, drawDynCmd); - array_add(*render_command_buckets.shadow, drawDynCmd); - case .TRILE_RDM; - rdmTask := (cast(*Rendering_Task_Trile_RDM)it); - addCmd := New(Render_Command_Add_Trile_RDM_Position,, temp); - addCmd.position = rdmTask.position; - array_add(*render_command_buckets.setup, addCmd); - drawCmd := New(Render_Command_Draw_Trile_RDM,, temp); - drawCmd.trile = rdmTask.trile; - drawCmd.conf = rdmTask.worldConf; - drawCmd.atlas_rect = rdmTask.atlas_rect; - drawCmd.offset_index = trile_rdm_add_counter; - trile_rdm_add_counter += 1; - array_add(*render_command_buckets.main, drawCmd); - case .SKY; - command := New(Render_Command_Sky,, temp); - command.worldConfig = (cast(*Rendering_Task_Sky)it).worldConfig; - array_add(*render_command_buckets.reflection, command); - array_add(*render_command_buckets.main, command); - case .GROUND; - commandDrawGround := New(Render_Command_Draw_Ground,, temp); - commandDrawGround.worldConfig = *(cast(*Rendering_Task_Ground)it).world.conf; - array_add(*render_command_buckets.main, commandDrawGround); - array_add(*render_command_buckets.gbuffer, commandDrawGround); - case .BILLBOARD; - billboardTask := (cast(*Rendering_Task_Billboard)it); - commandDrawBillboard := New(Render_Command_Draw_Billboard,, temp); - commandDrawBillboard.position = billboardTask.position; - commandDrawBillboard.frame = billboardTask.frame; - commandDrawBillboard.flipX = billboardTask.flipX; - commandDrawBillboard.flipY = billboardTask.flipY; - commandDrawBillboard.faceDir = billboardTask.faceDir; - commandDrawBillboard.animation = billboardTask.animation; - array_add(*render_command_buckets.gbuffer, commandDrawBillboard); - array_add(*render_command_buckets.main, commandDrawBillboard); - array_add(*render_command_buckets.shadow, commandDrawBillboard); - array_add(*render_command_buckets.reflection, commandDrawBillboard); - case .PARTICLES_BUFFER; - bufTask := cast(*Rendering_Task_Particles_Buffer)it; - uploadCmd := New(Render_Command_Update_Particles,, temp); - uploadCmd.total_count = bufTask.total_count; - memcpy(uploadCmd.pos_size.data, bufTask.pos_size.data, bufTask.total_count * size_of(Vector4)); - memcpy(uploadCmd.uv_rects.data, bufTask.uv_rects.data, bufTask.total_count * size_of(Vector4)); - memcpy(uploadCmd.colors.data, bufTask.colors.data, bufTask.total_count * size_of(Vector4)); - array_add(*render_command_buckets.setup, uploadCmd); - case .PARTICLES; - particleTask := cast(*Rendering_Task_Particles)it; - drawCmd := New(Render_Command_Draw_Particles,, temp); - drawCmd.count = particleTask.count; - drawCmd.instance_offset = particleTask.instance_offset; - drawCmd.blend_mode = particleTask.blend_mode; - drawCmd.sheet = particleTask.sheet; - array_add(*render_command_buckets.main, drawCmd); - array_add(*render_command_buckets.reflection, drawCmd); - case .SET_CAMERA; - task := (cast(*Rendering_Task_Set_Camera)it); - command := New(Render_Command_Set_Camera,, temp); - command.camera = task.camera; - array_add(*render_command_buckets.main, command); - array_add(*render_command_buckets.gbuffer, command); - commandReflected := New(Render_Command_Set_Camera,, temp); - commandReflected.camera = task.camera; - commandReflected.camera.target *= Vector3.{1, -1, 1}; - commandReflected.camera.position *= Vector3.{1, -1, 1}; - commandReflected.camera.target.y += task.planeHeight * 2; - commandReflected.camera.position.y += task.planeHeight * 2; - array_add(*render_command_buckets.reflection, commandReflected); - } - } - rendering_tasklist_clear(); -} diff --git a/src/rendering/text.jai b/src/rendering/text.jai new file mode 100644 index 0000000..7992c79 --- /dev/null +++ b/src/rendering/text.jai @@ -0,0 +1,117 @@ +// Text, as part of the Scene API. Fontstash lays out and rasterizes glyphs on +// the CPU into an atlas; the atlas is an ordinary Texture and the glyphs go into +// the UI stream as triangles, so nothing below the Scene API knows about fonts. + +font_face_add :: (name: string, ttf: []u8) -> Font_Face { + return .{fonsAddFontMem(text.fons, temp_c_string(name), ttf.data, xx ttf.count, 0)}; +} + +text_measure :: (face: Font_Face, size: float, s: string) -> float { + if s.count < 1 return 0; + fonsSetFont(text.fons, face.id); + fonsSetSize(text.fons, size); + return fonsTextBounds(text.fons, 0, 0, s.data, s.data + s.count, null); +} + +text_vertical_metrics :: (face: Font_Face, size: float) -> (ascender: float, descender: float, line_height: float) { + ascender, descender, line_height: float; + fonsSetFont(text.fons, face.id); + fonsSetSize(text.fons, size); + fonsVertMetrics(text.fons, *ascender, *descender, *line_height); + return ascender, descender, line_height; +} + +// x, y is the left end of the baseline, in pixels from the top left. +ui_text :: (face: Font_Face, size: float, x: float, y: float, color: Vector4, s: string) { + if s.count < 1 return; + fonsSetFont(text.fons, face.id); + fonsSetSize(text.fons, size); + fonsSetColor(text.fons, pack_rgba8(color)); + fonsDrawText(text.fons, x, y, s.data, s.data + s.count); +} + +text_init :: (atlas_size: s32) { + params := FONSparams.{ + width = atlas_size, + height = atlas_size, + flags = FONS_ZERO_TOPLEFT, + renderCreate = atlas_create, + renderResize = atlas_create, + renderUpdate = atlas_mark_dirty, + renderDraw = glyphs_draw, + }; + text.fons = fonsCreateInternal(*params); +} + +// Drops every rasterized glyph, e.g. when UI font sizes change with the window. +text_reset_atlas :: () { + fonsResetAtlas(text.fons, text.atlas_w, text.atlas_h); +} + +// Before the UI stream is consumed: upload the atlas if glyphs were added. +text_end_frame :: () { + fonsClearState(text.fons); + if !text.atlas_dirty return; + text.atlas_dirty = false; + + w, h: s32; + alpha := fonsGetTextureData(text.fons, *w, *h); + for i: 0..w*h-1 { + text.atlas_pixels[i*4 + 0] = 255; + text.atlas_pixels[i*4 + 1] = 255; + text.atlas_pixels[i*4 + 2] = 255; + text.atlas_pixels[i*4 + 3] = alpha[i]; + } + texture_update(text.atlas, text.atlas_pixels); +} + +#scope_file + +#import "Fontstash"; + +text : struct { + fons : *FONScontext; + atlas : Texture; + atlas_w : s32; + atlas_h : s32; + atlas_pixels : []u8; + atlas_dirty : bool; +} + +pack_rgba8 :: (c: Vector4) -> u32 { + byte :: (f: float) -> u32 { return cast(u32) clamp(f * 255 + 0.5, 0, 255); } + return byte(c.x) | (byte(c.y) << 8) | (byte(c.z) << 16) | (byte(c.w) << 24); +} + +atlas_create :: (uptr: *void, width: s32, height: s32) -> s32 #c_call { + push_context,defer_pop default_context; + if text.atlas.id texture_destroy(text.atlas); + array_free(text.atlas_pixels); + text.atlas_w = width; + text.atlas_h = height; + text.atlas_pixels = NewArray(width * height * 4, u8); + text.atlas = texture_create(width, height, text.atlas_pixels); + text.atlas_dirty = true; + return 1; +} + +atlas_mark_dirty :: (uptr: *void, rect: *s32, data: *u8) #c_call { + text.atlas_dirty = true; +} + +glyphs_draw :: (uptr: *void, verts: *float, tcoords: *float, colors: *u32, nverts: s32) #c_call { + push_context,defer_pop default_context; + vertices := NewArray(nverts, Ui_Vertex,, temp); + for *v, i: vertices { + c := colors[i]; + v.position = .{verts[i*2], verts[i*2 + 1]}; + v.uv = .{tcoords[i*2], tcoords[i*2 + 1]}; + v.color = .{ + cast(float)( c & 0xFF) / 255, + cast(float)((c >> 8) & 0xFF) / 255, + cast(float)((c >> 16) & 0xFF) / 255, + cast(float)((c >> 24) & 0xFF) / 255, + }; + } + ui_triangles(vertices, text.atlas); +} diff --git a/src/shaders/compile_shaders.sh b/src/shaders/compile_shaders.sh deleted file mode 100755 index 7499424..0000000 --- a/src/shaders/compile_shaders.sh +++ /dev/null @@ -1,8 +0,0 @@ -rm -rf jai -mkdir jai - -for filename in *.glsl; do - if [ -f "$filename" ]; then - ./sokol-shdc -i "$filename" -o "./jai/${filename/.glsl/.jai}" -l glsl430:glsl300es:metal_macos -f sokol_jai - fi -done diff --git a/src/shaders/compile_shaders_mac.sh b/src/shaders/compile_shaders_mac.sh deleted file mode 100755 index f1bf7f9..0000000 --- a/src/shaders/compile_shaders_mac.sh +++ /dev/null @@ -1,7 +0,0 @@ -rm -rf .jai - -for filename in *.glsl; do - if [ -f "$filename" ]; then - ./sokol-shdc-mac -i "$filename" -o "./jai/${filename/.glsl/.jai}" -l glsl430:glsl300es:metal_macos -f sokol_jai - fi -done diff --git a/src/shaders/jai/shader_billboard.jai b/src/shaders/jai/shader_billboard.jai deleted file mode 100644 index 2f48347..0000000 --- a/src/shaders/jai/shader_billboard.jai +++ /dev/null @@ -1,548 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_billboard.glsl -o ./jai/shader_billboard.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'billboard': - Get shader desc: billboard_shader_desc(sg_query_backend()) - Vertex Shader: vs_billboard - Fragment Shader: fs_billboard - Attributes: - ATTR_billboard_position => 0 - Bindings: - Uniform block 'billboard_vs_params': - Jai struct: Billboard_Vs_Params - Bind slot: UB_billboard_vs_params => 0 - Image 'sprite': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_sprite => 0 - Sampler 'spritesmp': - Type: .FILTERING - Bind slot: SMP_spritesmp => 0 -*/ -ATTR_billboard_position :: 0; -UB_billboard_vs_params :: 0; -IMG_sprite :: 0; -SMP_spritesmp :: 0; -Billboard_Vs_Params :: struct { - mvp: [16]float; - uvs: [4]float; - offset: [3]float; - _: [4]u8; - size: [2]float; - _: [8]u8; - cam: [3]float; - _: [4]u8; - faceDir: [3]float; - _: [4]u8; -}; -/* - #version 430 - - uniform vec4 billboard_vs_params[9]; - layout(location = 0) in vec3 position; - layout(location = 0) out vec2 uv_in; - - void main() - { - vec3 _53 = billboard_vs_params[5].xyz - billboard_vs_params[7].xyz; - _53.y = 0.0; - vec3 look_dir = normalize(_53); - if (billboard_vs_params[8].x > (-10.0)) - { - look_dir = billboard_vs_params[8].xyz; - } - gl_Position = mat4(billboard_vs_params[0], billboard_vs_params[1], billboard_vs_params[2], billboard_vs_params[3]) * vec4((billboard_vs_params[5].xyz + (normalize(cross(vec3(0.0, 1.0, 0.0), look_dir)) * ((position.x - 0.5) * billboard_vs_params[6].x))) + (vec3(0.0, 1.0, 0.0) * (position.y * billboard_vs_params[6].y)), 1.0); - uv_in = vec2(billboard_vs_params[4].x + (position.x * billboard_vs_params[4].z), billboard_vs_params[4].y + (position.y * billboard_vs_params[4].w)); - } - -*/ -vs_billboard_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x62,0x69,0x6c,0x6c,0x62, - 0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x39, - 0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f, - 0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x0a, - 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x33,0x20,0x3d,0x20,0x62,0x69,0x6c, - 0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f, - 0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d, - 0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20, - 0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x20,0x3e,0x20,0x28,0x2d, - 0x31,0x30,0x2e,0x30,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20, - 0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61, - 0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c, - 0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61, - 0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c, - 0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, - 0x28,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x29,0x29,0x20,0x2a, - 0x20,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2e,0x78,0x29, - 0x29,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f, - 0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d, - 0x2e,0x79,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x75,0x76,0x5f,0x69,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x62,0x69,0x6c, - 0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x34,0x5d,0x2e,0x78,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x78,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x7a,0x29,0x2c, - 0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x79,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f, - 0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d, - 0x2e,0x77,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - layout(binding = 16) uniform sampler2D sprite_spritesmp; - - layout(location = 0) in vec2 uv_in; - layout(location = 0) out vec4 color; - - void main() - { - vec2 _12 = uv_in; - _12.y = 1.0 - _12.y; - vec4 _35 = texture(sprite_spritesmp, _12); - if (_35.w < 0.00999999977648258209228515625) - { - discard; - } - color = vec4(_35.xyz * 0.5, 1.0); - } - -*/ -fs_billboard_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31, - 0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x73,0x70,0x72,0x69, - 0x74,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, - 0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x32,0x20,0x3d,0x20,0x75, - 0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20, - 0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x73,0x70,0x72, - 0x69,0x74,0x65,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x2e,0x77,0x20,0x3c,0x20,0x30,0x2e, - 0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35, - 0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73, - 0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x33,0x35, - 0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 billboard_vs_params[9]; - layout(location = 0) in vec3 position; - out vec2 uv_in; - - void main() - { - vec3 _53 = billboard_vs_params[5].xyz - billboard_vs_params[7].xyz; - _53.y = 0.0; - vec3 look_dir = normalize(_53); - if (billboard_vs_params[8].x > (-10.0)) - { - look_dir = billboard_vs_params[8].xyz; - } - gl_Position = mat4(billboard_vs_params[0], billboard_vs_params[1], billboard_vs_params[2], billboard_vs_params[3]) * vec4((billboard_vs_params[5].xyz + (normalize(cross(vec3(0.0, 1.0, 0.0), look_dir)) * ((position.x - 0.5) * billboard_vs_params[6].x))) + (vec3(0.0, 1.0, 0.0) * (position.y * billboard_vs_params[6].y)), 1.0); - uv_in = vec2(billboard_vs_params[4].x + (position.x * billboard_vs_params[4].z), billboard_vs_params[4].y + (position.y * billboard_vs_params[4].w)); - } - -*/ -vs_billboard_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x62,0x69, - 0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x39,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74, - 0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x33,0x20,0x3d,0x20,0x62,0x69,0x6c,0x6c,0x62, - 0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35, - 0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72, - 0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20, - 0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x6f, - 0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x5f,0x35,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x20,0x3e,0x20,0x28,0x2d,0x31,0x30, - 0x2e,0x30,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x62,0x69, - 0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2e,0x78,0x29,0x29,0x29, - 0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72, - 0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2e,0x79, - 0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76, - 0x5f,0x69,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x62,0x69,0x6c,0x6c,0x62, - 0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34, - 0x5d,0x2e,0x78,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e, - 0x78,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x7a,0x29,0x2c,0x20,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x79,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72, - 0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x77, - 0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp sampler2D sprite_spritesmp; - - in highp vec2 uv_in; - layout(location = 0) out highp vec4 color; - - void main() - { - highp vec2 _12 = uv_in; - _12.y = 1.0 - _12.y; - highp vec4 _35 = texture(sprite_spritesmp, _12); - if (_35.w < 0.00999999977648258209228515625) - { - discard; - } - color = vec4(_35.xyz * 0.5, 1.0); - } - -*/ -fs_billboard_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x73,0x70, - 0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x32,0x20,0x3d,0x20,0x75,0x76, - 0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20,0x3d, - 0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x35, - 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x70,0x72,0x69,0x74, - 0x65,0x5f,0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x2e,0x77, - 0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37, - 0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36, - 0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x5f,0x33,0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct billboard_vs_params - { - float4x4 mvp; - float4 uvs; - float3 offset; - float2 size; - float3 cam; - float3 faceDir; - }; - - struct main0_out - { - float2 uv_in [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float3 position [[attribute(0)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant billboard_vs_params& _24 [[buffer(0)]]) - { - main0_out out = {}; - float3 _53 = _24.offset - _24.cam; - _53.y = 0.0; - float3 look_dir = fast::normalize(_53); - if (_24.faceDir.x > (-10.0)) - { - look_dir = _24.faceDir; - } - out.gl_Position = _24.mvp * float4((_24.offset + (fast::normalize(cross(float3(0.0, 1.0, 0.0), look_dir)) * ((in.position.x - 0.5) * _24.size.x))) + (float3(0.0, 1.0, 0.0) * (in.position.y * _24.size.y)), 1.0); - out.uv_in = float2(_24.uvs.x + (in.position.x * _24.uvs.z), _24.uvs.y + (in.position.y * _24.uvs.w)); - return out; - } - -*/ -vs_billboard_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78, - 0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x75,0x76,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x66,0x61,0x63,0x65,0x44,0x69,0x72,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x20,0x75,0x76,0x5f,0x69,0x6e,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, - 0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72, - 0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,0x34,0x20, - 0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f, - 0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x5f,0x35,0x33,0x20,0x3d,0x20,0x5f,0x32,0x34,0x2e,0x6f,0x66, - 0x66,0x73,0x65,0x74,0x20,0x2d,0x20,0x5f,0x32,0x34,0x2e,0x63,0x61,0x6d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x6f,0x6f,0x6b, - 0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x34,0x2e,0x66,0x61,0x63,0x65,0x44,0x69,0x72, - 0x2e,0x78,0x20,0x3e,0x20,0x28,0x2d,0x31,0x30,0x2e,0x30,0x29,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b, - 0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x5f,0x32,0x34,0x2e,0x66,0x61,0x63,0x65,0x44, - 0x69,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x5f,0x32,0x34,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x28,0x5f,0x32,0x34,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x63,0x72,0x6f,0x73,0x73,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x6c,0x6f,0x6f, - 0x6b,0x5f,0x64,0x69,0x72,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x69,0x6e,0x2e,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2a,0x20,0x5f,0x32,0x34,0x2e,0x73,0x69,0x7a,0x65,0x2e,0x78,0x29,0x29,0x29, - 0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x32,0x34, - 0x2e,0x73,0x69,0x7a,0x65,0x2e,0x79,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x5f,0x69,0x6e,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x32,0x34,0x2e,0x75,0x76,0x73,0x2e, - 0x78,0x20,0x2b,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x2e,0x78,0x20,0x2a,0x20,0x5f,0x32,0x34,0x2e,0x75,0x76,0x73,0x2e,0x7a,0x29,0x2c, - 0x20,0x5f,0x32,0x34,0x2e,0x75,0x76,0x73,0x2e,0x79,0x20,0x2b,0x20,0x28,0x69,0x6e, - 0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x32, - 0x34,0x2e,0x75,0x76,0x73,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 color [[color(0)]]; - }; - - struct main0_in - { - float2 uv_in [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], texture2d sprite [[texture(0)]], sampler spritesmp [[sampler(0)]]) - { - main0_out out = {}; - float2 _12 = in.uv_in; - _12.y = 1.0 - _12.y; - float4 _35 = sprite.sample(spritesmp, _12); - if (_35.w < 0.00999999977648258209228515625) - { - discard_fragment(); - } - out.color = float4(_35.xyz * 0.5, 1.0); - return out; - } - -*/ -fs_billboard_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f, - 0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, - 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x70,0x72,0x69,0x74,0x65, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x70,0x72,0x69,0x74,0x65,0x73, - 0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d, - 0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, - 0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x32,0x20,0x3d,0x20,0x69,0x6e, - 0x2e,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x2e, - 0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x35,0x20, - 0x3d,0x20,0x73,0x70,0x72,0x69,0x74,0x65,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x2e,0x77,0x20,0x3c, - 0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34, - 0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74, - 0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x5f,0x33,0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -billboard_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "billboard_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_billboard_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_billboard_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 9; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "billboard_vs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "sprite_spritesmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_billboard_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_billboard_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 9; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "billboard_vs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "sprite_spritesmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_billboard_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_billboard_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_bloom_downsample.jai b/src/shaders/jai/shader_bloom_downsample.jai deleted file mode 100644 index d4f5bc7..0000000 --- a/src/shaders/jai/shader_bloom_downsample.jai +++ /dev/null @@ -1,491 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_bloom_downsample.glsl -o ./jai/shader_bloom_downsample.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'bloom_downsample': - Get shader desc: bloom_downsample_shader_desc(sg_query_backend()) - Vertex Shader: vs_bloom_downsample - Fragment Shader: fs_bloom_downsample - Attributes: - ATTR_bloom_downsample_position => 0 - ATTR_bloom_downsample_uv => 1 - Bindings: - Uniform block 'bloom_downsample_params': - Jai struct: Bloom_Downsample_Params - Bind slot: UB_bloom_downsample_params => 0 - Image 'bloom_downsample_src': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_bloom_downsample_src => 0 - Sampler 'bloom_downsample_src_smp': - Type: .FILTERING - Bind slot: SMP_bloom_downsample_src_smp => 0 -*/ -ATTR_bloom_downsample_position :: 0; -ATTR_bloom_downsample_uv :: 1; -UB_bloom_downsample_params :: 0; -IMG_bloom_downsample_src :: 0; -SMP_bloom_downsample_src_smp :: 0; -Bloom_Downsample_Params :: struct { - src_texel_x: float; - src_texel_y: float; - _: [8]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_bloom_downsample_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - uniform vec4 bloom_downsample_params[1]; - layout(binding = 16) uniform sampler2D bloom_downsample_src_bloom_downsample_src_smp; - - layout(location = 0) in vec2 texcoord; - layout(location = 0) out vec4 frag_color; - - void main() - { - vec2 _23 = vec2(bloom_downsample_params[0].x, bloom_downsample_params[0].y) * 0.5; - float _44 = _23.x; - float _45 = -_44; - float _48 = _23.y; - float _49 = -_48; - frag_color = vec4((((texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + vec2(_45, _49)).xyz + texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + vec2(_44, _49)).xyz) + texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + vec2(_45, _48)).xyz) + texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + _23).xyz) * 0.25, 1.0); - } - -*/ -fs_bloom_downsample_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69, - 0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73, - 0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a, - 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x32,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x2c,0x20, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x34,0x34,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x38,0x20, - 0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f, - 0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20, - 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f, - 0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72, - 0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39,0x29, - 0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28, - 0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_bloom_downsample_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp vec4 bloom_downsample_params[1]; - uniform highp sampler2D bloom_downsample_src_bloom_downsample_src_smp; - - in highp vec2 texcoord; - layout(location = 0) out highp vec4 frag_color; - - void main() - { - highp vec2 _23 = vec2(bloom_downsample_params[0].x, bloom_downsample_params[0].y) * 0.5; - highp float _44 = _23.x; - highp float _45 = -_44; - highp float _48 = _23.y; - highp float _49 = -_48; - frag_color = vec4((((texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + vec2(_45, _49)).xyz + texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + vec2(_44, _49)).xyz) + texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + vec2(_45, _48)).xyz) + texture(bloom_downsample_src_bloom_downsample_src_smp, texcoord + _23).xyz) * 0.25, 1.0); - } - -*/ -fs_bloom_downsample_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f, - 0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x33,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77, - 0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30, - 0x5d,0x2e,0x78,0x2c,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e, - 0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d,0x20, - 0x5f,0x32,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f,0x34, - 0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x34,0x38,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x39,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x28,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72, - 0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x35,0x2c, - 0x20,0x5f,0x34,0x39,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76, - 0x65,0x63,0x32,0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x2e,0x78, - 0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73, - 0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x35, - 0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77, - 0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b, - 0x20,0x5f,0x32,0x33,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_bloom_downsample_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct bloom_downsample_params - { - float src_texel_x; - float src_texel_y; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant bloom_downsample_params& _12 [[buffer(0)]], texture2d bloom_downsample_src [[texture(0)]], sampler bloom_downsample_src_smp [[sampler(0)]]) - { - main0_out out = {}; - float2 _23 = float2(_12.src_texel_x, _12.src_texel_y) * 0.5; - float _44 = _23.x; - float _45 = -_44; - float _48 = _23.y; - float _49 = -_48; - out.frag_color = float4((((bloom_downsample_src.sample(bloom_downsample_src_smp, (in.texcoord + float2(_45, _49))).xyz + bloom_downsample_src.sample(bloom_downsample_src_smp, (in.texcoord + float2(_44, _49))).xyz) + bloom_downsample_src.sample(bloom_downsample_src_smp, (in.texcoord + float2(_45, _48))).xyz) + bloom_downsample_src.sample(bloom_downsample_src_smp, (in.texcoord + _23)).xyz) * 0.25, 1.0); - return out; - } - -*/ -fs_bloom_downsample_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65,0x6c,0x5f,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x72,0x63,0x5f,0x74,0x65, - 0x78,0x65,0x6c,0x5f,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73, - 0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e, - 0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x32,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66, - 0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x20,0x5b, - 0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77, - 0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x20, - 0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20, - 0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x5f,0x31,0x32,0x2e,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65,0x6c,0x5f, - 0x78,0x2c,0x20,0x5f,0x31,0x32,0x2e,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65,0x6c, - 0x5f,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x78, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x20, - 0x3d,0x20,0x2d,0x5f,0x34,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x34,0x38,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x2d, - 0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x28,0x28,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65, - 0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, - 0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20, - 0x2b,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73, - 0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x34, - 0x34,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b, - 0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72, - 0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x34,0x35, - 0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f, - 0x72,0x64,0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x00, -]; -bloom_downsample_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "bloom_downsample_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_bloom_downsample_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_bloom_downsample_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "bloom_downsample_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "bloom_downsample_src_bloom_downsample_src_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_bloom_downsample_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_bloom_downsample_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "bloom_downsample_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "bloom_downsample_src_bloom_downsample_src_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_bloom_downsample_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_bloom_downsample_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_bloom_prefilter.jai b/src/shaders/jai/shader_bloom_prefilter.jai deleted file mode 100644 index 1e706f8..0000000 --- a/src/shaders/jai/shader_bloom_prefilter.jai +++ /dev/null @@ -1,552 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_bloom_prefilter.glsl -o ./jai/shader_bloom_prefilter.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'bloom_prefilter': - Get shader desc: bloom_prefilter_shader_desc(sg_query_backend()) - Vertex Shader: vs_bloom_prefilter - Fragment Shader: fs_bloom_prefilter - Attributes: - ATTR_bloom_prefilter_position => 0 - ATTR_bloom_prefilter_uv => 1 - Bindings: - Uniform block 'bloom_prefilter_params': - Jai struct: Bloom_Prefilter_Params - Bind slot: UB_bloom_prefilter_params => 0 - Image 'bloom_prefilter_src': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_bloom_prefilter_src => 0 - Sampler 'bloom_prefilter_src_smp': - Type: .FILTERING - Bind slot: SMP_bloom_prefilter_src_smp => 0 -*/ -ATTR_bloom_prefilter_position :: 0; -ATTR_bloom_prefilter_uv :: 1; -UB_bloom_prefilter_params :: 0; -IMG_bloom_prefilter_src :: 0; -SMP_bloom_prefilter_src_smp :: 0; -Bloom_Prefilter_Params :: struct { - src_texel_x: float; - src_texel_y: float; - threshold: float; - _: [4]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_bloom_prefilter_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - uniform vec4 bloom_prefilter_params[1]; - layout(binding = 16) uniform sampler2D bloom_prefilter_src_bloom_prefilter_src_smp; - - layout(location = 0) in vec2 texcoord; - layout(location = 0) out vec4 frag_color; - - void main() - { - vec2 _23 = vec2(bloom_prefilter_params[0].x, bloom_prefilter_params[0].y) * 0.5; - float _44 = _23.x; - float _45 = -_44; - float _48 = _23.y; - float _49 = -_48; - vec3 _105 = (((texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + vec2(_45, _49)).xyz + texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + vec2(_44, _49)).xyz) + texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + vec2(_45, _48)).xyz) + texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + _23).xyz) * 0.25; - vec3 color = _105; - if (dot(_105, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)) < bloom_prefilter_params[0].z) - { - color = vec3(0.0); - } - frag_color = vec4(color, 1.0); - } - -*/ -fs_bloom_prefilter_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e, - 0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63, - 0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72, - 0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x2c,0x20,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d,0x20, - 0x5f,0x32,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x34,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x38,0x20,0x3d,0x20,0x5f,0x32,0x33, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34, - 0x39,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x30,0x35,0x20,0x3d,0x20,0x28,0x28,0x28,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69, - 0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70, - 0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70, - 0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63, - 0x32,0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x2e,0x78,0x79,0x7a, - 0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73, - 0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39, - 0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66, - 0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f, - 0x34,0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70, - 0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b, - 0x20,0x5f,0x32,0x33,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x5f,0x31,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x30,0x35,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37,0x35,0x32,0x30, - 0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35, - 0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35,0x30,0x39,0x37, - 0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32,0x30,0x30,0x30, - 0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32,0x31,0x38,0x37, - 0x35,0x29,0x29,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66, - 0x69,0x6c,0x74,0x65,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e, - 0x7a,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x63,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_bloom_prefilter_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp vec4 bloom_prefilter_params[1]; - uniform highp sampler2D bloom_prefilter_src_bloom_prefilter_src_smp; - - in highp vec2 texcoord; - layout(location = 0) out highp vec4 frag_color; - - void main() - { - highp vec2 _23 = vec2(bloom_prefilter_params[0].x, bloom_prefilter_params[0].y) * 0.5; - highp float _44 = _23.x; - highp float _45 = -_44; - highp float _48 = _23.y; - highp float _49 = -_48; - highp vec3 _105 = (((texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + vec2(_45, _49)).xyz + texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + vec2(_44, _49)).xyz) + texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + vec2(_45, _48)).xyz) + texture(bloom_prefilter_src_bloom_prefilter_src_smp, texcoord + _23).xyz) * 0.25; - highp vec3 color = _105; - if (dot(_105, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)) < bloom_prefilter_params[0].z) - { - color = vec3(0.0); - } - frag_color = vec4(color, 1.0); - } - -*/ -fs_bloom_prefilter_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69, - 0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70, - 0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70, - 0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, - 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x32,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c, - 0x74,0x65,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x2c, - 0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x78, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x34,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34, - 0x38,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d, - 0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x30,0x35,0x20,0x3d,0x20,0x28,0x28,0x28, - 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72, - 0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f, - 0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20, - 0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x2e, - 0x78,0x79,0x7a,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72, - 0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x34,0x2c,0x20, - 0x5f,0x34,0x39,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69, - 0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70, - 0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70, - 0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63, - 0x32,0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f, - 0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x31,0x30, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f, - 0x31,0x30,0x35,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35, - 0x39,0x39,0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31, - 0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39, - 0x36,0x31,0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20, - 0x30,0x2e,0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30, - 0x32,0x32,0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x20,0x3c,0x20,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x7a,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_bloom_prefilter_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct bloom_prefilter_params - { - float src_texel_x; - float src_texel_y; - float threshold; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant bloom_prefilter_params& _12 [[buffer(0)]], texture2d bloom_prefilter_src [[texture(0)]], sampler bloom_prefilter_src_smp [[sampler(0)]]) - { - main0_out out = {}; - float2 _23 = float2(_12.src_texel_x, _12.src_texel_y) * 0.5; - float _44 = _23.x; - float _45 = -_44; - float _48 = _23.y; - float _49 = -_48; - float3 _105 = (((bloom_prefilter_src.sample(bloom_prefilter_src_smp, (in.texcoord + float2(_45, _49))).xyz + bloom_prefilter_src.sample(bloom_prefilter_src_smp, (in.texcoord + float2(_44, _49))).xyz) + bloom_prefilter_src.sample(bloom_prefilter_src_smp, (in.texcoord + float2(_45, _48))).xyz) + bloom_prefilter_src.sample(bloom_prefilter_src_smp, (in.texcoord + _23)).xyz) * 0.25; - float3 color = _105; - if (dot(_105, float3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)) < _12.threshold) - { - color = float3(0.0); - } - out.frag_color = float4(color, 1.0); - return out; - } - -*/ -fs_bloom_prefilter_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65,0x6c,0x5f,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x72,0x63,0x5f,0x74,0x65,0x78, - 0x65,0x6c,0x5f,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x74,0x68,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28, - 0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20, - 0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67, - 0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74, - 0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x32,0x20,0x5b,0x5b,0x62, - 0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70, - 0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70, - 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, - 0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x5f,0x31,0x32,0x2e,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65,0x6c, - 0x5f,0x78,0x2c,0x20,0x5f,0x31,0x32,0x2e,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65, - 0x6c,0x5f,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35, - 0x20,0x3d,0x20,0x2d,0x5f,0x34,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x34,0x38,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20, - 0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x30,0x35,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x2e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66, - 0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28, - 0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x29, - 0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65, - 0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2b,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c, - 0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73, - 0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x34, - 0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b, - 0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72, - 0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x70,0x72,0x65,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x73,0x72,0x63,0x5f, - 0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x31,0x30,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x30,0x35, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39, - 0x39,0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32, - 0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36, - 0x31,0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32, - 0x32,0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x20,0x3c,0x20,0x5f,0x31, - 0x32,0x2e,0x74,0x68,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -bloom_prefilter_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "bloom_prefilter_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_bloom_prefilter_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_bloom_prefilter_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "bloom_prefilter_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "bloom_prefilter_src_bloom_prefilter_src_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_bloom_prefilter_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_bloom_prefilter_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "bloom_prefilter_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "bloom_prefilter_src_bloom_prefilter_src_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_bloom_prefilter_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_bloom_prefilter_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_bloom_upsample.jai b/src/shaders/jai/shader_bloom_upsample.jai deleted file mode 100644 index ffff8c6..0000000 --- a/src/shaders/jai/shader_bloom_upsample.jai +++ /dev/null @@ -1,563 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_bloom_upsample.glsl -o ./jai/shader_bloom_upsample.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'bloom_upsample': - Get shader desc: bloom_upsample_shader_desc(sg_query_backend()) - Vertex Shader: vs_bloom_upsample - Fragment Shader: fs_bloom_upsample - Attributes: - ATTR_bloom_upsample_position => 0 - ATTR_bloom_upsample_uv => 1 - Bindings: - Uniform block 'bloom_upsample_params': - Jai struct: Bloom_Upsample_Params - Bind slot: UB_bloom_upsample_params => 0 - Image 'bloom_upsample_small': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_bloom_upsample_small => 0 - Image 'bloom_upsample_large': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_bloom_upsample_large => 1 - Sampler 'bloom_upsample_small_smp': - Type: .FILTERING - Bind slot: SMP_bloom_upsample_small_smp => 0 - Sampler 'bloom_upsample_large_smp': - Type: .FILTERING - Bind slot: SMP_bloom_upsample_large_smp => 1 -*/ -ATTR_bloom_upsample_position :: 0; -ATTR_bloom_upsample_uv :: 1; -UB_bloom_upsample_params :: 0; -IMG_bloom_upsample_small :: 0; -IMG_bloom_upsample_large :: 1; -SMP_bloom_upsample_small_smp :: 0; -SMP_bloom_upsample_large_smp :: 1; -Bloom_Upsample_Params :: struct { - src_texel_x: float; - src_texel_y: float; - _: [8]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_bloom_upsample_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - uniform vec4 bloom_upsample_params[1]; - layout(binding = 16) uniform sampler2D bloom_upsample_small_bloom_upsample_small_smp; - layout(binding = 17) uniform sampler2D bloom_upsample_large_bloom_upsample_large_smp; - - layout(location = 0) in vec2 texcoord; - layout(location = 0) out vec4 frag_color; - - void main() - { - vec2 _23 = vec2(bloom_upsample_params[0].x, bloom_upsample_params[0].y) * 0.5; - float _44 = _23.x; - float _45 = -_44; - float _48 = _23.y; - float _49 = -_48; - frag_color = vec4(((((texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + vec2(_45, _49)).xyz + texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + vec2(_44, _49)).xyz) + texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + vec2(_45, _48)).xyz) + texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + _23).xyz) * 0.25) + texture(bloom_upsample_large_bloom_upsample_large_smp, texcoord).xyz, 1.0); - } - -*/ -fs_bloom_upsample_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64, - 0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c, - 0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f,0x73,0x6d,0x70,0x3b, - 0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75, - 0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x32,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78, - 0x2c,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x34,0x34,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x38,0x20, - 0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28, - 0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75, - 0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61, - 0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39, - 0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32, - 0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29, - 0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73, - 0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, - 0x72,0x64,0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x32,0x35,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x6c,0x61,0x72,0x67,0x65,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_bloom_upsample_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp vec4 bloom_upsample_params[1]; - uniform highp sampler2D bloom_upsample_small_bloom_upsample_small_smp; - uniform highp sampler2D bloom_upsample_large_bloom_upsample_large_smp; - - in highp vec2 texcoord; - layout(location = 0) out highp vec4 frag_color; - - void main() - { - highp vec2 _23 = vec2(bloom_upsample_params[0].x, bloom_upsample_params[0].y) * 0.5; - highp float _44 = _23.x; - highp float _45 = -_44; - highp float _48 = _23.y; - highp float _49 = -_48; - frag_color = vec4(((((texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + vec2(_45, _49)).xyz + texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + vec2(_44, _49)).xyz) + texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + vec2(_45, _48)).xyz) + texture(bloom_upsample_small_bloom_upsample_small_smp, texcoord + _23).xyz) * 0.25) + texture(bloom_upsample_large_bloom_upsample_large_smp, texcoord).xyz, 1.0); - } - -*/ -fs_bloom_upsample_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x72,0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75, - 0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d, - 0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c, - 0x61,0x72,0x67,0x65,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, - 0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x30,0x5d,0x2e,0x78,0x2c,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d, - 0x2e,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d, - 0x20,0x5f,0x32,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f, - 0x34,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x34,0x38,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x28,0x28,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d, - 0x61,0x6c,0x6c,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65, - 0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34, - 0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b, - 0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29, - 0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73, - 0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f, - 0x34,0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75, - 0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61, - 0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x32,0x35,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61, - 0x72,0x67,0x65,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65, - 0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_bloom_upsample_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct bloom_upsample_params - { - float src_texel_x; - float src_texel_y; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant bloom_upsample_params& _12 [[buffer(0)]], texture2d bloom_upsample_small [[texture(0)]], texture2d bloom_upsample_large [[texture(1)]], sampler bloom_upsample_small_smp [[sampler(0)]], sampler bloom_upsample_large_smp [[sampler(1)]]) - { - main0_out out = {}; - float2 _23 = float2(_12.src_texel_x, _12.src_texel_y) * 0.5; - float _44 = _23.x; - float _45 = -_44; - float _48 = _23.y; - float _49 = -_48; - out.frag_color = float4(((((bloom_upsample_small.sample(bloom_upsample_small_smp, (in.texcoord + float2(_45, _49))).xyz + bloom_upsample_small.sample(bloom_upsample_small_smp, (in.texcoord + float2(_44, _49))).xyz) + bloom_upsample_small.sample(bloom_upsample_small_smp, (in.texcoord + float2(_45, _48))).xyz) + bloom_upsample_small.sample(bloom_upsample_small_smp, (in.texcoord + _23)).xyz) * 0.25) + bloom_upsample_large.sample(bloom_upsample_large_smp, in.texcoord).xyz, 1.0); - return out; - } - -*/ -fs_bloom_upsample_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65,0x6c,0x5f,0x78,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x65, - 0x6c,0x5f,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66, - 0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e, - 0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d, - 0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d, - 0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x26,0x20,0x5f,0x31,0x32,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30, - 0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66, - 0x6c,0x6f,0x61,0x74,0x3e,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x20,0x5b,0x5b,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x62,0x6c,0x6f,0x6f, - 0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75, - 0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d, - 0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d, - 0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f,0x73, - 0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d, - 0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, - 0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x33,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x5f,0x31,0x32,0x2e,0x73,0x72,0x63,0x5f,0x74,0x65,0x78, - 0x65,0x6c,0x5f,0x78,0x2c,0x20,0x5f,0x31,0x32,0x2e,0x73,0x72,0x63,0x5f,0x74,0x65, - 0x78,0x65,0x6c,0x5f,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x34,0x20,0x3d,0x20,0x5f,0x32, - 0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x34,0x35,0x20,0x3d,0x20,0x2d,0x5f,0x34,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x38,0x20,0x3d,0x20,0x5f,0x32,0x33,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x20, - 0x3d,0x20,0x2d,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x28,0x28,0x28,0x28,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x2e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69, - 0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x29,0x2e, - 0x78,0x79,0x7a,0x20,0x2b,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e, - 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x5f,0x34,0x34,0x2c,0x20,0x5f,0x34,0x39,0x29,0x29,0x29,0x2e,0x78,0x79, - 0x7a,0x29,0x20,0x2b,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x73,0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x5f,0x34,0x35,0x2c,0x20,0x5f,0x34,0x38,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2b,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x6d,0x61,0x6c,0x6c,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73, - 0x6d,0x61,0x6c,0x6c,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65, - 0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x5f,0x32,0x33,0x29,0x29,0x2e,0x78, - 0x79,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x35,0x29,0x20,0x2b,0x20,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72, - 0x67,0x65,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x75,0x70,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x6c,0x61,0x72,0x67,0x65,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -bloom_upsample_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "bloom_upsample_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_bloom_upsample_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_bloom_upsample_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "bloom_upsample_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "bloom_upsample_small_bloom_upsample_small_smp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 1; - desc.image_sampler_pairs[1].glsl_name = "bloom_upsample_large_bloom_upsample_large_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_bloom_upsample_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_bloom_upsample_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "bloom_upsample_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "bloom_upsample_small_bloom_upsample_small_smp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 1; - desc.image_sampler_pairs[1].glsl_name = "bloom_upsample_large_bloom_upsample_large_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_bloom_upsample_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_bloom_upsample_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 1; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .FILTERING; - desc.samplers[1].msl_sampler_n = 1; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 1; - } - return desc; -} diff --git a/src/shaders/jai/shader_debugline.jai b/src/shaders/jai/shader_debugline.jai deleted file mode 100644 index 8eb1711..0000000 --- a/src/shaders/jai/shader_debugline.jai +++ /dev/null @@ -1,538 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_debugline.glsl -o ./jai/shader_debugline.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'debugline': - Get shader desc: debugline_shader_desc(sg_query_backend()) - Vertex Shader: vs_debugline - Fragment Shader: fs_debugline - Attributes: - ATTR_debugline_a_corner => 0 - ATTR_debugline_a_pos_a => 1 - ATTR_debugline_a_pos_b => 2 - ATTR_debugline_a_col => 3 - ATTR_debugline_a_width => 4 - Bindings: - Uniform block 'debugline_vs_params': - Jai struct: Debugline_Vs_Params - Bind slot: UB_debugline_vs_params => 0 -*/ -ATTR_debugline_a_corner :: 0; -ATTR_debugline_a_pos_a :: 1; -ATTR_debugline_a_pos_b :: 2; -ATTR_debugline_a_col :: 3; -ATTR_debugline_a_width :: 4; -UB_debugline_vs_params :: 0; -Debugline_Vs_Params :: struct { - mvp: [16]float; - viewport: [4]float; -}; -/* - #version 430 - - uniform vec4 debugline_vs_params[5]; - layout(location = 1) in vec3 a_pos_a; - layout(location = 2) in vec3 a_pos_b; - layout(location = 0) in vec2 a_corner; - layout(location = 4) in float a_width; - layout(location = 0) out vec4 v_col; - layout(location = 3) in vec4 a_col; - - void main() - { - mat4 _18 = mat4(debugline_vs_params[0], debugline_vs_params[1], debugline_vs_params[2], debugline_vs_params[3]); - vec4 _28 = _18 * vec4(a_pos_a, 1.0); - vec4 _38 = _18 * vec4(a_pos_b, 1.0); - vec2 _78 = ((_38.xy / vec2(max(_38.w, 9.9999997473787516355514526367188e-05))) * debugline_vs_params[4].xy) - ((_28.xy / vec2(max(_28.w, 9.9999997473787516355514526367188e-05))) * debugline_vs_params[4].xy); - float _81 = length(_78); - vec2 _86; - if (_81 > 9.9999997473787516355514526367188e-05) - { - _86 = _78 / vec2(_81); - } - else - { - _86 = vec2(1.0, 0.0); - } - vec4 _115 = mix(_28, _38, vec4(a_corner.y)); - gl_Position = _115 + vec4((((vec2(-_86.y, _86.x) * a_corner.x) * ((a_width * 0.5) + 0.5)) / debugline_vs_params[4].xy) * _115.w, 0.0, 0.0); - v_col = a_col; - } - -*/ -vs_debugline_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x64,0x65,0x62,0x75,0x67, - 0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35, - 0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20, - 0x61,0x5f,0x70,0x6f,0x73,0x5f,0x61,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x62,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x61,0x5f,0x63,0x6f, - 0x72,0x6e,0x65,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x34,0x29,0x20,0x69,0x6e,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x61,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x5f,0x63,0x6f,0x6c, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x61, - 0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x5f,0x31, - 0x38,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x64,0x65,0x62,0x75,0x67,0x6c,0x69, - 0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c, - 0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69, - 0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c, - 0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x34,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x38,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x34,0x28,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x61,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x38,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x61,0x5f,0x70, - 0x6f,0x73,0x5f,0x62,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x37,0x38,0x20,0x3d,0x20,0x28,0x28,0x5f,0x33,0x38, - 0x2e,0x78,0x79,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x6d,0x61,0x78,0x28,0x5f, - 0x33,0x38,0x2e,0x77,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34, - 0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32, - 0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2d,0x20,0x28,0x28, - 0x5f,0x32,0x38,0x2e,0x78,0x79,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x6d,0x61, - 0x78,0x28,0x5f,0x32,0x38,0x2e,0x77,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39, - 0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31, - 0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29, - 0x29,0x20,0x2a,0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x20,0x3d,0x20, - 0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x37,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x38,0x31,0x20,0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39, - 0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31, - 0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x38, - 0x36,0x20,0x3d,0x20,0x5f,0x37,0x38,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x5f, - 0x38,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x38,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x31,0x35,0x20,0x3d,0x20,0x6d,0x69, - 0x78,0x28,0x5f,0x32,0x38,0x2c,0x20,0x5f,0x33,0x38,0x2c,0x20,0x76,0x65,0x63,0x34, - 0x28,0x61,0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x2e,0x79,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x5f,0x31,0x31,0x35,0x20,0x2b,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x28, - 0x76,0x65,0x63,0x32,0x28,0x2d,0x5f,0x38,0x36,0x2e,0x79,0x2c,0x20,0x5f,0x38,0x36, - 0x2e,0x78,0x29,0x20,0x2a,0x20,0x61,0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x2e,0x78, - 0x29,0x20,0x2a,0x20,0x28,0x28,0x61,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x29,0x20,0x2f,0x20,0x64, - 0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2a,0x20,0x5f,0x31,0x31,0x35, - 0x2e,0x77,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x5f,0x63,0x6f,0x6c,0x20,0x3d,0x20,0x61,0x5f,0x63,0x6f,0x6c, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - layout(location = 0) out vec4 frag_color; - layout(location = 0) in vec4 v_col; - - void main() - { - frag_color = v_col; - } - -*/ -fs_debugline_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x34,0x20,0x76,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x5f,0x63,0x6f, - 0x6c,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 debugline_vs_params[5]; - layout(location = 1) in vec3 a_pos_a; - layout(location = 2) in vec3 a_pos_b; - layout(location = 0) in vec2 a_corner; - layout(location = 4) in float a_width; - out vec4 v_col; - layout(location = 3) in vec4 a_col; - - void main() - { - mat4 _18 = mat4(debugline_vs_params[0], debugline_vs_params[1], debugline_vs_params[2], debugline_vs_params[3]); - vec4 _28 = _18 * vec4(a_pos_a, 1.0); - vec4 _38 = _18 * vec4(a_pos_b, 1.0); - vec2 _78 = ((_38.xy / vec2(max(_38.w, 9.9999997473787516355514526367188e-05))) * debugline_vs_params[4].xy) - ((_28.xy / vec2(max(_28.w, 9.9999997473787516355514526367188e-05))) * debugline_vs_params[4].xy); - float _81 = length(_78); - vec2 _86; - if (_81 > 9.9999997473787516355514526367188e-05) - { - _86 = _78 / vec2(_81); - } - else - { - _86 = vec2(1.0, 0.0); - } - vec4 _115 = mix(_28, _38, vec4(a_corner.y)); - gl_Position = _115 + vec4((((vec2(-_86.y, _86.x) * a_corner.x) * ((a_width * 0.5) + 0.5)) / debugline_vs_params[4].xy) * _115.w, 0.0, 0.0); - v_col = a_col; - } - -*/ -vs_debugline_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x64,0x65, - 0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x35,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x33,0x20,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x61,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x62, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x61, - 0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x34,0x29,0x20,0x69,0x6e, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x0a, - 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x5f,0x63,0x6f,0x6c,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x61,0x5f,0x63, - 0x6f,0x6c,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x5f,0x31,0x38,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x64, - 0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x64, - 0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x33,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x38,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x34,0x28,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x61,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x38,0x20,0x3d,0x20, - 0x5f,0x31,0x38,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x61,0x5f,0x70,0x6f,0x73, - 0x5f,0x62,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x37,0x38,0x20,0x3d,0x20,0x28,0x28,0x5f,0x33,0x38,0x2e,0x78, - 0x79,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x6d,0x61,0x78,0x28,0x5f,0x33,0x38, - 0x2e,0x77,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33, - 0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33, - 0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x64, - 0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2d,0x20,0x28,0x28,0x5f,0x32, - 0x38,0x2e,0x78,0x79,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x6d,0x61,0x78,0x28, - 0x5f,0x32,0x38,0x2e,0x77,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, - 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x20,0x3d,0x20,0x6c,0x65, - 0x6e,0x67,0x74,0x68,0x28,0x5f,0x37,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x38,0x31,0x20,0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, - 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x38,0x36,0x20, - 0x3d,0x20,0x5f,0x37,0x38,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x38,0x31, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x38,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x31,0x35,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28, - 0x5f,0x32,0x38,0x2c,0x20,0x5f,0x33,0x38,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,0x61, - 0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x2e,0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f, - 0x31,0x31,0x35,0x20,0x2b,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x28,0x76,0x65, - 0x63,0x32,0x28,0x2d,0x5f,0x38,0x36,0x2e,0x79,0x2c,0x20,0x5f,0x38,0x36,0x2e,0x78, - 0x29,0x20,0x2a,0x20,0x61,0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x2e,0x78,0x29,0x20, - 0x2a,0x20,0x28,0x28,0x61,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x29,0x20,0x2f,0x20,0x64,0x65,0x62, - 0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x34,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2a,0x20,0x5f,0x31,0x31,0x35,0x2e,0x77, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x5f,0x63,0x6f,0x6c,0x20,0x3d,0x20,0x61,0x5f,0x63,0x6f,0x6c,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - layout(location = 0) out highp vec4 frag_color; - in highp vec4 v_col; - - void main() - { - frag_color = v_col; - } - -*/ -fs_debugline_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69, - 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x5f,0x63, - 0x6f,0x6c,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x76,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct debugline_vs_params - { - float4x4 mvp; - float4 viewport; - }; - - struct main0_out - { - float4 v_col [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 a_corner [[attribute(0)]]; - float3 a_pos_a [[attribute(1)]]; - float3 a_pos_b [[attribute(2)]]; - float4 a_col [[attribute(3)]]; - float a_width [[attribute(4)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant debugline_vs_params& _13 [[buffer(0)]]) - { - main0_out out = {}; - float4 _28 = _13.mvp * float4(in.a_pos_a, 1.0); - float4 _38 = _13.mvp * float4(in.a_pos_b, 1.0); - float2 _78 = ((_38.xy / float2(fast::max(_38.w, 9.9999997473787516355514526367188e-05))) * _13.viewport.xy) - ((_28.xy / float2(fast::max(_28.w, 9.9999997473787516355514526367188e-05))) * _13.viewport.xy); - float _81 = length(_78); - float2 _86; - if (_81 > 9.9999997473787516355514526367188e-05) - { - _86 = _78 / float2(_81); - } - else - { - _86 = float2(1.0, 0.0); - } - float4 _115 = mix(_28, _38, float4(in.a_corner.y)); - out.gl_Position = _115 + float4((((float2(-_86.y, _86.x) * in.a_corner.x) * ((in.a_width * 0.5) + 0.5)) / _13.viewport.xy) * _115.w, 0.0, 0.0); - out.v_col = in.a_col; - return out; - } - -*/ -vs_debugline_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x64, - 0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78, - 0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x5f, - 0x63,0x6f,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30, - 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x61,0x5f,0x63,0x6f,0x72, - 0x6e,0x65,0x72,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28, - 0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x61,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x61,0x5f,0x70,0x6f,0x73,0x5f,0x62,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x61,0x5f,0x63,0x6f,0x6c, - 0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x5f,0x77, - 0x69,0x64,0x74,0x68,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x28,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65, - 0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b, - 0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x61,0x6e,0x74,0x20,0x64,0x65,0x62,0x75,0x67,0x6c,0x69,0x6e,0x65,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x33,0x20,0x5b,0x5b, - 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, - 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x2e,0x6d,0x76,0x70,0x20, - 0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x61,0x5f,0x70,0x6f, - 0x73,0x5f,0x61,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x2e, - 0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x61,0x5f,0x70,0x6f,0x73,0x5f,0x62,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x37,0x38,0x20,0x3d,0x20, - 0x28,0x28,0x5f,0x33,0x38,0x2e,0x78,0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x5f,0x33,0x38,0x2e, - 0x77,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37, - 0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36, - 0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x33,0x2e,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x2e,0x78,0x79,0x29,0x20,0x2d, - 0x20,0x28,0x28,0x5f,0x32,0x38,0x2e,0x78,0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x5f,0x32,0x38, - 0x2e,0x77,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33, - 0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33, - 0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x33,0x2e,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x2e,0x78,0x79,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x20,0x3d, - 0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x37,0x38,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x38,0x36,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x31,0x20,0x3e,0x20,0x39,0x2e,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35, - 0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30, - 0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x38,0x36,0x20,0x3d,0x20,0x5f,0x37,0x38,0x20,0x2f,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x28,0x5f,0x38,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x38,0x36,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x5f,0x31,0x31,0x35,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x32,0x38,0x2c,0x20, - 0x5f,0x33,0x38,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x61, - 0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x2e,0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x5f,0x31,0x31,0x35,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x2d,0x5f,0x38,0x36,0x2e, - 0x79,0x2c,0x20,0x5f,0x38,0x36,0x2e,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x61, - 0x5f,0x63,0x6f,0x72,0x6e,0x65,0x72,0x2e,0x78,0x29,0x20,0x2a,0x20,0x28,0x28,0x69, - 0x6e,0x2e,0x61,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x29,0x20,0x2f,0x20,0x5f,0x31,0x33,0x2e,0x76, - 0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x2e,0x78,0x79,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x31,0x35,0x2e,0x77,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x5f,0x63,0x6f,0x6c,0x20,0x3d, - 0x20,0x69,0x6e,0x2e,0x61,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float4 v_col [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.frag_color = in.v_col; - return out; - } - -*/ -fs_debugline_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x76,0x5f,0x63,0x6f,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d, - 0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75, - 0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e, - 0x76,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -debugline_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "debugline_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_debugline_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_debugline_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "a_corner"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "a_pos_a"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "a_pos_b"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "a_col"; - desc.attrs[4].base_type = .FLOAT; - desc.attrs[4].glsl_name = "a_width"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "debugline_vs_params"; - case .GLES3; - desc.vertex_func.source = xx *vs_debugline_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_debugline_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "a_corner"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "a_pos_a"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "a_pos_b"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "a_col"; - desc.attrs[4].base_type = .FLOAT; - desc.attrs[4].glsl_name = "a_width"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "debugline_vs_params"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_debugline_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_debugline_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[4].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].msl_buffer_n = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_dof_blur.jai b/src/shaders/jai/shader_dof_blur.jai deleted file mode 100644 index 7c06738..0000000 --- a/src/shaders/jai/shader_dof_blur.jai +++ /dev/null @@ -1,566 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_dof_blur.glsl -o ./jai/shader_dof_blur.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'dof_blur': - Get shader desc: dof_blur_shader_desc(sg_query_backend()) - Vertex Shader: vs_dof_blur - Fragment Shader: fs_dof_blur - Attributes: - ATTR_dof_blur_position => 0 - ATTR_dof_blur_uv => 1 - Bindings: - Uniform block 'dof_blur_params': - Jai struct: Dof_Blur_Params - Bind slot: UB_dof_blur_params => 0 - Image 'dof_blur_src': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_dof_blur_src => 0 - Sampler 'dof_blur_src_smp': - Type: .FILTERING - Bind slot: SMP_dof_blur_src_smp => 0 -*/ -ATTR_dof_blur_position :: 0; -ATTR_dof_blur_uv :: 1; -UB_dof_blur_params :: 0; -IMG_dof_blur_src :: 0; -SMP_dof_blur_src_smp :: 0; -Dof_Blur_Params :: struct { - bokeh_radius_x: float; - bokeh_radius_y: float; - _: [8]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_dof_blur_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - uniform vec4 dof_blur_params[1]; - layout(binding = 16) uniform sampler2D dof_blur_src_dof_blur_src_smp; - - layout(location = 0) in vec2 texcoord; - layout(location = 0) out vec4 frag_color; - - void main() - { - vec4 _24 = texture(dof_blur_src_dof_blur_src_smp, texcoord); - vec4 best = _24; - float best_lum = dot(_24.xyz, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)); - for (int i = 0; i < 32; i++) - { - float _50 = float(i); - float _52 = _50 * 2.3999631404876708984375; - vec4 _88 = texture(dof_blur_src_dof_blur_src_smp, texcoord + ((vec2(cos(_52), sin(_52)) * sqrt((_50 * 0.0322580635547637939453125) + 0.001000000047497451305389404296875)) * vec2(dof_blur_params[0].x, dof_blur_params[0].y))); - float _92 = dot(_88.xyz, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)); - if (_92 > best_lum) - { - best = _88; - best_lum = _92; - } - } - frag_color = best; - } - -*/ -fs_dof_blur_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x64,0x6f,0x66,0x5f,0x62, - 0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20, - 0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x32,0x44,0x20,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73, - 0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f, - 0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f, - 0x32,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f,0x66, - 0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x62,0x6c, - 0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20, - 0x62,0x65,0x73,0x74,0x20,0x3d,0x20,0x5f,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x20,0x3d, - 0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x34,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37,0x35, - 0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37, - 0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35,0x30, - 0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32,0x30, - 0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32,0x31, - 0x38,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28, - 0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x33, - 0x32,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x32,0x20,0x3d,0x20, - 0x5f,0x35,0x30,0x20,0x2a,0x20,0x32,0x2e,0x33,0x39,0x39,0x39,0x36,0x33,0x31,0x34, - 0x30,0x34,0x38,0x37,0x36,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x38,0x38, - 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72, - 0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, - 0x72,0x64,0x20,0x2b,0x20,0x28,0x28,0x76,0x65,0x63,0x32,0x28,0x63,0x6f,0x73,0x28, - 0x5f,0x35,0x32,0x29,0x2c,0x20,0x73,0x69,0x6e,0x28,0x5f,0x35,0x32,0x29,0x29,0x20, - 0x2a,0x20,0x73,0x71,0x72,0x74,0x28,0x28,0x5f,0x35,0x30,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x33,0x32,0x32,0x35,0x38,0x30,0x36,0x33,0x35,0x35,0x34,0x37,0x36,0x33,0x37, - 0x39,0x33,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x30, - 0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35, - 0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35, - 0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x64,0x6f,0x66,0x5f,0x62,0x6c, - 0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x2c,0x20, - 0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x30,0x5d,0x2e,0x79,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x32,0x20,0x3d,0x20,0x64,0x6f,0x74, - 0x28,0x5f,0x38,0x38,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35, - 0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30, - 0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35, - 0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30, - 0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x39,0x32,0x20,0x3e,0x20,0x62,0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x65,0x73,0x74,0x20,0x3d,0x20,0x5f,0x38,0x38,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x65,0x73, - 0x74,0x5f,0x6c,0x75,0x6d,0x20,0x3d,0x20,0x5f,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x62,0x65, - 0x73,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_dof_blur_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp vec4 dof_blur_params[1]; - uniform highp sampler2D dof_blur_src_dof_blur_src_smp; - - in highp vec2 texcoord; - layout(location = 0) out highp vec4 frag_color; - - void main() - { - highp vec4 _24 = texture(dof_blur_src_dof_blur_src_smp, texcoord); - highp vec4 best = _24; - highp float best_lum = dot(_24.xyz, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)); - for (int i = 0; i < 32; i++) - { - highp float _50 = float(i); - highp float _52 = _50 * 2.3999631404876708984375; - highp vec4 _88 = texture(dof_blur_src_dof_blur_src_smp, texcoord + ((vec2(cos(_52), sin(_52)) * sqrt((_50 * 0.0322580635547637939453125) + 0.001000000047497451305389404296875)) * vec2(dof_blur_params[0].x, dof_blur_params[0].y))); - highp float _92 = dot(_88.xyz, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)); - if (_92 > best_lum) - { - best = _88; - best_lum = _92; - } - } - frag_color = best; - } - -*/ -fs_dof_blur_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x64,0x6f, - 0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x32,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x64, - 0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x62,0x65,0x73,0x74,0x20, - 0x3d,0x20,0x5f,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x20, - 0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x34,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37, - 0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35, - 0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32, - 0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, - 0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20, - 0x33,0x32,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x32,0x20,0x3d,0x20,0x5f,0x35,0x30, - 0x20,0x2a,0x20,0x32,0x2e,0x33,0x39,0x39,0x39,0x36,0x33,0x31,0x34,0x30,0x34,0x38, - 0x37,0x36,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x38,0x38,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f, - 0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x28,0x28,0x76,0x65,0x63,0x32,0x28,0x63, - 0x6f,0x73,0x28,0x5f,0x35,0x32,0x29,0x2c,0x20,0x73,0x69,0x6e,0x28,0x5f,0x35,0x32, - 0x29,0x29,0x20,0x2a,0x20,0x73,0x71,0x72,0x74,0x28,0x28,0x5f,0x35,0x30,0x20,0x2a, - 0x20,0x30,0x2e,0x30,0x33,0x32,0x32,0x35,0x38,0x30,0x36,0x33,0x35,0x35,0x34,0x37, - 0x36,0x33,0x37,0x39,0x33,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20, - 0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39, - 0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36, - 0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x64,0x6f,0x66, - 0x5f,0x62,0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e, - 0x78,0x2c,0x20,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x39,0x32,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x38,0x38,0x2e,0x78,0x79, - 0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39, - 0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35, - 0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31, - 0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32, - 0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x39,0x32,0x20,0x3e,0x20,0x62,0x65, - 0x73,0x74,0x5f,0x6c,0x75,0x6d,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x65, - 0x73,0x74,0x20,0x3d,0x20,0x5f,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x20,0x3d, - 0x20,0x5f,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x62,0x65,0x73,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_dof_blur_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct dof_blur_params - { - float bokeh_radius_x; - float bokeh_radius_y; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant dof_blur_params& _72 [[buffer(0)]], texture2d dof_blur_src [[texture(0)]], sampler dof_blur_src_smp [[sampler(0)]]) - { - main0_out out = {}; - float4 _24 = dof_blur_src.sample(dof_blur_src_smp, in.texcoord); - float4 best = _24; - float best_lum = dot(_24.xyz, float3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)); - for (int i = 0; i < 32; i++) - { - float _50 = float(i); - float _52 = _50 * 2.3999631404876708984375; - float4 _88 = dof_blur_src.sample(dof_blur_src_smp, (in.texcoord + ((float2(cos(_52), sin(_52)) * sqrt((_50 * 0.0322580635547637939453125) + 0.001000000047497451305389404296875)) * float2(_72.bokeh_radius_x, _72.bokeh_radius_y)))); - float _92 = dot(_88.xyz, float3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)); - if (_92 > best_lum) - { - best = _88; - best_lum = _92; - } - } - out.frag_color = best; - return out; - } - -*/ -fs_dof_blur_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x64, - 0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6f,0x6b,0x65,0x68, - 0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x5f,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x62,0x6f,0x6b,0x65,0x68,0x5f,0x72,0x61,0x64,0x69,0x75, - 0x73,0x5f,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66, - 0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e, - 0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d, - 0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x64,0x6f,0x66,0x5f,0x62, - 0x6c,0x75,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x37,0x32,0x20, - 0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20, - 0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x20,0x5b,0x5b,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x20,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72, - 0x63,0x5f,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28, - 0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x32,0x34,0x20,0x3d, - 0x20,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x28,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f,0x73,0x72, - 0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f, - 0x72,0x64,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x62,0x65,0x73,0x74,0x20,0x3d,0x20,0x5f,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x20,0x3d, - 0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x34,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32, - 0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32, - 0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32, - 0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39, - 0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, - 0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c, - 0x20,0x33,0x32,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35, - 0x30,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x32,0x20, - 0x3d,0x20,0x5f,0x35,0x30,0x20,0x2a,0x20,0x32,0x2e,0x33,0x39,0x39,0x39,0x36,0x33, - 0x31,0x34,0x30,0x34,0x38,0x37,0x36,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x20,0x5f,0x38,0x38,0x20,0x3d,0x20,0x64,0x6f,0x66,0x5f,0x62,0x6c,0x75,0x72,0x5f, - 0x73,0x72,0x63,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x64,0x6f,0x66,0x5f,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e, - 0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x28,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x63,0x6f,0x73,0x28,0x5f,0x35,0x32,0x29,0x2c,0x20,0x73, - 0x69,0x6e,0x28,0x5f,0x35,0x32,0x29,0x29,0x20,0x2a,0x20,0x73,0x71,0x72,0x74,0x28, - 0x28,0x5f,0x35,0x30,0x20,0x2a,0x20,0x30,0x2e,0x30,0x33,0x32,0x32,0x35,0x38,0x30, - 0x36,0x33,0x35,0x35,0x34,0x37,0x36,0x33,0x37,0x39,0x33,0x39,0x34,0x35,0x33,0x31, - 0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39, - 0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x5f,0x37,0x32,0x2e,0x62,0x6f,0x6b,0x65,0x68,0x5f,0x72, - 0x61,0x64,0x69,0x75,0x73,0x5f,0x78,0x2c,0x20,0x5f,0x37,0x32,0x2e,0x62,0x6f,0x6b, - 0x65,0x68,0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x5f,0x79,0x29,0x29,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x39,0x32,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x38,0x38,0x2e,0x78,0x79,0x7a, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39, - 0x39,0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32, - 0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36, - 0x31,0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32, - 0x32,0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x39,0x32,0x20,0x3e,0x20,0x62, - 0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x65,0x73,0x74,0x20,0x3d,0x20,0x5f,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x65,0x73,0x74,0x5f,0x6c,0x75,0x6d,0x20, - 0x3d,0x20,0x5f,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x62,0x65,0x73,0x74, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -dof_blur_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "dof_blur_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_dof_blur_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_dof_blur_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "dof_blur_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "dof_blur_src_dof_blur_src_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_dof_blur_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_dof_blur_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "dof_blur_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "dof_blur_src_dof_blur_src_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_dof_blur_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_dof_blur_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 16; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_dof_downsample.jai b/src/shaders/jai/shader_dof_downsample.jai deleted file mode 100644 index 0728c3d..0000000 --- a/src/shaders/jai/shader_dof_downsample.jai +++ /dev/null @@ -1,339 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_dof_downsample.glsl -o ./jai/shader_dof_downsample.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'dof_downsample': - Get shader desc: dof_downsample_shader_desc(sg_query_backend()) - Vertex Shader: vs_dof_downsample - Fragment Shader: fs_dof_downsample - Attributes: - ATTR_dof_downsample_position => 0 - ATTR_dof_downsample_uv => 1 - Bindings: - Image 'dof_downsample_src': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_dof_downsample_src => 0 - Sampler 'dof_downsample_src_smp': - Type: .FILTERING - Bind slot: SMP_dof_downsample_src_smp => 0 -*/ -ATTR_dof_downsample_position :: 0; -ATTR_dof_downsample_uv :: 1; -IMG_dof_downsample_src :: 0; -SMP_dof_downsample_src_smp :: 0; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_dof_downsample_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - layout(binding = 16) uniform sampler2D dof_downsample_src_dof_downsample_src_smp; - - layout(location = 0) out vec4 frag_color; - layout(location = 0) in vec2 texcoord; - - void main() - { - frag_color = vec4(texture(dof_downsample_src_dof_downsample_src_smp, texcoord).xyz, 1.0); - } - -*/ -fs_dof_downsample_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31, - 0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x3b,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64, - 0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72, - 0x63,0x5f,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, - 0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_dof_downsample_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp sampler2D dof_downsample_src_dof_downsample_src_smp; - - layout(location = 0) out highp vec4 frag_color; - in highp vec2 texcoord; - - void main() - { - frag_color = vec4(texture(dof_downsample_src_dof_downsample_src_smp, texcoord).xyz, 1.0); - } - -*/ -fs_dof_downsample_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x64,0x6f, - 0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70, - 0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, - 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x64,0x6f,0x66,0x5f,0x64, - 0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d, - 0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_dof_downsample_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], texture2d dof_downsample_src [[texture(0)]], sampler dof_downsample_src_smp [[sampler(0)]]) - { - main0_out out = {}; - out.frag_color = float4(dof_downsample_src.sample(dof_downsample_src_smp, in.texcoord).xyz, 1.0); - return out; - } - -*/ -fs_dof_downsample_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, - 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72, - 0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20, - 0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, - 0x3e,0x20,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x73,0x72,0x63,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30, - 0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x64,0x6f,0x66, - 0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f, - 0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29, - 0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x64,0x6f,0x66,0x5f,0x64,0x6f, - 0x77,0x6e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x73,0x72,0x63,0x2e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x28,0x64,0x6f,0x66,0x5f,0x64,0x6f,0x77,0x6e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x73,0x72,0x63,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f, - 0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -dof_downsample_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "dof_downsample_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_dof_downsample_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_dof_downsample_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "dof_downsample_src_dof_downsample_src_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_dof_downsample_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_dof_downsample_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "dof_downsample_src_dof_downsample_src_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_dof_downsample_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_dof_downsample_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_gbuffer.jai b/src/shaders/jai/shader_gbuffer.jai deleted file mode 100644 index 4a7aa30..0000000 --- a/src/shaders/jai/shader_gbuffer.jai +++ /dev/null @@ -1,1267 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_gbuffer.glsl -o ./jai/shader_gbuffer.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'gbuffer': - Get shader desc: gbuffer_shader_desc(sg_query_backend()) - Vertex Shader: vs_g - Fragment Shader: fs_g - Attributes: - ATTR_gbuffer_position => 0 - ATTR_gbuffer_normal => 1 - ATTR_gbuffer_centre => 2 - ATTR_gbuffer_instance => 3 - Bindings: - Uniform block 'gbuffer_vs_params': - Jai struct: Gbuffer_Vs_Params - Bind slot: UB_gbuffer_vs_params => 0 -*/ -ATTR_gbuffer_position :: 0; -ATTR_gbuffer_normal :: 1; -ATTR_gbuffer_centre :: 2; -ATTR_gbuffer_instance :: 3; -UB_gbuffer_vs_params :: 0; -Gbuffer_Vs_Params :: struct { - mvp: [16]float; - view_matrix: [16]float; - isGround: s32; - planeHeight: float; - _: [8]u8; -}; -/* - #version 430 - - struct gbuffer_vs_params - { - mat4 mvp; - mat4 view_matrix; - int isGround; - float planeHeight; - }; - - uniform gbuffer_vs_params _161; - - layout(location = 0) in vec4 position; - layout(location = 0) out vec3 view_space_pos; - layout(location = 1) out vec3 view_space_normal; - layout(location = 1) in vec4 normal; - layout(location = 2) out vec3 v_world_pos; - layout(location = 3) in vec4 instance; - layout(location = 2) in vec4 centre; - - mat3 gbuf_rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 gbuf_rot_z(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, -_50, 0.0), vec3(_50, _47, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 gbuf_rot_y(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, 0.0, _67), vec3(0.0, 1.0, 0.0), vec3(-_67, 0.0, _64)); - } - - mat3 gbuf_get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = gbuf_rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = gbuf_rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = gbuf_rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = gbuf_rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = gbuf_rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * gbuf_rot_y(param_5); - } - - void main() - { - if (_161.isGround == 1) - { - vec4 _186 = vec4(position.x * 100.0, _161.planeHeight, position.z * 100.0, 1.0); - gl_Position = _161.mvp * _186; - view_space_pos = (_161.view_matrix * _186).xyz; - view_space_normal = mat3(_161.view_matrix[0].xyz, _161.view_matrix[1].xyz, _161.view_matrix[2].xyz) * normal.xyz; - v_world_pos = _186.xyz; - } - else - { - int param = int(round(instance.w)); - mat3 _236 = gbuf_get_orientation_matrix(param); - vec4 _257 = vec4(((_236 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz, 1.0); - gl_Position = _161.mvp * _257; - view_space_pos = (_161.view_matrix * _257).xyz; - view_space_normal = mat3(_161.view_matrix[0].xyz, _161.view_matrix[1].xyz, _161.view_matrix[2].xyz) * (_236 * normal.xyz); - v_world_pos = _257.xyz; - } - } - -*/ -vs_g_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74, - 0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20, - 0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x47,0x72,0x6f,0x75,0x6e,0x64,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65, - 0x69,0x67,0x68,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x20,0x5f,0x31,0x36,0x31,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20, - 0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x33,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x3b,0x0a,0x0a,0x6d,0x61, - 0x74,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d, - 0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33, - 0x31,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33, - 0x31,0x2c,0x20,0x5f,0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74, - 0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20, - 0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x37, - 0x2c,0x20,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x5f,0x35,0x30,0x2c,0x20,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33, - 0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x37,0x20,0x3d,0x20,0x73, - 0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x34,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x37,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x36,0x34,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20, - 0x67,0x62,0x75,0x66,0x5f,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61, - 0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20, - 0x6f,0x72,0x69,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f, - 0x38,0x32,0x20,0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d, - 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32, - 0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61, - 0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x78,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20, - 0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d, - 0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36, - 0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d, - 0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20, - 0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e, - 0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36, - 0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74, - 0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30, - 0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30, - 0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61, - 0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x78,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20,0x25,0x20, - 0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30, - 0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65,0x20, - 0x2a,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d, - 0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x36,0x31,0x2e,0x69,0x73,0x47,0x72,0x6f,0x75,0x6e,0x64,0x20,0x3d,0x3d, - 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x36,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20, - 0x31,0x30,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x70,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x36,0x31,0x2e,0x6d,0x76, - 0x70,0x20,0x2a,0x20,0x5f,0x31,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61, - 0x74,0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x31,0x38,0x36,0x29,0x2e,0x78,0x79,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73, - 0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x6d,0x61, - 0x74,0x33,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74, - 0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31, - 0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x31,0x5d,0x2e, - 0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x36,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69, - 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x5f,0x32,0x33,0x36,0x20,0x3d, - 0x20,0x67,0x62,0x75,0x66,0x5f,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74, - 0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x32,0x35,0x37,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28, - 0x5f,0x32,0x33,0x36,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20, - 0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x36,0x31, - 0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x5f,0x32,0x35,0x37,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f, - 0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77, - 0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x32,0x35,0x37,0x29,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x69,0x65, - 0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d, - 0x20,0x6d,0x61,0x74,0x33,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f, - 0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b, - 0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65, - 0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29, - 0x20,0x2a,0x20,0x28,0x5f,0x32,0x33,0x36,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32, - 0x35,0x37,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a, - 0x0a,0x00, -]; -/* - #version 430 - - layout(location = 0) out vec4 out_position; - layout(location = 0) in vec3 view_space_pos; - layout(location = 1) out vec4 out_normal; - layout(location = 1) in vec3 view_space_normal; - layout(location = 2) out vec4 out_worldpos; - layout(location = 2) in vec3 v_world_pos; - - void main() - { - out_position = vec4(view_space_pos, 1.0); - out_normal = vec4(normalize(view_space_normal), 1.0); - out_worldpos = vec4(v_world_pos, 1.0); - } - -*/ -fs_g_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63, - 0x65,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x6f, - 0x75,0x74,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f, - 0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - struct gbuffer_vs_params - { - mat4 mvp; - mat4 view_matrix; - int isGround; - float planeHeight; - }; - - uniform gbuffer_vs_params _161; - - layout(location = 0) in vec4 position; - out vec3 view_space_pos; - out vec3 view_space_normal; - layout(location = 1) in vec4 normal; - out vec3 v_world_pos; - layout(location = 3) in vec4 instance; - layout(location = 2) in vec4 centre; - - mat3 gbuf_rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 gbuf_rot_z(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, -_50, 0.0), vec3(_50, _47, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 gbuf_rot_y(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, 0.0, _67), vec3(0.0, 1.0, 0.0), vec3(-_67, 0.0, _64)); - } - - mat3 gbuf_get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = gbuf_rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = gbuf_rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = gbuf_rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = gbuf_rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = gbuf_rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * gbuf_rot_y(param_5); - } - - void main() - { - if (_161.isGround == 1) - { - vec4 _186 = vec4(position.x * 100.0, _161.planeHeight, position.z * 100.0, 1.0); - gl_Position = _161.mvp * _186; - view_space_pos = (_161.view_matrix * _186).xyz; - view_space_normal = mat3(_161.view_matrix[0].xyz, _161.view_matrix[1].xyz, _161.view_matrix[2].xyz) * normal.xyz; - v_world_pos = _186.xyz; - } - else - { - int param = int(round(instance.w)); - mat3 _236 = gbuf_get_orientation_matrix(param); - vec4 _257 = vec4(((_236 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz, 1.0); - gl_Position = _161.mvp * _257; - view_space_pos = (_161.view_matrix * _257).xyz; - view_space_normal = mat3(_161.view_matrix[0].xyz, _161.view_matrix[1].xyz, _161.view_matrix[2].xyz) * (_236 * normal.xyz); - v_world_pos = _257.xyz; - } - } - -*/ -vs_g_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x6d,0x61,0x74,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61, - 0x74,0x34,0x20,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x47,0x72,0x6f,0x75,0x6e,0x64, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x31,0x36,0x31,0x3b,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x6f,0x75, - 0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63, - 0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6f, - 0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f, - 0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x3b, - 0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63, - 0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c, - 0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x6d,0x61,0x74,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28, - 0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35, - 0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33, - 0x28,0x5f,0x34,0x37,0x2c,0x20,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x35,0x30,0x2c,0x20,0x5f,0x34,0x37,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x6d,0x61,0x74,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x79,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x37, - 0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28, - 0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x37,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x36,0x37,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d, - 0x61,0x74,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69, - 0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28, - 0x69,0x6e,0x74,0x20,0x6f,0x72,0x69,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63, - 0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38, - 0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34, - 0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32, - 0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f, - 0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32, - 0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37, - 0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74, - 0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38, - 0x32,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e, - 0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36, - 0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d, - 0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20, - 0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36, - 0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66, - 0x5f,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31, - 0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36, - 0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f, - 0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72, - 0x69,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39, - 0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33, - 0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62, - 0x61,0x73,0x65,0x20,0x2a,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x79, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e,0x69,0x73,0x47,0x72,0x6f,0x75,0x6e, - 0x64,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x36,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e, - 0x78,0x20,0x2a,0x20,0x31,0x30,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e, - 0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x36, - 0x31,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x5f,0x31,0x38,0x36,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65, - 0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65, - 0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x31,0x38,0x36,0x29, - 0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77, - 0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78, - 0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69, - 0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f, - 0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75, - 0x6e,0x64,0x28,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x5f,0x32, - 0x33,0x36,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x67,0x65,0x74,0x5f,0x6f,0x72, - 0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x32,0x35,0x37,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x28,0x28,0x5f,0x32,0x33,0x36,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x5f,0x31,0x36,0x31,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x5f,0x32,0x35,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70, - 0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e, - 0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x32, - 0x35,0x37,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76, - 0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e,0x78,0x79, - 0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74, - 0x72,0x69,0x78,0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31, - 0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x32,0x5d,0x2e, - 0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x28,0x5f,0x32,0x33,0x36,0x20,0x2a,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x20, - 0x3d,0x20,0x5f,0x32,0x35,0x37,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - layout(location = 0) out highp vec4 out_position; - in highp vec3 view_space_pos; - layout(location = 1) out highp vec4 out_normal; - in highp vec3 view_space_normal; - layout(location = 2) out highp vec4 out_worldpos; - in highp vec3 v_world_pos; - - void main() - { - out_position = vec4(view_space_pos, 1.0); - out_normal = vec4(normalize(view_space_normal), 1.0); - out_worldpos = vec4(v_world_pos, 1.0); - } - -*/ -fs_g_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x69, - 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69,0x65, - 0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73, - 0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70, - 0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x69,0x65,0x77,0x5f,0x73, - 0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x70,0x6f,0x73,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct gbuffer_vs_params - { - float4x4 mvp; - float4x4 view_matrix; - int isGround; - float planeHeight; - }; - - struct main0_out - { - float3 view_space_pos [[user(locn0)]]; - float3 view_space_normal [[user(locn1)]]; - float3 v_world_pos [[user(locn2)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 normal [[attribute(1)]]; - float4 instance [[attribute(3)]]; - }; - - static inline __attribute__((always_inline)) - float3x3 gbuf_rot_x(thread const float& a) - { - float _28 = cos(a); - float _31 = sin(a); - return float3x3(float3(1.0, 0.0, 0.0), float3(0.0, _28, -_31), float3(0.0, _31, _28)); - } - - static inline __attribute__((always_inline)) - float3x3 gbuf_rot_z(thread const float& a) - { - float _47 = cos(a); - float _50 = sin(a); - return float3x3(float3(_47, -_50, 0.0), float3(_50, _47, 0.0), float3(0.0, 0.0, 1.0)); - } - - static inline __attribute__((always_inline)) - float3x3 gbuf_rot_y(thread const float& a) - { - float _64 = cos(a); - float _67 = sin(a); - return float3x3(float3(_64, 0.0, _67), float3(0.0, 1.0, 0.0), float3(-_67, 0.0, _64)); - } - - static inline __attribute__((always_inline)) - float3x3 gbuf_get_orientation_matrix(thread const int& ori) - { - int _82 = ori / 4; - float3x3 base; - if (_82 == 0) - { - base = float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = gbuf_rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = gbuf_rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = gbuf_rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = gbuf_rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = gbuf_rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * gbuf_rot_y(param_5); - } - - vertex main0_out main0(main0_in in [[stage_in]], constant gbuffer_vs_params& _161 [[buffer(0)]]) - { - main0_out out = {}; - if (_161.isGround == 1) - { - float4 _186 = float4(in.position.x * 100.0, _161.planeHeight, in.position.z * 100.0, 1.0); - out.gl_Position = _161.mvp * _186; - out.view_space_pos = (_161.view_matrix * _186).xyz; - out.view_space_normal = float3x3(_161.view_matrix[0].xyz, _161.view_matrix[1].xyz, _161.view_matrix[2].xyz) * in.normal.xyz; - out.v_world_pos = _186.xyz; - } - else - { - int param = int(round(in.instance.w)); - float3x3 _236 = gbuf_get_orientation_matrix(param); - float4 _257 = float4(((_236 * (in.position.xyz - float3(0.5))) + float3(0.5)) + in.instance.xyz, 1.0); - out.gl_Position = _161.mvp * _257; - out.view_space_pos = (_161.view_matrix * _257).xyz; - out.view_space_normal = float3x3(_161.view_matrix[0].xyz, _161.view_matrix[1].xyz, _161.view_matrix[2].xyz) * (_236 * in.normal.xyz); - out.v_world_pos = _257.xyz; - } - return out; - } - -*/ -vs_g_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x76,0x69,0x65,0x77,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x69,0x73,0x47,0x72,0x6f,0x75,0x6e,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f, - 0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20, - 0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c, - 0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, - 0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b, - 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69, - 0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62, - 0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x61,0x74, - 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63, - 0x65,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29, - 0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x67,0x62, - 0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x78,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20, - 0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x38,0x20, - 0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f, - 0x33,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77, - 0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x78,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a, - 0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x2d,0x5f,0x35,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x35,0x30, - 0x2c,0x20,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x67,0x62, - 0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20, - 0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20, - 0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x34, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x37,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x2d,0x5f,0x36,0x37,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77, - 0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x78,0x33,0x20,0x67,0x62,0x75,0x66,0x5f,0x67,0x65,0x74,0x5f,0x6f, - 0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69, - 0x78,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69, - 0x6e,0x74,0x26,0x20,0x6f,0x72,0x69,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x62, - 0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32, - 0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35, - 0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38, - 0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d, - 0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35, - 0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20, - 0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37, - 0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31, - 0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20, - 0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20, - 0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38, - 0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72, - 0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35, - 0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32, - 0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20, - 0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73, - 0x65,0x20,0x2a,0x20,0x67,0x62,0x75,0x66,0x5f,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x72,0x74, - 0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b, - 0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x61,0x6e,0x74,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x36,0x31,0x20,0x5b,0x5b, - 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, - 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x31,0x36,0x31,0x2e,0x69,0x73,0x47,0x72,0x6f,0x75,0x6e,0x64,0x20,0x3d,0x3d,0x20, - 0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x38,0x36,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x78,0x20,0x2a,0x20,0x31,0x30,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x36, - 0x31,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69, - 0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x7a,0x20,0x2a,0x20,0x31, - 0x30,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x36,0x31,0x2e,0x6d,0x76,0x70,0x20,0x2a, - 0x20,0x5f,0x31,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, - 0x75,0x74,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f, - 0x73,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x31,0x38,0x36,0x29,0x2e,0x78,0x79, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76, - 0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x5f,0x31,0x36,0x31, - 0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e, - 0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31, - 0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x32, - 0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x36,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69, - 0x6e,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x20,0x5f,0x32,0x33,0x36,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x5f,0x67,0x65,0x74, - 0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74, - 0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x32,0x35,0x37,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x28,0x5f,0x32,0x33,0x36,0x20, - 0x2a,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78, - 0x79,0x7a,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x29,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e, - 0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x36,0x31,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20, - 0x5f,0x32,0x35,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61, - 0x74,0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x32,0x35,0x37,0x29,0x2e,0x78,0x79,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x5f,0x31,0x36,0x31,0x2e, - 0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36,0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61, - 0x74,0x72,0x69,0x78,0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x36, - 0x31,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x32,0x5d, - 0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x28,0x5f,0x32,0x33,0x36,0x20,0x2a,0x20, - 0x69,0x6e,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32,0x35,0x37,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 out_position [[color(0)]]; - float4 out_normal [[color(1)]]; - float4 out_worldpos [[color(2)]]; - }; - - struct main0_in - { - float3 view_space_pos [[user(locn0)]]; - float3 view_space_normal [[user(locn1)]]; - float3 v_world_pos [[user(locn2)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.out_position = float4(in.view_space_pos, 1.0); - out.out_normal = float4(fast::normalize(in.view_space_normal), 1.0); - out.out_worldpos = float4(in.v_world_pos, 1.0); - return out; - } - -*/ -fs_g_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x31, - 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x6f,0x75,0x74,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x63, - 0x6f,0x6c,0x6f,0x72,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x69,0x65,0x77, - 0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65, - 0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63, - 0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, - 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b, - 0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x6f,0x75,0x74,0x5f,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x69,0x6e,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70, - 0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70, - 0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x6f,0x75,0x74,0x5f,0x77, - 0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x69,0x6e,0x2e,0x76,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x70,0x6f,0x73,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -gbuffer_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "gbuffer_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_g_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_g_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "_161.mvp"; - desc.uniform_blocks[0].glsl_uniforms[1].type = .MAT4; - desc.uniform_blocks[0].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[1].glsl_name = "_161.view_matrix"; - desc.uniform_blocks[0].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[0].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[2].glsl_name = "_161.isGround"; - desc.uniform_blocks[0].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[3].glsl_name = "_161.planeHeight"; - case .GLES3; - desc.vertex_func.source = xx *vs_g_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_g_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "_161.mvp"; - desc.uniform_blocks[0].glsl_uniforms[1].type = .MAT4; - desc.uniform_blocks[0].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[1].glsl_name = "_161.view_matrix"; - desc.uniform_blocks[0].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[0].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[2].glsl_name = "_161.isGround"; - desc.uniform_blocks[0].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[3].glsl_name = "_161.planeHeight"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_g_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_g_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].msl_buffer_n = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_gbuffer_billboard.jai b/src/shaders/jai/shader_gbuffer_billboard.jai deleted file mode 100644 index dfd5f85..0000000 --- a/src/shaders/jai/shader_gbuffer_billboard.jai +++ /dev/null @@ -1,696 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_gbuffer_billboard.glsl -o ./jai/shader_gbuffer_billboard.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'gbuffer_billboard': - Get shader desc: gbuffer_billboard_shader_desc(sg_query_backend()) - Vertex Shader: vs_gbuffer_billboard - Fragment Shader: fs_gbuffer_billboard - Attributes: - ATTR_gbuffer_billboard_position => 0 - Bindings: - Uniform block 'gbuffer_billboard_vs_params': - Jai struct: Gbuffer_Billboard_Vs_Params - Bind slot: UB_gbuffer_billboard_vs_params => 0 - Image 'gsprite': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_gsprite => 0 - Sampler 'gspritesmp': - Type: .FILTERING - Bind slot: SMP_gspritesmp => 0 -*/ -ATTR_gbuffer_billboard_position :: 0; -UB_gbuffer_billboard_vs_params :: 0; -IMG_gsprite :: 0; -SMP_gspritesmp :: 0; -Gbuffer_Billboard_Vs_Params :: struct { - mvp: [16]float; - uvs: [4]float; - offset: [3]float; - _: [4]u8; - size: [2]float; - _: [8]u8; - cam: [3]float; - _: [4]u8; - view_matrix: [16]float; - faceDir: [3]float; - _: [4]u8; -}; -/* - #version 430 - - uniform vec4 gbuffer_billboard_vs_params[13]; - layout(location = 0) in vec3 position; - layout(location = 1) out vec3 view_space_pos; - layout(location = 2) out vec3 view_space_normal; - layout(location = 0) out vec2 uv_in; - - void main() - { - vec3 _53 = gbuffer_billboard_vs_params[5].xyz - gbuffer_billboard_vs_params[7].xyz; - _53.y = 0.0; - vec3 look_dir = normalize(_53); - if (gbuffer_billboard_vs_params[12].x > (-10.0)) - { - look_dir = gbuffer_billboard_vs_params[12].xyz; - } - vec4 _98 = vec4((gbuffer_billboard_vs_params[5].xyz + (normalize(cross(vec3(0.0, 1.0, 0.0), look_dir)) * ((position.x - 0.5) * gbuffer_billboard_vs_params[6].x))) + (vec3(0.0, 1.0, 0.0) * (position.y * gbuffer_billboard_vs_params[6].y)), 1.0); - gl_Position = mat4(gbuffer_billboard_vs_params[0], gbuffer_billboard_vs_params[1], gbuffer_billboard_vs_params[2], gbuffer_billboard_vs_params[3]) * _98; - mat4 _106 = mat4(gbuffer_billboard_vs_params[8], gbuffer_billboard_vs_params[9], gbuffer_billboard_vs_params[10], gbuffer_billboard_vs_params[11]); - view_space_pos = (_106 * _98).xyz; - view_space_normal = mat3(_106[0].xyz, _106[1].xyz, _106[2].xyz) * vec3(0.0, 1.0, 0.0); - uv_in = vec2(gbuffer_billboard_vs_params[4].x + (position.x * gbuffer_billboard_vs_params[4].z), gbuffer_billboard_vs_params[4].y + (position.y * gbuffer_billboard_vs_params[4].w)); - } - -*/ -vs_gbuffer_billboard_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x33,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, - 0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20, - 0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x35,0x33,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c, - 0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x67,0x62,0x75,0x66,0x66,0x65, - 0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x33, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x32,0x5d,0x2e,0x78,0x20,0x3e,0x20,0x28, - 0x2d,0x31,0x30,0x2e,0x30,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d, - 0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61, - 0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x32,0x5d, - 0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x39,0x38,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x28,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61, - 0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e, - 0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, - 0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x6c,0x6f,0x6f,0x6b, - 0x5f,0x64,0x69,0x72,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2e,0x78,0x29, - 0x29,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x67,0x62,0x75,0x66,0x66,0x65, - 0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2e,0x79,0x29,0x29,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x5f,0x39,0x38, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x5f,0x31,0x30,0x36,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x38,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x39,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62, - 0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x31,0x30,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f, - 0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x31,0x31,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28, - 0x5f,0x31,0x30,0x36,0x20,0x2a,0x20,0x5f,0x39,0x38,0x29,0x2e,0x78,0x79,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x5f,0x31, - 0x30,0x36,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x30,0x36,0x5b, - 0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x30,0x36,0x5b,0x32,0x5d,0x2e, - 0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x75,0x76,0x5f,0x69,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x67,0x62,0x75, - 0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x20,0x2b,0x20, - 0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20,0x67,0x62, - 0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x7a,0x29,0x2c, - 0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61, - 0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e, - 0x79,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20, - 0x2a,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f, - 0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d, - 0x2e,0x77,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - layout(binding = 16) uniform sampler2D gsprite_gspritesmp; - - layout(location = 0) in vec2 uv_in; - layout(location = 0) out vec4 out_position; - layout(location = 1) in vec3 view_space_pos; - layout(location = 1) out vec4 out_normal; - layout(location = 2) in vec3 view_space_normal; - - void main() - { - vec2 _12 = uv_in; - _12.y = 1.0 - _12.y; - if (texture(gsprite_gspritesmp, _12).w < 0.00999999977648258209228515625) - { - discard; - } - out_position = vec4(view_space_pos, 1.0); - out_normal = vec4(normalize(view_space_normal), 1.0); - } - -*/ -fs_gbuffer_billboard_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31, - 0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x67,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x67,0x73,0x70, - 0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63, - 0x65,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x32,0x20,0x3d,0x20,0x75, - 0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20, - 0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x67, - 0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x67,0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d, - 0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x2e,0x77,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32, - 0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61, - 0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61, - 0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 gbuffer_billboard_vs_params[13]; - layout(location = 0) in vec3 position; - out vec3 view_space_pos; - out vec3 view_space_normal; - out vec2 uv_in; - - void main() - { - vec3 _53 = gbuffer_billboard_vs_params[5].xyz - gbuffer_billboard_vs_params[7].xyz; - _53.y = 0.0; - vec3 look_dir = normalize(_53); - if (gbuffer_billboard_vs_params[12].x > (-10.0)) - { - look_dir = gbuffer_billboard_vs_params[12].xyz; - } - vec4 _98 = vec4((gbuffer_billboard_vs_params[5].xyz + (normalize(cross(vec3(0.0, 1.0, 0.0), look_dir)) * ((position.x - 0.5) * gbuffer_billboard_vs_params[6].x))) + (vec3(0.0, 1.0, 0.0) * (position.y * gbuffer_billboard_vs_params[6].y)), 1.0); - gl_Position = mat4(gbuffer_billboard_vs_params[0], gbuffer_billboard_vs_params[1], gbuffer_billboard_vs_params[2], gbuffer_billboard_vs_params[3]) * _98; - mat4 _106 = mat4(gbuffer_billboard_vs_params[8], gbuffer_billboard_vs_params[9], gbuffer_billboard_vs_params[10], gbuffer_billboard_vs_params[11]); - view_space_pos = (_106 * _98).xyz; - view_space_normal = mat3(_106[0].xyz, _106[1].xyz, _106[2].xyz) * vec3(0.0, 1.0, 0.0); - uv_in = vec2(gbuffer_billboard_vs_params[4].x + (position.x * gbuffer_billboard_vs_params[4].z), gbuffer_billboard_vs_params[4].y + (position.y * gbuffer_billboard_vs_params[4].w)); - } - -*/ -vs_gbuffer_billboard_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x67,0x62, - 0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x33,0x5d,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x6f, - 0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61, - 0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, - 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x35,0x33,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72, - 0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x67,0x62, - 0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x2e,0x78,0x79,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x6f,0x6f,0x6b, - 0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, - 0x28,0x5f,0x35,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x32,0x5d,0x2e,0x78, - 0x20,0x3e,0x20,0x28,0x2d,0x31,0x30,0x2e,0x30,0x29,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64, - 0x69,0x72,0x20,0x3d,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c, - 0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x31,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x39,0x38,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x28,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c, - 0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2a,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62, - 0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36, - 0x5d,0x2e,0x78,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20, - 0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x67,0x62, - 0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2e,0x79,0x29,0x29, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a, - 0x20,0x5f,0x39,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x5f, - 0x31,0x30,0x36,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x39,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66,0x66, - 0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x30,0x5d,0x2c,0x20,0x67,0x62,0x75,0x66, - 0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x31,0x5d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x28,0x5f,0x31,0x30,0x36,0x20,0x2a,0x20,0x5f,0x39,0x38,0x29,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70, - 0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x6d,0x61,0x74, - 0x33,0x28,0x5f,0x31,0x30,0x36,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f, - 0x31,0x30,0x36,0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x30,0x36, - 0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x75,0x76,0x5f,0x69,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x32, - 0x28,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61, - 0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e, - 0x78,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20, - 0x2a,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f, - 0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d, - 0x2e,0x7a,0x29,0x2c,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c, - 0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x34,0x5d,0x2e,0x79,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x79,0x20,0x2a,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69, - 0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x34,0x5d,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp sampler2D gsprite_gspritesmp; - - in highp vec2 uv_in; - layout(location = 0) out highp vec4 out_position; - in highp vec3 view_space_pos; - layout(location = 1) out highp vec4 out_normal; - in highp vec3 view_space_normal; - - void main() - { - highp vec2 _12 = uv_in; - _12.y = 1.0 - _12.y; - if (texture(gsprite_gspritesmp, _12).w < 0.00999999977648258209228515625) - { - discard; - } - out_position = vec4(view_space_pos, 1.0); - out_normal = vec4(normalize(view_space_normal), 1.0); - } - -*/ -fs_gbuffer_billboard_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x67,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x67, - 0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20, - 0x5f,0x31,0x32,0x20,0x3d,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x32,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f, - 0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x67,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x67,0x73, - 0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x2e,0x77, - 0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37, - 0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36, - 0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x69,0x65,0x77,0x5f,0x73,0x70, - 0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76, - 0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct gbuffer_billboard_vs_params - { - float4x4 mvp; - float4 uvs; - float3 offset; - float2 size; - float3 cam; - float4x4 view_matrix; - float3 faceDir; - }; - - struct main0_out - { - float2 uv_in [[user(locn0)]]; - float3 view_space_pos [[user(locn1)]]; - float3 view_space_normal [[user(locn2)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float3 position [[attribute(0)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant gbuffer_billboard_vs_params& _24 [[buffer(0)]]) - { - main0_out out = {}; - float3 _53 = _24.offset - _24.cam; - _53.y = 0.0; - float3 look_dir = fast::normalize(_53); - if (_24.faceDir.x > (-10.0)) - { - look_dir = _24.faceDir; - } - float4 _98 = float4((_24.offset + (fast::normalize(cross(float3(0.0, 1.0, 0.0), look_dir)) * ((in.position.x - 0.5) * _24.size.x))) + (float3(0.0, 1.0, 0.0) * (in.position.y * _24.size.y)), 1.0); - out.gl_Position = _24.mvp * _98; - out.view_space_pos = (_24.view_matrix * _98).xyz; - out.view_space_normal = float3x3(_24.view_matrix[0].xyz, _24.view_matrix[1].xyz, _24.view_matrix[2].xyz) * float3(0.0, 1.0, 0.0); - out.uv_in = float2(_24.uvs.x + (in.position.x * _24.uvs.z), _24.uvs.y + (in.position.y * _24.uvs.w)); - return out; - } - -*/ -vs_gbuffer_billboard_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x67, - 0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f,0x61,0x72,0x64, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x75,0x76,0x73,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6f,0x66,0x66,0x73,0x65,0x74, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x73,0x69,0x7a, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61, - 0x6d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20, - 0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x66,0x61,0x63,0x65,0x44,0x69,0x72,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f, - 0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31, - 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29, - 0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, - 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e, - 0x74,0x20,0x67,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x62,0x69,0x6c,0x6c,0x62,0x6f, - 0x61,0x72,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f, - 0x32,0x34,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, - 0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x33,0x20,0x3d,0x20,0x5f,0x32,0x34, - 0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2d,0x20,0x5f,0x32,0x34,0x2e,0x63,0x61, - 0x6d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c, - 0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x33,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x34,0x2e,0x66,0x61,0x63,0x65, - 0x44,0x69,0x72,0x2e,0x78,0x20,0x3e,0x20,0x28,0x2d,0x31,0x30,0x2e,0x30,0x29,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, - 0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x5f,0x32,0x34,0x2e,0x66,0x61, - 0x63,0x65,0x44,0x69,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x39,0x38,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x28,0x5f,0x32,0x34,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74, - 0x20,0x2b,0x20,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x29,0x29,0x20,0x2a,0x20,0x28,0x28, - 0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x32,0x34,0x2e,0x73,0x69,0x7a,0x65,0x2e, - 0x78,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20, - 0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a, - 0x20,0x5f,0x32,0x34,0x2e,0x73,0x69,0x7a,0x65,0x2e,0x79,0x29,0x29,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x32,0x34,0x2e,0x6d, - 0x76,0x70,0x20,0x2a,0x20,0x5f,0x39,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x28,0x5f,0x32,0x34,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74, - 0x72,0x69,0x78,0x20,0x2a,0x20,0x5f,0x39,0x38,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61, - 0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x78,0x33,0x28,0x5f,0x32,0x34,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61, - 0x74,0x72,0x69,0x78,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x32,0x34, - 0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x5b,0x31,0x5d,0x2e, - 0x78,0x79,0x7a,0x2c,0x20,0x5f,0x32,0x34,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x61, - 0x74,0x72,0x69,0x78,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76, - 0x5f,0x69,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x32,0x34, - 0x2e,0x75,0x76,0x73,0x2e,0x78,0x20,0x2b,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20,0x5f,0x32,0x34,0x2e,0x75,0x76, - 0x73,0x2e,0x7a,0x29,0x2c,0x20,0x5f,0x32,0x34,0x2e,0x75,0x76,0x73,0x2e,0x79,0x20, - 0x2b,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79, - 0x20,0x2a,0x20,0x5f,0x32,0x34,0x2e,0x75,0x76,0x73,0x2e,0x77,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 out_position [[color(0)]]; - float4 out_normal [[color(1)]]; - }; - - struct main0_in - { - float2 uv_in [[user(locn0)]]; - float3 view_space_pos [[user(locn1)]]; - float3 view_space_normal [[user(locn2)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], texture2d gsprite [[texture(0)]], sampler gspritesmp [[sampler(0)]]) - { - main0_out out = {}; - float2 _12 = in.uv_in; - _12.y = 1.0 - _12.y; - if (gsprite.sample(gspritesmp, _12).w < 0.00999999977648258209228515625) - { - discard_fragment(); - } - out.out_position = float4(in.view_space_pos, 1.0); - out.out_normal = float4(fast::normalize(in.view_space_normal), 1.0); - return out; - } - -*/ -fs_gbuffer_billboard_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x31, - 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x20,0x5b,0x5b,0x75,0x73, - 0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61, - 0x63,0x65,0x5f,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, - 0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65, - 0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b, - 0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x67,0x73, - 0x70,0x72,0x69,0x74,0x65,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x67,0x73, - 0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b, - 0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31, - 0x32,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20, - 0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67, - 0x73,0x70,0x72,0x69,0x74,0x65,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x67,0x73, - 0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x2e,0x77, - 0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37, - 0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36, - 0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65, - 0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x6f,0x75,0x74,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x76,0x69,0x65, - 0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x6f,0x75,0x74,0x5f,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66, - 0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69, - 0x6e,0x2e,0x76,0x69,0x65,0x77,0x5f,0x73,0x70,0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -gbuffer_billboard_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "gbuffer_billboard_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_gbuffer_billboard_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_gbuffer_billboard_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 208; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 13; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "gbuffer_billboard_vs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "gsprite_gspritesmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_gbuffer_billboard_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_gbuffer_billboard_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 208; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 13; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "gbuffer_billboard_vs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "gsprite_gspritesmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_gbuffer_billboard_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_gbuffer_billboard_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 208; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_mix.jai b/src/shaders/jai/shader_mix.jai deleted file mode 100644 index 7f8d60c..0000000 --- a/src/shaders/jai/shader_mix.jai +++ /dev/null @@ -1,608 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_mix.glsl -o ./jai/shader_mix.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'mix': - Get shader desc: mix_shader_desc(sg_query_backend()) - Vertex Shader: vs_mix - Fragment Shader: fs_mix - Attributes: - ATTR_mix_position => 0 - ATTR_mix_uv => 1 - Bindings: - Uniform block 'mix_fs_params': - Jai struct: Mix_Fs_Params - Bind slot: UB_mix_fs_params => 1 - Image 'mixtex_a': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_mixtex_a => 0 - Image 'mixtex_b': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_mixtex_b => 1 - Image 'mixtex_c': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_mixtex_c => 2 - Sampler 'mixsmp': - Type: .FILTERING - Bind slot: SMP_mixsmp => 0 -*/ -ATTR_mix_position :: 0; -ATTR_mix_uv :: 1; -UB_mix_fs_params :: 1; -IMG_mixtex_a :: 0; -IMG_mixtex_b :: 1; -IMG_mixtex_c :: 2; -SMP_mixsmp :: 0; -Mix_Fs_Params :: struct { - op: s32; - dof_min: float; - dof_max: float; - dof_point: float; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_mix_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - struct mix_fs_params - { - int op; - float dof_min; - float dof_max; - float dof_point; - }; - - uniform mix_fs_params _10; - - layout(binding = 16) uniform sampler2D mixtex_b_mixsmp; - layout(binding = 17) uniform sampler2D mixtex_a_mixsmp; - layout(binding = 18) uniform sampler2D mixtex_c_mixsmp; - - layout(location = 0) in vec2 texcoord; - layout(location = 0) out vec4 frag_color; - - void main() - { - if (_10.op == 0) - { - frag_color = vec4(mix(texture(mixtex_b_mixsmp, texcoord).xyz, texture(mixtex_a_mixsmp, texcoord).xyz, vec3(smoothstep(_10.dof_min, _10.dof_max, abs(texture(mixtex_c_mixsmp, texcoord).z + _10.dof_point)))), 1.0); - } - else - { - if (_10.op == 1) - { - frag_color = vec4(texture(mixtex_b_mixsmp, texcoord).xyz + texture(mixtex_a_mixsmp, texcoord).xyz, 1.0); - } - } - } - -*/ -fs_mix_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x69,0x78,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x70,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d, - 0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f, - 0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x69,0x78,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x31,0x30,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29, - 0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x5f,0x6d,0x69,0x78,0x73, - 0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69, - 0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6d,0x69,0x78,0x74,0x65, - 0x78,0x5f,0x61,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x38,0x29, - 0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x63,0x5f,0x6d,0x69,0x78,0x73, - 0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, - 0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30, - 0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x5f,0x6d, - 0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6d,0x69, - 0x78,0x74,0x65,0x78,0x5f,0x61,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x31, - 0x30,0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x69,0x6e,0x2c,0x20,0x5f,0x31,0x30,0x2e,0x64, - 0x6f,0x66,0x5f,0x6d,0x61,0x78,0x2c,0x20,0x61,0x62,0x73,0x28,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x63,0x5f,0x6d,0x69,0x78, - 0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x7a, - 0x20,0x2b,0x20,0x5f,0x31,0x30,0x2e,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74, - 0x29,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30, - 0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65,0x78, - 0x5f,0x62,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x61,0x5f,0x6d,0x69,0x78,0x73, - 0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79, - 0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_mix_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct mix_fs_params - { - int op; - highp float dof_min; - highp float dof_max; - highp float dof_point; - }; - - uniform mix_fs_params _10; - - uniform highp sampler2D mixtex_b_mixsmp; - uniform highp sampler2D mixtex_a_mixsmp; - uniform highp sampler2D mixtex_c_mixsmp; - - in highp vec2 texcoord; - layout(location = 0) out highp vec4 frag_color; - - void main() - { - if (_10.op == 0) - { - frag_color = vec4(mix(texture(mixtex_b_mixsmp, texcoord).xyz, texture(mixtex_a_mixsmp, texcoord).xyz, vec3(smoothstep(_10.dof_min, _10.dof_max, abs(texture(mixtex_c_mixsmp, texcoord).z + _10.dof_point)))), 1.0); - } - else - { - if (_10.op == 1) - { - frag_color = vec4(texture(mixtex_b_mixsmp, texcoord).xyz + texture(mixtex_a_mixsmp, texcoord).xyz, 1.0); - } - } - } - -*/ -fs_mix_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x69,0x78,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x70, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d, - 0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x69,0x78,0x5f,0x66, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x31,0x30,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x5f, - 0x6d,0x69,0x78,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, - 0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x61,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x3b, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f, - 0x63,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70, - 0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x5f,0x6d,0x69,0x78,0x73, - 0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79, - 0x7a,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65, - 0x78,0x5f,0x61,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x31,0x30,0x2e,0x64, - 0x6f,0x66,0x5f,0x6d,0x69,0x6e,0x2c,0x20,0x5f,0x31,0x30,0x2e,0x64,0x6f,0x66,0x5f, - 0x6d,0x61,0x78,0x2c,0x20,0x61,0x62,0x73,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x63,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70, - 0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x7a,0x20,0x2b,0x20, - 0x5f,0x31,0x30,0x2e,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x29,0x29, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70, - 0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x5f, - 0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x61,0x5f,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_mix_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct mix_fs_params - { - int op; - float dof_min; - float dof_max; - float dof_point; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant mix_fs_params& _10 [[buffer(0)]], texture2d mixtex_a [[texture(0)]], texture2d mixtex_b [[texture(1)]], texture2d mixtex_c [[texture(2)]], sampler mixsmp [[sampler(0)]]) - { - main0_out out = {}; - if (_10.op == 0) - { - out.frag_color = float4(mix(mixtex_b.sample(mixsmp, in.texcoord).xyz, mixtex_a.sample(mixsmp, in.texcoord).xyz, float3(smoothstep(_10.dof_min, _10.dof_max, abs(mixtex_c.sample(mixsmp, in.texcoord).z + _10.dof_point)))), 1.0); - } - else - { - if (_10.op == 1) - { - out.frag_color = float4(mixtex_b.sample(mixsmp, in.texcoord).xyz + mixtex_a.sample(mixsmp, in.texcoord).xyz, 1.0); - } - } - return out; - } - -*/ -fs_mix_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x69,0x78,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x69,0x6e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70, - 0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65, - 0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, - 0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69, - 0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d, - 0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x6d,0x69,0x78,0x5f, - 0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x30,0x20,0x5b, - 0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6d, - 0x69,0x78,0x74,0x65,0x78,0x5f,0x61,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32, - 0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f, - 0x62,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d, - 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61, - 0x74,0x3e,0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x63,0x20,0x5b,0x5b,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x20,0x6d,0x69,0x78,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d, - 0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30, - 0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28, - 0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x2e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x28,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x6d,0x69, - 0x78,0x74,0x65,0x78,0x5f,0x61,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6d,0x69, - 0x78,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73, - 0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x31,0x30,0x2e,0x64,0x6f, - 0x66,0x5f,0x6d,0x69,0x6e,0x2c,0x20,0x5f,0x31,0x30,0x2e,0x64,0x6f,0x66,0x5f,0x6d, - 0x61,0x78,0x2c,0x20,0x61,0x62,0x73,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x63, - 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20, - 0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x7a,0x20,0x2b, - 0x20,0x5f,0x31,0x30,0x2e,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x29, - 0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f, - 0x70,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x28,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x62,0x2e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x28,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e, - 0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b, - 0x20,0x6d,0x69,0x78,0x74,0x65,0x78,0x5f,0x61,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x28,0x6d,0x69,0x78,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x00, -]; -mix_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "mix_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_mix_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_mix_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_10.op"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_10.dof_min"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_10.dof_max"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_10.dof_point"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 1; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "mixtex_b_mixsmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 0; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[1].glsl_name = "mixtex_a_mixsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "mixtex_c_mixsmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_mix_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_mix_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_10.op"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_10.dof_min"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_10.dof_max"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_10.dof_point"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 1; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "mixtex_b_mixsmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 0; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[1].glsl_name = "mixtex_a_mixsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "mixtex_c_mixsmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_mix_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_mix_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 1; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[2].msl_texture_n = 2; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 1; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 0; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_op.jai b/src/shaders/jai/shader_op.jai deleted file mode 100644 index f6728c1..0000000 --- a/src/shaders/jai/shader_op.jai +++ /dev/null @@ -1,1460 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_op.glsl -o ./jai/shader_op.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'op': - Get shader desc: op_shader_desc(sg_query_backend()) - Vertex Shader: vs_op - Fragment Shader: fs_op - Attributes: - ATTR_op_position => 0 - ATTR_op_uv => 1 - Bindings: - Uniform block 'op_fs_params': - Jai struct: Op_Fs_Params - Bind slot: UB_op_fs_params => 1 - Image 'optex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_optex => 0 - Sampler 'opsmp': - Type: .FILTERING - Bind slot: SMP_opsmp => 0 -*/ -ATTR_op_position :: 0; -ATTR_op_uv :: 1; -UB_op_fs_params :: 1; -IMG_optex :: 0; -SMP_opsmp :: 0; -Op_Fs_Params :: struct { - op: s32; - blur_size: s32; - separation: float; - dilate_min: float; - dilate_max: float; - bloom_amount: float; - bloom_treshold: float; - _: [4]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_op_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - struct op_fs_params - { - int op; - int blur_size; - float separation; - float dilate_min; - float dilate_max; - float bloom_amount; - float bloom_treshold; - }; - - uniform op_fs_params _10; - - layout(binding = 16) uniform sampler2D optex_opsmp; - - layout(location = 0) out vec4 frag_color; - layout(location = 0) in vec2 texcoord; - - void main() - { - if (_10.op == 3) - { - vec2 _36 = vec2(textureSize(optex_opsmp, 0)); - float count = 0.0; - vec4 result = vec4(0.0); - vec4 color = vec4(0.0); - int _51 = -_10.blur_size; - for (int i = _51; i <= _10.blur_size; i++) - { - for (int j = _51; j <= _10.blur_size; j++) - { - vec4 _94 = texture(optex_opsmp, (gl_FragCoord.xy + (vec2(float(i), float(j)) * _10.separation)) / _36); - color = _94; - if (max(_94.x, max(_94.y, _94.z)) < _10.bloom_treshold) - { - color = vec4(0.0); - } - result += color; - count += 1.0; - } - } - vec4 _125 = result; - vec4 _127 = _125 / vec4(count); - result = _127; - frag_color = vec4(_127.xyz * _10.bloom_amount, 1.0); - } - else - { - if (_10.op == 2) - { - vec2 _155 = vec2(1.0) / vec2(textureSize(optex_opsmp, 0)); - vec3 result_1 = vec3(0.0); - int _162 = -_10.blur_size; - for (int x = _162; x < _10.blur_size; x++) - { - for (int y = _162; y < _10.blur_size; y++) - { - result_1 += texture(optex_opsmp, texcoord + (vec2(float(x), float(y)) * _155)).xyz; - } - } - frag_color = vec4(result_1 / vec3(float(((_10.blur_size * 2) * _10.blur_size) * 2)), 1.0); - } - else - { - if (_10.op == 1) - { - vec2 _243 = vec2(textureSize(optex_opsmp, 0)); - frag_color = texture(optex_opsmp, gl_FragCoord.xy / _243); - if (_10.blur_size <= 0) - { - return; - } - float mx = 0.0; - vec4 cmx = frag_color; - int _266 = -_10.blur_size; - for (int i_1 = _266; i_1 <= _10.blur_size; i_1++) - { - for (int j_1 = _266; j_1 <= _10.blur_size; j_1++) - { - if (!(distance(vec2(float(i_1), float(j_1)), vec2(0.0)) <= float(_10.blur_size))) - { - continue; - } - vec4 _321 = texture(optex_opsmp, (gl_FragCoord.xy + (vec2(float(i_1), float(j_1)) * _10.separation)) / _243); - float _329 = dot(_321.xyz, vec3(0.300000011920928955078125, 0.589999973773956298828125, 0.10999999940395355224609375)); - if (_329 > mx) - { - mx = _329; - cmx = _321; - } - } - } - vec4 _341 = frag_color; - vec3 _350 = mix(_341.xyz, cmx.xyz, vec3(smoothstep(_10.dilate_min, _10.dilate_max, mx))); - frag_color.x = _350.x; - frag_color.y = _350.y; - frag_color.z = _350.z; - } - else - { - vec2 _367 = vec2(1.0) / vec2(textureSize(optex_opsmp, 0)); - float result_2 = 0.0; - int _372 = -_10.blur_size; - for (int x_1 = _372; x_1 < _10.blur_size; x_1++) - { - for (int y_1 = _372; y_1 < _10.blur_size; y_1++) - { - result_2 += texture(optex_opsmp, texcoord + (vec2(float(x_1), float(y_1)) * _367)).x; - } - } - float _426 = result_2 / float(((_10.blur_size * 2) * _10.blur_size) * 2); - frag_color = vec4(_426, _426, _426, 1.0); - } - } - } - } - -*/ -fs_op_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6f,0x70,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x70,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x65,0x70, - 0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x69,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f, - 0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x72,0x65, - 0x73,0x68,0x6f,0x6c,0x64,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x6f,0x70,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20, - 0x5f,0x31,0x30,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e, - 0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6f,0x70,0x74, - 0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x33,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20, - 0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x5f, - 0x35,0x31,0x3b,0x20,0x69,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75, - 0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20, - 0x5f,0x35,0x31,0x3b,0x20,0x6a,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c, - 0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x6a,0x2b,0x2b,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x39,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6f, - 0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x67,0x6c,0x5f, - 0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20,0x2b,0x20,0x28, - 0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x6a,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x73, - 0x65,0x70,0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29,0x20,0x2f,0x20,0x5f,0x33, - 0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x39,0x34,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x6d,0x61,0x78,0x28,0x5f,0x39,0x34,0x2e,0x78,0x2c,0x20, - 0x6d,0x61,0x78,0x28,0x5f,0x39,0x34,0x2e,0x79,0x2c,0x20,0x5f,0x39,0x34,0x2e,0x7a, - 0x29,0x29,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74, - 0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x2b,0x3d,0x20,0x31,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x32,0x35,0x20,0x3d,0x20,0x72, - 0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x31,0x32,0x37,0x20,0x3d,0x20,0x5f,0x31,0x32,0x35,0x20, - 0x2f,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6f,0x75,0x6e,0x74,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20, - 0x5f,0x31,0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x5f,0x31,0x32,0x37,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x32,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x35,0x35, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x20,0x2f,0x20,0x76, - 0x65,0x63,0x32,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x69,0x7a,0x65,0x28, - 0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x30,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x36,0x32,0x20,0x3d,0x20, - 0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, - 0x28,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32,0x3b,0x20,0x78, - 0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65, - 0x3b,0x20,0x78,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x79,0x20, - 0x3d,0x20,0x5f,0x31,0x36,0x32,0x3b,0x20,0x79,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e, - 0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x79,0x2b,0x2b,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20,0x2b, - 0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20, - 0x2b,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x78,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x79,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x35,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x28, - 0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20, - 0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69, - 0x7a,0x65,0x29,0x20,0x2a,0x20,0x32,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x32,0x20,0x5f,0x32,0x34,0x33,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x67,0x6c, - 0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20,0x2f,0x20, - 0x5f,0x32,0x34,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3c,0x3d,0x20,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x6d,0x78,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x34,0x20,0x63,0x6d,0x78,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32,0x36,0x36,0x20,0x3d, - 0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x5f,0x31,0x20,0x3d,0x20, - 0x5f,0x32,0x36,0x36,0x3b,0x20,0x69,0x5f,0x31,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30, - 0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x5f,0x31,0x2b, - 0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e, - 0x74,0x20,0x6a,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x32,0x36,0x36,0x3b,0x20,0x6a,0x5f, - 0x31,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69, - 0x7a,0x65,0x3b,0x20,0x6a,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x28,0x64, - 0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x69,0x5f,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6a, - 0x5f,0x31,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x29,0x29, - 0x20,0x3c,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c, - 0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x29,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x33,0x32,0x31,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x67, - 0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20,0x2b, - 0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x5f,0x31, - 0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6a,0x5f,0x31,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x30,0x2e,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29, - 0x29,0x20,0x2f,0x20,0x5f,0x32,0x34,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x32,0x39,0x20,0x3d,0x20, - 0x64,0x6f,0x74,0x28,0x5f,0x33,0x32,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32, - 0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36, - 0x32,0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x31,0x30,0x39, - 0x39,0x39,0x39,0x39,0x39,0x39,0x34,0x30,0x33,0x39,0x35,0x33,0x35,0x35,0x32,0x32, - 0x34,0x36,0x30,0x39,0x33,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x32,0x39,0x20,0x3e,0x20,0x6d,0x78, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x78,0x20,0x3d,0x20,0x5f,0x33,0x32, - 0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, - 0x6d,0x78,0x20,0x3d,0x20,0x5f,0x33,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x33,0x34,0x31,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x35,0x30,0x20,0x3d, - 0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x34,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x63, - 0x6d,0x78,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f, - 0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x31,0x30,0x2e,0x64,0x69,0x6c,0x61, - 0x74,0x65,0x5f,0x6d,0x69,0x6e,0x2c,0x20,0x5f,0x31,0x30,0x2e,0x64,0x69,0x6c,0x61, - 0x74,0x65,0x5f,0x6d,0x61,0x78,0x2c,0x20,0x6d,0x78,0x29,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x33, - 0x35,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30, - 0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x33,0x36,0x37,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x32,0x28,0x31,0x2e,0x30,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x3d,0x20,0x30,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x37,0x32,0x20,0x3d,0x20,0x2d,0x5f,0x31, - 0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, - 0x20,0x28,0x69,0x6e,0x74,0x20,0x78,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33,0x37,0x32, - 0x3b,0x20,0x78,0x5f,0x31,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72, - 0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x78,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x79,0x5f,0x31, - 0x20,0x3d,0x20,0x5f,0x33,0x37,0x32,0x3b,0x20,0x79,0x5f,0x31,0x20,0x3c,0x20,0x5f, - 0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x79,0x5f, - 0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x2b,0x3d,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x28, - 0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x78,0x5f,0x31,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x79,0x5f,0x31,0x29,0x29,0x20,0x2a,0x20,0x5f, - 0x33,0x36,0x37,0x29,0x29,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x72,0x65, - 0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, - 0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a, - 0x20,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73, - 0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x34,0x32, - 0x36,0x2c,0x20,0x5f,0x34,0x32,0x36,0x2c,0x20,0x5f,0x34,0x32,0x36,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_op_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct op_fs_params - { - int op; - int blur_size; - highp float separation; - highp float dilate_min; - highp float dilate_max; - highp float bloom_amount; - highp float bloom_treshold; - }; - - uniform op_fs_params _10; - - uniform highp sampler2D optex_opsmp; - - layout(location = 0) out highp vec4 frag_color; - in highp vec2 texcoord; - - void main() - { - if (_10.op == 3) - { - highp vec2 _36 = vec2(textureSize(optex_opsmp, 0)); - highp float count = 0.0; - highp vec4 result = vec4(0.0); - highp vec4 color = vec4(0.0); - int _51 = -_10.blur_size; - for (int i = _51; i <= _10.blur_size; i++) - { - for (int j = _51; j <= _10.blur_size; j++) - { - highp vec4 _94 = texture(optex_opsmp, (gl_FragCoord.xy + (vec2(float(i), float(j)) * _10.separation)) / _36); - color = _94; - if (max(_94.x, max(_94.y, _94.z)) < _10.bloom_treshold) - { - color = vec4(0.0); - } - result += color; - count += 1.0; - } - } - highp vec4 _125 = result; - highp vec4 _127 = _125 / vec4(count); - result = _127; - frag_color = vec4(_127.xyz * _10.bloom_amount, 1.0); - } - else - { - if (_10.op == 2) - { - highp vec2 _155 = vec2(1.0) / vec2(textureSize(optex_opsmp, 0)); - highp vec3 result_1 = vec3(0.0); - int _162 = -_10.blur_size; - for (int x = _162; x < _10.blur_size; x++) - { - for (int y = _162; y < _10.blur_size; y++) - { - result_1 += texture(optex_opsmp, texcoord + (vec2(float(x), float(y)) * _155)).xyz; - } - } - frag_color = vec4(result_1 / vec3(float(((_10.blur_size * 2) * _10.blur_size) * 2)), 1.0); - } - else - { - if (_10.op == 1) - { - highp vec2 _243 = vec2(textureSize(optex_opsmp, 0)); - frag_color = texture(optex_opsmp, gl_FragCoord.xy / _243); - if (_10.blur_size <= 0) - { - return; - } - highp float mx = 0.0; - highp vec4 cmx = frag_color; - int _266 = -_10.blur_size; - for (int i_1 = _266; i_1 <= _10.blur_size; i_1++) - { - for (int j_1 = _266; j_1 <= _10.blur_size; j_1++) - { - if (!(distance(vec2(float(i_1), float(j_1)), vec2(0.0)) <= float(_10.blur_size))) - { - continue; - } - highp vec4 _321 = texture(optex_opsmp, (gl_FragCoord.xy + (vec2(float(i_1), float(j_1)) * _10.separation)) / _243); - highp float _329 = dot(_321.xyz, vec3(0.300000011920928955078125, 0.589999973773956298828125, 0.10999999940395355224609375)); - if (_329 > mx) - { - mx = _329; - cmx = _321; - } - } - } - highp vec4 _341 = frag_color; - highp vec3 _350 = mix(_341.xyz, cmx.xyz, vec3(smoothstep(_10.dilate_min, _10.dilate_max, mx))); - frag_color.x = _350.x; - frag_color.y = _350.y; - frag_color.z = _350.z; - } - else - { - highp vec2 _367 = vec2(1.0) / vec2(textureSize(optex_opsmp, 0)); - highp float result_2 = 0.0; - int _372 = -_10.blur_size; - for (int x_1 = _372; x_1 < _10.blur_size; x_1++) - { - for (int y_1 = _372; y_1 < _10.blur_size; y_1++) - { - result_2 += texture(optex_opsmp, texcoord + (vec2(float(x_1), float(y_1)) * _367)).x; - } - } - highp float _426 = result_2 / float(((_10.blur_size * 2) * _10.blur_size) * 2); - frag_color = vec4(_426, _426, _426, 1.0); - } - } - } - } - -*/ -fs_op_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x6f,0x70,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x70,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69, - 0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69,0x6c,0x61, - 0x74,0x65,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d, - 0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x72,0x65,0x73, - 0x68,0x6f,0x6c,0x64,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x6f,0x70,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f, - 0x31,0x30,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6f,0x70,0x74, - 0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70, - 0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20, - 0x5f,0x33,0x36,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x75, - 0x6e,0x74,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c, - 0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x5f,0x35, - 0x31,0x3b,0x20,0x69,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72, - 0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x5f, - 0x35,0x31,0x3b,0x20,0x6a,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75, - 0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x6a,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x39,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c, - 0x20,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78, - 0x79,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x69,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6a,0x29,0x29,0x20,0x2a,0x20, - 0x5f,0x31,0x30,0x2e,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29, - 0x20,0x2f,0x20,0x5f,0x33,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x5f,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6d,0x61,0x78,0x28,0x5f,0x39, - 0x34,0x2e,0x78,0x2c,0x20,0x6d,0x61,0x78,0x28,0x5f,0x39,0x34,0x2e,0x79,0x2c,0x20, - 0x5f,0x39,0x34,0x2e,0x7a,0x29,0x29,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x74,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20, - 0x2b,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20, - 0x2b,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x5f,0x31,0x32,0x35,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x32,0x37,0x20,0x3d,0x20,0x5f,0x31,0x32,0x35, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6f,0x75,0x6e,0x74,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d, - 0x20,0x5f,0x31,0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x5f,0x31,0x32,0x37,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x32, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x31,0x35,0x35,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x31, - 0x2e,0x30,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x36,0x32,0x20,0x3d,0x20,0x2d,0x5f,0x31, - 0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e, - 0x74,0x20,0x78,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32,0x3b,0x20,0x78,0x20,0x3c,0x20, - 0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x78, - 0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x5f, - 0x31,0x36,0x32,0x3b,0x20,0x79,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75, - 0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x79,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20,0x2b,0x3d,0x20,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x28, - 0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x78,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x79,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x35,0x29, - 0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20,0x2f,0x20, - 0x76,0x65,0x63,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x28,0x5f,0x31,0x30, - 0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x32,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x29, - 0x20,0x2a,0x20,0x32,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x34,0x33,0x20,0x3d,0x20,0x76,0x65,0x63,0x32, - 0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74, - 0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d,0x70,0x2c, - 0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79, - 0x20,0x2f,0x20,0x5f,0x32,0x34,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3c,0x3d,0x20,0x30, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x78, - 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x63,0x6d,0x78,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32,0x36,0x36,0x20,0x3d,0x20, - 0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x5f,0x31,0x20,0x3d,0x20,0x5f, - 0x32,0x36,0x36,0x3b,0x20,0x69,0x5f,0x31,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e, - 0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x5f,0x31,0x2b,0x2b, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74, - 0x20,0x6a,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x32,0x36,0x36,0x3b,0x20,0x6a,0x5f,0x31, - 0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a, - 0x65,0x3b,0x20,0x6a,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x28,0x64,0x69, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x69,0x5f,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6a,0x5f, - 0x31,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x29,0x29,0x20, - 0x3c,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75, - 0x72,0x5f,0x73,0x69,0x7a,0x65,0x29,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x32,0x31,0x20,0x3d,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73,0x6d, - 0x70,0x2c,0x20,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64, - 0x2e,0x78,0x79,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x69,0x5f,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6a,0x5f, - 0x31,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x73,0x65,0x70,0x61,0x72,0x61, - 0x74,0x69,0x6f,0x6e,0x29,0x29,0x20,0x2f,0x20,0x5f,0x32,0x34,0x33,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x33,0x32,0x39,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f, - 0x33,0x32,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39, - 0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x35,0x38,0x39,0x39, - 0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36,0x32,0x39,0x38,0x38,0x32, - 0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x31,0x30,0x39,0x39,0x39,0x39,0x39,0x39, - 0x39,0x34,0x30,0x33,0x39,0x35,0x33,0x35,0x35,0x32,0x32,0x34,0x36,0x30,0x39,0x33, - 0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x33,0x32,0x39,0x20,0x3e,0x20,0x6d,0x78,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x6d,0x78,0x20,0x3d,0x20,0x5f,0x33,0x32,0x39,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6d,0x78,0x20,0x3d,0x20, - 0x5f,0x33,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x5f,0x33,0x34,0x31,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x33,0x35,0x30,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x34,0x31, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x63,0x6d,0x78,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f, - 0x31,0x30,0x2e,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x69,0x6e,0x2c,0x20,0x5f, - 0x31,0x30,0x2e,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x61,0x78,0x2c,0x20,0x6d, - 0x78,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x78,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a, - 0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x33,0x36,0x37,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x31, - 0x2e,0x30,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f,0x6f,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x3d,0x20, - 0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x37,0x32,0x20,0x3d,0x20, - 0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x78,0x5f,0x31,0x20,0x3d,0x20,0x5f, - 0x33,0x37,0x32,0x3b,0x20,0x78,0x5f,0x31,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62, - 0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x78,0x5f,0x31,0x2b,0x2b,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20, - 0x79,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33,0x37,0x32,0x3b,0x20,0x79,0x5f,0x31,0x20, - 0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b, - 0x20,0x79,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x2b, - 0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6f,0x70,0x74,0x65,0x78,0x5f, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20, - 0x2b,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x78,0x5f, - 0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x79,0x5f,0x31,0x29,0x29,0x20, - 0x2a,0x20,0x5f,0x33,0x36,0x37,0x29,0x29,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x32,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c, - 0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x32,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20, - 0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x34,0x32,0x36,0x2c,0x20,0x5f,0x34,0x32,0x36, - 0x2c,0x20,0x5f,0x34,0x32,0x36,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_op_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct op_fs_params - { - int op; - int blur_size; - float separation; - float dilate_min; - float dilate_max; - float bloom_amount; - float bloom_treshold; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant op_fs_params& _10 [[buffer(0)]], texture2d optex [[texture(0)]], sampler opsmp [[sampler(0)]], float4 gl_FragCoord [[position]]) - { - main0_out out = {}; - if (_10.op == 3) - { - float2 _36 = float2(int2(optex.get_width(), optex.get_height())); - float count = 0.0; - float4 result = float4(0.0); - float4 color = float4(0.0); - int _51 = -_10.blur_size; - for (int i = _51; i <= _10.blur_size; i++) - { - for (int j = _51; j <= _10.blur_size; j++) - { - float4 _94 = optex.sample(opsmp, ((gl_FragCoord.xy + (float2(float(i), float(j)) * _10.separation)) / _36)); - color = _94; - if (fast::max(_94.x, fast::max(_94.y, _94.z)) < _10.bloom_treshold) - { - color = float4(0.0); - } - result += color; - count += 1.0; - } - } - float4 _125 = result; - float4 _127 = _125 / float4(count); - result = _127; - out.frag_color = float4(_127.xyz * _10.bloom_amount, 1.0); - } - else - { - if (_10.op == 2) - { - float2 _155 = float2(1.0) / float2(int2(optex.get_width(), optex.get_height())); - float3 result_1 = float3(0.0); - int _162 = -_10.blur_size; - for (int x = _162; x < _10.blur_size; x++) - { - for (int y = _162; y < _10.blur_size; y++) - { - result_1 += optex.sample(opsmp, (in.texcoord + (float2(float(x), float(y)) * _155))).xyz; - } - } - out.frag_color = float4(result_1 / float3(float(((_10.blur_size * 2) * _10.blur_size) * 2)), 1.0); - } - else - { - if (_10.op == 1) - { - float2 _243 = float2(int2(optex.get_width(), optex.get_height())); - out.frag_color = optex.sample(opsmp, (gl_FragCoord.xy / _243)); - if (_10.blur_size <= 0) - { - return out; - } - float mx = 0.0; - float4 cmx = out.frag_color; - int _266 = -_10.blur_size; - for (int i_1 = _266; i_1 <= _10.blur_size; i_1++) - { - for (int j_1 = _266; j_1 <= _10.blur_size; j_1++) - { - if (!(distance(float2(float(i_1), float(j_1)), float2(0.0)) <= float(_10.blur_size))) - { - continue; - } - float4 _321 = optex.sample(opsmp, ((gl_FragCoord.xy + (float2(float(i_1), float(j_1)) * _10.separation)) / _243)); - float _329 = dot(_321.xyz, float3(0.300000011920928955078125, 0.589999973773956298828125, 0.10999999940395355224609375)); - if (_329 > mx) - { - mx = _329; - cmx = _321; - } - } - } - float4 _341 = out.frag_color; - float3 _350 = mix(_341.xyz, cmx.xyz, float3(smoothstep(_10.dilate_min, _10.dilate_max, mx))); - out.frag_color.x = _350.x; - out.frag_color.y = _350.y; - out.frag_color.z = _350.z; - } - else - { - float2 _367 = float2(1.0) / float2(int2(optex.get_width(), optex.get_height())); - float result_2 = 0.0; - int _372 = -_10.blur_size; - for (int x_1 = _372; x_1 < _10.blur_size; x_1++) - { - for (int y_1 = _372; y_1 < _10.blur_size; y_1++) - { - result_2 += optex.sample(opsmp, (in.texcoord + (float2(float(x_1), float(y_1)) * _367))).x; - } - } - float _426 = result_2 / float(((_10.blur_size * 2) * _10.blur_size) * 2); - out.frag_color = float4(_426, _426, _426, 1.0); - } - } - } - return out; - } - -*/ -fs_op_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6f, - 0x70,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69,0x6c, - 0x61,0x74,0x65,0x5f,0x6d,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61, - 0x6d,0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b, - 0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d, - 0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x6f,0x70,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x30,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65, - 0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32, - 0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6f,0x70,0x74,0x65,0x78,0x20,0x5b, - 0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x6f,0x70,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64, - 0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f, - 0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x20,0x5f,0x33,0x36,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, - 0x69,0x6e,0x74,0x32,0x28,0x6f,0x70,0x74,0x65,0x78,0x2e,0x67,0x65,0x74,0x5f,0x77, - 0x69,0x64,0x74,0x68,0x28,0x29,0x2c,0x20,0x6f,0x70,0x74,0x65,0x78,0x2e,0x67,0x65, - 0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x28,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x75,0x6e, - 0x74,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x35, - 0x31,0x20,0x3d,0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69, - 0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, - 0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x5f,0x35,0x31,0x3b,0x20,0x69,0x20, - 0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65, - 0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, - 0x20,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x5f,0x35,0x31,0x3b,0x20,0x6a, - 0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a, - 0x65,0x3b,0x20,0x6a,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x39,0x34, - 0x20,0x3d,0x20,0x6f,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67, - 0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x6a,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x73,0x65,0x70, - 0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29,0x20,0x2f,0x20,0x5f,0x33,0x36,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x39,0x34,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x5f,0x39, - 0x34,0x2e,0x78,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x5f, - 0x39,0x34,0x2e,0x79,0x2c,0x20,0x5f,0x39,0x34,0x2e,0x7a,0x29,0x29,0x20,0x3c,0x20, - 0x5f,0x31,0x30,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x72,0x65,0x73,0x68,0x6f, - 0x6c,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x2b,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x32,0x35,0x20,0x3d,0x20,0x72,0x65, - 0x73,0x75,0x6c,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x32,0x37,0x20,0x3d,0x20,0x5f,0x31,0x32,0x35, - 0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x63,0x6f,0x75,0x6e,0x74,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74, - 0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x31,0x32,0x37,0x2e,0x78,0x79, - 0x7a,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d, - 0x6f,0x75,0x6e,0x74,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30, - 0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x35,0x35,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x29,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x6f,0x70,0x74,0x65,0x78,0x2e,0x67,0x65, - 0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x28,0x29,0x2c,0x20,0x6f,0x70,0x74,0x65,0x78, - 0x2e,0x67,0x65,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x28,0x29,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x36,0x32, - 0x20,0x3d,0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32, - 0x3b,0x20,0x78,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73, - 0x69,0x7a,0x65,0x3b,0x20,0x78,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74, - 0x20,0x79,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32,0x3b,0x20,0x79,0x20,0x3c,0x20,0x5f, - 0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x79,0x2b, - 0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f, - 0x31,0x20,0x2b,0x3d,0x20,0x6f,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x78,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x79,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x35,0x29,0x29,0x29,0x2e,0x78,0x79, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, - 0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x5f,0x31,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, - 0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a, - 0x20,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73, - 0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x32,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x6f,0x70,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x34,0x33,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x6f,0x70,0x74,0x65,0x78,0x2e,0x67,0x65, - 0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x28,0x29,0x2c,0x20,0x6f,0x70,0x74,0x65,0x78, - 0x2e,0x67,0x65,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x28,0x29,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x6f,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6f, - 0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f, - 0x6f,0x72,0x64,0x2e,0x78,0x79,0x20,0x2f,0x20,0x5f,0x32,0x34,0x33,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69, - 0x7a,0x65,0x20,0x3c,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x6d,0x78,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x63,0x6d,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32, - 0x36,0x36,0x20,0x3d,0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73, - 0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x5f, - 0x31,0x20,0x3d,0x20,0x5f,0x32,0x36,0x36,0x3b,0x20,0x69,0x5f,0x31,0x20,0x3c,0x3d, - 0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20, - 0x69,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, - 0x20,0x28,0x69,0x6e,0x74,0x20,0x6a,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x32,0x36,0x36, - 0x3b,0x20,0x6a,0x5f,0x31,0x20,0x3c,0x3d,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75, - 0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x6a,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x21,0x28,0x64,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x5f,0x31,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x6a,0x5f,0x31,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x30,0x2e,0x30,0x29,0x29,0x20,0x3c,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x29, - 0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x32,0x31, - 0x20,0x3d,0x20,0x6f,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67, - 0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x5f,0x31,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x6a,0x5f,0x31,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30, - 0x2e,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29,0x20,0x2f,0x20, - 0x5f,0x32,0x34,0x33,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x32,0x39,0x20,0x3d,0x20,0x64,0x6f,0x74, - 0x28,0x5f,0x33,0x32,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30, - 0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36,0x32, - 0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x31,0x30,0x39,0x39, - 0x39,0x39,0x39,0x39,0x39,0x34,0x30,0x33,0x39,0x35,0x33,0x35,0x35,0x32,0x32,0x34, - 0x36,0x30,0x39,0x33,0x37,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x32,0x39,0x20,0x3e,0x20,0x6d,0x78,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x78,0x20,0x3d,0x20,0x5f,0x33,0x32,0x39, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6d, - 0x78,0x20,0x3d,0x20,0x5f,0x33,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x5f,0x33,0x34,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x33,0x35,0x30,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x34,0x31, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x63,0x6d,0x78,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70, - 0x28,0x5f,0x31,0x30,0x2e,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x69,0x6e,0x2c, - 0x20,0x5f,0x31,0x30,0x2e,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x6d,0x61,0x78,0x2c, - 0x20,0x6d,0x78,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x2e, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d, - 0x20,0x5f,0x33,0x35,0x30,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x33,0x36, - 0x37,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x29,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x6f,0x70, - 0x74,0x65,0x78,0x2e,0x67,0x65,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x28,0x29,0x2c, - 0x20,0x6f,0x70,0x74,0x65,0x78,0x2e,0x67,0x65,0x74,0x5f,0x68,0x65,0x69,0x67,0x68, - 0x74,0x28,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x5f,0x32,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x5f,0x33,0x37,0x32,0x20,0x3d,0x20,0x2d,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75, - 0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74, - 0x20,0x78,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33,0x37,0x32,0x3b,0x20,0x78,0x5f,0x31, - 0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65, - 0x3b,0x20,0x78,0x5f,0x31,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x79,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33, - 0x37,0x32,0x3b,0x20,0x79,0x5f,0x31,0x20,0x3c,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c, - 0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x79,0x5f,0x31,0x2b,0x2b,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, - 0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x2b,0x3d,0x20,0x6f,0x70,0x74,0x65,0x78,0x2e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6f,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69, - 0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2b,0x20,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x78,0x5f,0x31,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x79,0x5f,0x31,0x29,0x29,0x20,0x2a,0x20,0x5f, - 0x33,0x36,0x37,0x29,0x29,0x29,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x72, - 0x65,0x73,0x75,0x6c,0x74,0x5f,0x32,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x28,0x28,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f,0x73,0x69,0x7a,0x65,0x20, - 0x2a,0x20,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x2e,0x62,0x6c,0x75,0x72,0x5f, - 0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x28,0x5f,0x34,0x32,0x36,0x2c,0x20,0x5f,0x34,0x32,0x36,0x2c,0x20, - 0x5f,0x34,0x32,0x36,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -op_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "op_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_op_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_op_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 32; - desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_10.op"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_10.blur_size"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_10.separation"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_10.dilate_min"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_10.dilate_max"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_10.bloom_amount"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_10.bloom_treshold"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "optex_opsmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_op_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_op_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 32; - desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_10.op"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_10.blur_size"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_10.separation"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_10.dilate_min"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_10.dilate_max"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_10.bloom_amount"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_10.bloom_treshold"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "optex_opsmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_op_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_op_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 32; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_particle.jai b/src/shaders/jai/shader_particle.jai deleted file mode 100644 index 9d9b3e3..0000000 --- a/src/shaders/jai/shader_particle.jai +++ /dev/null @@ -1,637 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_particle.glsl -o ./jai/shader_particle.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'particle': - Get shader desc: particle_shader_desc(sg_query_backend()) - Vertex Shader: vs_particle - Fragment Shader: fs_particle - Attributes: - ATTR_particle_position => 0 - ATTR_particle_inst_pos_size => 1 - ATTR_particle_inst_uv_rect => 2 - ATTR_particle_inst_color => 3 - Bindings: - Uniform block 'particle_vs_params': - Jai struct: Particle_Vs_Params - Bind slot: UB_particle_vs_params => 0 - Image 'particle_sprite': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_particle_sprite => 0 - Sampler 'particle_spritesmp': - Type: .FILTERING - Bind slot: SMP_particle_spritesmp => 0 -*/ -ATTR_particle_position :: 0; -ATTR_particle_inst_pos_size :: 1; -ATTR_particle_inst_uv_rect :: 2; -ATTR_particle_inst_color :: 3; -UB_particle_vs_params :: 0; -IMG_particle_sprite :: 0; -SMP_particle_spritesmp :: 0; -Particle_Vs_Params :: struct { - mvp: [16]float; - cam: [3]float; - _: [4]u8; -}; -/* - #version 430 - - uniform vec4 particle_vs_params[5]; - layout(location = 1) in vec4 inst_pos_size; - layout(location = 0) in vec3 position; - layout(location = 0) out vec2 uv_in; - layout(location = 2) in vec4 inst_uv_rect; - layout(location = 1) out vec4 color_in; - layout(location = 3) in vec4 inst_color; - - void main() - { - vec3 _53 = inst_pos_size.xyz - particle_vs_params[4].xyz; - _53.y = 0.0; - vec3 look_dir = _53; - if (length(_53) < 9.9999997473787516355514526367188e-05) - { - look_dir = vec3(1.0, 0.0, 0.0); - } - vec3 _63 = look_dir; - vec3 _64 = normalize(_63); - look_dir = _64; - gl_Position = mat4(particle_vs_params[0], particle_vs_params[1], particle_vs_params[2], particle_vs_params[3]) * vec4((inst_pos_size.xyz + (normalize(cross(vec3(0.0, 1.0, 0.0), _64)) * ((position.x - 0.5) * inst_pos_size.w))) + (vec3(0.0, 1.0, 0.0) * (position.y * inst_pos_size.w)), 1.0); - uv_in = vec2(inst_uv_rect.x + (position.x * inst_uv_rect.z), inst_uv_rect.y + (position.y * inst_uv_rect.w)); - color_in = inst_color; - } - -*/ -vs_particle_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x74,0x69, - 0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69, - 0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72, - 0x65,0x63,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35, - 0x33,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a, - 0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x6f,0x6f, - 0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x5f,0x35,0x33,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x35,0x33,0x29, - 0x20,0x3c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37, - 0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36, - 0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20,0x6c,0x6f,0x6f, - 0x6b,0x5f,0x64,0x69,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x36,0x34,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x36,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64, - 0x69,0x72,0x20,0x3d,0x20,0x5f,0x36,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34, - 0x28,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x70, - 0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x32,0x5d,0x2c,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x34,0x28,0x28,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69, - 0x7a,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x5f, - 0x36,0x34,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x69,0x6e,0x73, - 0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x29,0x29,0x29,0x20, - 0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f, - 0x73,0x69,0x7a,0x65,0x2e,0x77,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x75,0x76,0x5f,0x69,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x32, - 0x28,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x78,0x20, - 0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20, - 0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x7a,0x29,0x2c, - 0x20,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x79,0x20, - 0x2b,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20, - 0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x77,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x69,0x6e,0x20,0x3d, - 0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #version 430 - - layout(binding = 16) uniform sampler2D particle_sprite_particle_spritesmp; - - layout(location = 0) in vec2 uv_in; - layout(location = 0) out vec4 color; - layout(location = 1) in vec4 color_in; - - void main() - { - vec2 _12 = uv_in; - _12.y = 1.0 - _12.y; - vec4 _35 = texture(particle_sprite_particle_spritesmp, _12); - if (_35.w < 0.00999999977648258209228515625) - { - discard; - } - color = _35 * color_in; - } - -*/ -fs_particle_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31, - 0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70, - 0x72,0x69,0x74,0x65,0x5f,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70, - 0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x69,0x6e,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x32,0x20,0x5f,0x31,0x32,0x20,0x3d,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70, - 0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x70, - 0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d, - 0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x33,0x35,0x2e,0x77,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32, - 0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x5f,0x33,0x35,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x69, - 0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 particle_vs_params[5]; - layout(location = 1) in vec4 inst_pos_size; - layout(location = 0) in vec3 position; - out vec2 uv_in; - layout(location = 2) in vec4 inst_uv_rect; - out vec4 color_in; - layout(location = 3) in vec4 inst_color; - - void main() - { - vec3 _53 = inst_pos_size.xyz - particle_vs_params[4].xyz; - _53.y = 0.0; - vec3 look_dir = _53; - if (length(_53) < 9.9999997473787516355514526367188e-05) - { - look_dir = vec3(1.0, 0.0, 0.0); - } - vec3 _63 = look_dir; - vec3 _64 = normalize(_63); - look_dir = _64; - gl_Position = mat4(particle_vs_params[0], particle_vs_params[1], particle_vs_params[2], particle_vs_params[3]) * vec4((inst_pos_size.xyz + (normalize(cross(vec3(0.0, 1.0, 0.0), _64)) * ((position.x - 0.5) * inst_pos_size.w))) + (vec3(0.0, 1.0, 0.0) * (position.y * inst_pos_size.w)), 1.0); - uv_in = vec2(inst_uv_rect.x + (position.x * inst_uv_rect.z), inst_uv_rect.y + (position.y * inst_uv_rect.w)); - color_in = inst_color; - } - -*/ -vs_particle_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61, - 0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x35,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63, - 0x74,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x5f,0x69,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a, - 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x33,0x20,0x3d,0x20,0x69,0x6e,0x73, - 0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d, - 0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d, - 0x20,0x5f,0x35,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x65, - 0x6e,0x67,0x74,0x68,0x28,0x5f,0x35,0x33,0x29,0x20,0x3c,0x20,0x39,0x2e,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35, - 0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30, - 0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33, - 0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x36,0x33,0x20,0x3d,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x36,0x33,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x5f,0x36, - 0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x70,0x61,0x72,0x74,0x69,0x63, - 0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c, - 0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x70, - 0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x69,0x6e, - 0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x79,0x7a,0x20, - 0x2b,0x20,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f, - 0x73,0x73,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x20,0x2a,0x20, - 0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30, - 0x2e,0x35,0x29,0x20,0x2a,0x20,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73, - 0x69,0x7a,0x65,0x2e,0x77,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20, - 0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20, - 0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x29, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x5f, - 0x69,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x73,0x74,0x5f,0x75, - 0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x78,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76, - 0x5f,0x72,0x65,0x63,0x74,0x2e,0x7a,0x29,0x2c,0x20,0x69,0x6e,0x73,0x74,0x5f,0x75, - 0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x79,0x20,0x2b,0x20,0x28,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76, - 0x5f,0x72,0x65,0x63,0x74,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp sampler2D particle_sprite_particle_spritesmp; - - in highp vec2 uv_in; - layout(location = 0) out highp vec4 color; - in highp vec4 color_in; - - void main() - { - highp vec2 _12 = uv_in; - _12.y = 1.0 - _12.y; - highp vec4 _35 = texture(particle_sprite_particle_spritesmp, _12); - if (_35.w < 0.00999999977648258209228515625) - { - discard; - } - color = _35 * color_in; - } - -*/ -fs_particle_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f, - 0x73,0x70,0x72,0x69,0x74,0x65,0x5f,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f, - 0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x69,0x6e,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x32,0x20,0x5f,0x31,0x32,0x20,0x3d,0x20,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70, - 0x72,0x69,0x74,0x65,0x5f,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70, - 0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x2e,0x77,0x20,0x3c,0x20,0x30, - 0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32, - 0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69, - 0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x33,0x35,0x20,0x2a,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x69,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct particle_vs_params - { - float4x4 mvp; - float3 cam; - }; - - struct main0_out - { - float2 uv_in [[user(locn0)]]; - float4 color_in [[user(locn1)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float3 position [[attribute(0)]]; - float4 inst_pos_size [[attribute(1)]]; - float4 inst_uv_rect [[attribute(2)]]; - float4 inst_color [[attribute(3)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant particle_vs_params& _47 [[buffer(0)]]) - { - main0_out out = {}; - float3 _53 = in.inst_pos_size.xyz - _47.cam; - _53.y = 0.0; - float3 look_dir = _53; - if (length(_53) < 9.9999997473787516355514526367188e-05) - { - look_dir = float3(1.0, 0.0, 0.0); - } - float3 _63 = look_dir; - float3 _64 = fast::normalize(_63); - look_dir = _64; - out.gl_Position = _47.mvp * float4((in.inst_pos_size.xyz + (fast::normalize(cross(float3(0.0, 1.0, 0.0), _64)) * ((in.position.x - 0.5) * in.inst_pos_size.w))) + (float3(0.0, 1.0, 0.0) * (in.position.y * in.inst_pos_size.w)), 1.0); - out.uv_in = float2(in.inst_uv_rect.x + (in.position.x * in.inst_uv_rect.z), in.inst_uv_rect.y + (in.position.y * in.inst_uv_rect.w)); - out.color_in = in.inst_color; - return out; - } - -*/ -vs_particle_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70, - 0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34, - 0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x63,0x61,0x6d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x69,0x6e,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29, - 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72, - 0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30, - 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f, - 0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62, - 0x75,0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65, - 0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, - 0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x26,0x20,0x5f,0x34,0x37,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72, - 0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x33,0x20, - 0x3d,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69, - 0x7a,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x5f,0x34,0x37,0x2e,0x63,0x61,0x6d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x35,0x33,0x2e,0x79,0x20,0x3d,0x20,0x30,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x6f, - 0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x5f,0x35,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x35,0x33, - 0x29,0x20,0x3c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33, - 0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33, - 0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69, - 0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x36,0x33,0x20, - 0x3d,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x36,0x33, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x5f,0x64,0x69,0x72,0x20, - 0x3d,0x20,0x5f,0x36,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x34,0x37, - 0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x69, - 0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x2e, - 0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x69,0x6e, - 0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2d,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x70,0x6f,0x73, - 0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x70, - 0x6f,0x73,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x5f,0x69,0x6e, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x69,0x6e,0x2e,0x69,0x6e,0x73, - 0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x78,0x20,0x2b,0x20,0x28,0x69, - 0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20,0x69, - 0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x7a, - 0x29,0x2c,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x75,0x76,0x5f,0x72,0x65, - 0x63,0x74,0x2e,0x79,0x20,0x2b,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f, - 0x75,0x76,0x5f,0x72,0x65,0x63,0x74,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x69,0x6e,0x20,0x3d,0x20, - 0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 color [[color(0)]]; - }; - - struct main0_in - { - float2 uv_in [[user(locn0)]]; - float4 color_in [[user(locn1)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], texture2d particle_sprite [[texture(0)]], sampler particle_spritesmp [[sampler(0)]]) - { - main0_out out = {}; - float2 _12 = in.uv_in; - _12.y = 1.0 - _12.y; - float4 _35 = particle_sprite.sample(particle_spritesmp, _12); - if (_35.w < 0.00999999977648258209228515625) - { - discard_fragment(); - } - out.color = _35 * in.color_in; - return out; - } - -*/ -fs_particle_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f, - 0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x5f,0x69,0x6e, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x69,0x6e,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d, - 0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x70, - 0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70,0x72,0x69,0x74,0x65,0x20,0x5b, - 0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f, - 0x73,0x70,0x72,0x69,0x74,0x65,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20, - 0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f, - 0x31,0x32,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x5f,0x69,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x32,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x5f,0x31,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x6c, - 0x65,0x5f,0x73,0x70,0x72,0x69,0x74,0x65,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x70,0x61,0x72,0x74,0x69,0x63,0x6c,0x65,0x5f,0x73,0x70,0x72,0x69,0x74,0x65,0x73, - 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x33,0x35,0x2e,0x77,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39, - 0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39, - 0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64, - 0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x5f,0x33,0x35,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f, - 0x72,0x5f,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -particle_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "particle_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_particle_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_particle_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "inst_pos_size"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "inst_uv_rect"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "inst_color"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "particle_vs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "particle_sprite_particle_spritesmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_particle_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_particle_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "inst_pos_size"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "inst_uv_rect"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "inst_color"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "particle_vs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "particle_sprite_particle_spritesmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_particle_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_particle_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_plane.jai b/src/shaders/jai/shader_plane.jai deleted file mode 100644 index 9b6118a..0000000 --- a/src/shaders/jai/shader_plane.jai +++ /dev/null @@ -1,1885 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_plane.glsl -o ./jai/shader_plane.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'plane': - Get shader desc: plane_shader_desc(sg_query_backend()) - Vertex Shader: vs_plane - Fragment Shader: fs_plane - Attributes: - ATTR_plane_position => 0 - Bindings: - Uniform block 'plane_vs_params': - Jai struct: Plane_Vs_Params - Bind slot: UB_plane_vs_params => 0 - Uniform block 'plane_world_config': - Jai struct: Plane_World_Config - Bind slot: UB_plane_world_config => 1 - Uniform block 'plane_data': - Jai struct: Plane_Data - Bind slot: UB_plane_data => 2 - Image 'normal_map': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_normal_map => 2 - Image 'shadow': - Image type: ._2D - Sample type: .DEPTH - Multisampled: false - Bind slot: IMG_shadow => 1 - Image 'reftex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_reftex => 0 - Sampler 'normalsmp': - Type: .FILTERING - Bind slot: SMP_normalsmp => 2 - Sampler 'plane_shadowsmp': - Type: .COMPARISON - Bind slot: SMP_plane_shadowsmp => 1 - Sampler 'refsmp': - Type: .FILTERING - Bind slot: SMP_refsmp => 0 -*/ -ATTR_plane_position :: 0; -UB_plane_vs_params :: 0; -UB_plane_world_config :: 1; -UB_plane_data :: 2; -IMG_normal_map :: 2; -IMG_shadow :: 1; -IMG_reftex :: 0; -SMP_normalsmp :: 2; -SMP_plane_shadowsmp :: 1; -SMP_refsmp :: 0; -Plane_Vs_Params :: struct { - mvp: [16]float; - planeHeight: float; - _: [12]u8; -}; -Plane_World_Config :: struct { - skyBase: [3]float; - _: [4]u8; - skyTop: [3]float; - _: [4]u8; - sunDisk: [3]float; - _: [4]u8; - horizonHalo: [3]float; - _: [4]u8; - sunHalo: [3]float; - _: [4]u8; - sunLightColor: [3]float; - _: [4]u8; - sunPosition: [3]float; - sunIntensity: float; - skyIntensity: float; - hasClouds: s32; - planeHeight: float; - animatePlaneHeight: s32; - waterColor: [3]float; - _: [4]u8; - deepColor: [3]float; - time: float; - waterReflectivity: float; - _: [12]u8; -}; -Plane_Data :: struct { - mvp_shadow: [16]float; - screen_w: s32; - screen_h: s32; - is_reflection_pass: s32; - _: [4]u8; - cameraPosition: [3]float; - shininess: float; - reflectionDistortion: float; - _: [12]u8; -}; -/* - #version 430 - - uniform vec4 plane_vs_params[5]; - layout(location = 0) in vec4 position; - layout(location = 2) out float depth; - layout(location = 0) out vec4 pos; - layout(location = 1) flat out int idx; - - void main() - { - vec3 _16 = position.xyz * 1000.0; - vec4 _51 = vec4(_16.x, _16.y + (float(gl_InstanceID) * plane_vs_params[4].x), _16.z, 1.0); - gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * _51; - depth = gl_Position.z; - pos = _51; - idx = gl_InstanceID; - } - -*/ -vs_plane_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6c,0x61,0x6e,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, - 0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20,0x6f,0x75,0x74,0x20,0x69,0x6e,0x74, - 0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, - 0x36,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a, - 0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f, - 0x31,0x36,0x2e,0x78,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x79,0x20,0x2b,0x20,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65, - 0x49,0x44,0x29,0x20,0x2a,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x29,0x2c,0x20,0x5f,0x31,0x36, - 0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34, - 0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x30,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x70,0x6c,0x61, - 0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29, - 0x20,0x2a,0x20,0x5f,0x35,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x64,0x65,0x70,0x74, - 0x68,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x35,0x31, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49, - 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - struct plane_world_config - { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - float time; - float waterReflectivity; - }; - - uniform plane_world_config _146; - - struct plane_data - { - mat4 mvp_shadow; - int screen_w; - int screen_h; - int is_reflection_pass; - vec3 cameraPosition; - float shininess; - float reflectionDistortion; - }; - - uniform plane_data _279; - - layout(binding = 16) uniform sampler2D normal_map_normalsmp; - layout(binding = 17) uniform sampler2DShadow shadow_plane_shadowsmp; - layout(binding = 18) uniform sampler2D reftex_refsmp; - - layout(location = 1) flat in int idx; - layout(location = 0) in vec4 pos; - layout(location = 0) out vec4 frag_color; - layout(location = 2) in float depth; - - vec3 fresnelSchlick(float cosTheta) - { - return vec3(0.0199999995529651641845703125) + (vec3(0.980000019073486328125) * pow(1.0 - cosTheta, 5.0)); - } - - vec3 sky(vec3 skypos, vec3 sunpos) - { - return mix(_146.skyBase, _146.skyTop, vec3(clamp(skypos.y * 2.0, 0.0, 0.699999988079071044921875))); - } - - float hash(vec2 p) - { - return fract(sin(dot(p, vec2(127.09999847412109375, 311.70001220703125))) * 43758.546875); - } - - float _noise(vec2 p) - { - vec2 _60 = floor(p); - vec2 _63 = fract(p); - vec2 _74 = (_63 * _63) * (vec2(3.0) - (_63 * 2.0)); - vec2 param = _60; - vec2 param_1 = _60 + vec2(1.0, 0.0); - float _89 = _74.x; - vec2 param_2 = _60 + vec2(0.0, 1.0); - vec2 param_3 = _60 + vec2(1.0); - return mix(mix(hash(param), hash(param_1), _89), mix(hash(param_2), hash(param_3), _89), _74.y); - } - - float fbm(inout vec2 p) - { - float value = 0.0; - float amplitude = 0.5; - for (int i = 0; i < 4; i++) - { - vec2 param = p; - value += (amplitude * _noise(param)); - p *= 2.0; - amplitude *= 0.5; - } - return value; - } - - void main() - { - if (idx == 1) - { - vec2 _185 = vec2(-0.004999999888241291046142578125, -0.01200000010430812835693359375) * _146.time; - vec3 _274 = normalize(((((texture(normal_map_normalsmp, (pos.xz * 0.4000000059604644775390625) + (_185 * 1.5)).xzy * 2.0) - vec3(1.0)) + ((texture(normal_map_normalsmp, (pos.xz * 0.100000001490116119384765625) + (_185 * 1.7000000476837158203125)).xzy * 2.0) - vec3(1.0))) + ((texture(normal_map_normalsmp, (pos.xz * 1.0) + (_185 * 2.7000000476837158203125)).xzy * 2.0) - vec3(1.0))) + ((texture(normal_map_normalsmp, (pos.xz * 0.0199999995529651641845703125) + (_185 * 0.100000001490116119384765625)).xzy * 2.0) - vec3(1.0))); - vec3 _285 = normalize(_279.cameraPosition - pos.xyz); - vec3 _290 = normalize(_146.sunPosition); - float param = max(0.0, dot(_285, _274)); - float _321 = min(1.0, fresnelSchlick(param).x + 0.449999988079071044921875); - vec4 _338 = _279.mvp_shadow * vec4(floor(pos.xyz * 16.0) * vec3(0.0625), 1.0); - vec3 _350 = ((_338.xyz / vec3(_338.w)) * 0.5) + vec3(0.5); - float _355 = _350.z - 0.001000000047497451305389404296875; - vec3 _520 = _350; - _520.z = _355; - float _367 = texture(shadow_plane_shadowsmp, vec3(_520.xy, _355)); - vec2 _408 = gl_FragCoord.xy / vec2(float(_279.screen_w), float(_279.screen_h)); - _408.y = 1.0 - _408.y; - vec3 param_1 = normalize(pos.xyz); - vec3 param_2 = _146.sunPosition; - float _470 = smoothstep(750.0, 1000.0, length(pos.xz)); - frag_color = vec4(mix(mix((((_146.waterColor * max(0.0, dot(_274, _290))) * _146.sunLightColor) * _146.sunIntensity) * _367, texture(reftex_refsmp, _408 + (_274.xz * _279.reflectionDistortion)).xyz, vec3(mix(_321, 1.0, _146.waterReflectivity))) + ((((_146.sunLightColor * _146.sunIntensity) * pow(max(0.0, dot(normalize(_290 + _285), _274)), max(_279.shininess, 1.0))) * _321) * _367), sky(param_1, param_2) * _146.skyIntensity, vec3(_470)), mix(mix(mix(0.300000011920928955078125, 0.5, _321), 1.0, _146.waterReflectivity), 1.0, _470)); - } - else - { - vec2 param_3 = (pos.xz * 0.0500000007450580596923828125) + vec2(_146.time * 0.00999999977648258209228515625); - float _500 = fbm(param_3); - frag_color = vec4(_146.deepColor * mix(0.800000011920928955078125, 1.2000000476837158203125, _500), 1.0); - } - } - -*/ -fs_plane_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64, - 0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48, - 0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75, - 0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73, - 0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73, - 0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c, - 0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69, - 0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x61, - 0x74,0x65,0x72,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x76,0x69,0x74,0x79,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6c,0x61, - 0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20, - 0x5f,0x31,0x34,0x36,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6c, - 0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x74,0x34,0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72, - 0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x70,0x61,0x73,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x65,0x72,0x61,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x73,0x68,0x69,0x6e,0x69,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x44,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b, - 0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f, - 0x64,0x61,0x74,0x61,0x20,0x5f,0x32,0x37,0x39,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29, - 0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x53, - 0x68,0x61,0x64,0x6f,0x77,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x70,0x6c,0x61, - 0x6e,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31, - 0x38,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73, - 0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20,0x69, - 0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x3b,0x0a,0x0a,0x76,0x65,0x63, - 0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35, - 0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32, - 0x35,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x39,0x38,0x30, - 0x30,0x30,0x30,0x30,0x31,0x39,0x30,0x37,0x33,0x34,0x38,0x36,0x33,0x32,0x38,0x31, - 0x32,0x35,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20, - 0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x28,0x76,0x65,0x63, - 0x33,0x20,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x73, - 0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x34,0x36,0x2e,0x73,0x6b,0x79, - 0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x6b,0x79,0x54,0x6f, - 0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x6b, - 0x79,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37, - 0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x28, - 0x76,0x65,0x63,0x32,0x20,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64, - 0x6f,0x74,0x28,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x37,0x2e,0x30, - 0x39,0x39,0x39,0x39,0x38,0x34,0x37,0x34,0x31,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x2c,0x20,0x33,0x31,0x31,0x2e,0x37,0x30,0x30,0x30,0x31,0x32,0x32,0x30,0x37,0x30, - 0x33,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e, - 0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x76,0x65,0x63,0x32,0x20,0x70,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x30,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74, - 0x28,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x37, - 0x34,0x20,0x3d,0x20,0x28,0x5f,0x36,0x33,0x20,0x2a,0x20,0x5f,0x36,0x33,0x29,0x20, - 0x2a,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20,0x28, - 0x5f,0x36,0x33,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x36, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x36,0x30,0x20,0x2b,0x20,0x76,0x65,0x63,0x32, - 0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x39,0x20,0x3d,0x20,0x5f,0x37,0x34,0x2e, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x36,0x30,0x20,0x2b,0x20,0x76,0x65,0x63,0x32, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f, - 0x36,0x30,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x69,0x78,0x28,0x6d, - 0x69,0x78,0x28,0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x2c,0x20, - 0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x2c,0x20,0x5f, - 0x38,0x39,0x29,0x2c,0x20,0x6d,0x69,0x78,0x28,0x68,0x61,0x73,0x68,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x29,0x2c,0x20,0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x29,0x2c,0x20,0x5f,0x38,0x39,0x29,0x2c,0x20,0x5f,0x37,0x34, - 0x2e,0x79,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x62, - 0x6d,0x28,0x69,0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x61,0x6c,0x75, - 0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x61,0x6d,0x70,0x6c,0x69,0x74,0x75,0x64,0x65,0x20,0x3d,0x20,0x30, - 0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74, - 0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x69, - 0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x70, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20, - 0x2b,0x3d,0x20,0x28,0x61,0x6d,0x70,0x6c,0x69,0x74,0x75,0x64,0x65,0x20,0x2a,0x20, - 0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x20,0x2a,0x3d,0x20,0x32,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x6d,0x70,0x6c,0x69,0x74, - 0x75,0x64,0x65,0x20,0x2a,0x3d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x61,0x6c, - 0x75,0x65,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x64,0x78, - 0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x38,0x35,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x32,0x28,0x2d,0x30,0x2e,0x30,0x30,0x34,0x39,0x39,0x39,0x39, - 0x39,0x39,0x38,0x38,0x38,0x32,0x34,0x31,0x32,0x39,0x31,0x30,0x34,0x36,0x31,0x34, - 0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x31,0x32,0x30, - 0x30,0x30,0x30,0x30,0x30,0x31,0x30,0x34,0x33,0x30,0x38,0x31,0x32,0x38,0x33,0x35, - 0x36,0x39,0x33,0x33,0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34, - 0x36,0x2e,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x37,0x34,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x28,0x28,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20, - 0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, - 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x20,0x2b, - 0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x31,0x2e,0x35,0x29,0x29,0x2e,0x78, - 0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a, - 0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39, - 0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35, - 0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x31,0x2e,0x37,0x30, - 0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30, - 0x33,0x31,0x32,0x35,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30, - 0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x29,0x20, - 0x2b,0x20,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70, - 0x2c,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x31,0x2e,0x30,0x29, - 0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x32,0x2e,0x37,0x30,0x30, - 0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33, - 0x31,0x32,0x35,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29, - 0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c, - 0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x39, - 0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31, - 0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x31, - 0x38,0x35,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31, - 0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36, - 0x32,0x35,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20, - 0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x38,0x35, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x37, - 0x39,0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x2d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x39,0x30,0x20,0x3d, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x34,0x36,0x2e, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x64,0x6f,0x74, - 0x28,0x5f,0x32,0x38,0x35,0x2c,0x20,0x5f,0x32,0x37,0x34,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x32, - 0x31,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x66,0x72,0x65, - 0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x29,0x2e,0x78,0x20,0x2b,0x20,0x30,0x2e,0x34,0x34,0x39,0x39,0x39,0x39,0x39, - 0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x33,0x33,0x38,0x20,0x3d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x6d,0x76,0x70, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x66, - 0x6c,0x6f,0x6f,0x72,0x28,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31, - 0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36, - 0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x35,0x30,0x20,0x3d,0x20,0x28, - 0x28,0x5f,0x33,0x33,0x38,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65,0x63,0x33, - 0x28,0x5f,0x33,0x33,0x38,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x35, - 0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31, - 0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35, - 0x32,0x30,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x35,0x32,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x35,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x33,0x36,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x5f,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x73,0x68,0x61,0x64, - 0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x35,0x32,0x30, - 0x2e,0x78,0x79,0x2c,0x20,0x5f,0x33,0x35,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x34,0x30,0x38,0x20,0x3d, - 0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32, - 0x37,0x39,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x5f,0x32,0x37,0x39,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f, - 0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x30, - 0x38,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x34,0x30,0x38, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x30,0x20,0x3d,0x20,0x73,0x6d,0x6f, - 0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x37,0x35,0x30,0x2e,0x30,0x2c,0x20,0x31, - 0x30,0x30,0x30,0x2e,0x30,0x2c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x70,0x6f, - 0x73,0x2e,0x78,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x28,0x28,0x28,0x5f,0x31,0x34, - 0x36,0x2e,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x6d, - 0x61,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x37,0x34, - 0x2c,0x20,0x5f,0x32,0x39,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36, - 0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x5f,0x33,0x36,0x37,0x2c,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73, - 0x6d,0x70,0x2c,0x20,0x5f,0x34,0x30,0x38,0x20,0x2b,0x20,0x28,0x5f,0x32,0x37,0x34, - 0x2e,0x78,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x37,0x39,0x2e,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x69,0x6f,0x6e,0x44,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x29, - 0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x69,0x78,0x28, - 0x5f,0x33,0x32,0x31,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e, - 0x77,0x61,0x74,0x65,0x72,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x76,0x69,0x74, - 0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x5f,0x31,0x34,0x36,0x2e, - 0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20, - 0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x64,0x6f,0x74,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x32,0x39,0x30,0x20,0x2b,0x20,0x5f,0x32,0x38,0x35,0x29,0x2c,0x20,0x5f,0x32, - 0x37,0x34,0x29,0x29,0x2c,0x20,0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39,0x2e,0x73, - 0x68,0x69,0x6e,0x69,0x6e,0x65,0x73,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29, - 0x20,0x2a,0x20,0x5f,0x33,0x32,0x31,0x29,0x20,0x2a,0x20,0x5f,0x33,0x36,0x37,0x29, - 0x2c,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73, - 0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x5f,0x34,0x37,0x30,0x29,0x29,0x2c,0x20,0x6d,0x69,0x78,0x28,0x6d,0x69, - 0x78,0x28,0x6d,0x69,0x78,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31, - 0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35, - 0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x5f,0x33,0x32,0x31,0x29,0x2c,0x20,0x31,0x2e, - 0x30,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e,0x77,0x61,0x74,0x65,0x72,0x52,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x69,0x76,0x69,0x74,0x79,0x29,0x2c,0x20,0x31,0x2e,0x30,0x2c, - 0x20,0x5f,0x34,0x37,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x33,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38, - 0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x20,0x2b, - 0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x34,0x36,0x2e,0x74,0x69,0x6d,0x65,0x20, - 0x2a,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36, - 0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x35,0x30,0x30,0x20,0x3d,0x20,0x66,0x62,0x6d,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x5f,0x31,0x34,0x36,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x20, - 0x2a,0x20,0x6d,0x69,0x78,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31, - 0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35, - 0x2c,0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33, - 0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x2c,0x20,0x5f,0x35,0x30,0x30, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 plane_vs_params[5]; - layout(location = 0) in vec4 position; - out float depth; - out vec4 pos; - flat out int idx; - - void main() - { - vec3 _16 = position.xyz * 1000.0; - vec4 _51 = vec4(_16.x, _16.y + (float(gl_InstanceID) * plane_vs_params[4].x), _16.z, 1.0); - gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * _51; - depth = gl_Position.z; - pos = _51; - idx = gl_InstanceID; - } - -*/ -vs_plane_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6c, - 0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x66,0x6c,0x61,0x74,0x20,0x6f,0x75,0x74, - 0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x36,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x5f,0x31,0x36,0x2e,0x78,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x79,0x20, - 0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74, - 0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f, - 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x29,0x2c, - 0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x6d,0x61,0x74,0x34,0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x70,0x6c,0x61, - 0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c, - 0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x5f,0x35,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d, - 0x20,0x5f,0x35,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20, - 0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct plane_world_config - { - highp vec3 skyBase; - highp vec3 skyTop; - highp vec3 sunDisk; - highp vec3 horizonHalo; - highp vec3 sunHalo; - highp vec3 sunLightColor; - highp vec3 sunPosition; - highp float sunIntensity; - highp float skyIntensity; - int hasClouds; - highp float planeHeight; - int animatePlaneHeight; - highp vec3 waterColor; - highp vec3 deepColor; - highp float time; - highp float waterReflectivity; - }; - - uniform plane_world_config _146; - - struct plane_data - { - highp mat4 mvp_shadow; - int screen_w; - int screen_h; - int is_reflection_pass; - highp vec3 cameraPosition; - highp float shininess; - highp float reflectionDistortion; - }; - - uniform plane_data _279; - - uniform highp sampler2D normal_map_normalsmp; - uniform highp sampler2DShadow shadow_plane_shadowsmp; - uniform highp sampler2D reftex_refsmp; - - flat in int idx; - in highp vec4 pos; - layout(location = 0) out highp vec4 frag_color; - in highp float depth; - - highp vec3 fresnelSchlick(highp float cosTheta) - { - return vec3(0.0199999995529651641845703125) + (vec3(0.980000019073486328125) * pow(1.0 - cosTheta, 5.0)); - } - - highp vec3 sky(highp vec3 skypos, highp vec3 sunpos) - { - return mix(_146.skyBase, _146.skyTop, vec3(clamp(skypos.y * 2.0, 0.0, 0.699999988079071044921875))); - } - - highp float hash(highp vec2 p) - { - return fract(sin(dot(p, vec2(127.09999847412109375, 311.70001220703125))) * 43758.546875); - } - - highp float _noise(highp vec2 p) - { - highp vec2 _60 = floor(p); - highp vec2 _63 = fract(p); - highp vec2 _74 = (_63 * _63) * (vec2(3.0) - (_63 * 2.0)); - highp vec2 param = _60; - highp vec2 param_1 = _60 + vec2(1.0, 0.0); - highp float _89 = _74.x; - highp vec2 param_2 = _60 + vec2(0.0, 1.0); - highp vec2 param_3 = _60 + vec2(1.0); - return mix(mix(hash(param), hash(param_1), _89), mix(hash(param_2), hash(param_3), _89), _74.y); - } - - highp float fbm(inout highp vec2 p) - { - highp float value = 0.0; - highp float amplitude = 0.5; - for (int i = 0; i < 4; i++) - { - highp vec2 param = p; - value += (amplitude * _noise(param)); - p *= 2.0; - amplitude *= 0.5; - } - return value; - } - - void main() - { - if (idx == 1) - { - highp vec2 _185 = vec2(-0.004999999888241291046142578125, -0.01200000010430812835693359375) * _146.time; - highp vec3 _274 = normalize(((((texture(normal_map_normalsmp, (pos.xz * 0.4000000059604644775390625) + (_185 * 1.5)).xzy * 2.0) - vec3(1.0)) + ((texture(normal_map_normalsmp, (pos.xz * 0.100000001490116119384765625) + (_185 * 1.7000000476837158203125)).xzy * 2.0) - vec3(1.0))) + ((texture(normal_map_normalsmp, (pos.xz * 1.0) + (_185 * 2.7000000476837158203125)).xzy * 2.0) - vec3(1.0))) + ((texture(normal_map_normalsmp, (pos.xz * 0.0199999995529651641845703125) + (_185 * 0.100000001490116119384765625)).xzy * 2.0) - vec3(1.0))); - highp vec3 _285 = normalize(_279.cameraPosition - pos.xyz); - highp vec3 _290 = normalize(_146.sunPosition); - highp float param = max(0.0, dot(_285, _274)); - highp float _321 = min(1.0, fresnelSchlick(param).x + 0.449999988079071044921875); - highp vec4 _338 = _279.mvp_shadow * vec4(floor(pos.xyz * 16.0) * vec3(0.0625), 1.0); - highp vec3 _350 = ((_338.xyz / vec3(_338.w)) * 0.5) + vec3(0.5); - highp float _355 = _350.z - 0.001000000047497451305389404296875; - highp vec3 _520 = _350; - _520.z = _355; - highp float _367 = texture(shadow_plane_shadowsmp, vec3(_520.xy, _355)); - highp vec2 _408 = gl_FragCoord.xy / vec2(float(_279.screen_w), float(_279.screen_h)); - _408.y = 1.0 - _408.y; - highp vec3 param_1 = normalize(pos.xyz); - highp vec3 param_2 = _146.sunPosition; - highp float _470 = smoothstep(750.0, 1000.0, length(pos.xz)); - frag_color = vec4(mix(mix((((_146.waterColor * max(0.0, dot(_274, _290))) * _146.sunLightColor) * _146.sunIntensity) * _367, texture(reftex_refsmp, _408 + (_274.xz * _279.reflectionDistortion)).xyz, vec3(mix(_321, 1.0, _146.waterReflectivity))) + ((((_146.sunLightColor * _146.sunIntensity) * pow(max(0.0, dot(normalize(_290 + _285), _274)), max(_279.shininess, 1.0))) * _321) * _367), sky(param_1, param_2) * _146.skyIntensity, vec3(_470)), mix(mix(mix(0.300000011920928955078125, 0.5, _321), 1.0, _146.waterReflectivity), 1.0, _470)); - } - else - { - highp vec2 param_3 = (pos.xz * 0.0500000007450580596923828125) + vec2(_146.time * 0.00999999977648258209228515625); - highp float _500 = fbm(param_3); - frag_color = vec4(_146.deepColor * mix(0.800000011920928955078125, 1.2000000476837158203125, _500), 1.0); - } - } - -*/ -fs_plane_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e, - 0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b, - 0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65, - 0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,0x6d, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x77,0x61,0x74,0x65,0x72,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x76,0x69,0x74,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f, - 0x6e,0x66,0x69,0x67,0x20,0x5f,0x31,0x34,0x36,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x6d,0x61,0x74,0x34,0x20,0x6d, - 0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x70,0x61,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x65,0x72,0x61, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x68,0x69,0x6e,0x69,0x6e, - 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x44, - 0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74, - 0x61,0x20,0x5f,0x32,0x37,0x39,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x53,0x68, - 0x61,0x64,0x6f,0x77,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x70,0x6c,0x61,0x6e, - 0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66,0x73, - 0x6d,0x70,0x3b,0x0a,0x0a,0x66,0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74, - 0x20,0x69,0x64,0x78,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75, - 0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x3b,0x0a,0x0a, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x72,0x65,0x73,0x6e, - 0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32, - 0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35, - 0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x39,0x38,0x30,0x30, - 0x30,0x30,0x30,0x31,0x39,0x30,0x37,0x33,0x34,0x38,0x36,0x33,0x32,0x38,0x31,0x32, - 0x35,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63, - 0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b, - 0x79,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79, - 0x70,0x6f,0x73,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x34,0x36,0x2e,0x73,0x6b, - 0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x6b,0x79,0x54, - 0x6f,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73, - 0x6b,0x79,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30, - 0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x68,0x61,0x73,0x68,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x32,0x20,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28, - 0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x37,0x2e,0x30,0x39,0x39,0x39, - 0x39,0x38,0x34,0x37,0x34,0x31,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x2c,0x20,0x33, - 0x31,0x31,0x2e,0x37,0x30,0x30,0x30,0x31,0x32,0x32,0x30,0x37,0x30,0x33,0x31,0x32, - 0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36, - 0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x30,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20, - 0x66,0x72,0x61,0x63,0x74,0x28,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x37,0x34,0x20,0x3d,0x20,0x28, - 0x5f,0x36,0x33,0x20,0x2a,0x20,0x5f,0x36,0x33,0x29,0x20,0x2a,0x20,0x28,0x76,0x65, - 0x63,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20,0x28,0x5f,0x36,0x33,0x20,0x2a, - 0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f, - 0x36,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x36,0x30, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x38,0x39,0x20,0x3d,0x20,0x5f,0x37,0x34,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x36,0x30,0x20,0x2b,0x20,0x76, - 0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x36,0x30,0x20,0x2b,0x20,0x76,0x65, - 0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x68,0x61,0x73,0x68, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x2c,0x20,0x68,0x61,0x73,0x68,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x29,0x2c,0x20,0x5f,0x38,0x39,0x29,0x2c,0x20,0x6d,0x69, - 0x78,0x28,0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x2c, - 0x20,0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x2c,0x20, - 0x5f,0x38,0x39,0x29,0x2c,0x20,0x5f,0x37,0x34,0x2e,0x79,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x62,0x6d, - 0x28,0x69,0x6e,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x32,0x20,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x61,0x6d,0x70,0x6c,0x69,0x74,0x75,0x64,0x65,0x20,0x3d,0x20, - 0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e, - 0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20, - 0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2b,0x3d,0x20,0x28,0x61,0x6d,0x70,0x6c,0x69, - 0x74,0x75,0x64,0x65,0x20,0x2a,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70, - 0x20,0x2a,0x3d,0x20,0x32,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x61,0x6d,0x70,0x6c,0x69,0x74,0x75,0x64,0x65,0x20,0x2a,0x3d,0x20,0x30,0x2e, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x38,0x35,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x32,0x28,0x2d,0x30,0x2e,0x30,0x30,0x34,0x39,0x39,0x39,0x39,0x39,0x39,0x38, - 0x38,0x38,0x32,0x34,0x31,0x32,0x39,0x31,0x30,0x34,0x36,0x31,0x34,0x32,0x35,0x37, - 0x38,0x31,0x32,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x31,0x32,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x30,0x34,0x33,0x30,0x38,0x31,0x32,0x38,0x33,0x35,0x36,0x39,0x33, - 0x33,0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x74, - 0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x37,0x34,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x28,0x28,0x28,0x28,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c,0x20,0x28,0x70,0x6f,0x73,0x2e, - 0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35, - 0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35, - 0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x31,0x2e,0x35,0x29, - 0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70, - 0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c,0x20,0x28,0x70,0x6f,0x73, - 0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35, - 0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x31, - 0x2e,0x37,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35, - 0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20, - 0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29, - 0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x73,0x6d,0x70,0x2c,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x31, - 0x2e,0x30,0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x32,0x2e, - 0x37,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38, - 0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32, - 0x2e,0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73, - 0x6d,0x70,0x2c,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31, - 0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20, - 0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37, - 0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e, - 0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x38,0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x37,0x39,0x2e,0x63,0x61,0x6d,0x65,0x72, - 0x61,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2d,0x20,0x70,0x6f,0x73,0x2e, - 0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x39,0x30,0x20,0x3d,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x34,0x36,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x38,0x35,0x2c,0x20,0x5f,0x32,0x37,0x34, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x32,0x31,0x20,0x3d,0x20,0x6d, - 0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53, - 0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x2e,0x78,0x20, - 0x2b,0x20,0x30,0x2e,0x34,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39, - 0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x33,0x33,0x38,0x20,0x3d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x6d,0x76, - 0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, - 0x66,0x6c,0x6f,0x6f,0x72,0x28,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, - 0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x33,0x35,0x30,0x20,0x3d,0x20,0x28,0x28,0x5f,0x33,0x33,0x38,0x2e,0x78,0x79,0x7a, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x33,0x33,0x38,0x2e,0x77,0x29,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x35,0x20,0x3d,0x20, - 0x5f,0x33,0x35,0x30,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30, - 0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35, - 0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x35,0x32,0x30,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x32,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x5f, - 0x33,0x35,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x36,0x37,0x20,0x3d,0x20, - 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x70, - 0x6c,0x61,0x6e,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x5f,0x35,0x32,0x30,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x33, - 0x35,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x34,0x30,0x38,0x20,0x3d,0x20, - 0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20, - 0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32,0x37, - 0x39,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x5f,0x32,0x37,0x39,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x30,0x38, - 0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x34,0x30,0x38,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f,0x73,0x2e,0x78,0x79, - 0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d, - 0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x30,0x20,0x3d,0x20,0x73,0x6d, - 0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x37,0x35,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x30,0x30,0x30,0x2e,0x30,0x2c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x70, - 0x6f,0x73,0x2e,0x78,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x28,0x28,0x28,0x5f,0x31, - 0x34,0x36,0x2e,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20, - 0x6d,0x61,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x37, - 0x34,0x2c,0x20,0x5f,0x32,0x39,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34, - 0x36,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29, - 0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x5f,0x33,0x36,0x37,0x2c,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x65,0x66,0x74,0x65,0x78,0x5f,0x72,0x65,0x66, - 0x73,0x6d,0x70,0x2c,0x20,0x5f,0x34,0x30,0x38,0x20,0x2b,0x20,0x28,0x5f,0x32,0x37, - 0x34,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x37,0x39,0x2e,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x69,0x6f,0x6e,0x44,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e, - 0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x69,0x78, - 0x28,0x5f,0x33,0x32,0x31,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x34,0x36, - 0x2e,0x77,0x61,0x74,0x65,0x72,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x76,0x69, - 0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x5f,0x31,0x34,0x36, - 0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a, - 0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x6d,0x61,0x78,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x64,0x6f,0x74,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, - 0x28,0x5f,0x32,0x39,0x30,0x20,0x2b,0x20,0x5f,0x32,0x38,0x35,0x29,0x2c,0x20,0x5f, - 0x32,0x37,0x34,0x29,0x29,0x2c,0x20,0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39,0x2e, - 0x73,0x68,0x69,0x6e,0x69,0x6e,0x65,0x73,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29, - 0x29,0x20,0x2a,0x20,0x5f,0x33,0x32,0x31,0x29,0x20,0x2a,0x20,0x5f,0x33,0x36,0x37, - 0x29,0x2c,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e, - 0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x5f,0x34,0x37,0x30,0x29,0x29,0x2c,0x20,0x6d,0x69,0x78,0x28,0x6d, - 0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32, - 0x35,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x5f,0x33,0x32,0x31,0x29,0x2c,0x20,0x31, - 0x2e,0x30,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e,0x77,0x61,0x74,0x65,0x72,0x52,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x69,0x76,0x69,0x74,0x79,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x2c,0x20,0x5f,0x34,0x37,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73, - 0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32, - 0x38,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x34, - 0x36,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32, - 0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x35,0x30,0x30,0x20,0x3d,0x20,0x66,0x62,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31, - 0x34,0x36,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x6d, - 0x69,0x78,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32, - 0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x31, - 0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35, - 0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x2c,0x20,0x5f,0x35,0x30,0x30,0x29,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #include - #include - - using namespace metal; - - struct plane_vs_params - { - float4x4 mvp; - float planeHeight; - }; - - struct main0_out - { - float4 pos [[user(locn0)]]; - int idx [[user(locn1)]]; - float depth [[user(locn2)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant plane_vs_params& _25 [[buffer(0)]], uint gl_InstanceIndex [[instance_id]]) - { - main0_out out = {}; - float3 _16 = in.position.xyz * 1000.0; - float4 _51 = float4(_16.x, _16.y + (float(int(gl_InstanceIndex)) * _25.planeHeight), _16.z, 1.0); - out.gl_Position = _25.mvp * _51; - out.depth = out.gl_Position.z; - out.pos = _51; - out.idx = int(gl_InstanceIndex); - return out; - } - -*/ -vs_plane_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70, - 0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76, - 0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61, - 0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x20, - 0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x5b,0x5b,0x75, - 0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69, - 0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c, - 0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f, - 0x32,0x35,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d, - 0x2c,0x20,0x75,0x69,0x6e,0x74,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e, - 0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x20,0x5b,0x5b,0x69,0x6e,0x73,0x74,0x61,0x6e, - 0x63,0x65,0x5f,0x69,0x64,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b, - 0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x31,0x36,0x2e,0x78,0x2c,0x20,0x5f,0x31,0x36, - 0x2e,0x79,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x28, - 0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78, - 0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x35,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65, - 0x69,0x67,0x68,0x74,0x29,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x32,0x35,0x2e,0x6d,0x76, - 0x70,0x20,0x2a,0x20,0x5f,0x35,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, - 0x2e,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x35,0x31,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74, - 0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65, - 0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f, - 0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct plane_world_config - { - float3 skyBase; - float3 skyTop; - float3 sunDisk; - float3 horizonHalo; - float3 sunHalo; - float3 sunLightColor; - packed_float3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - float3 waterColor; - packed_float3 deepColor; - float time; - float waterReflectivity; - }; - - struct plane_data - { - float4x4 mvp_shadow; - int screen_w; - int screen_h; - int is_reflection_pass; - char _m4_pad[4]; - packed_float3 cameraPosition; - float shininess; - float reflectionDistortion; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float4 pos [[user(locn0)]]; - int idx [[user(locn1)]]; - }; - - static inline __attribute__((always_inline)) - float3 fresnelSchlick(thread const float& cosTheta) - { - return float3(0.0199999995529651641845703125) + (float3(0.980000019073486328125) * powr(1.0 - cosTheta, 5.0)); - } - - static inline __attribute__((always_inline)) - float3 sky(thread const float3& skypos, thread const float3& sunpos, constant plane_world_config& _146) - { - return mix(_146.skyBase, _146.skyTop, float3(fast::clamp(skypos.y * 2.0, 0.0, 0.699999988079071044921875))); - } - - static inline __attribute__((always_inline)) - float hash(thread const float2& p) - { - return fract(sin(dot(p, float2(127.09999847412109375, 311.70001220703125))) * 43758.546875); - } - - static inline __attribute__((always_inline)) - float _noise(thread const float2& p) - { - float2 _60 = floor(p); - float2 _63 = fract(p); - float2 _74 = (_63 * _63) * (float2(3.0) - (_63 * 2.0)); - float2 param = _60; - float2 param_1 = _60 + float2(1.0, 0.0); - float _89 = _74.x; - float2 param_2 = _60 + float2(0.0, 1.0); - float2 param_3 = _60 + float2(1.0); - return mix(mix(hash(param), hash(param_1), _89), mix(hash(param_2), hash(param_3), _89), _74.y); - } - - static inline __attribute__((always_inline)) - float fbm(thread float2& p) - { - float value = 0.0; - float amplitude = 0.5; - for (int i = 0; i < 4; i++) - { - float2 param = p; - value += (amplitude * _noise(param)); - p *= 2.0; - amplitude *= 0.5; - } - return value; - } - - fragment main0_out main0(main0_in in [[stage_in]], constant plane_world_config& _146 [[buffer(0)]], constant plane_data& _279 [[buffer(1)]], texture2d normal_map [[texture(0)]], depth2d shadow [[texture(1)]], texture2d reftex [[texture(2)]], sampler normalsmp [[sampler(0)]], sampler plane_shadowsmp [[sampler(1)]], sampler refsmp [[sampler(2)]], float4 gl_FragCoord [[position]]) - { - main0_out out = {}; - if (in.idx == 1) - { - float2 _185 = float2(-0.004999999888241291046142578125, -0.01200000010430812835693359375) * _146.time; - float3 _274 = fast::normalize(((((normal_map.sample(normalsmp, ((in.pos.xz * 0.4000000059604644775390625) + (_185 * 1.5))).xzy * 2.0) - float3(1.0)) + ((normal_map.sample(normalsmp, ((in.pos.xz * 0.100000001490116119384765625) + (_185 * 1.7000000476837158203125))).xzy * 2.0) - float3(1.0))) + ((normal_map.sample(normalsmp, ((in.pos.xz * 1.0) + (_185 * 2.7000000476837158203125))).xzy * 2.0) - float3(1.0))) + ((normal_map.sample(normalsmp, ((in.pos.xz * 0.0199999995529651641845703125) + (_185 * 0.100000001490116119384765625))).xzy * 2.0) - float3(1.0))); - float3 _285 = fast::normalize(float3(_279.cameraPosition) - in.pos.xyz); - float3 _290 = fast::normalize(float3(_146.sunPosition)); - float param = fast::max(0.0, dot(_285, _274)); - float _321 = fast::min(1.0, fresnelSchlick(param).x + 0.449999988079071044921875); - float4 _338 = _279.mvp_shadow * float4(floor(in.pos.xyz * 16.0) * float3(0.0625), 1.0); - float3 _350 = ((_338.xyz / float3(_338.w)) * 0.5) + float3(0.5); - float _355 = _350.z - 0.001000000047497451305389404296875; - float3 _520 = _350; - _520.z = _355; - float _367 = shadow.sample_compare(plane_shadowsmp, _520.xy, _355); - float2 _408 = gl_FragCoord.xy / float2(float(_279.screen_w), float(_279.screen_h)); - _408.y = 1.0 - _408.y; - float3 param_1 = fast::normalize(in.pos.xyz); - float3 param_2 = float3(_146.sunPosition); - float _470 = smoothstep(750.0, 1000.0, length(in.pos.xz)); - out.frag_color = float4(mix(mix((((_146.waterColor * fast::max(0.0, dot(_274, _290))) * _146.sunLightColor) * _146.sunIntensity) * _367, reftex.sample(refsmp, (_408 + (_274.xz * _279.reflectionDistortion))).xyz, float3(mix(_321, 1.0, _146.waterReflectivity))) + ((((_146.sunLightColor * _146.sunIntensity) * powr(fast::max(0.0, dot(fast::normalize(_290 + _285), _274)), fast::max(_279.shininess, 1.0))) * _321) * _367), sky(param_1, param_2, _146) * _146.skyIntensity, float3(_470)), mix(mix(mix(0.300000011920928955078125, 0.5, _321), 1.0, _146.waterReflectivity), 1.0, _470)); - } - else - { - float2 param_3 = (in.pos.xz * 0.0500000007450580596923828125) + float2(_146.time * 0.00999999977648258209228515625); - float _500 = fbm(param_3); - out.frag_color = float4(float3(_146.deepColor) * mix(0.800000011920928955078125, 1.2000000476837158203125, _500), 1.0); - } - return out; - } - -*/ -fs_plane_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x54, - 0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73, - 0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x48,0x61, - 0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73, - 0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73, - 0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48, - 0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61, - 0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x77,0x61, - 0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61, - 0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x64,0x65,0x65,0x70, - 0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x77,0x61,0x74,0x65,0x72,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x76,0x69, - 0x74,0x79,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70, - 0x6c,0x61,0x6e,0x65,0x5f,0x64,0x61,0x74,0x61,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72, - 0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73, - 0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x70, - 0x61,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x20,0x5f,0x6d, - 0x34,0x5f,0x70,0x61,0x64,0x5b,0x34,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61, - 0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x65, - 0x72,0x61,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x68,0x69,0x6e,0x69,0x6e,0x65,0x73,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x69,0x6f,0x6e,0x44,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b, - 0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28, - 0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x63,0x6f,0x73,0x54,0x68,0x65, - 0x74,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39, - 0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35, - 0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x39,0x38,0x30,0x30,0x30,0x30,0x30,0x31,0x39,0x30,0x37,0x33, - 0x34,0x38,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77, - 0x72,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61, - 0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74, - 0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72, - 0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x6b,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c, - 0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x26,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x2c,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72, - 0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x31,0x34,0x36,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x69, - 0x78,0x28,0x5f,0x31,0x34,0x36,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20, - 0x5f,0x31,0x34,0x36,0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x73,0x6b,0x79,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38, - 0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29, - 0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e, - 0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e, - 0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x28,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x26,0x20,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f, - 0x74,0x28,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x32,0x37,0x2e, - 0x30,0x39,0x39,0x39,0x39,0x38,0x34,0x37,0x34,0x31,0x32,0x31,0x30,0x39,0x33,0x37, - 0x35,0x2c,0x20,0x33,0x31,0x31,0x2e,0x37,0x30,0x30,0x30,0x31,0x32,0x32,0x30,0x37, - 0x30,0x33,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38, - 0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61, - 0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74, - 0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73, - 0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x70,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x36,0x30,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20,0x66,0x72,0x61, - 0x63,0x74,0x28,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x20,0x5f,0x37,0x34,0x20,0x3d,0x20,0x28,0x5f,0x36,0x33,0x20,0x2a,0x20,0x5f, - 0x36,0x33,0x29,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x33,0x2e, - 0x30,0x29,0x20,0x2d,0x20,0x28,0x5f,0x36,0x33,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x36,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20, - 0x5f,0x36,0x30,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x38,0x39,0x20,0x3d,0x20,0x5f,0x37,0x34,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x20,0x3d,0x20,0x5f,0x36,0x30,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d, - 0x20,0x5f,0x36,0x30,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d, - 0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x29,0x2c,0x20,0x68,0x61,0x73,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x29,0x2c,0x20,0x5f,0x38,0x39,0x29,0x2c,0x20,0x6d,0x69,0x78,0x28,0x68,0x61,0x73, - 0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x2c,0x20,0x68,0x61,0x73,0x68, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x2c,0x20,0x5f,0x38,0x39,0x29,0x2c, - 0x20,0x5f,0x37,0x34,0x2e,0x79,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74, - 0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72, - 0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66, - 0x62,0x6d,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x26,0x20,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x70,0x6c,0x69,0x74,0x75,0x64, - 0x65,0x20,0x3d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, - 0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c, - 0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2b,0x3d,0x20,0x28,0x61,0x6d,0x70,0x6c,0x69, - 0x74,0x75,0x64,0x65,0x20,0x2a,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70, - 0x20,0x2a,0x3d,0x20,0x32,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x61,0x6d,0x70,0x6c,0x69,0x74,0x75,0x64,0x65,0x20,0x2a,0x3d,0x20,0x30,0x2e, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72, - 0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20, - 0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f, - 0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x31, - 0x34,0x36,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d, - 0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65, - 0x5f,0x64,0x61,0x74,0x61,0x26,0x20,0x5f,0x32,0x37,0x39,0x20,0x5b,0x5b,0x62,0x75, - 0x66,0x66,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x5f,0x6d,0x61,0x70,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x64,0x65,0x70,0x74,0x68,0x32,0x64,0x3c,0x66, - 0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x5b,0x5b,0x74, - 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x72,0x65, - 0x66,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32, - 0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x70, - 0x6c,0x61,0x6e,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x20,0x5b, - 0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x72,0x65,0x66,0x73,0x6d,0x70,0x20,0x5b,0x5b, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72, - 0x64,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20, - 0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x69,0x6e,0x2e,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x20,0x5f,0x31,0x38,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x2d,0x30,0x2e,0x30,0x30,0x34,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38, - 0x38,0x32,0x34,0x31,0x32,0x39,0x31,0x30,0x34,0x36,0x31,0x34,0x32,0x35,0x37,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x30,0x31,0x32,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x30,0x34,0x33,0x30,0x38,0x31,0x32,0x38,0x33,0x35,0x36,0x39,0x33,0x33, - 0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x74,0x69, - 0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x32,0x37,0x34,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x28,0x28,0x28,0x28,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c,0x20,0x28,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39, - 0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20, - 0x31,0x2e,0x35,0x29,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30, - 0x29,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x29, - 0x20,0x2b,0x20,0x28,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x2e, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70, - 0x2c,0x20,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31, - 0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x20,0x2b, - 0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x31,0x2e,0x37,0x30,0x30,0x30,0x30, - 0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32, - 0x35,0x29,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20, - 0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x29,0x20, - 0x2b,0x20,0x28,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x6d,0x61,0x70,0x2e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x73,0x6d,0x70,0x2c, - 0x20,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x31, - 0x2e,0x30,0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x32,0x2e, - 0x37,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38, - 0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x29,0x29,0x2e,0x78,0x7a,0x79,0x20,0x2a,0x20, - 0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e, - 0x30,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f, - 0x6d,0x61,0x70,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x73,0x6d,0x70,0x2c,0x20,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78, - 0x7a,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35, - 0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31, - 0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x31,0x38,0x35,0x20,0x2a,0x20,0x30,0x2e, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31, - 0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x29,0x2e,0x78, - 0x7a,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x38,0x35,0x20,0x3d, - 0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x37,0x39,0x2e,0x63,0x61,0x6d, - 0x65,0x72,0x61,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x20,0x2d,0x20,0x69, - 0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x39,0x30,0x20, - 0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75, - 0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x64,0x6f,0x74,0x28,0x5f,0x32,0x38,0x35,0x2c,0x20,0x5f,0x32,0x37,0x34, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x33,0x32,0x31,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d, - 0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53, - 0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x2e,0x78,0x20, - 0x2b,0x20,0x30,0x2e,0x34,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39, - 0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33, - 0x33,0x38,0x20,0x3d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68, - 0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x6c, - 0x6f,0x6f,0x72,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x20,0x2a, - 0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33, - 0x35,0x30,0x20,0x3d,0x20,0x28,0x28,0x5f,0x33,0x33,0x38,0x2e,0x78,0x79,0x7a,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x33,0x33,0x38,0x2e,0x77,0x29, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x35,0x20,0x3d,0x20,0x5f,0x33,0x35, - 0x30,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39, - 0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x32,0x30,0x20,0x3d, - 0x20,0x5f,0x33,0x35,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x35,0x32,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x35,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x36,0x37, - 0x20,0x3d,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x28,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x35,0x32,0x30,0x2e,0x78, - 0x79,0x2c,0x20,0x5f,0x33,0x35,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x34,0x30,0x38,0x20,0x3d,0x20, - 0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x32,0x37,0x39,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32,0x37,0x39,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x5f,0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34, - 0x30,0x38,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x34,0x30, - 0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e, - 0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x34,0x36,0x2e, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x30, - 0x20,0x3d,0x20,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x37,0x35, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x30,0x30,0x30,0x2e,0x30,0x2c,0x20,0x6c,0x65,0x6e, - 0x67,0x74,0x68,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x28,0x28,0x28,0x5f,0x31,0x34,0x36, - 0x2e,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30,0x2c,0x20,0x64,0x6f,0x74, - 0x28,0x5f,0x32,0x37,0x34,0x2c,0x20,0x5f,0x32,0x39,0x30,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f, - 0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x49, - 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x5f,0x33,0x36,0x37, - 0x2c,0x20,0x72,0x65,0x66,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28, - 0x72,0x65,0x66,0x73,0x6d,0x70,0x2c,0x20,0x28,0x5f,0x34,0x30,0x38,0x20,0x2b,0x20, - 0x28,0x5f,0x32,0x37,0x34,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x37,0x39,0x2e, - 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x44,0x69,0x73,0x74,0x6f,0x72, - 0x74,0x69,0x6f,0x6e,0x29,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x6d,0x69,0x78,0x28,0x5f,0x33,0x32,0x31,0x2c,0x20,0x31,0x2e, - 0x30,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e,0x77,0x61,0x74,0x65,0x72,0x52,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x69,0x76,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x28, - 0x28,0x28,0x28,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74, - 0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e,0x73,0x75,0x6e, - 0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77, - 0x72,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x64,0x6f,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x39,0x30,0x20,0x2b,0x20,0x5f,0x32,0x38,0x35, - 0x29,0x2c,0x20,0x5f,0x32,0x37,0x34,0x29,0x29,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a, - 0x3a,0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39,0x2e,0x73,0x68,0x69,0x6e,0x69,0x6e, - 0x65,0x73,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x33, - 0x32,0x31,0x29,0x20,0x2a,0x20,0x5f,0x33,0x36,0x37,0x29,0x2c,0x20,0x73,0x6b,0x79, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x2c,0x20,0x5f,0x31,0x34,0x36,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x36,0x2e, - 0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x5f,0x34,0x37,0x30,0x29,0x29,0x2c,0x20,0x6d,0x69,0x78, - 0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x5f,0x33,0x32,0x31,0x29,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x34,0x36,0x2e,0x77,0x61,0x74,0x65,0x72, - 0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x76,0x69,0x74,0x79,0x29,0x2c,0x20,0x31, - 0x2e,0x30,0x2c,0x20,0x5f,0x34,0x37,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f, - 0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38, - 0x32,0x38,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, - 0x5f,0x31,0x34,0x36,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32, - 0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x30, - 0x20,0x3d,0x20,0x66,0x62,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x34,0x36,0x2e,0x64,0x65,0x65, - 0x70,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x6d,0x69,0x78,0x28,0x30,0x2e, - 0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39, - 0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x31,0x2e,0x32,0x30,0x30,0x30, - 0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31, - 0x32,0x35,0x2c,0x20,0x5f,0x35,0x30,0x30,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "plane_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_plane_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_plane_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "plane_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_146.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_146.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_146.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_146.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_146.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_146.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_146.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_146.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_146.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_146.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_146.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_146.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_146.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_146.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_146.time"; - desc.uniform_blocks[1].glsl_uniforms[15].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[15].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[15].glsl_name = "_146.waterReflectivity"; - desc.uniform_blocks[2].stage = .FRAGMENT; - desc.uniform_blocks[2].layout = .STD140; - desc.uniform_blocks[2].size = 112; - desc.uniform_blocks[2].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[2].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[0].glsl_name = "_279.mvp_shadow"; - desc.uniform_blocks[2].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[1].glsl_name = "_279.screen_w"; - desc.uniform_blocks[2].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[2].glsl_name = "_279.screen_h"; - desc.uniform_blocks[2].glsl_uniforms[3].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[3].glsl_name = "_279.is_reflection_pass"; - desc.uniform_blocks[2].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[2].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[4].glsl_name = "_279.cameraPosition"; - desc.uniform_blocks[2].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[2].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[5].glsl_name = "_279.shininess"; - desc.uniform_blocks[2].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[2].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[6].glsl_name = "_279.reflectionDistortion"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .DEPTH; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .COMPARISON; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 2; - desc.image_sampler_pairs[0].sampler_slot = 2; - desc.image_sampler_pairs[0].glsl_name = "normal_map_normalsmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 1; - desc.image_sampler_pairs[1].glsl_name = "shadow_plane_shadowsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 0; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "reftex_refsmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_plane_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_plane_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "plane_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_146.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_146.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_146.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_146.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_146.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_146.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_146.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_146.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_146.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_146.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_146.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_146.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_146.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_146.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_146.time"; - desc.uniform_blocks[1].glsl_uniforms[15].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[15].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[15].glsl_name = "_146.waterReflectivity"; - desc.uniform_blocks[2].stage = .FRAGMENT; - desc.uniform_blocks[2].layout = .STD140; - desc.uniform_blocks[2].size = 112; - desc.uniform_blocks[2].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[2].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[0].glsl_name = "_279.mvp_shadow"; - desc.uniform_blocks[2].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[1].glsl_name = "_279.screen_w"; - desc.uniform_blocks[2].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[2].glsl_name = "_279.screen_h"; - desc.uniform_blocks[2].glsl_uniforms[3].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[3].glsl_name = "_279.is_reflection_pass"; - desc.uniform_blocks[2].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[2].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[4].glsl_name = "_279.cameraPosition"; - desc.uniform_blocks[2].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[2].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[5].glsl_name = "_279.shininess"; - desc.uniform_blocks[2].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[2].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[6].glsl_name = "_279.reflectionDistortion"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .DEPTH; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .COMPARISON; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 2; - desc.image_sampler_pairs[0].sampler_slot = 2; - desc.image_sampler_pairs[0].glsl_name = "normal_map_normalsmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 1; - desc.image_sampler_pairs[1].glsl_name = "shadow_plane_shadowsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 0; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "reftex_refsmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_plane_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_plane_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.uniform_blocks[2].stage = .FRAGMENT; - desc.uniform_blocks[2].layout = .STD140; - desc.uniform_blocks[2].size = 112; - desc.uniform_blocks[2].msl_buffer_n = 1; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 2; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .DEPTH; - desc.images[1].msl_texture_n = 1; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[2].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 2; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .COMPARISON; - desc.samplers[1].msl_sampler_n = 1; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .FILTERING; - desc.samplers[2].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 2; - desc.image_sampler_pairs[0].sampler_slot = 2; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 1; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 0; - desc.image_sampler_pairs[2].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_post_process_main.jai b/src/shaders/jai/shader_post_process_main.jai deleted file mode 100644 index 8f478c9..0000000 --- a/src/shaders/jai/shader_post_process_main.jai +++ /dev/null @@ -1,2210 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_post_process_main.glsl -o ./jai/shader_post_process_main.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'postprocess': - Get shader desc: postprocess_shader_desc(sg_query_backend()) - Vertex Shader: vs_pp - Fragment Shader: fs_pp - Attributes: - ATTR_postprocess_position => 0 - ATTR_postprocess_uv => 1 - Bindings: - Uniform block 'post_process_config': - Jai struct: Post_Process_Config - Bind slot: UB_post_process_config => 0 - Uniform block 'dof_config': - Jai struct: Dof_Config - Bind slot: UB_dof_config => 1 - Image 'pptex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_pptex => 0 - Image 'pos_buf': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_pos_buf => 4 - Image 'dof_tex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_dof_tex => 3 - Image 'bloom_tex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_bloom_tex => 2 - Image 'lut': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_lut => 1 - Sampler 'ppsmp': - Type: .FILTERING - Bind slot: SMP_ppsmp => 0 - Sampler 'pos_smp': - Type: .FILTERING - Bind slot: SMP_pos_smp => 4 - Sampler 'dof_smp': - Type: .FILTERING - Bind slot: SMP_dof_smp => 3 - Sampler 'bloom_smp': - Type: .FILTERING - Bind slot: SMP_bloom_smp => 2 - Sampler 'lut_linear': - Type: .FILTERING - Bind slot: SMP_lut_linear => 1 -*/ -ATTR_postprocess_position :: 0; -ATTR_postprocess_uv :: 1; -UB_post_process_config :: 0; -UB_dof_config :: 1; -IMG_pptex :: 0; -IMG_pos_buf :: 4; -IMG_dof_tex :: 3; -IMG_bloom_tex :: 2; -IMG_lut :: 1; -SMP_ppsmp :: 0; -SMP_pos_smp :: 4; -SMP_dof_smp :: 3; -SMP_bloom_smp :: 2; -SMP_lut_linear :: 1; -Post_Process_Config :: struct { - exposure: float; - contrast: float; - saturation: float; - gamma: float; - tonemap: float; - vignette_intensity: float; - vignette_radius: float; - scanlines_intensity: float; - scanlines_density: float; - chromatic_aberration_intensity: float; - film_grain_intensity: float; - barrel_distortion_intensity: float; - lut_mode: s32; - dither_intensity: float; - bloom_amount: float; - _: [4]u8; -}; -Dof_Config :: struct { - dof_disabled: s32; - dof_max: float; - dof_point: float; - _: [4]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_pp_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #version 430 - - const int _145[64] = int[](0, 32, 8, 40, 2, 34, 10, 42, 48, 16, 56, 24, 50, 18, 58, 26, 12, 44, 4, 36, 14, 46, 6, 38, 60, 28, 52, 20, 62, 30, 54, 22, 3, 35, 11, 43, 1, 33, 9, 41, 51, 19, 59, 27, 49, 17, 57, 25, 15, 47, 7, 39, 13, 45, 5, 37, 63, 31, 55, 23, 61, 29, 53, 21); - - struct post_process_config - { - float exposure; - float contrast; - float saturation; - float gamma; - float tonemap; - float vignette_intensity; - float vignette_radius; - float scanlines_intensity; - float scanlines_density; - float chromatic_aberration_intensity; - float film_grain_intensity; - float barrel_distortion_intensity; - int lut_mode; - float dither_intensity; - float bloom_amount; - }; - - uniform post_process_config _174; - - struct dof_config - { - int dof_disabled; - float dof_max; - float dof_point; - }; - - uniform dof_config _279; - - layout(binding = 16) uniform sampler2D pptex_ppsmp; - layout(binding = 17) uniform sampler2D pos_buf_pos_smp; - layout(binding = 18) uniform sampler2D dof_tex_dof_smp; - layout(binding = 19) uniform sampler2D bloom_tex_bloom_smp; - layout(binding = 20) uniform sampler2D lut_ppsmp; - layout(binding = 21) uniform sampler2D lut_lut_linear; - - layout(location = 0) in vec2 texcoord; - layout(location = 0) out vec4 frag_color; - - vec3 aces(vec3 x) - { - return clamp((x * ((x * 2.5099999904632568359375) + vec3(0.02999999932944774627685546875))) / ((x * ((x * 2.4300000667572021484375) + vec3(0.589999973773956298828125))) + vec3(0.14000000059604644775390625)), vec3(0.0), vec3(1.0)); - } - - float bayer8(vec2 pos) - { - ivec2 _68 = ivec2(pos) % ivec2(8); - return (float(_145[_68.x + (_68.y * 8)]) * 0.015625) - 0.5; - } - - float rand(vec2 co) - { - return fract(sin(dot(co, vec2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); - } - - void main() - { - vec2 _166 = texcoord - vec2(0.5); - float _167 = length(_166); - vec2 _184 = (_166 * (1.0 + (_167 * _174.barrel_distortion_intensity))) + vec2(0.5); - if (_174.barrel_distortion_intensity > 0.0) - { - float _192 = _184.x; - bool _193 = _192 < 0.0; - bool _200; - if (!_193) - { - _200 = _192 > 1.0; - } - else - { - _200 = _193; - } - bool _207; - if (!_200) - { - _207 = _184.y < 0.0; - } - else - { - _207 = _200; - } - bool _214; - if (!_207) - { - _214 = _184.y > 1.0; - } - else - { - _214 = _207; - } - if (_214) - { - frag_color = vec4(0.0, 0.0, 0.0, 1.0); - return; - } - } - vec3 sampled_color_hdr; - if (_174.chromatic_aberration_intensity > 0.00999999977648258209228515625) - { - vec2 _242 = vec2(_174.chromatic_aberration_intensity, 0.0); - sampled_color_hdr = vec3(texture(pptex_ppsmp, _184 + _242).x, texture(pptex_ppsmp, _184).y, texture(pptex_ppsmp, _184 - _242).z); - } - else - { - sampled_color_hdr = texture(pptex_ppsmp, _184).xyz; - } - if (_279.dof_disabled == 0) - { - sampled_color_hdr = mix(sampled_color_hdr, texture(dof_tex_dof_smp, _184).xyz, vec3(smoothstep(0.0, 1.0, abs(abs(texture(pos_buf_pos_smp, _184).z) - _279.dof_point) / max(_279.dof_max, 9.9999997473787516355514526367188e-05)))); - } - vec4 _331 = texture(bloom_tex_bloom_smp, _184); - vec3 _342 = (sampled_color_hdr + (_331.xyz * _174.bloom_amount)) * _174.exposure; - vec3 color_ldr_linear; - if (_174.tonemap > 0.5) - { - vec3 param = _342; - color_ldr_linear = aces(param); - } - else - { - color_ldr_linear = _342; - } - vec3 _362 = ((color_ldr_linear - vec3(0.5)) * max(_174.contrast, 0.0)) + vec3(0.5); - color_ldr_linear = clamp(mix(vec3(dot(_362, vec3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _362, vec3(_174.saturation)), vec3(0.0), vec3(1.0)); - if (_174.dither_intensity > 0.0) - { - vec2 param_1 = gl_FragCoord.xy; - color_ldr_linear = clamp(color_ldr_linear + vec3((bayer8(param_1) * _174.dither_intensity) * 0.066666670143604278564453125), vec3(0.0), vec3(1.0)); - } - if (_174.lut_mode != 0) - { - if (_174.lut_mode == 2) - { - color_ldr_linear = texture(lut_ppsmp, vec2((floor(color_ldr_linear.z * 15.0) * 0.0625) + (floor(color_ldr_linear.x * 15.0) * 0.00390625), floor(color_ldr_linear.y * 15.0) * 0.0625)).xyz; - } - else - { - float _454 = color_ldr_linear.z * 15.0; - float _457 = floor(_454); - float _468 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; - float _474 = color_ldr_linear.x * 15.0; - color_ldr_linear = mix(texture(lut_lut_linear, vec2((((_457 * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, texture(lut_lut_linear, vec2((((min(_457 + 1.0, 15.0) * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, vec3(_454 - _457)); - } - } - vec3 color_srgb = (pow(color_ldr_linear, vec3(1.0 / _174.gamma)) * (1.0 - (smoothstep(0.0, _174.vignette_radius, _167) * _174.vignette_intensity))) * (1.0 - (((sin(gl_FragCoord.y * _174.scanlines_density) * 0.5) + 0.5) * _174.scanlines_intensity)); - vec2 param_2 = texcoord; - vec3 _564 = color_srgb; - vec3 _566 = _564 + vec3((rand(param_2) - 0.5) * _174.film_grain_intensity); - color_srgb = _566; - frag_color = vec4(clamp(_566, vec3(0.0), vec3(1.0)), 1.0); - } - -*/ -fs_pp_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x34,0x35,0x5b,0x36,0x34,0x5d, - 0x20,0x3d,0x20,0x69,0x6e,0x74,0x5b,0x5d,0x28,0x30,0x2c,0x20,0x33,0x32,0x2c,0x20, - 0x38,0x2c,0x20,0x34,0x30,0x2c,0x20,0x32,0x2c,0x20,0x33,0x34,0x2c,0x20,0x31,0x30, - 0x2c,0x20,0x34,0x32,0x2c,0x20,0x34,0x38,0x2c,0x20,0x31,0x36,0x2c,0x20,0x35,0x36, - 0x2c,0x20,0x32,0x34,0x2c,0x20,0x35,0x30,0x2c,0x20,0x31,0x38,0x2c,0x20,0x35,0x38, - 0x2c,0x20,0x32,0x36,0x2c,0x20,0x31,0x32,0x2c,0x20,0x34,0x34,0x2c,0x20,0x34,0x2c, - 0x20,0x33,0x36,0x2c,0x20,0x31,0x34,0x2c,0x20,0x34,0x36,0x2c,0x20,0x36,0x2c,0x20, - 0x33,0x38,0x2c,0x20,0x36,0x30,0x2c,0x20,0x32,0x38,0x2c,0x20,0x35,0x32,0x2c,0x20, - 0x32,0x30,0x2c,0x20,0x36,0x32,0x2c,0x20,0x33,0x30,0x2c,0x20,0x35,0x34,0x2c,0x20, - 0x32,0x32,0x2c,0x20,0x33,0x2c,0x20,0x33,0x35,0x2c,0x20,0x31,0x31,0x2c,0x20,0x34, - 0x33,0x2c,0x20,0x31,0x2c,0x20,0x33,0x33,0x2c,0x20,0x39,0x2c,0x20,0x34,0x31,0x2c, - 0x20,0x35,0x31,0x2c,0x20,0x31,0x39,0x2c,0x20,0x35,0x39,0x2c,0x20,0x32,0x37,0x2c, - 0x20,0x34,0x39,0x2c,0x20,0x31,0x37,0x2c,0x20,0x35,0x37,0x2c,0x20,0x32,0x35,0x2c, - 0x20,0x31,0x35,0x2c,0x20,0x34,0x37,0x2c,0x20,0x37,0x2c,0x20,0x33,0x39,0x2c,0x20, - 0x31,0x33,0x2c,0x20,0x34,0x35,0x2c,0x20,0x35,0x2c,0x20,0x33,0x37,0x2c,0x20,0x36, - 0x33,0x2c,0x20,0x33,0x31,0x2c,0x20,0x35,0x35,0x2c,0x20,0x32,0x33,0x2c,0x20,0x36, - 0x31,0x2c,0x20,0x32,0x39,0x2c,0x20,0x35,0x33,0x2c,0x20,0x32,0x31,0x29,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f, - 0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x78,0x70,0x6f,0x73,0x75,0x72,0x65, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x6e,0x74, - 0x72,0x61,0x73,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x73,0x61,0x74,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x67,0x61,0x6d,0x6d,0x61,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x69,0x67,0x6e,0x65,0x74, - 0x74,0x65,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65, - 0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63, - 0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74, - 0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72, - 0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f, - 0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x75, - 0x74,0x5f,0x6d,0x6f,0x64,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f, - 0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x31,0x37,0x34, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f, - 0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64, - 0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70,0x6f, - 0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x37,0x39, - 0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e, - 0x67,0x20,0x3d,0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x70,0x70,0x74,0x65,0x78,0x5f, - 0x70,0x70,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69, - 0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x70,0x6f, - 0x73,0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20, - 0x31,0x38,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x32,0x44,0x20,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f, - 0x66,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69, - 0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x39,0x29,0x20,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x6c, - 0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d, - 0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e, - 0x67,0x20,0x3d,0x20,0x32,0x30,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6c,0x75,0x74,0x5f,0x70,0x70, - 0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64, - 0x69,0x6e,0x67,0x20,0x3d,0x20,0x32,0x31,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x6c,0x75,0x74,0x5f, - 0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, - 0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63, - 0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76, - 0x65,0x63,0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x76,0x65,0x63,0x33,0x20,0x78,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32, - 0x2e,0x35,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36, - 0x38,0x33,0x35,0x39,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x32,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34, - 0x37,0x37,0x34,0x36,0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29, - 0x29,0x29,0x20,0x2f,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a, - 0x20,0x32,0x2e,0x34,0x33,0x30,0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32, - 0x30,0x32,0x31,0x34,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33, - 0x39,0x35,0x36,0x32,0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,0x34,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30, - 0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x76,0x65, - 0x63,0x32,0x20,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x36,0x38,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x32,0x28, - 0x70,0x6f,0x73,0x29,0x20,0x25,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x38,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x5f,0x31,0x34,0x35,0x5b,0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20, - 0x28,0x5f,0x36,0x38,0x2e,0x79,0x20,0x2a,0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x28,0x76, - 0x65,0x63,0x32,0x20,0x63,0x6f,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64, - 0x6f,0x74,0x28,0x63,0x6f,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x2e,0x39, - 0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35, - 0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30, - 0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37, - 0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x36,0x36,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36, - 0x37,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x38,0x34,0x20, - 0x3d,0x20,0x28,0x5f,0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b, - 0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61, - 0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x76, - 0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69, - 0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x39,0x32,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d, - 0x20,0x5f,0x31,0x39,0x32,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39, - 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x32,0x20,0x3e,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21, - 0x5f,0x32,0x30,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37, - 0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32, - 0x30,0x37,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x32,0x31,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e, - 0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x31,0x34,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f, - 0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38, - 0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x34,0x32,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x33,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78, - 0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20,0x2b,0x20,0x5f, - 0x32,0x34,0x32,0x29,0x2e,0x78,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38, - 0x34,0x29,0x2e,0x79,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70, - 0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x20, - 0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x2e,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70, - 0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37,0x39,0x2e, - 0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68, - 0x64,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x2c,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x74,0x65,0x78,0x5f,0x64,0x6f,0x66,0x5f, - 0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x61,0x62,0x73,0x28,0x61,0x62, - 0x73,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x6f,0x73,0x5f,0x62,0x75, - 0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29, - 0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x70, - 0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39, - 0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35, - 0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29, - 0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x33,0x33,0x31,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x34,0x32,0x20,0x3d,0x20,0x28, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64, - 0x72,0x20,0x2b,0x20,0x28,0x5f,0x33,0x33,0x31,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, - 0x5f,0x31,0x37,0x34,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e, - 0x74,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73, - 0x75,0x72,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e, - 0x65,0x6d,0x61,0x70,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x36,0x32,0x20,0x3d, - 0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, - 0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x6f,0x6e,0x74, - 0x72,0x61,0x73,0x74,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x64, - 0x6f,0x74,0x28,0x5f,0x33,0x36,0x32,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34, - 0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35, - 0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34,0x33,0x39,0x34,0x35,0x33, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30,0x39,0x39,0x39,0x39,0x38, - 0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30,0x30,0x37,0x38,0x31,0x32, - 0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x36,0x32,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e, - 0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69, - 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f, - 0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f, - 0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x64, - 0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x31,0x34, - 0x33,0x36,0x30,0x34,0x32,0x37,0x38,0x35,0x36,0x34,0x34,0x35,0x33,0x31,0x32,0x35, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74, - 0x5f,0x6d,0x6f,0x64,0x65,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65, - 0x63,0x32,0x28,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31, - 0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b, - 0x20,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e, - 0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e, - 0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20, - 0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x37,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34,0x35,0x34,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x36,0x38,0x20,0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c, - 0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35, - 0x2e,0x30,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30, - 0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x34,0x20,0x3d,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78, - 0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x37, - 0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29, - 0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39, - 0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a, - 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75, - 0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28, - 0x28,0x28,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x37,0x20,0x2b,0x20,0x31,0x2e,0x30, - 0x2c,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20, - 0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36, - 0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x34, - 0x35,0x34,0x20,0x2d,0x20,0x5f,0x34,0x35,0x37,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62, - 0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31, - 0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31,0x37,0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29, - 0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f, - 0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34, - 0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73, - 0x2c,0x20,0x5f,0x31,0x36,0x37,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76, - 0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28, - 0x28,0x73,0x69,0x6e,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72, - 0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c, - 0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x35,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67, - 0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x36, - 0x20,0x3d,0x20,0x5f,0x35,0x36,0x34,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28, - 0x72,0x61,0x6e,0x64,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x66,0x69,0x6c,0x6d, - 0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67, - 0x62,0x20,0x3d,0x20,0x5f,0x35,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x36,0x36,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 texcoord; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; - } - -*/ -vs_pp_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - const int _145[64] = int[](0, 32, 8, 40, 2, 34, 10, 42, 48, 16, 56, 24, 50, 18, 58, 26, 12, 44, 4, 36, 14, 46, 6, 38, 60, 28, 52, 20, 62, 30, 54, 22, 3, 35, 11, 43, 1, 33, 9, 41, 51, 19, 59, 27, 49, 17, 57, 25, 15, 47, 7, 39, 13, 45, 5, 37, 63, 31, 55, 23, 61, 29, 53, 21); - - struct post_process_config - { - highp float exposure; - highp float contrast; - highp float saturation; - highp float gamma; - highp float tonemap; - highp float vignette_intensity; - highp float vignette_radius; - highp float scanlines_intensity; - highp float scanlines_density; - highp float chromatic_aberration_intensity; - highp float film_grain_intensity; - highp float barrel_distortion_intensity; - int lut_mode; - highp float dither_intensity; - highp float bloom_amount; - }; - - uniform post_process_config _174; - - struct dof_config - { - int dof_disabled; - highp float dof_max; - highp float dof_point; - }; - - uniform dof_config _279; - - uniform highp sampler2D pptex_ppsmp; - uniform highp sampler2D pos_buf_pos_smp; - uniform highp sampler2D dof_tex_dof_smp; - uniform highp sampler2D bloom_tex_bloom_smp; - uniform highp sampler2D lut_ppsmp; - uniform highp sampler2D lut_lut_linear; - - in highp vec2 texcoord; - layout(location = 0) out highp vec4 frag_color; - - highp vec3 aces(highp vec3 x) - { - return clamp((x * ((x * 2.5099999904632568359375) + vec3(0.02999999932944774627685546875))) / ((x * ((x * 2.4300000667572021484375) + vec3(0.589999973773956298828125))) + vec3(0.14000000059604644775390625)), vec3(0.0), vec3(1.0)); - } - - highp float bayer8(highp vec2 pos) - { - ivec2 _68 = ivec2(pos) % ivec2(8); - return (float(_145[_68.x + (_68.y * 8)]) * 0.015625) - 0.5; - } - - highp float rand(highp vec2 co) - { - return fract(sin(dot(co, vec2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); - } - - void main() - { - highp vec2 _166 = texcoord - vec2(0.5); - highp float _167 = length(_166); - highp vec2 _184 = (_166 * (1.0 + (_167 * _174.barrel_distortion_intensity))) + vec2(0.5); - if (_174.barrel_distortion_intensity > 0.0) - { - highp float _192 = _184.x; - bool _193 = _192 < 0.0; - bool _200; - if (!_193) - { - _200 = _192 > 1.0; - } - else - { - _200 = _193; - } - bool _207; - if (!_200) - { - _207 = _184.y < 0.0; - } - else - { - _207 = _200; - } - bool _214; - if (!_207) - { - _214 = _184.y > 1.0; - } - else - { - _214 = _207; - } - if (_214) - { - frag_color = vec4(0.0, 0.0, 0.0, 1.0); - return; - } - } - highp vec3 sampled_color_hdr; - if (_174.chromatic_aberration_intensity > 0.00999999977648258209228515625) - { - highp vec2 _242 = vec2(_174.chromatic_aberration_intensity, 0.0); - sampled_color_hdr = vec3(texture(pptex_ppsmp, _184 + _242).x, texture(pptex_ppsmp, _184).y, texture(pptex_ppsmp, _184 - _242).z); - } - else - { - sampled_color_hdr = texture(pptex_ppsmp, _184).xyz; - } - if (_279.dof_disabled == 0) - { - sampled_color_hdr = mix(sampled_color_hdr, texture(dof_tex_dof_smp, _184).xyz, vec3(smoothstep(0.0, 1.0, abs(abs(texture(pos_buf_pos_smp, _184).z) - _279.dof_point) / max(_279.dof_max, 9.9999997473787516355514526367188e-05)))); - } - highp vec4 _331 = texture(bloom_tex_bloom_smp, _184); - highp vec3 _342 = (sampled_color_hdr + (_331.xyz * _174.bloom_amount)) * _174.exposure; - highp vec3 color_ldr_linear; - if (_174.tonemap > 0.5) - { - highp vec3 param = _342; - color_ldr_linear = aces(param); - } - else - { - color_ldr_linear = _342; - } - highp vec3 _362 = ((color_ldr_linear - vec3(0.5)) * max(_174.contrast, 0.0)) + vec3(0.5); - color_ldr_linear = clamp(mix(vec3(dot(_362, vec3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _362, vec3(_174.saturation)), vec3(0.0), vec3(1.0)); - if (_174.dither_intensity > 0.0) - { - highp vec2 param_1 = gl_FragCoord.xy; - color_ldr_linear = clamp(color_ldr_linear + vec3((bayer8(param_1) * _174.dither_intensity) * 0.066666670143604278564453125), vec3(0.0), vec3(1.0)); - } - if (_174.lut_mode != 0) - { - if (_174.lut_mode == 2) - { - color_ldr_linear = texture(lut_ppsmp, vec2((floor(color_ldr_linear.z * 15.0) * 0.0625) + (floor(color_ldr_linear.x * 15.0) * 0.00390625), floor(color_ldr_linear.y * 15.0) * 0.0625)).xyz; - } - else - { - highp float _454 = color_ldr_linear.z * 15.0; - highp float _457 = floor(_454); - highp float _468 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; - highp float _474 = color_ldr_linear.x * 15.0; - color_ldr_linear = mix(texture(lut_lut_linear, vec2((((_457 * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, texture(lut_lut_linear, vec2((((min(_457 + 1.0, 15.0) * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, vec3(_454 - _457)); - } - } - highp vec3 color_srgb = (pow(color_ldr_linear, vec3(1.0 / _174.gamma)) * (1.0 - (smoothstep(0.0, _174.vignette_radius, _167) * _174.vignette_intensity))) * (1.0 - (((sin(gl_FragCoord.y * _174.scanlines_density) * 0.5) + 0.5) * _174.scanlines_intensity)); - highp vec2 param_2 = texcoord; - highp vec3 _564 = color_srgb; - highp vec3 _566 = _564 + vec3((rand(param_2) - 0.5) * _174.film_grain_intensity); - color_srgb = _566; - frag_color = vec4(clamp(_566, vec3(0.0), vec3(1.0)), 1.0); - } - -*/ -fs_pp_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x63, - 0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x34,0x35,0x5b,0x36,0x34, - 0x5d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x5b,0x5d,0x28,0x30,0x2c,0x20,0x33,0x32,0x2c, - 0x20,0x38,0x2c,0x20,0x34,0x30,0x2c,0x20,0x32,0x2c,0x20,0x33,0x34,0x2c,0x20,0x31, - 0x30,0x2c,0x20,0x34,0x32,0x2c,0x20,0x34,0x38,0x2c,0x20,0x31,0x36,0x2c,0x20,0x35, - 0x36,0x2c,0x20,0x32,0x34,0x2c,0x20,0x35,0x30,0x2c,0x20,0x31,0x38,0x2c,0x20,0x35, - 0x38,0x2c,0x20,0x32,0x36,0x2c,0x20,0x31,0x32,0x2c,0x20,0x34,0x34,0x2c,0x20,0x34, - 0x2c,0x20,0x33,0x36,0x2c,0x20,0x31,0x34,0x2c,0x20,0x34,0x36,0x2c,0x20,0x36,0x2c, - 0x20,0x33,0x38,0x2c,0x20,0x36,0x30,0x2c,0x20,0x32,0x38,0x2c,0x20,0x35,0x32,0x2c, - 0x20,0x32,0x30,0x2c,0x20,0x36,0x32,0x2c,0x20,0x33,0x30,0x2c,0x20,0x35,0x34,0x2c, - 0x20,0x32,0x32,0x2c,0x20,0x33,0x2c,0x20,0x33,0x35,0x2c,0x20,0x31,0x31,0x2c,0x20, - 0x34,0x33,0x2c,0x20,0x31,0x2c,0x20,0x33,0x33,0x2c,0x20,0x39,0x2c,0x20,0x34,0x31, - 0x2c,0x20,0x35,0x31,0x2c,0x20,0x31,0x39,0x2c,0x20,0x35,0x39,0x2c,0x20,0x32,0x37, - 0x2c,0x20,0x34,0x39,0x2c,0x20,0x31,0x37,0x2c,0x20,0x35,0x37,0x2c,0x20,0x32,0x35, - 0x2c,0x20,0x31,0x35,0x2c,0x20,0x34,0x37,0x2c,0x20,0x37,0x2c,0x20,0x33,0x39,0x2c, - 0x20,0x31,0x33,0x2c,0x20,0x34,0x35,0x2c,0x20,0x35,0x2c,0x20,0x33,0x37,0x2c,0x20, - 0x36,0x33,0x2c,0x20,0x33,0x31,0x2c,0x20,0x35,0x35,0x2c,0x20,0x32,0x33,0x2c,0x20, - 0x36,0x31,0x2c,0x20,0x32,0x39,0x2c,0x20,0x35,0x33,0x2c,0x20,0x32,0x31,0x29,0x3b, - 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x70,0x6f,0x73,0x74,0x5f,0x70,0x72, - 0x6f,0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65, - 0x78,0x70,0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x73,0x61,0x74,0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x67, - 0x61,0x6d,0x6d,0x61,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76, - 0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x72,0x61,0x64,0x69, - 0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e, - 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e, - 0x65,0x73,0x5f,0x64,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x68,0x72,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x69,0x6c,0x6d, - 0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74, - 0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x70,0x6f,0x73, - 0x74,0x5f,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67, - 0x20,0x5f,0x31,0x37,0x34,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x64, - 0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70, - 0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x37, - 0x39,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x70,0x70,0x74,0x65, - 0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44, - 0x20,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70, - 0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x64,0x6f,0x66,0x5f,0x74,0x65, - 0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f, - 0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, - 0x6c,0x75,0x74,0x5f,0x70,0x70,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, - 0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x78,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x78, - 0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x35,0x30,0x39,0x39,0x39, - 0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36,0x38,0x33,0x35,0x39,0x33,0x37, - 0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x32,0x39,0x39, - 0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34,0x37,0x37,0x34,0x36,0x32,0x37, - 0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2f,0x20,0x28, - 0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x34,0x33,0x30, - 0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32,0x30,0x32,0x31,0x34,0x38,0x34, - 0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x38, - 0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35,0x36,0x32,0x39,0x38, - 0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x31,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, - 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x38,0x20,0x3d,0x20, - 0x69,0x76,0x65,0x63,0x32,0x28,0x70,0x6f,0x73,0x29,0x20,0x25,0x20,0x69,0x76,0x65, - 0x63,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x34,0x35,0x5b,0x5f,0x36, - 0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f,0x36,0x38,0x2e,0x79,0x20,0x2a,0x20,0x38, - 0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20, - 0x2d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x28,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x32,0x20,0x63,0x6f,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e, - 0x28,0x64,0x6f,0x74,0x28,0x63,0x6f,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32, - 0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35, - 0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31, - 0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34, - 0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31, - 0x36,0x36,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2d,0x20, - 0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20, - 0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f, - 0x31,0x38,0x34,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31, - 0x2e,0x30,0x20,0x2b,0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37, - 0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74, - 0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65, - 0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x32,0x20,0x3d,0x20,0x5f, - 0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x20, - 0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39,0x33,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x20,0x3e, - 0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x38, - 0x34,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f, - 0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x31,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f, - 0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x34,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e,0x20,0x31,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31, - 0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x32,0x31,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f, - 0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38, - 0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, - 0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37, - 0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72, - 0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64, - 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31, - 0x38,0x34,0x20,0x2b,0x20,0x5f,0x32,0x34,0x32,0x29,0x2e,0x78,0x2c,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d, - 0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x79,0x2c,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78,0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c, - 0x20,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x2e,0x7a,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72, - 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x70,0x70,0x74,0x65,0x78, - 0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c, - 0x65,0x64,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72, - 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x64,0x6f,0x66,0x5f,0x74,0x65, - 0x78,0x5f,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74, - 0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20, - 0x61,0x62,0x73,0x28,0x61,0x62,0x73,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x5f,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c, - 0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x37,0x39, - 0x2e,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x6d,0x61, - 0x78,0x28,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x2c,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x33,0x33,0x31,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62, - 0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x5f,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x34,0x32,0x20,0x3d, - 0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x68,0x64,0x72,0x20,0x2b,0x20,0x28,0x5f,0x33,0x33,0x31,0x2e,0x78,0x79,0x7a,0x20, - 0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f, - 0x75,0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70, - 0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f, - 0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x20,0x3e,0x20,0x30, - 0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33, - 0x36,0x32,0x20,0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72, - 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x5f,0x31,0x37,0x34,0x2e, - 0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x76,0x65, - 0x63,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x36,0x32,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, - 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x37,0x31,0x35,0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34,0x33, - 0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30,0x39, - 0x39,0x39,0x39,0x38,0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30,0x30, - 0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x36,0x32,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74,0x75,0x72,0x61, - 0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68, - 0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3e,0x20,0x30, - 0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f, - 0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c, - 0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x28,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30, - 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x31,0x34,0x33,0x36,0x30,0x34,0x32,0x37, - 0x38,0x35,0x36,0x34,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20, - 0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74, - 0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74, - 0x5f,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x66,0x6c, - 0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x6f, - 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x6f, - 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20, - 0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x35,0x37,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34,0x35, - 0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x38, - 0x20,0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20, - 0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x34,0x20,0x3d,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72, - 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x28,0x28,0x5f,0x34, - 0x35,0x37,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x37, - 0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, - 0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f,0x34,0x36,0x38,0x29,0x29,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x6c,0x75,0x74,0x5f, - 0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x76,0x65,0x63,0x32, - 0x28,0x28,0x28,0x28,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x37,0x20,0x2b,0x20,0x31, - 0x2e,0x30,0x2c,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30, - 0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f, - 0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x5f,0x34,0x35,0x34,0x20,0x2d,0x20,0x5f,0x34,0x35,0x37,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x28, - 0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31,0x37, - 0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, - 0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74, - 0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36,0x37,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28,0x67,0x6c,0x5f, - 0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x31, - 0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x30, - 0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c, - 0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x73,0x72,0x67,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x36,0x20,0x3d,0x20,0x5f,0x35,0x36, - 0x34,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x72,0x61,0x6e,0x64,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x5f,0x35, - 0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x5f,0x35,0x36,0x36,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 texcoord [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.5, 1.0); - out.texcoord = in.uv; - return out; - } - -*/ -vs_pp_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - #pragma clang diagnostic ignored "-Wmissing-braces" - - #include - #include - - using namespace metal; - - template - struct spvUnsafeArray - { - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } - }; - - struct post_process_config - { - float exposure; - float contrast; - float saturation; - float gamma; - float tonemap; - float vignette_intensity; - float vignette_radius; - float scanlines_intensity; - float scanlines_density; - float chromatic_aberration_intensity; - float film_grain_intensity; - float barrel_distortion_intensity; - int lut_mode; - float dither_intensity; - float bloom_amount; - }; - - struct dof_config - { - int dof_disabled; - float dof_max; - float dof_point; - }; - - constant spvUnsafeArray _145 = spvUnsafeArray({ 0, 32, 8, 40, 2, 34, 10, 42, 48, 16, 56, 24, 50, 18, 58, 26, 12, 44, 4, 36, 14, 46, 6, 38, 60, 28, 52, 20, 62, 30, 54, 22, 3, 35, 11, 43, 1, 33, 9, 41, 51, 19, 59, 27, 49, 17, 57, 25, 15, 47, 7, 39, 13, 45, 5, 37, 63, 31, 55, 23, 61, 29, 53, 21 }); - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 texcoord [[user(locn0)]]; - }; - - static inline __attribute__((always_inline)) - float3 aces(thread const float3& x) - { - return fast::clamp((x * ((x * 2.5099999904632568359375) + float3(0.02999999932944774627685546875))) / ((x * ((x * 2.4300000667572021484375) + float3(0.589999973773956298828125))) + float3(0.14000000059604644775390625)), float3(0.0), float3(1.0)); - } - - static inline __attribute__((always_inline)) - float bayer8(thread const float2& pos) - { - int2 _68 = int2(pos) % int2(8); - return (float(_145[_68.x + (_68.y * 8)]) * 0.015625) - 0.5; - } - - static inline __attribute__((always_inline)) - float rand(thread const float2& co) - { - return fract(sin(dot(co, float2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); - } - - fragment main0_out main0(main0_in in [[stage_in]], constant post_process_config& _174 [[buffer(0)]], constant dof_config& _279 [[buffer(1)]], texture2d pptex [[texture(0)]], texture2d pos_buf [[texture(1)]], texture2d dof_tex [[texture(2)]], texture2d bloom_tex [[texture(3)]], texture2d lut [[texture(4)]], sampler ppsmp [[sampler(0)]], sampler pos_smp [[sampler(1)]], sampler dof_smp [[sampler(2)]], sampler bloom_smp [[sampler(3)]], sampler lut_linear [[sampler(4)]], float4 gl_FragCoord [[position]]) - { - main0_out out = {}; - float2 _166 = in.texcoord - float2(0.5); - float _167 = length(_166); - float2 _184 = (_166 * (1.0 + (_167 * _174.barrel_distortion_intensity))) + float2(0.5); - if (_174.barrel_distortion_intensity > 0.0) - { - float _192 = _184.x; - bool _193 = _192 < 0.0; - bool _200; - if (!_193) - { - _200 = _192 > 1.0; - } - else - { - _200 = _193; - } - bool _207; - if (!_200) - { - _207 = _184.y < 0.0; - } - else - { - _207 = _200; - } - bool _214; - if (!_207) - { - _214 = _184.y > 1.0; - } - else - { - _214 = _207; - } - if (_214) - { - out.frag_color = float4(0.0, 0.0, 0.0, 1.0); - return out; - } - } - float3 sampled_color_hdr; - if (_174.chromatic_aberration_intensity > 0.00999999977648258209228515625) - { - float2 _242 = float2(_174.chromatic_aberration_intensity, 0.0); - sampled_color_hdr = float3(pptex.sample(ppsmp, (_184 + _242)).x, pptex.sample(ppsmp, _184).y, pptex.sample(ppsmp, (_184 - _242)).z); - } - else - { - sampled_color_hdr = pptex.sample(ppsmp, _184).xyz; - } - if (_279.dof_disabled == 0) - { - sampled_color_hdr = mix(sampled_color_hdr, dof_tex.sample(dof_smp, _184).xyz, float3(smoothstep(0.0, 1.0, abs(abs(pos_buf.sample(pos_smp, _184).z) - _279.dof_point) / fast::max(_279.dof_max, 9.9999997473787516355514526367188e-05)))); - } - float4 _331 = bloom_tex.sample(bloom_smp, _184); - float3 _342 = (sampled_color_hdr + (_331.xyz * _174.bloom_amount)) * _174.exposure; - float3 color_ldr_linear; - if (_174.tonemap > 0.5) - { - float3 param = _342; - color_ldr_linear = aces(param); - } - else - { - color_ldr_linear = _342; - } - float3 _362 = ((color_ldr_linear - float3(0.5)) * fast::max(_174.contrast, 0.0)) + float3(0.5); - color_ldr_linear = fast::clamp(mix(float3(dot(_362, float3(0.2125000059604644775390625, 0.7153999805450439453125, 0.07209999859333038330078125))), _362, float3(_174.saturation)), float3(0.0), float3(1.0)); - if (_174.dither_intensity > 0.0) - { - float2 param_1 = gl_FragCoord.xy; - color_ldr_linear = fast::clamp(color_ldr_linear + float3((bayer8(param_1) * _174.dither_intensity) * 0.066666670143604278564453125), float3(0.0), float3(1.0)); - } - if (_174.lut_mode != 0) - { - if (_174.lut_mode == 2) - { - color_ldr_linear = lut.sample(ppsmp, float2((floor(color_ldr_linear.z * 15.0) * 0.0625) + (floor(color_ldr_linear.x * 15.0) * 0.00390625), floor(color_ldr_linear.y * 15.0) * 0.0625)).xyz; - } - else - { - float _454 = color_ldr_linear.z * 15.0; - float _457 = floor(_454); - float _468 = ((color_ldr_linear.y * 15.0) + 0.5) * 0.0625; - float _474 = color_ldr_linear.x * 15.0; - color_ldr_linear = mix(lut.sample(lut_linear, float2((((_457 * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, lut.sample(lut_linear, float2((((fast::min(_457 + 1.0, 15.0) * 16.0) + _474) + 0.5) * 0.00390625, _468)).xyz, float3(_454 - _457)); - } - } - float3 color_srgb = (powr(color_ldr_linear, float3(1.0 / _174.gamma)) * (1.0 - (smoothstep(0.0, _174.vignette_radius, _167) * _174.vignette_intensity))) * (1.0 - (((sin(gl_FragCoord.y * _174.scanlines_density) * 0.5) + 0.5) * _174.scanlines_intensity)); - float2 param_2 = in.texcoord; - float3 _564 = color_srgb; - float3 _566 = _564 + float3((rand(param_2) - 0.5) * _174.film_grain_intensity); - color_srgb = _566; - out.frag_color = float4(fast::clamp(_566, float3(0.0), float3(1.0)), 1.0); - return out; - } - -*/ -fs_pp_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20, - 0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63, - 0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64,0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73, - 0x69,0x6e,0x67,0x2d,0x62,0x72,0x61,0x63,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e, - 0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64, - 0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73, - 0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69, - 0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x3b,0x0a,0x0a,0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,0x3c,0x74,0x79, - 0x70,0x65,0x6e,0x61,0x6d,0x65,0x20,0x54,0x2c,0x20,0x73,0x69,0x7a,0x65,0x5f,0x74, - 0x20,0x4e,0x75,0x6d,0x3e,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x70,0x76, - 0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x54,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x4e,0x75,0x6d, - 0x20,0x3f,0x20,0x4e,0x75,0x6d,0x20,0x3a,0x20,0x31,0x5d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x54,0x26,0x20, - 0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a, - 0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f, - 0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x65,0x78,0x70,0x72,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72, - 0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61, - 0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70, - 0x6f,0x73,0x29,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x65,0x78, - 0x70,0x72,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20, - 0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28, - 0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x6c, - 0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x65,0x78,0x70,0x72,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x61,0x6e,0x74,0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72, - 0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f, - 0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x67,0x72,0x6f,0x75,0x70,0x20,0x54, - 0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28,0x73, - 0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x74,0x68,0x72,0x65,0x61, - 0x64,0x67,0x72,0x6f,0x75,0x70,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d, - 0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x65,0x78,0x70,0x72,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x67,0x72,0x6f,0x75,0x70, - 0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20, - 0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x67,0x72,0x6f,0x75,0x70,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72, - 0x75,0x63,0x74,0x20,0x70,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f,0x63,0x65,0x73,0x73, - 0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x65,0x78,0x70,0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x61,0x74,0x75, - 0x72,0x61,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x67,0x61,0x6d,0x6d,0x61,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x74,0x6f,0x6e,0x65,0x6d,0x61,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x69, - 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65,0x5f,0x72,0x61,0x64, - 0x69,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73, - 0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x63, - 0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x68,0x72,0x6f,0x6d, - 0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69,0x73,0x74, - 0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x75,0x74,0x5f,0x6d,0x6f, - 0x64,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69, - 0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f, - 0x61,0x6d,0x6f,0x75,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61, - 0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x64,0x6f,0x66,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x3b, - 0x0a,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x70,0x76,0x55,0x6e, - 0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x69,0x6e,0x74,0x2c,0x20,0x36, - 0x34,0x3e,0x20,0x5f,0x31,0x34,0x35,0x20,0x3d,0x20,0x73,0x70,0x76,0x55,0x6e,0x73, - 0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x69,0x6e,0x74,0x2c,0x20,0x36,0x34, - 0x3e,0x28,0x7b,0x20,0x30,0x2c,0x20,0x33,0x32,0x2c,0x20,0x38,0x2c,0x20,0x34,0x30, - 0x2c,0x20,0x32,0x2c,0x20,0x33,0x34,0x2c,0x20,0x31,0x30,0x2c,0x20,0x34,0x32,0x2c, - 0x20,0x34,0x38,0x2c,0x20,0x31,0x36,0x2c,0x20,0x35,0x36,0x2c,0x20,0x32,0x34,0x2c, - 0x20,0x35,0x30,0x2c,0x20,0x31,0x38,0x2c,0x20,0x35,0x38,0x2c,0x20,0x32,0x36,0x2c, - 0x20,0x31,0x32,0x2c,0x20,0x34,0x34,0x2c,0x20,0x34,0x2c,0x20,0x33,0x36,0x2c,0x20, - 0x31,0x34,0x2c,0x20,0x34,0x36,0x2c,0x20,0x36,0x2c,0x20,0x33,0x38,0x2c,0x20,0x36, - 0x30,0x2c,0x20,0x32,0x38,0x2c,0x20,0x35,0x32,0x2c,0x20,0x32,0x30,0x2c,0x20,0x36, - 0x32,0x2c,0x20,0x33,0x30,0x2c,0x20,0x35,0x34,0x2c,0x20,0x32,0x32,0x2c,0x20,0x33, - 0x2c,0x20,0x33,0x35,0x2c,0x20,0x31,0x31,0x2c,0x20,0x34,0x33,0x2c,0x20,0x31,0x2c, - 0x20,0x33,0x33,0x2c,0x20,0x39,0x2c,0x20,0x34,0x31,0x2c,0x20,0x35,0x31,0x2c,0x20, - 0x31,0x39,0x2c,0x20,0x35,0x39,0x2c,0x20,0x32,0x37,0x2c,0x20,0x34,0x39,0x2c,0x20, - 0x31,0x37,0x2c,0x20,0x35,0x37,0x2c,0x20,0x32,0x35,0x2c,0x20,0x31,0x35,0x2c,0x20, - 0x34,0x37,0x2c,0x20,0x37,0x2c,0x20,0x33,0x39,0x2c,0x20,0x31,0x33,0x2c,0x20,0x34, - 0x35,0x2c,0x20,0x35,0x2c,0x20,0x33,0x37,0x2c,0x20,0x36,0x33,0x2c,0x20,0x33,0x31, - 0x2c,0x20,0x35,0x35,0x2c,0x20,0x32,0x33,0x2c,0x20,0x36,0x31,0x2c,0x20,0x32,0x39, - 0x2c,0x20,0x35,0x33,0x2c,0x20,0x32,0x31,0x20,0x7d,0x29,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30, - 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e, - 0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28, - 0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29, - 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x61,0x63,0x65,0x73,0x28,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x26,0x20,0x78,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x78, - 0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x35,0x30,0x39,0x39,0x39, - 0x39,0x39,0x39,0x30,0x34,0x36,0x33,0x32,0x35,0x36,0x38,0x33,0x35,0x39,0x33,0x37, - 0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x32, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,0x34,0x37,0x37,0x34,0x36, - 0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2f, - 0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x28,0x28,0x78,0x20,0x2a,0x20,0x32,0x2e,0x34, - 0x33,0x30,0x30,0x30,0x30,0x30,0x36,0x36,0x37,0x35,0x37,0x32,0x30,0x32,0x31,0x34, - 0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x35,0x38,0x39,0x39,0x39,0x39,0x39,0x37,0x33,0x37,0x37,0x33,0x39,0x35, - 0x36,0x32,0x39,0x38,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x20,0x2b,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x31,0x34,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30, - 0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f, - 0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29, - 0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x61,0x79,0x65,0x72,0x38,0x28,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x26,0x20,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x32,0x20,0x5f,0x36,0x38,0x20,0x3d,0x20,0x69,0x6e,0x74,0x32,0x28,0x70, - 0x6f,0x73,0x29,0x20,0x25,0x20,0x69,0x6e,0x74,0x32,0x28,0x38,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x28,0x5f,0x31,0x34,0x35,0x5b,0x5f,0x36,0x38,0x2e,0x78,0x20,0x2b,0x20,0x28,0x5f, - 0x36,0x38,0x2e,0x79,0x20,0x2a,0x20,0x38,0x29,0x5d,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20, - 0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61, - 0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x28,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x63, - 0x6f,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x63,0x6f, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38, - 0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35, - 0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38, - 0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e, - 0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67, - 0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e, - 0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6f,0x73,0x74,0x5f,0x70,0x72,0x6f, - 0x63,0x65,0x73,0x73,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x31,0x37, - 0x34,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x64,0x6f,0x66,0x5f,0x63,0x6f, - 0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x32,0x37,0x39,0x20,0x5b,0x5b,0x62,0x75,0x66, - 0x66,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x70,0x70,0x74,0x65,0x78, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, - 0x3e,0x20,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x64,0x6f,0x66,0x5f,0x74, - 0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d, - 0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f, - 0x61,0x74,0x3e,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x20,0x5b,0x5b, - 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x33,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x6c, - 0x75,0x74,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x34,0x29,0x5d, - 0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x70,0x70,0x73,0x6d,0x70, - 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70, - 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x64,0x6f,0x66,0x5f,0x73,0x6d,0x70, - 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x32,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73, - 0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x33,0x29,0x5d, - 0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x6c,0x75,0x74,0x5f,0x6c, - 0x69,0x6e,0x65,0x61,0x72,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28, - 0x34,0x29,0x5d,0x5d,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f, - 0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x36, - 0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20, - 0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20,0x3d,0x20, - 0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x36,0x36,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x38,0x34,0x20,0x3d,0x20, - 0x28,0x5f,0x31,0x36,0x36,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x28, - 0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72, - 0x65,0x6c,0x5f,0x64,0x69,0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e, - 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x62,0x61,0x72,0x72,0x65,0x6c,0x5f,0x64,0x69, - 0x73,0x74,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x39,0x32,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x39,0x33,0x20,0x3d, - 0x20,0x5f,0x31,0x39,0x32,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x31,0x39, - 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x32,0x20,0x3e,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x30, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21, - 0x5f,0x32,0x30,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x37, - 0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32, - 0x30,0x37,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x32,0x31,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x21,0x5f,0x32,0x30,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x34,0x2e,0x79,0x20,0x3e, - 0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x5f,0x32,0x30,0x37,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x31,0x34,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f, - 0x68,0x64,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37, - 0x34,0x2e,0x63,0x68,0x72,0x6f,0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72, - 0x72,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x20,0x3e,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37, - 0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36, - 0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x31,0x37,0x34,0x2e,0x63,0x68,0x72,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x5f,0x61,0x62,0x65,0x72,0x72,0x61,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x5f,0x31,0x38,0x34,0x20,0x2b, - 0x20,0x5f,0x32,0x34,0x32,0x29,0x29,0x2e,0x78,0x2c,0x20,0x70,0x70,0x74,0x65,0x78, - 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x5f, - 0x31,0x38,0x34,0x29,0x2e,0x79,0x2c,0x20,0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73,0x6d,0x70,0x2c,0x20,0x28,0x5f,0x31,0x38, - 0x34,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x29,0x2e,0x7a,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x3d,0x20, - 0x70,0x70,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70,0x70,0x73, - 0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37, - 0x39,0x2e,0x64,0x6f,0x66,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d, - 0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x68,0x64,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x2c,0x20,0x64,0x6f, - 0x66,0x5f,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x64,0x6f,0x66, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x34,0x29,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74, - 0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x61,0x62,0x73, - 0x28,0x61,0x62,0x73,0x28,0x70,0x6f,0x73,0x5f,0x62,0x75,0x66,0x2e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x28,0x70,0x6f,0x73,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38, - 0x34,0x29,0x2e,0x7a,0x29,0x20,0x2d,0x20,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66, - 0x5f,0x70,0x6f,0x69,0x6e,0x74,0x29,0x20,0x2f,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6d,0x61,0x78,0x28,0x5f,0x32,0x37,0x39,0x2e,0x64,0x6f,0x66,0x5f,0x6d,0x61,0x78, - 0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38, - 0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37, - 0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33, - 0x33,0x31,0x20,0x3d,0x20,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x74,0x65,0x78,0x2e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x28,0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x73,0x6d,0x70,0x2c, - 0x20,0x5f,0x31,0x38,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x33,0x34,0x32,0x20,0x3d,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x68,0x64,0x72,0x20,0x2b,0x20,0x28, - 0x5f,0x33,0x33,0x31,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e, - 0x62,0x6c,0x6f,0x6f,0x6d,0x5f,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x37,0x34,0x2e,0x65,0x78,0x70,0x6f,0x73,0x75,0x72,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x74,0x6f,0x6e,0x65,0x6d,0x61, - 0x70,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x61,0x63,0x65,0x73,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x20,0x3d,0x20,0x5f,0x33,0x34,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x36,0x32,0x20, - 0x3d,0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x29,0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28, - 0x5f,0x31,0x37,0x34,0x2e,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a, - 0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x36,0x32,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x30,0x30,0x30,0x30,0x35,0x39,0x36, - 0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20, - 0x30,0x2e,0x37,0x31,0x35,0x33,0x39,0x39,0x39,0x38,0x30,0x35,0x34,0x35,0x30,0x34, - 0x33,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x30, - 0x39,0x39,0x39,0x39,0x38,0x35,0x39,0x33,0x33,0x33,0x30,0x33,0x38,0x33,0x33,0x30, - 0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x33,0x36,0x32,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x37,0x34,0x2e,0x73,0x61,0x74, - 0x75,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x20,0x3e,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61, - 0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x62,0x61,0x79, - 0x65,0x72,0x38,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x37,0x34,0x2e,0x64,0x69,0x74,0x68,0x65,0x72,0x5f,0x69,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x36,0x36,0x36,0x36, - 0x36,0x37,0x30,0x31,0x34,0x33,0x36,0x30,0x34,0x32,0x37,0x38,0x35,0x36,0x34,0x34, - 0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x21, - 0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x2e,0x6c,0x75,0x74,0x5f, - 0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61, - 0x72,0x20,0x3d,0x20,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x70, - 0x70,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x66,0x6c, - 0x6f,0x6f,0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69, - 0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x6f, - 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x6f, - 0x72,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x36,0x32,0x35,0x29,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x35,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72, - 0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x7a,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x34,0x35,0x37,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72, - 0x28,0x5f,0x34,0x35,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x38,0x20,0x3d, - 0x20,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e, - 0x65,0x61,0x72,0x2e,0x79,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2b,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x37,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64, - 0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2e,0x78,0x20,0x2a,0x20,0x31,0x35,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x20, - 0x3d,0x20,0x6d,0x69,0x78,0x28,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x28,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x28,0x28,0x28,0x28,0x5f,0x34,0x35,0x37,0x20,0x2a,0x20,0x31,0x36, - 0x2e,0x30,0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c, - 0x20,0x5f,0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x6c,0x75,0x74, - 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x65, - 0x61,0x72,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x28,0x28,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6d,0x69,0x6e,0x28,0x5f,0x34,0x35,0x37,0x20,0x2b,0x20,0x31, - 0x2e,0x30,0x2c,0x20,0x31,0x35,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30, - 0x29,0x20,0x2b,0x20,0x5f,0x34,0x37,0x34,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x39,0x30,0x36,0x32,0x35,0x2c,0x20,0x5f, - 0x34,0x36,0x38,0x29,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x5f,0x34,0x35,0x34,0x20,0x2d,0x20,0x5f,0x34,0x35,0x37,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x28,0x70,0x6f,0x77,0x72,0x28,0x63, - 0x6f,0x6c,0x6f,0x72,0x5f,0x6c,0x64,0x72,0x5f,0x6c,0x69,0x6e,0x65,0x61,0x72,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x5f,0x31, - 0x37,0x34,0x2e,0x67,0x61,0x6d,0x6d,0x61,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74, - 0x74,0x65,0x5f,0x72,0x61,0x64,0x69,0x75,0x73,0x2c,0x20,0x5f,0x31,0x36,0x37,0x29, - 0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x76,0x69,0x67,0x6e,0x65,0x74,0x74,0x65, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20, - 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x73,0x69,0x6e,0x28,0x67,0x6c, - 0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2a,0x20,0x5f, - 0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e,0x6c,0x69,0x6e,0x65,0x73,0x5f,0x64,0x65, - 0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e,0x73,0x63,0x61,0x6e, - 0x6c,0x69,0x6e,0x65,0x73,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x5f,0x35,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x73,0x72,0x67, - 0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35, - 0x36,0x36,0x20,0x3d,0x20,0x5f,0x35,0x36,0x34,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x28,0x72,0x61,0x6e,0x64,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x29,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x34,0x2e, - 0x66,0x69,0x6c,0x6d,0x5f,0x67,0x72,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x5f,0x73,0x72,0x67,0x62,0x20,0x3d,0x20,0x5f,0x35,0x36,0x36,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x35,0x36,0x36,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x31,0x2e,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -postprocess_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "postprocess_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_pp_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_pp_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "_174.exposure"; - desc.uniform_blocks[0].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[1].glsl_name = "_174.contrast"; - desc.uniform_blocks[0].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[2].glsl_name = "_174.saturation"; - desc.uniform_blocks[0].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[3].glsl_name = "_174.gamma"; - desc.uniform_blocks[0].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[4].glsl_name = "_174.tonemap"; - desc.uniform_blocks[0].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[5].glsl_name = "_174.vignette_intensity"; - desc.uniform_blocks[0].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[6].glsl_name = "_174.vignette_radius"; - desc.uniform_blocks[0].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[7].glsl_name = "_174.scanlines_intensity"; - desc.uniform_blocks[0].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[8].glsl_name = "_174.scanlines_density"; - desc.uniform_blocks[0].glsl_uniforms[9].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[9].glsl_name = "_174.chromatic_aberration_intensity"; - desc.uniform_blocks[0].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[10].glsl_name = "_174.film_grain_intensity"; - desc.uniform_blocks[0].glsl_uniforms[11].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[11].glsl_name = "_174.barrel_distortion_intensity"; - desc.uniform_blocks[0].glsl_uniforms[12].type = .INT; - desc.uniform_blocks[0].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[12].glsl_name = "_174.lut_mode"; - desc.uniform_blocks[0].glsl_uniforms[13].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[13].glsl_name = "_174.dither_intensity"; - desc.uniform_blocks[0].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[14].glsl_name = "_174.bloom_amount"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_279.dof_disabled"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_279.dof_max"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_279.dof_point"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .FILTERING; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .FILTERING; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.samplers[4].stage = .FRAGMENT; - desc.samplers[4].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "pptex_ppsmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 4; - desc.image_sampler_pairs[1].sampler_slot = 4; - desc.image_sampler_pairs[1].glsl_name = "pos_buf_pos_smp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 3; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[2].glsl_name = "dof_tex_dof_smp"; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 2; - desc.image_sampler_pairs[3].sampler_slot = 2; - desc.image_sampler_pairs[3].glsl_name = "bloom_tex_bloom_smp"; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 1; - desc.image_sampler_pairs[4].sampler_slot = 0; - desc.image_sampler_pairs[4].glsl_name = "lut_ppsmp"; - desc.image_sampler_pairs[5].stage = .FRAGMENT; - desc.image_sampler_pairs[5].image_slot = 1; - desc.image_sampler_pairs[5].sampler_slot = 1; - desc.image_sampler_pairs[5].glsl_name = "lut_lut_linear"; - case .GLES3; - desc.vertex_func.source = xx *vs_pp_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_pp_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "_174.exposure"; - desc.uniform_blocks[0].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[1].glsl_name = "_174.contrast"; - desc.uniform_blocks[0].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[2].glsl_name = "_174.saturation"; - desc.uniform_blocks[0].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[3].glsl_name = "_174.gamma"; - desc.uniform_blocks[0].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[4].glsl_name = "_174.tonemap"; - desc.uniform_blocks[0].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[5].glsl_name = "_174.vignette_intensity"; - desc.uniform_blocks[0].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[6].glsl_name = "_174.vignette_radius"; - desc.uniform_blocks[0].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[7].glsl_name = "_174.scanlines_intensity"; - desc.uniform_blocks[0].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[8].glsl_name = "_174.scanlines_density"; - desc.uniform_blocks[0].glsl_uniforms[9].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[9].glsl_name = "_174.chromatic_aberration_intensity"; - desc.uniform_blocks[0].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[10].glsl_name = "_174.film_grain_intensity"; - desc.uniform_blocks[0].glsl_uniforms[11].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[11].glsl_name = "_174.barrel_distortion_intensity"; - desc.uniform_blocks[0].glsl_uniforms[12].type = .INT; - desc.uniform_blocks[0].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[12].glsl_name = "_174.lut_mode"; - desc.uniform_blocks[0].glsl_uniforms[13].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[13].glsl_name = "_174.dither_intensity"; - desc.uniform_blocks[0].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[0].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[0].glsl_uniforms[14].glsl_name = "_174.bloom_amount"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_279.dof_disabled"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_279.dof_max"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_279.dof_point"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .FILTERING; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .FILTERING; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.samplers[4].stage = .FRAGMENT; - desc.samplers[4].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "pptex_ppsmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 4; - desc.image_sampler_pairs[1].sampler_slot = 4; - desc.image_sampler_pairs[1].glsl_name = "pos_buf_pos_smp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 3; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[2].glsl_name = "dof_tex_dof_smp"; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 2; - desc.image_sampler_pairs[3].sampler_slot = 2; - desc.image_sampler_pairs[3].glsl_name = "bloom_tex_bloom_smp"; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 1; - desc.image_sampler_pairs[4].sampler_slot = 0; - desc.image_sampler_pairs[4].glsl_name = "lut_ppsmp"; - desc.image_sampler_pairs[5].stage = .FRAGMENT; - desc.image_sampler_pairs[5].image_slot = 1; - desc.image_sampler_pairs[5].sampler_slot = 1; - desc.image_sampler_pairs[5].glsl_name = "lut_lut_linear"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_pp_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_pp_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 16; - desc.uniform_blocks[1].msl_buffer_n = 1; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 4; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[2].msl_texture_n = 3; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[3].msl_texture_n = 2; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.images[4].msl_texture_n = 1; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.samplers[1].stage = .FRAGMENT; - desc.samplers[1].sampler_type = .FILTERING; - desc.samplers[1].msl_sampler_n = 4; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .FILTERING; - desc.samplers[2].msl_sampler_n = 3; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.samplers[3].msl_sampler_n = 2; - desc.samplers[4].stage = .FRAGMENT; - desc.samplers[4].sampler_type = .FILTERING; - desc.samplers[4].msl_sampler_n = 1; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 4; - desc.image_sampler_pairs[1].sampler_slot = 4; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 3; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 2; - desc.image_sampler_pairs[3].sampler_slot = 2; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 1; - desc.image_sampler_pairs[4].sampler_slot = 0; - desc.image_sampler_pairs[5].stage = .FRAGMENT; - desc.image_sampler_pairs[5].image_slot = 1; - desc.image_sampler_pairs[5].sampler_slot = 1; - } - return desc; -} diff --git a/src/shaders/jai/shader_sh_deferred.jai b/src/shaders/jai/shader_sh_deferred.jai deleted file mode 100644 index 264fdef..0000000 --- a/src/shaders/jai/shader_sh_deferred.jai +++ /dev/null @@ -1,1648 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_sh_deferred.glsl -o ./jai/shader_sh_deferred.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'sh_deferred': - Get shader desc: sh_deferred_shader_desc(sg_query_backend()) - Vertex Shader: vs_sh_deferred - Fragment Shader: fs_sh_deferred - Attributes: - ATTR_sh_deferred_position => 0 - ATTR_sh_deferred_uv => 1 - Bindings: - Uniform block 'sh_deferred_params': - Jai struct: Sh_Deferred_Params - Bind slot: UB_sh_deferred_params => 0 - Image 'sh_chunk': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_sh_chunk => 2 - Image 'gbuf_worldpos': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_gbuf_worldpos => 0 - Image 'gbuf_norm': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_gbuf_norm => 1 - Sampler 'sh_smp': - Type: .FILTERING - Bind slot: SMP_sh_smp => 0 -*/ -ATTR_sh_deferred_position :: 0; -ATTR_sh_deferred_uv :: 1; -UB_sh_deferred_params :: 0; -IMG_sh_chunk :: 2; -IMG_gbuf_worldpos :: 0; -IMG_gbuf_norm :: 1; -SMP_sh_smp :: 0; -Sh_Deferred_Params :: struct { - inv_view: [16]float; - chunk_origin: [4]float; - ambient: [4]float; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 quad_uv; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.0, 1.0); - quad_uv = uv; - } - -*/ -vs_sh_deferred_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x71,0x75,0x61,0x64, - 0x5f,0x75,0x76,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - uniform vec4 sh_deferred_params[6]; - layout(binding = 16) uniform sampler2D gbuf_worldpos_sh_smp; - layout(binding = 17) uniform sampler2D gbuf_norm_sh_smp; - layout(binding = 18) uniform sampler2D sh_chunk_sh_smp; - - layout(location = 0) in vec2 quad_uv; - layout(location = 0) out vec4 frag_color; - - vec3 sh_eval(ivec3 probe, vec3 N) - { - int _35 = probe.x * 3; - int _45 = (probe.z * 32) + probe.y; - vec4 _65 = texelFetch(sh_chunk_sh_smp, ivec2(_35, _45), 0); - vec4 _76 = texelFetch(sh_chunk_sh_smp, ivec2(_35 + 1, _45), 0); - vec4 _87 = texelFetch(sh_chunk_sh_smp, ivec2(_35 + 2, _45), 0); - return max(vec3((0.88622701168060302734375 * _65.x) + (1.02332699298858642578125 * (((_65.w * N.x) + (_65.y * N.y)) + (_65.z * N.z))), (0.88622701168060302734375 * _76.x) + (1.02332699298858642578125 * (((_76.w * N.x) + (_76.y * N.y)) + (_76.z * N.z))), (0.88622701168060302734375 * _87.x) + (1.02332699298858642578125 * (((_87.w * N.x) + (_87.y * N.y)) + (_87.z * N.z)))) * vec3(0.3183098733425140380859375), vec3(0.0)); - } - - float sh_probe_energy(ivec3 probe) - { - int _176 = probe.x * 3; - int _183 = (probe.z * 32) + probe.y; - return max(0.88622701168060302734375 * ((texelFetch(sh_chunk_sh_smp, ivec2(_176, _183), 0).x + texelFetch(sh_chunk_sh_smp, ivec2(_176 + 1, _183), 0).x) + texelFetch(sh_chunk_sh_smp, ivec2(_176 + 2, _183), 0).x), 0.0); - } - - vec3 sh_eval_trilinear(ivec3 p0, ivec3 p1, vec3 t, vec3 N) - { - float wx[2] = float[](1.0 - t.x, t.x); - float wy[2] = float[](1.0 - t.y, t.y); - float wz[2] = float[](1.0 - t.z, t.z); - vec3 result = vec3(0.0); - vec3 unweighted = vec3(0.0); - float total_w = 0.0; - int _280; - int _291; - int _302; - for (int iz = 0; iz < 2; iz++) - { - for (int iy = 0; iy < 2; iy++) - { - for (int ix = 0; ix < 2; ix++) - { - if (ix == 0) - { - _280 = p0.x; - } - else - { - _280 = p1.x; - } - if (iy == 0) - { - _291 = p0.y; - } - else - { - _291 = p1.y; - } - if (iz == 0) - { - _302 = p0.z; - } - else - { - _302 = p1.z; - } - ivec3 _311 = ivec3(_280, _291, _302); - ivec3 param = _311; - vec3 param_1 = N; - vec3 _317 = sh_eval(param, param_1); - float _329 = (wx[ix] * wy[iy]) * wz[iz]; - ivec3 param_2 = _311; - float _335 = _329 * sh_probe_energy(param_2); - result += (_317 * _335); - unweighted += (_317 * _329); - total_w += _335; - } - } - } - vec3 _371; - if (total_w > 0.001000000047497451305389404296875) - { - _371 = result / vec3(total_w); - } - else - { - _371 = max(unweighted, sh_deferred_params[5].xyz * sh_deferred_params[5].w); - } - return _371; - } - - void main() - { - vec4 _394 = texture(gbuf_worldpos_sh_smp, quad_uv); - if (_394.w < 0.5) - { - discard; - } - vec3 _404 = _394.xyz; - bool _418 = any(lessThan(_404, sh_deferred_params[4].xyz)); - bool _426; - if (!_418) - { - _426 = any(greaterThanEqual(_404, sh_deferred_params[4].xyz + vec3(32.0))); - } - else - { - _426 = _418; - } - if (_426) - { - discard; - } - mat4 _442 = mat4(sh_deferred_params[0], sh_deferred_params[1], sh_deferred_params[2], sh_deferred_params[3]); - vec3 _466 = clamp((_404 - (sh_deferred_params[4].xyz - vec3(2.0))) * vec3(0.888888895511627197265625), vec3(0.0), vec3(31.0)); - ivec3 _470 = ivec3(floor(_466)); - ivec3 param = _470; - ivec3 param_1 = min((_470 + ivec3(1)), ivec3(31)); - vec3 param_2 = fract(_466); - vec3 param_3 = normalize(mat3(_442[0].xyz, _442[1].xyz, _442[2].xyz) * normalize(texture(gbuf_norm_sh_smp, quad_uv).xyz)); - frag_color = vec4(sh_eval_trilinear(param, param_1, param_2, param_3), 1.0); - } - -*/ -fs_sh_deferred_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x73,0x68,0x5f,0x64,0x65, - 0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67, - 0x20,0x3d,0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x67,0x62,0x75,0x66,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x70,0x6f,0x73,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20, - 0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x32,0x44,0x20,0x67,0x62,0x75,0x66,0x5f,0x6e,0x6f,0x72,0x6d,0x5f, - 0x73,0x68,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62, - 0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x38,0x29,0x20,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x73, - 0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x3b,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x71,0x75, - 0x61,0x64,0x5f,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x68,0x5f,0x65,0x76,0x61,0x6c,0x28,0x69, - 0x76,0x65,0x63,0x33,0x20,0x70,0x72,0x6f,0x62,0x65,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x20,0x4e,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33, - 0x35,0x20,0x3d,0x20,0x70,0x72,0x6f,0x62,0x65,0x2e,0x78,0x20,0x2a,0x20,0x33,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x28, - 0x70,0x72,0x6f,0x62,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x33,0x32,0x29,0x20,0x2b,0x20, - 0x70,0x72,0x6f,0x62,0x65,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x36,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74, - 0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x33,0x35,0x2c,0x20,0x5f, - 0x34,0x35,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x37,0x36,0x20,0x3d,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74, - 0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x33,0x35,0x20,0x2b,0x20, - 0x31,0x2c,0x20,0x5f,0x34,0x35,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x38,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x65, - 0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f, - 0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x33, - 0x35,0x20,0x2b,0x20,0x32,0x2c,0x20,0x5f,0x34,0x35,0x29,0x2c,0x20,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x78,0x28, - 0x76,0x65,0x63,0x33,0x28,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30,0x31, - 0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35,0x20, - 0x2a,0x20,0x5f,0x36,0x35,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x31,0x2e,0x30,0x32, - 0x33,0x33,0x32,0x36,0x39,0x39,0x32,0x39,0x38,0x38,0x35,0x38,0x36,0x34,0x32,0x35, - 0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x36,0x35,0x2e,0x77, - 0x20,0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x5f,0x36,0x35,0x2e,0x79, - 0x20,0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28,0x5f,0x36,0x35,0x2e, - 0x7a,0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29,0x2c,0x20,0x28,0x30,0x2e,0x38, - 0x38,0x36,0x32,0x32,0x37,0x30,0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32, - 0x37,0x33,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x5f,0x37,0x36,0x2e,0x78,0x29,0x20, - 0x2b,0x20,0x28,0x31,0x2e,0x30,0x32,0x33,0x33,0x32,0x36,0x39,0x39,0x32,0x39,0x38, - 0x38,0x35,0x38,0x36,0x34,0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x28, - 0x28,0x28,0x5f,0x37,0x36,0x2e,0x77,0x20,0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b, - 0x20,0x28,0x5f,0x37,0x36,0x2e,0x79,0x20,0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29,0x20, - 0x2b,0x20,0x28,0x5f,0x37,0x36,0x2e,0x7a,0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29, - 0x29,0x2c,0x20,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30,0x31,0x31,0x36, - 0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35,0x20,0x2a,0x20, - 0x5f,0x38,0x37,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x31,0x2e,0x30,0x32,0x33,0x33, - 0x32,0x36,0x39,0x39,0x32,0x39,0x38,0x38,0x35,0x38,0x36,0x34,0x32,0x35,0x37,0x38, - 0x31,0x32,0x35,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x38,0x37,0x2e,0x77,0x20,0x2a, - 0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x5f,0x38,0x37,0x2e,0x79,0x20,0x2a, - 0x20,0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28,0x5f,0x38,0x37,0x2e,0x7a,0x20, - 0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35, - 0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x73,0x68,0x5f,0x70,0x72,0x6f,0x62,0x65,0x5f,0x65,0x6e,0x65, - 0x72,0x67,0x79,0x28,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x72,0x6f,0x62,0x65,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x37,0x36,0x20, - 0x3d,0x20,0x70,0x72,0x6f,0x62,0x65,0x2e,0x78,0x20,0x2a,0x20,0x33,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x38,0x33,0x20,0x3d,0x20,0x28,0x70, - 0x72,0x6f,0x62,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x33,0x32,0x29,0x20,0x2b,0x20,0x70, - 0x72,0x6f,0x62,0x65,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x6d,0x61,0x78,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30, - 0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35, - 0x20,0x2a,0x20,0x28,0x28,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28, - 0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c, - 0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37,0x36,0x2c,0x20,0x5f,0x31,0x38, - 0x33,0x29,0x2c,0x20,0x30,0x29,0x2e,0x78,0x20,0x2b,0x20,0x74,0x65,0x78,0x65,0x6c, - 0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73, - 0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37, - 0x36,0x20,0x2b,0x20,0x31,0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x2c,0x20,0x30,0x29, - 0x2e,0x78,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68, - 0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70, - 0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37,0x36,0x20,0x2b,0x20,0x32, - 0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x2c,0x20,0x30,0x29,0x2e,0x78,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x68, - 0x5f,0x65,0x76,0x61,0x6c,0x5f,0x74,0x72,0x69,0x6c,0x69,0x6e,0x65,0x61,0x72,0x28, - 0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x30,0x2c,0x20,0x69,0x76,0x65,0x63,0x33,0x20, - 0x70,0x31,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x20,0x4e,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x77,0x78,0x5b,0x32,0x5d,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x5b,0x5d,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x74,0x2e,0x78,0x2c,0x20,0x74,0x2e,0x78,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x79,0x5b,0x32,0x5d, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x5b,0x5d,0x28,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x74,0x2e,0x79,0x2c,0x20,0x74,0x2e,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x7a,0x5b,0x32,0x5d,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x5b,0x5d,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x74,0x2e,0x7a,0x2c, - 0x20,0x74,0x2e,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x75,0x6e,0x77, - 0x65,0x69,0x67,0x68,0x74,0x65,0x64,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74, - 0x6f,0x74,0x61,0x6c,0x5f,0x77,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x5f,0x32,0x39,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x5f,0x33,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, - 0x28,0x69,0x6e,0x74,0x20,0x69,0x7a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x7a,0x20, - 0x3c,0x20,0x32,0x3b,0x20,0x69,0x7a,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e, - 0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x32, - 0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f, - 0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69, - 0x78,0x20,0x3c,0x20,0x32,0x3b,0x20,0x69,0x78,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69, - 0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32, - 0x38,0x30,0x20,0x3d,0x20,0x70,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x38,0x30,0x20,0x3d,0x20,0x70, - 0x31,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x79,0x20,0x3d,0x3d, - 0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x39,0x31,0x20,0x3d, - 0x20,0x70,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x32,0x39,0x31,0x20,0x3d,0x20,0x70,0x31,0x2e,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x7a,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x30,0x32,0x20,0x3d,0x20,0x70,0x30,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x33,0x30,0x32,0x20,0x3d,0x20,0x70,0x31,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x31,0x31,0x20,0x3d,0x20,0x69,0x76,0x65,0x63, - 0x33,0x28,0x5f,0x32,0x38,0x30,0x2c,0x20,0x5f,0x32,0x39,0x31,0x2c,0x20,0x5f,0x33, - 0x30,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x5f,0x33,0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x33,0x31,0x37,0x20,0x3d,0x20,0x73,0x68,0x5f,0x65,0x76,0x61,0x6c,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x32,0x39,0x20,0x3d,0x20,0x28,0x77,0x78, - 0x5b,0x69,0x78,0x5d,0x20,0x2a,0x20,0x77,0x79,0x5b,0x69,0x79,0x5d,0x29,0x20,0x2a, - 0x20,0x77,0x7a,0x5b,0x69,0x7a,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x33,0x31,0x31,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x35,0x20,0x3d,0x20,0x5f,0x33,0x32,0x39, - 0x20,0x2a,0x20,0x73,0x68,0x5f,0x70,0x72,0x6f,0x62,0x65,0x5f,0x65,0x6e,0x65,0x72, - 0x67,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37,0x20,0x2a,0x20,0x5f, - 0x33,0x33,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x6e,0x77,0x65,0x69,0x67,0x68,0x74,0x65,0x64, - 0x20,0x2b,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37,0x20,0x2a,0x20,0x5f,0x33,0x32,0x39, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x20,0x2b,0x3d,0x20,0x5f,0x33, - 0x33,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x37,0x31,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77, - 0x20,0x3e,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34, - 0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34, - 0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x37,0x31,0x20,0x3d,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x74,0x6f,0x74,0x61,0x6c, - 0x5f,0x77,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x33,0x37,0x31,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x75,0x6e,0x77, - 0x65,0x69,0x67,0x68,0x74,0x65,0x64,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65, - 0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78, - 0x79,0x7a,0x20,0x2a,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x77,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x5f,0x33,0x37,0x31,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x33,0x39,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x67, - 0x62,0x75,0x66,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x5f,0x73,0x68,0x5f, - 0x73,0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x39,0x34,0x2e,0x77,0x20,0x3c,0x20, - 0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x30,0x34,0x20, - 0x3d,0x20,0x5f,0x33,0x39,0x34,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x31,0x38,0x20,0x3d,0x20,0x61,0x6e,0x79,0x28, - 0x6c,0x65,0x73,0x73,0x54,0x68,0x61,0x6e,0x28,0x5f,0x34,0x30,0x34,0x2c,0x20,0x73, - 0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x21,0x5f,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x61, - 0x6e,0x79,0x28,0x67,0x72,0x65,0x61,0x74,0x65,0x72,0x54,0x68,0x61,0x6e,0x45,0x71, - 0x75,0x61,0x6c,0x28,0x5f,0x34,0x30,0x34,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66, - 0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e, - 0x78,0x79,0x7a,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x33,0x32,0x2e,0x30,0x29, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x36, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x5f,0x34,0x34,0x32,0x20,0x3d,0x20,0x6d, - 0x61,0x74,0x34,0x28,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65, - 0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d, - 0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65, - 0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x36,0x36,0x20,0x3d, - 0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x34,0x30,0x34,0x20,0x2d,0x20,0x28, - 0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33, - 0x28,0x32,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x35,0x35,0x31,0x31,0x36,0x32,0x37, - 0x31,0x39,0x37,0x32,0x36,0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x33,0x31,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x5f,0x34, - 0x37,0x30,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x66,0x6c,0x6f,0x6f,0x72, - 0x28,0x5f,0x34,0x36,0x36,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x34,0x37,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x28,0x5f,0x34,0x37,0x30,0x20,0x2b, - 0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x31,0x29,0x29,0x2c,0x20,0x69,0x76,0x65,0x63, - 0x33,0x28,0x33,0x31,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74, - 0x28,0x5f,0x34,0x36,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x6d,0x61,0x74,0x33,0x28,0x5f,0x34,0x34,0x32,0x5b,0x30, - 0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x34,0x34,0x32,0x5b,0x31,0x5d,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x5f,0x34,0x34,0x32,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29, - 0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x67,0x62,0x75,0x66,0x5f,0x6e,0x6f,0x72,0x6d,0x5f,0x73, - 0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x2e, - 0x78,0x79,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x73,0x68,0x5f, - 0x65,0x76,0x61,0x6c,0x5f,0x74,0x72,0x69,0x6c,0x69,0x6e,0x65,0x61,0x72,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 quad_uv; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.0, 1.0); - quad_uv = uv; - } - -*/ -vs_sh_deferred_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, - 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x71,0x75,0x61,0x64,0x5f,0x75, - 0x76,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp vec4 sh_deferred_params[6]; - uniform highp sampler2D gbuf_worldpos_sh_smp; - uniform highp sampler2D gbuf_norm_sh_smp; - uniform highp sampler2D sh_chunk_sh_smp; - - in highp vec2 quad_uv; - layout(location = 0) out highp vec4 frag_color; - - highp vec3 sh_eval(ivec3 probe, highp vec3 N) - { - int _35 = probe.x * 3; - int _45 = (probe.z * 32) + probe.y; - highp vec4 _65 = texelFetch(sh_chunk_sh_smp, ivec2(_35, _45), 0); - highp vec4 _76 = texelFetch(sh_chunk_sh_smp, ivec2(_35 + 1, _45), 0); - highp vec4 _87 = texelFetch(sh_chunk_sh_smp, ivec2(_35 + 2, _45), 0); - return max(vec3((0.88622701168060302734375 * _65.x) + (1.02332699298858642578125 * (((_65.w * N.x) + (_65.y * N.y)) + (_65.z * N.z))), (0.88622701168060302734375 * _76.x) + (1.02332699298858642578125 * (((_76.w * N.x) + (_76.y * N.y)) + (_76.z * N.z))), (0.88622701168060302734375 * _87.x) + (1.02332699298858642578125 * (((_87.w * N.x) + (_87.y * N.y)) + (_87.z * N.z)))) * vec3(0.3183098733425140380859375), vec3(0.0)); - } - - highp float sh_probe_energy(ivec3 probe) - { - int _176 = probe.x * 3; - int _183 = (probe.z * 32) + probe.y; - return max(0.88622701168060302734375 * ((texelFetch(sh_chunk_sh_smp, ivec2(_176, _183), 0).x + texelFetch(sh_chunk_sh_smp, ivec2(_176 + 1, _183), 0).x) + texelFetch(sh_chunk_sh_smp, ivec2(_176 + 2, _183), 0).x), 0.0); - } - - highp vec3 sh_eval_trilinear(ivec3 p0, ivec3 p1, highp vec3 t, highp vec3 N) - { - highp float wx[2] = float[](1.0 - t.x, t.x); - highp float wy[2] = float[](1.0 - t.y, t.y); - highp float wz[2] = float[](1.0 - t.z, t.z); - highp vec3 result = vec3(0.0); - highp vec3 unweighted = vec3(0.0); - highp float total_w = 0.0; - int _280; - int _291; - int _302; - for (int iz = 0; iz < 2; iz++) - { - for (int iy = 0; iy < 2; iy++) - { - for (int ix = 0; ix < 2; ix++) - { - if (ix == 0) - { - _280 = p0.x; - } - else - { - _280 = p1.x; - } - if (iy == 0) - { - _291 = p0.y; - } - else - { - _291 = p1.y; - } - if (iz == 0) - { - _302 = p0.z; - } - else - { - _302 = p1.z; - } - ivec3 _311 = ivec3(_280, _291, _302); - ivec3 param = _311; - highp vec3 param_1 = N; - highp vec3 _317 = sh_eval(param, param_1); - highp float _329 = (wx[ix] * wy[iy]) * wz[iz]; - ivec3 param_2 = _311; - highp float _335 = _329 * sh_probe_energy(param_2); - result += (_317 * _335); - unweighted += (_317 * _329); - total_w += _335; - } - } - } - highp vec3 _371; - if (total_w > 0.001000000047497451305389404296875) - { - _371 = result / vec3(total_w); - } - else - { - _371 = max(unweighted, sh_deferred_params[5].xyz * sh_deferred_params[5].w); - } - return _371; - } - - void main() - { - highp vec4 _394 = texture(gbuf_worldpos_sh_smp, quad_uv); - if (_394.w < 0.5) - { - discard; - } - highp vec3 _404 = _394.xyz; - bool _418 = any(lessThan(_404, sh_deferred_params[4].xyz)); - bool _426; - if (!_418) - { - _426 = any(greaterThanEqual(_404, sh_deferred_params[4].xyz + vec3(32.0))); - } - else - { - _426 = _418; - } - if (_426) - { - discard; - } - highp mat4 _442 = mat4(sh_deferred_params[0], sh_deferred_params[1], sh_deferred_params[2], sh_deferred_params[3]); - highp vec3 _466 = clamp((_404 - (sh_deferred_params[4].xyz - vec3(2.0))) * vec3(0.888888895511627197265625), vec3(0.0), vec3(31.0)); - ivec3 _470 = ivec3(floor(_466)); - ivec3 param = _470; - ivec3 param_1 = min((_470 + ivec3(1)), ivec3(31)); - highp vec3 param_2 = fract(_466); - highp vec3 param_3 = normalize(mat3(_442[0].xyz, _442[1].xyz, _442[2].xyz) * normalize(texture(gbuf_norm_sh_smp, quad_uv).xyz)); - frag_color = vec4(sh_eval_trilinear(param, param_1, param_2, param_3), 1.0); - } - -*/ -fs_sh_deferred_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44, - 0x20,0x67,0x62,0x75,0x66,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x5f,0x73, - 0x68,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x67, - 0x62,0x75,0x66,0x5f,0x6e,0x6f,0x72,0x6d,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x3b, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e, - 0x6b,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x68, - 0x5f,0x65,0x76,0x61,0x6c,0x28,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x72,0x6f,0x62, - 0x65,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x35,0x20,0x3d, - 0x20,0x70,0x72,0x6f,0x62,0x65,0x2e,0x78,0x20,0x2a,0x20,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x28,0x70,0x72,0x6f, - 0x62,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x33,0x32,0x29,0x20,0x2b,0x20,0x70,0x72,0x6f, - 0x62,0x65,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x65,0x6c, - 0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73, - 0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x33,0x35, - 0x2c,0x20,0x5f,0x34,0x35,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x37,0x36,0x20,0x3d, - 0x20,0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63, - 0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65, - 0x63,0x32,0x28,0x5f,0x33,0x35,0x20,0x2b,0x20,0x31,0x2c,0x20,0x5f,0x34,0x35,0x29, - 0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x38,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x65,0x6c, - 0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73, - 0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x33,0x35, - 0x20,0x2b,0x20,0x32,0x2c,0x20,0x5f,0x34,0x35,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x78,0x28,0x76, - 0x65,0x63,0x33,0x28,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30,0x31,0x31, - 0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35,0x20,0x2a, - 0x20,0x5f,0x36,0x35,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x31,0x2e,0x30,0x32,0x33, - 0x33,0x32,0x36,0x39,0x39,0x32,0x39,0x38,0x38,0x35,0x38,0x36,0x34,0x32,0x35,0x37, - 0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x36,0x35,0x2e,0x77,0x20, - 0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x5f,0x36,0x35,0x2e,0x79,0x20, - 0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28,0x5f,0x36,0x35,0x2e,0x7a, - 0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29,0x2c,0x20,0x28,0x30,0x2e,0x38,0x38, - 0x36,0x32,0x32,0x37,0x30,0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37, - 0x33,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x5f,0x37,0x36,0x2e,0x78,0x29,0x20,0x2b, - 0x20,0x28,0x31,0x2e,0x30,0x32,0x33,0x33,0x32,0x36,0x39,0x39,0x32,0x39,0x38,0x38, - 0x35,0x38,0x36,0x34,0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x28,0x28, - 0x28,0x5f,0x37,0x36,0x2e,0x77,0x20,0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20, - 0x28,0x5f,0x37,0x36,0x2e,0x79,0x20,0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x5f,0x37,0x36,0x2e,0x7a,0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29, - 0x2c,0x20,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30,0x31,0x31,0x36,0x38, - 0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x5f, - 0x38,0x37,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x31,0x2e,0x30,0x32,0x33,0x33,0x32, - 0x36,0x39,0x39,0x32,0x39,0x38,0x38,0x35,0x38,0x36,0x34,0x32,0x35,0x37,0x38,0x31, - 0x32,0x35,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x38,0x37,0x2e,0x77,0x20,0x2a,0x20, - 0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x5f,0x38,0x37,0x2e,0x79,0x20,0x2a,0x20, - 0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28,0x5f,0x38,0x37,0x2e,0x7a,0x20,0x2a, - 0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31, - 0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x68,0x5f,0x70,0x72,0x6f,0x62, - 0x65,0x5f,0x65,0x6e,0x65,0x72,0x67,0x79,0x28,0x69,0x76,0x65,0x63,0x33,0x20,0x70, - 0x72,0x6f,0x62,0x65,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x5f,0x31,0x37,0x36,0x20,0x3d,0x20,0x70,0x72,0x6f,0x62,0x65,0x2e,0x78,0x20,0x2a, - 0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x38,0x33, - 0x20,0x3d,0x20,0x28,0x70,0x72,0x6f,0x62,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x33,0x32, - 0x29,0x20,0x2b,0x20,0x70,0x72,0x6f,0x62,0x65,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x78,0x28,0x30,0x2e,0x38,0x38, - 0x36,0x32,0x32,0x37,0x30,0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37, - 0x33,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x28,0x28,0x74,0x65,0x78,0x65,0x6c,0x46, - 0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73,0x68, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37,0x36, - 0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x2c,0x20,0x30,0x29,0x2e,0x78,0x20,0x2b,0x20, - 0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68, - 0x75,0x6e,0x6b,0x5f,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63, - 0x32,0x28,0x5f,0x31,0x37,0x36,0x20,0x2b,0x20,0x31,0x2c,0x20,0x5f,0x31,0x38,0x33, - 0x29,0x2c,0x20,0x30,0x29,0x2e,0x78,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x65,0x6c, - 0x46,0x65,0x74,0x63,0x68,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x73, - 0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x37, - 0x36,0x20,0x2b,0x20,0x32,0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x2c,0x20,0x30,0x29, - 0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x68,0x5f,0x65,0x76,0x61,0x6c, - 0x5f,0x74,0x72,0x69,0x6c,0x69,0x6e,0x65,0x61,0x72,0x28,0x69,0x76,0x65,0x63,0x33, - 0x20,0x70,0x30,0x2c,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x31,0x2c,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x2c,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x78,0x5b, - 0x32,0x5d,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x5b,0x5d,0x28,0x31,0x2e,0x30, - 0x20,0x2d,0x20,0x74,0x2e,0x78,0x2c,0x20,0x74,0x2e,0x78,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x79, - 0x5b,0x32,0x5d,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x5b,0x5d,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x74,0x2e,0x79,0x2c,0x20,0x74,0x2e,0x79,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77, - 0x7a,0x5b,0x32,0x5d,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x5b,0x5d,0x28,0x31, - 0x2e,0x30,0x20,0x2d,0x20,0x74,0x2e,0x7a,0x2c,0x20,0x74,0x2e,0x7a,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x72, - 0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x75,0x6e,0x77,0x65,0x69,0x67,0x68,0x74,0x65,0x64,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f, - 0x77,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x5f,0x32,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f, - 0x32,0x39,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x30, - 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20, - 0x69,0x7a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x7a,0x20,0x3c,0x20,0x32,0x3b,0x20, - 0x69,0x7a,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20, - 0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x32,0x3b,0x20,0x69,0x79,0x2b, - 0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e, - 0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x32, - 0x3b,0x20,0x69,0x78,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x78,0x20,0x3d,0x3d,0x20, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x38,0x30,0x20,0x3d,0x20, - 0x70,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x38,0x30,0x20,0x3d,0x20,0x70,0x31,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x39,0x31,0x20,0x3d,0x20,0x70,0x30,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x32,0x39,0x31,0x20,0x3d,0x20,0x70,0x31,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x69,0x7a,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x33,0x30,0x32,0x20,0x3d,0x20,0x70,0x30,0x2e,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x30,0x32,0x20, - 0x3d,0x20,0x70,0x31,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x33,0x31,0x31,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x5f,0x32,0x38, - 0x30,0x2c,0x20,0x5f,0x32,0x39,0x31,0x2c,0x20,0x5f,0x33,0x30,0x32,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33, - 0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x31,0x37,0x20,0x3d,0x20,0x73,0x68, - 0x5f,0x65,0x76,0x61,0x6c,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x33,0x32,0x39,0x20,0x3d,0x20,0x28,0x77,0x78,0x5b,0x69,0x78, - 0x5d,0x20,0x2a,0x20,0x77,0x79,0x5b,0x69,0x79,0x5d,0x29,0x20,0x2a,0x20,0x77,0x7a, - 0x5b,0x69,0x7a,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x33,0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x35,0x20,0x3d,0x20,0x5f, - 0x33,0x32,0x39,0x20,0x2a,0x20,0x73,0x68,0x5f,0x70,0x72,0x6f,0x62,0x65,0x5f,0x65, - 0x6e,0x65,0x72,0x67,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37,0x20, - 0x2a,0x20,0x5f,0x33,0x33,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x6e,0x77,0x65,0x69,0x67,0x68, - 0x74,0x65,0x64,0x20,0x2b,0x3d,0x20,0x28,0x5f,0x33,0x31,0x37,0x20,0x2a,0x20,0x5f, - 0x33,0x32,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x20,0x2b,0x3d, - 0x20,0x5f,0x33,0x33,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x33,0x37,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x20,0x3e,0x20,0x30,0x2e,0x30,0x30, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31, - 0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x33,0x37,0x31,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x76, - 0x65,0x63,0x33,0x28,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x37,0x31,0x20, - 0x3d,0x20,0x6d,0x61,0x78,0x28,0x75,0x6e,0x77,0x65,0x69,0x67,0x68,0x74,0x65,0x64, - 0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x73,0x68, - 0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x35,0x5d,0x2e,0x77,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x33,0x37,0x31,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f, - 0x33,0x39,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x67,0x62, - 0x75,0x66,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x5f,0x73,0x68,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x39,0x34,0x2e,0x77,0x20,0x3c,0x20,0x30, - 0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x34,0x30,0x34,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x2e,0x78,0x79,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x31,0x38,0x20,0x3d, - 0x20,0x61,0x6e,0x79,0x28,0x6c,0x65,0x73,0x73,0x54,0x68,0x61,0x6e,0x28,0x5f,0x34, - 0x30,0x34,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x32,0x36,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x34,0x31,0x38,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x32, - 0x36,0x20,0x3d,0x20,0x61,0x6e,0x79,0x28,0x67,0x72,0x65,0x61,0x74,0x65,0x72,0x54, - 0x68,0x61,0x6e,0x45,0x71,0x75,0x61,0x6c,0x28,0x5f,0x34,0x30,0x34,0x2c,0x20,0x73, - 0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28, - 0x33,0x32,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x34,0x31, - 0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x34,0x32,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x6d,0x61, - 0x74,0x34,0x20,0x5f,0x34,0x34,0x32,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x73, - 0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x30,0x5d,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65, - 0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x73,0x68,0x5f, - 0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x32,0x5d,0x2c,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x36,0x36,0x20, - 0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x34,0x30,0x34,0x20,0x2d,0x20, - 0x28,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63, - 0x33,0x28,0x32,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x35,0x35,0x31,0x31,0x36,0x32, - 0x37,0x31,0x39,0x37,0x32,0x36,0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x33,0x31,0x2e, - 0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x34,0x37,0x30,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x66,0x6c,0x6f,0x6f, - 0x72,0x28,0x5f,0x34,0x36,0x36,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x34,0x37,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x28,0x5f,0x34,0x37,0x30,0x20, - 0x2b,0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x31,0x29,0x29,0x2c,0x20,0x69,0x76,0x65, - 0x63,0x33,0x28,0x33,0x31,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20, - 0x3d,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x5f,0x34,0x36,0x36,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x6d,0x61,0x74,0x33,0x28,0x5f,0x34,0x34,0x32,0x5b,0x30,0x5d,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x5f,0x34,0x34,0x32,0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x5f,0x34,0x34,0x32,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x67,0x62,0x75,0x66,0x5f,0x6e,0x6f,0x72,0x6d,0x5f,0x73,0x68,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x2e,0x78,0x79,0x7a, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x73,0x68,0x5f,0x65,0x76,0x61, - 0x6c,0x5f,0x74,0x72,0x69,0x6c,0x69,0x6e,0x65,0x61,0x72,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 quad_uv [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.0, 1.0); - out.quad_uv = in.uv; - return out; - } - -*/ -vs_sh_deferred_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69, - 0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x71,0x75,0x61,0x64, - 0x5f,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - #pragma clang diagnostic ignored "-Wmissing-braces" - - #include - #include - - using namespace metal; - - template - struct spvUnsafeArray - { - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } - }; - - struct sh_deferred_params - { - float4x4 inv_view; - float4 chunk_origin; - float4 ambient; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 quad_uv [[user(locn0)]]; - }; - - static inline __attribute__((always_inline)) - float3 sh_eval(thread const int3& probe, thread const float3& N, texture2d sh_chunk, sampler sh_smp) - { - int _35 = probe.x * 3; - int _45 = (probe.z * 32) + probe.y; - float4 _65 = sh_chunk.read(uint2(int2(_35, _45)), 0); - float4 _76 = sh_chunk.read(uint2(int2(_35 + 1, _45)), 0); - float4 _87 = sh_chunk.read(uint2(int2(_35 + 2, _45)), 0); - return fast::max(float3((0.88622701168060302734375 * _65.x) + (1.02332699298858642578125 * (((_65.w * N.x) + (_65.y * N.y)) + (_65.z * N.z))), (0.88622701168060302734375 * _76.x) + (1.02332699298858642578125 * (((_76.w * N.x) + (_76.y * N.y)) + (_76.z * N.z))), (0.88622701168060302734375 * _87.x) + (1.02332699298858642578125 * (((_87.w * N.x) + (_87.y * N.y)) + (_87.z * N.z)))) * float3(0.3183098733425140380859375), float3(0.0)); - } - - static inline __attribute__((always_inline)) - float sh_probe_energy(thread const int3& probe, texture2d sh_chunk, sampler sh_smp) - { - int _176 = probe.x * 3; - int _183 = (probe.z * 32) + probe.y; - return fast::max(0.88622701168060302734375 * ((sh_chunk.read(uint2(int2(_176, _183)), 0).x + sh_chunk.read(uint2(int2(_176 + 1, _183)), 0).x) + sh_chunk.read(uint2(int2(_176 + 2, _183)), 0).x), 0.0); - } - - static inline __attribute__((always_inline)) - float3 sh_eval_trilinear(thread const int3& p0, thread const int3& p1, thread const float3& t, thread const float3& N, texture2d sh_chunk, sampler sh_smp, constant sh_deferred_params& _359) - { - spvUnsafeArray _234 = spvUnsafeArray({ 1.0 - t.x, t.x }); - spvUnsafeArray wx = _234; - spvUnsafeArray _241 = spvUnsafeArray({ 1.0 - t.y, t.y }); - spvUnsafeArray wy = _241; - spvUnsafeArray _248 = spvUnsafeArray({ 1.0 - t.z, t.z }); - spvUnsafeArray wz = _248; - float3 result = float3(0.0); - float3 unweighted = float3(0.0); - float total_w = 0.0; - int _280; - int _291; - int _302; - for (int iz = 0; iz < 2; iz++) - { - for (int iy = 0; iy < 2; iy++) - { - for (int ix = 0; ix < 2; ix++) - { - if (ix == 0) - { - _280 = p0.x; - } - else - { - _280 = p1.x; - } - if (iy == 0) - { - _291 = p0.y; - } - else - { - _291 = p1.y; - } - if (iz == 0) - { - _302 = p0.z; - } - else - { - _302 = p1.z; - } - int3 _311 = int3(_280, _291, _302); - int3 param = _311; - float3 param_1 = N; - float3 _317 = sh_eval(param, param_1, sh_chunk, sh_smp); - float _329 = (wx[ix] * wy[iy]) * wz[iz]; - int3 param_2 = _311; - float _335 = _329 * sh_probe_energy(param_2, sh_chunk, sh_smp); - result += (_317 * _335); - unweighted += (_317 * _329); - total_w += _335; - } - } - } - float3 _371; - if (total_w > 0.001000000047497451305389404296875) - { - _371 = result / float3(total_w); - } - else - { - _371 = fast::max(unweighted, _359.ambient.xyz * _359.ambient.w); - } - return _371; - } - - fragment main0_out main0(main0_in in [[stage_in]], constant sh_deferred_params& _359 [[buffer(0)]], texture2d sh_chunk [[texture(0)]], texture2d gbuf_worldpos [[texture(1)]], texture2d gbuf_norm [[texture(2)]], sampler sh_smp [[sampler(0)]]) - { - main0_out out = {}; - float4 _394 = gbuf_worldpos.sample(sh_smp, in.quad_uv); - if (_394.w < 0.5) - { - discard_fragment(); - } - float3 _404 = _394.xyz; - bool _418 = any(_404 < _359.chunk_origin.xyz); - bool _426; - if (!_418) - { - _426 = any(_404 >= (_359.chunk_origin.xyz + float3(32.0))); - } - else - { - _426 = _418; - } - if (_426) - { - discard_fragment(); - } - float3 _466 = fast::clamp((_404 - (_359.chunk_origin.xyz - float3(2.0))) * float3(0.888888895511627197265625), float3(0.0), float3(31.0)); - int3 _470 = int3(floor(_466)); - int3 param = _470; - int3 param_1 = min((_470 + int3(1)), int3(31)); - float3 param_2 = fract(_466); - float3 param_3 = fast::normalize(float3x3(_359.inv_view[0].xyz, _359.inv_view[1].xyz, _359.inv_view[2].xyz) * fast::normalize(gbuf_norm.sample(sh_smp, in.quad_uv).xyz)); - out.frag_color = float4(sh_eval_trilinear(param, param_1, param_2, param_3, sh_chunk, sh_smp, _359), 1.0); - return out; - } - -*/ -fs_sh_deferred_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20, - 0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63, - 0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64,0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73, - 0x69,0x6e,0x67,0x2d,0x62,0x72,0x61,0x63,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e, - 0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64, - 0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73, - 0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69, - 0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x3b,0x0a,0x0a,0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,0x3c,0x74,0x79, - 0x70,0x65,0x6e,0x61,0x6d,0x65,0x20,0x54,0x2c,0x20,0x73,0x69,0x7a,0x65,0x5f,0x74, - 0x20,0x4e,0x75,0x6d,0x3e,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x70,0x76, - 0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x54,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x4e,0x75,0x6d, - 0x20,0x3f,0x20,0x4e,0x75,0x6d,0x20,0x3a,0x20,0x31,0x5d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x54,0x26,0x20, - 0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a, - 0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f, - 0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x65,0x78,0x70,0x72,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72, - 0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61, - 0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70, - 0x6f,0x73,0x29,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x65,0x78, - 0x70,0x72,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20, - 0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28, - 0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x6c, - 0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x65,0x78,0x70,0x72,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x61,0x6e,0x74,0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72, - 0x20,0x5b,0x5d,0x20,0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f, - 0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x67,0x72,0x6f,0x75,0x70,0x20,0x54, - 0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20,0x28,0x73, - 0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x74,0x68,0x72,0x65,0x61, - 0x64,0x67,0x72,0x6f,0x75,0x70,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d, - 0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x65,0x78,0x70,0x72,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x67,0x72,0x6f,0x75,0x70, - 0x20,0x54,0x26,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x5b,0x5d,0x20, - 0x28,0x73,0x69,0x7a,0x65,0x5f,0x74,0x20,0x70,0x6f,0x73,0x29,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x67,0x72,0x6f,0x75,0x70,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x5b,0x70,0x6f,0x73, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72, - 0x75,0x63,0x74,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x78,0x34,0x20,0x69,0x6e,0x76,0x5f,0x76,0x69,0x65,0x77,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x68,0x75,0x6e,0x6b, - 0x5f,0x6f,0x72,0x69,0x67,0x69,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, - 0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f, - 0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f, - 0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65, - 0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x68,0x5f,0x65,0x76,0x61, - 0x6c,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69, - 0x6e,0x74,0x33,0x26,0x20,0x70,0x72,0x6f,0x62,0x65,0x2c,0x20,0x74,0x68,0x72,0x65, - 0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26, - 0x20,0x4e,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c, - 0x6f,0x61,0x74,0x3e,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x68,0x5f,0x73,0x6d,0x70,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x70, - 0x72,0x6f,0x62,0x65,0x2e,0x78,0x20,0x2a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x28,0x70,0x72,0x6f,0x62,0x65, - 0x2e,0x7a,0x20,0x2a,0x20,0x33,0x32,0x29,0x20,0x2b,0x20,0x70,0x72,0x6f,0x62,0x65, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f, - 0x36,0x35,0x20,0x3d,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x72,0x65, - 0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x5f,0x33, - 0x35,0x2c,0x20,0x5f,0x34,0x35,0x29,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x37,0x36,0x20,0x3d,0x20,0x73, - 0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x72,0x65,0x61,0x64,0x28,0x75,0x69,0x6e, - 0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x5f,0x33,0x35,0x20,0x2b,0x20,0x31,0x2c, - 0x20,0x5f,0x34,0x35,0x29,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x38,0x37,0x20,0x3d,0x20,0x73,0x68,0x5f, - 0x63,0x68,0x75,0x6e,0x6b,0x2e,0x72,0x65,0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32, - 0x28,0x69,0x6e,0x74,0x32,0x28,0x5f,0x33,0x35,0x20,0x2b,0x20,0x32,0x2c,0x20,0x5f, - 0x34,0x35,0x29,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30, - 0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35, - 0x20,0x2a,0x20,0x5f,0x36,0x35,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x31,0x2e,0x30, - 0x32,0x33,0x33,0x32,0x36,0x39,0x39,0x32,0x39,0x38,0x38,0x35,0x38,0x36,0x34,0x32, - 0x35,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x36,0x35,0x2e, - 0x77,0x20,0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x5f,0x36,0x35,0x2e, - 0x79,0x20,0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28,0x5f,0x36,0x35, - 0x2e,0x7a,0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29,0x2c,0x20,0x28,0x30,0x2e, - 0x38,0x38,0x36,0x32,0x32,0x37,0x30,0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30, - 0x32,0x37,0x33,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x5f,0x37,0x36,0x2e,0x78,0x29, - 0x20,0x2b,0x20,0x28,0x31,0x2e,0x30,0x32,0x33,0x33,0x32,0x36,0x39,0x39,0x32,0x39, - 0x38,0x38,0x35,0x38,0x36,0x34,0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20, - 0x28,0x28,0x28,0x5f,0x37,0x36,0x2e,0x77,0x20,0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20, - 0x2b,0x20,0x28,0x5f,0x37,0x36,0x2e,0x79,0x20,0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29, - 0x20,0x2b,0x20,0x28,0x5f,0x37,0x36,0x2e,0x7a,0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29, - 0x29,0x29,0x2c,0x20,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30,0x31,0x31, - 0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35,0x20,0x2a, - 0x20,0x5f,0x38,0x37,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x31,0x2e,0x30,0x32,0x33, - 0x33,0x32,0x36,0x39,0x39,0x32,0x39,0x38,0x38,0x35,0x38,0x36,0x34,0x32,0x35,0x37, - 0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x38,0x37,0x2e,0x77,0x20, - 0x2a,0x20,0x4e,0x2e,0x78,0x29,0x20,0x2b,0x20,0x28,0x5f,0x38,0x37,0x2e,0x79,0x20, - 0x2a,0x20,0x4e,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28,0x5f,0x38,0x37,0x2e,0x7a, - 0x20,0x2a,0x20,0x4e,0x2e,0x7a,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33, - 0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28, - 0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x68,0x5f,0x70,0x72,0x6f,0x62,0x65,0x5f,0x65, - 0x6e,0x65,0x72,0x67,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x69,0x6e,0x74,0x33,0x26,0x20,0x70,0x72,0x6f,0x62,0x65,0x2c,0x20, - 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e, - 0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x20,0x73,0x68,0x5f,0x73,0x6d,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x37,0x36,0x20,0x3d,0x20,0x70,0x72,0x6f,0x62, - 0x65,0x2e,0x78,0x20,0x2a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x5f,0x31,0x38,0x33,0x20,0x3d,0x20,0x28,0x70,0x72,0x6f,0x62,0x65,0x2e,0x7a, - 0x20,0x2a,0x20,0x33,0x32,0x29,0x20,0x2b,0x20,0x70,0x72,0x6f,0x62,0x65,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x30,0x2e,0x38,0x38,0x36,0x32,0x32,0x37,0x30, - 0x31,0x31,0x36,0x38,0x30,0x36,0x30,0x33,0x30,0x32,0x37,0x33,0x34,0x33,0x37,0x35, - 0x20,0x2a,0x20,0x28,0x28,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x72,0x65, - 0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x5f,0x31, - 0x37,0x36,0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x29,0x2c,0x20,0x30,0x29,0x2e,0x78, - 0x20,0x2b,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x72,0x65,0x61,0x64, - 0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x5f,0x31,0x37,0x36, - 0x20,0x2b,0x20,0x31,0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x29,0x2c,0x20,0x30,0x29, - 0x2e,0x78,0x29,0x20,0x2b,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2e,0x72, - 0x65,0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x5f, - 0x31,0x37,0x36,0x20,0x2b,0x20,0x32,0x2c,0x20,0x5f,0x31,0x38,0x33,0x29,0x29,0x2c, - 0x20,0x30,0x29,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f, - 0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c, - 0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x73,0x68,0x5f,0x65,0x76,0x61,0x6c,0x5f,0x74,0x72,0x69, - 0x6c,0x69,0x6e,0x65,0x61,0x72,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x33,0x26,0x20,0x70,0x30,0x2c,0x20,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x33,0x26, - 0x20,0x70,0x31,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x74,0x2c,0x20,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x26,0x20,0x4e,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66, - 0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65, - 0x72,0x72,0x65,0x64,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x33,0x35, - 0x39,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61, - 0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c,0x20,0x32, - 0x3e,0x20,0x5f,0x32,0x33,0x34,0x20,0x3d,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61, - 0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c,0x20,0x32, - 0x3e,0x28,0x7b,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x74,0x2e,0x78,0x2c,0x20,0x74, - 0x2e,0x78,0x20,0x7d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x70,0x76,0x55,0x6e, - 0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c, - 0x20,0x32,0x3e,0x20,0x77,0x78,0x20,0x3d,0x20,0x5f,0x32,0x33,0x34,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61, - 0x79,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c,0x20,0x32,0x3e,0x20,0x5f,0x32,0x34,0x31, - 0x20,0x3d,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61, - 0x79,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c,0x20,0x32,0x3e,0x28,0x7b,0x20,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x74,0x2e,0x79,0x2c,0x20,0x74,0x2e,0x79,0x20,0x7d,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x73,0x70,0x76,0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72, - 0x72,0x61,0x79,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c,0x20,0x32,0x3e,0x20,0x77,0x79, - 0x20,0x3d,0x20,0x5f,0x32,0x34,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x70,0x76, - 0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x66,0x6c,0x6f,0x61, - 0x74,0x2c,0x20,0x32,0x3e,0x20,0x5f,0x32,0x34,0x38,0x20,0x3d,0x20,0x73,0x70,0x76, - 0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x66,0x6c,0x6f,0x61, - 0x74,0x2c,0x20,0x32,0x3e,0x28,0x7b,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x74,0x2e, - 0x7a,0x2c,0x20,0x74,0x2e,0x7a,0x20,0x7d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73, - 0x70,0x76,0x55,0x6e,0x73,0x61,0x66,0x65,0x41,0x72,0x72,0x61,0x79,0x3c,0x66,0x6c, - 0x6f,0x61,0x74,0x2c,0x20,0x32,0x3e,0x20,0x77,0x7a,0x20,0x3d,0x20,0x5f,0x32,0x34, - 0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x72,0x65, - 0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x75, - 0x6e,0x77,0x65,0x69,0x67,0x68,0x74,0x65,0x64,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x20,0x3d,0x20,0x30,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32,0x38,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32,0x39,0x31,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x7a,0x20,0x3d,0x20,0x30,0x3b, - 0x20,0x69,0x7a,0x20,0x3c,0x20,0x32,0x3b,0x20,0x69,0x7a,0x2b,0x2b,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, - 0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79, - 0x20,0x3c,0x20,0x32,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20, - 0x30,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x32,0x3b,0x20,0x69,0x78,0x2b,0x2b,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x69,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x32,0x38,0x30,0x20,0x3d,0x20,0x70,0x30,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x38,0x30, - 0x20,0x3d,0x20,0x70,0x31,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69, - 0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32, - 0x39,0x31,0x20,0x3d,0x20,0x70,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x39,0x31,0x20,0x3d,0x20,0x70, - 0x31,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x7a,0x20,0x3d,0x3d, - 0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x30,0x32,0x20,0x3d, - 0x20,0x70,0x30,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x33,0x30,0x32,0x20,0x3d,0x20,0x70,0x31,0x2e,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x5f,0x33,0x31,0x31,0x20,0x3d,0x20,0x69, - 0x6e,0x74,0x33,0x28,0x5f,0x32,0x38,0x30,0x2c,0x20,0x5f,0x32,0x39,0x31,0x2c,0x20, - 0x5f,0x33,0x30,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x20,0x3d,0x20,0x5f,0x33,0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x31,0x37,0x20,0x3d,0x20,0x73,0x68,0x5f,0x65, - 0x76,0x61,0x6c,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x2c,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20,0x73,0x68, - 0x5f,0x73,0x6d,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x32, - 0x39,0x20,0x3d,0x20,0x28,0x77,0x78,0x5b,0x69,0x78,0x5d,0x20,0x2a,0x20,0x77,0x79, - 0x5b,0x69,0x79,0x5d,0x29,0x20,0x2a,0x20,0x77,0x7a,0x5b,0x69,0x7a,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f, - 0x33,0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x35,0x20, - 0x3d,0x20,0x5f,0x33,0x32,0x39,0x20,0x2a,0x20,0x73,0x68,0x5f,0x70,0x72,0x6f,0x62, - 0x65,0x5f,0x65,0x6e,0x65,0x72,0x67,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x2c,0x20,0x73,0x68,0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20,0x73,0x68,0x5f,0x73, - 0x6d,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x28, - 0x5f,0x33,0x31,0x37,0x20,0x2a,0x20,0x5f,0x33,0x33,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x6e, - 0x77,0x65,0x69,0x67,0x68,0x74,0x65,0x64,0x20,0x2b,0x3d,0x20,0x28,0x5f,0x33,0x31, - 0x37,0x20,0x2a,0x20,0x5f,0x33,0x32,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c, - 0x5f,0x77,0x20,0x2b,0x3d,0x20,0x5f,0x33,0x33,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x37,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x20,0x3e,0x20,0x30,0x2e,0x30, - 0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35, - 0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x33,0x37,0x31,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x77,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33, - 0x37,0x31,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x75, - 0x6e,0x77,0x65,0x69,0x67,0x68,0x74,0x65,0x64,0x2c,0x20,0x5f,0x33,0x35,0x39,0x2e, - 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x33, - 0x35,0x39,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x2e,0x77,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x5f,0x33,0x37,0x31,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b, - 0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x61,0x6e,0x74,0x20,0x73,0x68,0x5f,0x64,0x65,0x66,0x65,0x72,0x72,0x65,0x64, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x33,0x35,0x39,0x20,0x5b,0x5b, - 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x68, - 0x5f,0x63,0x68,0x75,0x6e,0x6b,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64, - 0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x67,0x62,0x75,0x66,0x5f,0x77,0x6f,0x72, - 0x6c,0x64,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c, - 0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x67,0x62,0x75,0x66,0x5f,0x6e,0x6f,0x72,0x6d, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d,0x5d,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x68,0x5f,0x73,0x6d,0x70,0x20, - 0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20, - 0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x39,0x34,0x20,0x3d,0x20,0x67,0x62,0x75,0x66, - 0x5f,0x77,0x6f,0x72,0x6c,0x64,0x70,0x6f,0x73,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x28,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x71,0x75,0x61,0x64, - 0x5f,0x75,0x76,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33, - 0x39,0x34,0x2e,0x77,0x20,0x3c,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72, - 0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x34,0x30,0x34,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x31,0x38,0x20,0x3d,0x20, - 0x61,0x6e,0x79,0x28,0x5f,0x34,0x30,0x34,0x20,0x3c,0x20,0x5f,0x33,0x35,0x39,0x2e, - 0x63,0x68,0x75,0x6e,0x6b,0x5f,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2e,0x78,0x79,0x7a, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x32,0x36, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x21,0x5f,0x34,0x31,0x38,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x34,0x32,0x36,0x20,0x3d,0x20,0x61,0x6e,0x79,0x28,0x5f,0x34,0x30,0x34,0x20,0x3e, - 0x3d,0x20,0x28,0x5f,0x33,0x35,0x39,0x2e,0x63,0x68,0x75,0x6e,0x6b,0x5f,0x6f,0x72, - 0x69,0x67,0x69,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x33,0x32,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f, - 0x34,0x31,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x34,0x32,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66, - 0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x34,0x36,0x36, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28, - 0x5f,0x34,0x30,0x34,0x20,0x2d,0x20,0x28,0x5f,0x33,0x35,0x39,0x2e,0x63,0x68,0x75, - 0x6e,0x6b,0x5f,0x6f,0x72,0x69,0x67,0x69,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x32,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x38,0x38,0x38,0x38,0x38,0x38,0x38, - 0x39,0x35,0x35,0x31,0x31,0x36,0x32,0x37,0x31,0x39,0x37,0x32,0x36,0x35,0x36,0x32, - 0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x33,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x5f,0x34,0x37,0x30,0x20,0x3d,0x20, - 0x69,0x6e,0x74,0x33,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x5f,0x34,0x36,0x36,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x20,0x3d,0x20,0x5f,0x34,0x37,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x6e, - 0x28,0x28,0x5f,0x34,0x37,0x30,0x20,0x2b,0x20,0x69,0x6e,0x74,0x33,0x28,0x31,0x29, - 0x29,0x2c,0x20,0x69,0x6e,0x74,0x33,0x28,0x33,0x31,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x5f,0x34,0x36,0x36,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x33,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x5f,0x33, - 0x35,0x39,0x2e,0x69,0x6e,0x76,0x5f,0x76,0x69,0x65,0x77,0x5b,0x30,0x5d,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x5f,0x33,0x35,0x39,0x2e,0x69,0x6e,0x76,0x5f,0x76,0x69,0x65, - 0x77,0x5b,0x31,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x33,0x35,0x39,0x2e,0x69, - 0x6e,0x76,0x5f,0x76,0x69,0x65,0x77,0x5b,0x32,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x67,0x62,0x75,0x66,0x5f,0x6e,0x6f,0x72,0x6d,0x2e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x28,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x71,0x75, - 0x61,0x64,0x5f,0x75,0x76,0x29,0x2e,0x78,0x79,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x73,0x68,0x5f,0x65,0x76,0x61, - 0x6c,0x5f,0x74,0x72,0x69,0x6c,0x69,0x6e,0x65,0x61,0x72,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x73,0x68, - 0x5f,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20,0x73,0x68,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x5f,0x33,0x35,0x39,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -sh_deferred_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "sh_deferred_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_sh_deferred_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_sh_deferred_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 96; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 6; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "sh_deferred_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "gbuf_worldpos_sh_smp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[1].glsl_name = "gbuf_norm_sh_smp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "sh_chunk_sh_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_sh_deferred_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_sh_deferred_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 96; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 6; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "sh_deferred_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "gbuf_worldpos_sh_smp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[1].glsl_name = "gbuf_norm_sh_smp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "sh_chunk_sh_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_sh_deferred_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_sh_deferred_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .FRAGMENT; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 96; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 1; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 2; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[2].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_sky.jai b/src/shaders/jai/shader_sky.jai deleted file mode 100644 index 039a02a..0000000 --- a/src/shaders/jai/shader_sky.jai +++ /dev/null @@ -1,821 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_sky.glsl -o ./jai/shader_sky.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'sky': - Get shader desc: sky_shader_desc(sg_query_backend()) - Vertex Shader: vs_sky - Fragment Shader: fs_sky - Attributes: - ATTR_sky_position => 0 - Bindings: - Uniform block 'sky_vs_params': - Jai struct: Sky_Vs_Params - Bind slot: UB_sky_vs_params => 0 - Uniform block 'sky_world_config': - Jai struct: Sky_World_Config - Bind slot: UB_sky_world_config => 1 -*/ -ATTR_sky_position :: 0; -UB_sky_vs_params :: 0; -UB_sky_world_config :: 1; -Sky_Vs_Params :: struct { - mvp: [16]float; -}; -Sky_World_Config :: struct { - skyBase: [3]float; - _: [4]u8; - skyTop: [3]float; - _: [4]u8; - sunDisk: [3]float; - _: [4]u8; - horizonHalo: [3]float; - _: [4]u8; - sunHalo: [3]float; - _: [4]u8; - sunLightColor: [3]float; - _: [4]u8; - sunPosition: [3]float; - sunIntensity: float; - skyIntensity: float; - hasClouds: s32; - planeHeight: float; - animatePlaneHeight: s32; - waterColor: [3]float; - _: [4]u8; - deepColor: [3]float; - time: float; -}; -/* - #version 430 - - uniform vec4 sky_vs_params[4]; - layout(location = 0) in vec4 position; - layout(location = 0) out vec4 pos; - - void main() - { - gl_Position = mat4(sky_vs_params[0], sky_vs_params[1], sky_vs_params[2], sky_vs_params[3]) * vec4(position.xyz * 1000.0, 1.0); - pos = position; - } - -*/ -vs_sky_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x73,0x6b,0x79,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63, - 0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x73,0x6b,0x79, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x73, - 0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c, - 0x20,0x73,0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32, - 0x5d,0x2c,0x20,0x73,0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #version 430 - - struct sky_world_config - { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - float time; - }; - - uniform sky_world_config _18; - - layout(location = 0) in vec4 pos; - layout(location = 0) out vec4 frag_color; - - vec3 sky(vec3 skypos, vec3 sunpos) - { - vec3 _57 = normalize(sunpos); - vec3 _63 = normalize(cross(_57, vec3(0.0, 1.0, 0.0))); - vec3 _75 = normalize(skypos) - (_57 * dot(normalize(skypos), normalize(sunpos))); - float _89 = max(abs(dot(_75, _63)), abs(dot(_75, normalize(cross(_63, _57))))); - float _98 = clamp((0.25 - _89) * 6.0, 0.0, 1.0); - vec3 final = mix(_18.skyBase, _18.skyTop, vec3(clamp(skypos.y * 2.0, 0.0, 0.699999988079071044921875))) + ((_18.sunHalo * _98) * _98); - if (_89 < 0.0320000015199184417724609375) - { - final = _18.sunDisk * 3.0; - } - vec3 _132 = final; - vec3 _133 = _132 + (mix(_18.horizonHalo, vec3(0.0), vec3(clamp(abs(normalize(skypos).y) * 20.0, 0.0, 1.0))) * 0.800000011920928955078125); - final = _133; - return _133; - } - - void main() - { - vec3 param = normalize(pos.xyz); - vec3 param_1 = _18.sunPosition; - frag_color = vec4(sky(param, param_1) * _18.skyIntensity, 1.0); - } - -*/ -fs_sky_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x73,0x6b,0x79,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63, - 0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c, - 0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x48, - 0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75, - 0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e, - 0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c, - 0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,0x6d,0x65, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x6b, - 0x79,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f, - 0x31,0x38,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x28,0x76,0x65,0x63,0x33,0x20, - 0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e, - 0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x35,0x37,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f,0x35,0x37,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x35, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79, - 0x70,0x6f,0x73,0x29,0x20,0x2d,0x20,0x28,0x5f,0x35,0x37,0x20,0x2a,0x20,0x64,0x6f, - 0x74,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70, - 0x6f,0x73,0x29,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73, - 0x75,0x6e,0x70,0x6f,0x73,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x38,0x39,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x61,0x62, - 0x73,0x28,0x64,0x6f,0x74,0x28,0x5f,0x37,0x35,0x2c,0x20,0x5f,0x36,0x33,0x29,0x29, - 0x2c,0x20,0x61,0x62,0x73,0x28,0x64,0x6f,0x74,0x28,0x5f,0x37,0x35,0x2c,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f, - 0x36,0x33,0x2c,0x20,0x5f,0x35,0x37,0x29,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x38,0x20,0x3d,0x20,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x28,0x30,0x2e,0x32,0x35,0x20,0x2d,0x20,0x5f,0x38,0x39,0x29, - 0x20,0x2a,0x20,0x36,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x69,0x6e,0x61, - 0x6c,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79,0x42, - 0x61,0x73,0x65,0x2c,0x20,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x6b,0x79,0x70, - 0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, - 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x28,0x5f,0x31,0x38,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x20,0x2a, - 0x20,0x5f,0x39,0x38,0x29,0x20,0x2a,0x20,0x5f,0x39,0x38,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x39,0x20,0x3c,0x20,0x30,0x2e,0x30,0x33, - 0x32,0x30,0x30,0x30,0x30,0x30,0x31,0x35,0x31,0x39,0x39,0x31,0x38,0x34,0x34,0x31, - 0x37,0x37,0x32,0x34,0x36,0x30,0x39,0x33,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x69,0x6e,0x61,0x6c,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x2e,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x20,0x2a,0x20, - 0x33,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x31,0x33,0x32,0x20,0x3d,0x20,0x66,0x69,0x6e,0x61,0x6c, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x33,0x33,0x20, - 0x3d,0x20,0x5f,0x31,0x33,0x32,0x20,0x2b,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31, - 0x38,0x2e,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63, - 0x6c,0x61,0x6d,0x70,0x28,0x61,0x62,0x73,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x2e,0x79,0x29,0x20,0x2a,0x20, - 0x32,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39, - 0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x69,0x6e,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x31,0x33, - 0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31, - 0x33,0x33,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x31,0x38, - 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x38,0x2e,0x73,0x6b, - 0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 sky_vs_params[4]; - layout(location = 0) in vec4 position; - out vec4 pos; - - void main() - { - gl_Position = mat4(sky_vs_params[0], sky_vs_params[1], sky_vs_params[2], sky_vs_params[3]) * vec4(position.xyz * 1000.0, 1.0); - pos = position; - } - -*/ -vs_sky_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x73,0x6b, - 0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20, - 0x70,0x6f,0x73,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x73,0x6b,0x79,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x73,0x6b,0x79, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x73, - 0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c, - 0x20,0x73,0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33, - 0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d, - 0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct sky_world_config - { - highp vec3 skyBase; - highp vec3 skyTop; - highp vec3 sunDisk; - highp vec3 horizonHalo; - highp vec3 sunHalo; - highp vec3 sunLightColor; - highp vec3 sunPosition; - highp float sunIntensity; - highp float skyIntensity; - int hasClouds; - highp float planeHeight; - int animatePlaneHeight; - highp vec3 waterColor; - highp vec3 deepColor; - highp float time; - }; - - uniform sky_world_config _18; - - in highp vec4 pos; - layout(location = 0) out highp vec4 frag_color; - - highp vec3 sky(highp vec3 skypos, highp vec3 sunpos) - { - highp vec3 _57 = normalize(sunpos); - highp vec3 _63 = normalize(cross(_57, vec3(0.0, 1.0, 0.0))); - highp vec3 _75 = normalize(skypos) - (_57 * dot(normalize(skypos), normalize(sunpos))); - highp float _89 = max(abs(dot(_75, _63)), abs(dot(_75, normalize(cross(_63, _57))))); - highp float _98 = clamp((0.25 - _89) * 6.0, 0.0, 1.0); - highp vec3 final = mix(_18.skyBase, _18.skyTop, vec3(clamp(skypos.y * 2.0, 0.0, 0.699999988079071044921875))) + ((_18.sunHalo * _98) * _98); - if (_89 < 0.0320000015199184417724609375) - { - final = _18.sunDisk * 3.0; - } - highp vec3 _132 = final; - highp vec3 _133 = _132 + (mix(_18.horizonHalo, vec3(0.0), vec3(clamp(abs(normalize(skypos).y) * 20.0, 0.0, 1.0))) * 0.800000011920928955078125); - final = _133; - return _133; - } - - void main() - { - highp vec3 param = normalize(pos.xyz); - highp vec3 param_1 = _18.sunPosition; - frag_color = vec4(sky(param, param_1) * _18.skyIntensity, 1.0); - } - -*/ -fs_sky_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x6b,0x79,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f, - 0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x68, - 0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x48,0x61, - 0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75, - 0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49, - 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61, - 0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48,0x65, - 0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,0x6d,0x65,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x6b,0x79, - 0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x31, - 0x38,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x6b,0x79,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35, - 0x37,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75, - 0x6e,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f,0x35,0x37,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x20,0x2d, - 0x20,0x28,0x5f,0x35,0x37,0x20,0x2a,0x20,0x64,0x6f,0x74,0x28,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x2c,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x38,0x39,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x61,0x62, - 0x73,0x28,0x64,0x6f,0x74,0x28,0x5f,0x37,0x35,0x2c,0x20,0x5f,0x36,0x33,0x29,0x29, - 0x2c,0x20,0x61,0x62,0x73,0x28,0x64,0x6f,0x74,0x28,0x5f,0x37,0x35,0x2c,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f, - 0x36,0x33,0x2c,0x20,0x5f,0x35,0x37,0x29,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39, - 0x38,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x30,0x2e,0x32,0x35,0x20, - 0x2d,0x20,0x5f,0x38,0x39,0x29,0x20,0x2a,0x20,0x36,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x69,0x6e,0x61,0x6c,0x20,0x3d,0x20, - 0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c, - 0x20,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2e,0x79, - 0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36, - 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34, - 0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f, - 0x31,0x38,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x20,0x2a,0x20,0x5f,0x39,0x38, - 0x29,0x20,0x2a,0x20,0x5f,0x39,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x39,0x20,0x3c,0x20,0x30,0x2e,0x30,0x33,0x32,0x30,0x30,0x30, - 0x30,0x30,0x31,0x35,0x31,0x39,0x39,0x31,0x38,0x34,0x34,0x31,0x37,0x37,0x32,0x34, - 0x36,0x30,0x39,0x33,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x69,0x6e,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x31, - 0x38,0x2e,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x20,0x2a,0x20,0x33,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x33,0x32,0x20,0x3d,0x20,0x66,0x69,0x6e, - 0x61,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x33,0x33,0x20,0x3d,0x20,0x5f,0x31,0x33,0x32,0x20,0x2b, - 0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x2e,0x68,0x6f,0x72,0x69,0x7a,0x6f, - 0x6e,0x48,0x61,0x6c,0x6f,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x61,0x62,0x73, - 0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f, - 0x73,0x29,0x2e,0x79,0x29,0x20,0x2a,0x20,0x32,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x38,0x30, - 0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35, - 0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x69,0x6e, - 0x61,0x6c,0x20,0x3d,0x20,0x5f,0x31,0x33,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x33,0x33,0x3b,0x0a,0x7d,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f, - 0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d, - 0x20,0x5f,0x31,0x38,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x38,0x2e,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct sky_vs_params - { - float4x4 mvp; - }; - - struct main0_out - { - float4 pos [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant sky_vs_params& _19 [[buffer(0)]]) - { - main0_out out = {}; - out.gl_Position = _19.mvp * float4(in.position.xyz * 1000.0, 1.0); - out.pos = in.position; - return out; - } - -*/ -vs_sky_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73, - 0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, - 0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72, - 0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x6b,0x79,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x39,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66, - 0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b, - 0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x39,0x2e,0x6d,0x76,0x70, - 0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct sky_world_config - { - float3 skyBase; - float3 skyTop; - float3 sunDisk; - float3 horizonHalo; - float3 sunHalo; - float3 sunLightColor; - packed_float3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - float3 waterColor; - packed_float3 deepColor; - float time; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float4 pos [[user(locn0)]]; - }; - - static inline __attribute__((always_inline)) - float3 sky(thread const float3& skypos, thread const float3& sunpos, constant sky_world_config& _18) - { - float3 _57 = fast::normalize(sunpos); - float3 _63 = fast::normalize(cross(_57, float3(0.0, 1.0, 0.0))); - float3 _75 = fast::normalize(skypos) - (_57 * dot(fast::normalize(skypos), fast::normalize(sunpos))); - float _89 = fast::max(abs(dot(_75, _63)), abs(dot(_75, fast::normalize(cross(_63, _57))))); - float _98 = fast::clamp((0.25 - _89) * 6.0, 0.0, 1.0); - float3 final = mix(_18.skyBase, _18.skyTop, float3(fast::clamp(skypos.y * 2.0, 0.0, 0.699999988079071044921875))) + ((_18.sunHalo * _98) * _98); - if (_89 < 0.0320000015199184417724609375) - { - final = _18.sunDisk * 3.0; - } - float3 _132 = final; - float3 _133 = _132 + (mix(_18.horizonHalo, float3(0.0), float3(fast::clamp(abs(fast::normalize(skypos).y) * 20.0, 0.0, 1.0))) * 0.800000011920928955078125); - final = _133; - return _133; - } - - fragment main0_out main0(main0_in in [[stage_in]], constant sky_world_config& _18 [[buffer(0)]]) - { - main0_out out = {}; - float3 param = fast::normalize(in.pos.xyz); - float3 param_1 = float3(_18.sunPosition); - out.frag_color = float4(sky(param, param_1, _18) * _18.skyIntensity, 1.0); - return out; - } - -*/ -fs_sky_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x6b,0x79,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e, - 0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e, - 0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75, - 0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79, - 0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69, - 0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69, - 0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x77,0x61,0x74,0x65, - 0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b, - 0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74, - 0x69,0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63, - 0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62, - 0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e, - 0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b, - 0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x26,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x2c,0x20,0x63,0x6f,0x6e,0x73, - 0x74,0x61,0x6e,0x74,0x20,0x73,0x6b,0x79,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63, - 0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x31,0x38,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x37,0x20,0x3d,0x20,0x66, - 0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73, - 0x75,0x6e,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x36,0x33,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f, - 0x35,0x37,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x37,0x35,0x20,0x3d,0x20,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b, - 0x79,0x70,0x6f,0x73,0x29,0x20,0x2d,0x20,0x28,0x5f,0x35,0x37,0x20,0x2a,0x20,0x64, - 0x6f,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x2c,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e,0x70, - 0x6f,0x73,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x38,0x39,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78, - 0x28,0x61,0x62,0x73,0x28,0x64,0x6f,0x74,0x28,0x5f,0x37,0x35,0x2c,0x20,0x5f,0x36, - 0x33,0x29,0x29,0x2c,0x20,0x61,0x62,0x73,0x28,0x64,0x6f,0x74,0x28,0x5f,0x37,0x35, - 0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f,0x36,0x33,0x2c,0x20,0x5f,0x35,0x37, - 0x29,0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x39,0x38,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x28,0x30,0x2e,0x32,0x35,0x20,0x2d,0x20,0x5f,0x38,0x39,0x29,0x20, - 0x2a,0x20,0x36,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x66,0x69,0x6e, - 0x61,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79, - 0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63, - 0x6c,0x61,0x6d,0x70,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20, - 0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39, - 0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x31,0x38,0x2e, - 0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x20,0x2a,0x20,0x5f,0x39,0x38,0x29,0x20,0x2a, - 0x20,0x5f,0x39,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x39,0x20,0x3c,0x20,0x30,0x2e,0x30,0x33,0x32,0x30,0x30,0x30,0x30,0x30,0x31, - 0x35,0x31,0x39,0x39,0x31,0x38,0x34,0x34,0x31,0x37,0x37,0x32,0x34,0x36,0x30,0x39, - 0x33,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x69,0x6e,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x31,0x38,0x2e,0x73, - 0x75,0x6e,0x44,0x69,0x73,0x6b,0x20,0x2a,0x20,0x33,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x31,0x33,0x32,0x20,0x3d,0x20,0x66,0x69,0x6e,0x61,0x6c,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x33,0x33,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x32,0x20,0x2b,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x2e,0x68, - 0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x61,0x62,0x73,0x28, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x2e,0x79,0x29,0x20,0x2a,0x20,0x32,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39, - 0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x69,0x6e,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x31,0x33,0x33,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x33,0x33,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65, - 0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, - 0x73,0x6b,0x79,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67, - 0x26,0x20,0x5f,0x31,0x38,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30, - 0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x38,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x73,0x6b,0x79,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x5f,0x31,0x38, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x38,0x2e,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -sky_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "sky_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_sky_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_sky_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "sky_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 160; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_18.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_18.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_18.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_18.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_18.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_18.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_18.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_18.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_18.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_18.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_18.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_18.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_18.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_18.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_18.time"; - case .GLES3; - desc.vertex_func.source = xx *vs_sky_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_sky_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "sky_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 160; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_18.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_18.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_18.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_18.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_18.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_18.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_18.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_18.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_18.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_18.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_18.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_18.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_18.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_18.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_18.time"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_sky_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_sky_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 160; - desc.uniform_blocks[1].msl_buffer_n = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_ssao.jai b/src/shaders/jai/shader_ssao.jai deleted file mode 100644 index 62f95ec..0000000 --- a/src/shaders/jai/shader_ssao.jai +++ /dev/null @@ -1,798 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_ssao.glsl -o ./jai/shader_ssao.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'ssao': - Get shader desc: ssao_shader_desc(sg_query_backend()) - Vertex Shader: vs_ssao - Fragment Shader: fs_ssao - Attributes: - ATTR_ssao_position => 0 - ATTR_ssao_uv => 1 - Bindings: - Uniform block 'ssao_fs_params': - Jai struct: Ssao_Fs_Params - Bind slot: UB_ssao_fs_params => 1 - Image 'g_position': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_g_position => 0 - Image 'g_normal': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_g_normal => 1 - Image 'tex_noise': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_tex_noise => 2 - Sampler 'ssao_smp': - Type: .FILTERING - Bind slot: SMP_ssao_smp => 0 -*/ -ATTR_ssao_position :: 0; -ATTR_ssao_uv :: 1; -UB_ssao_fs_params :: 1; -IMG_g_position :: 0; -IMG_g_normal :: 1; -IMG_tex_noise :: 2; -SMP_ssao_smp :: 0; -Ssao_Fs_Params :: struct { - projection: [16]float; - samples: [64][4]float; - ssao_power: float; - _: [12]u8; -}; -/* - #version 430 - - layout(location = 0) in vec2 position; - layout(location = 0) out vec2 quad_uv; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.0, 1.0); - quad_uv = uv; - } - -*/ -vs_ssao_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x71,0x75,0x61,0x64, - 0x5f,0x75,0x76,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - vec4 _222; - - uniform vec4 ssao_fs_params[69]; - layout(binding = 16) uniform sampler2D g_position_ssao_smp; - layout(binding = 17) uniform sampler2D g_normal_ssao_smp; - layout(binding = 18) uniform sampler2D tex_noise_ssao_smp; - - layout(location = 0) in vec2 quad_uv; - layout(location = 0) out vec4 out_color; - - void main() - { - vec3 _26 = texture(g_position_ssao_smp, quad_uv).xyz; - vec3 _35 = normalize(texture(g_normal_ssao_smp, quad_uv).xyz); - vec3 _51 = normalize(texture(tex_noise_ssao_smp, quad_uv * vec2(480.0, 270.0)).xyz); - vec3 _60 = normalize(_51 - (_35 * dot(_51, _35))); - mat3 _85 = mat3(_60, cross(_35, _60), _35); - float occlusion = 0.0; - for (int i = 0; i < 16; i++) - { - vec3 _121 = _26 + ((_85 * ssao_fs_params[i * 1 + 4].xyz) * 0.5); - vec4 _133 = mat4(ssao_fs_params[0], ssao_fs_params[1], ssao_fs_params[2], ssao_fs_params[3]) * vec4(_121, 1.0); - vec3 _140 = _133.xyz / vec3(_133.w); - vec4 _206; - _206.x = _140.x; - _206.y = _140.y; - vec3 _154 = (_206.xyz * 0.5) + vec3(0.5); - vec4 _212; - _212.x = _154.x; - _212.y = _154.y; - float occluded = 0.0; - if ((_121.z + 0.00999999977648258209228515625) <= texture(g_position_ssao_smp, _212.xy).z) - { - occluded = 1.0; - } - else - { - occluded = 0.0; - } - occlusion += occluded; - } - float _187 = occlusion; - float _190 = 1.0 - (_187 * 0.015625); - occlusion = _190; - float _198 = pow(_190, ssao_fs_params[68].x); - out_color = vec4(_198, _198, _198, 1.0); - } - -*/ -fs_ssao_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x76,0x65, - 0x63,0x34,0x20,0x5f,0x32,0x32,0x32,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x39,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36,0x29,0x20, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x73,0x61, - 0x6f,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69, - 0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x67,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20, - 0x3d,0x20,0x31,0x38,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x5f,0x6e,0x6f,0x69,0x73, - 0x65,0x5f,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75, - 0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, - 0x20,0x6f,0x75,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69, - 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x32,0x36,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x73,0x61, - 0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33, - 0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x73, - 0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76, - 0x29,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, - 0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x5f,0x6e,0x6f,0x69, - 0x73,0x65,0x5f,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x71,0x75,0x61, - 0x64,0x5f,0x75,0x76,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x34,0x38,0x30,0x2e, - 0x30,0x2c,0x20,0x32,0x37,0x30,0x2e,0x30,0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x30,0x20,0x3d,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x31,0x20,0x2d,0x20, - 0x28,0x5f,0x33,0x35,0x20,0x2a,0x20,0x64,0x6f,0x74,0x28,0x5f,0x35,0x31,0x2c,0x20, - 0x5f,0x33,0x35,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33, - 0x20,0x5f,0x38,0x35,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x5f,0x36,0x30,0x2c, - 0x20,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f,0x33,0x35,0x2c,0x20,0x5f,0x36,0x30,0x29, - 0x2c,0x20,0x5f,0x33,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20, - 0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x31,0x36,0x3b,0x20,0x69, - 0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x31,0x20,0x3d,0x20,0x5f,0x32, - 0x36,0x20,0x2b,0x20,0x28,0x28,0x5f,0x38,0x35,0x20,0x2a,0x20,0x73,0x73,0x61,0x6f, - 0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x69,0x20,0x2a,0x20,0x31, - 0x20,0x2b,0x20,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x31,0x33,0x33,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x73,0x73,0x61,0x6f, - 0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x73, - 0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d, - 0x2c,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x32,0x5d,0x2c,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f, - 0x31,0x32,0x31,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x30,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x33,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x31,0x33,0x33,0x2e,0x77,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x32,0x30,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x30,0x36,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x34,0x30, - 0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x36, - 0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x34,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x34,0x20,0x3d, - 0x20,0x28,0x5f,0x32,0x30,0x36,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x35, - 0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x32,0x31,0x32, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x32,0x2e,0x78, - 0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x31,0x32,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x20,0x3d,0x20,0x30,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f, - 0x31,0x32,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39, - 0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32, - 0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x3c,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x73, - 0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x32,0x31,0x32,0x2e,0x78,0x79, - 0x29,0x2e,0x7a,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75, - 0x64,0x65,0x64,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64, - 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73, - 0x69,0x6f,0x6e,0x20,0x2b,0x3d,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x38,0x37,0x20,0x3d,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73,0x69,0x6f, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39, - 0x30,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x5f,0x31,0x38,0x37,0x20, - 0x2a,0x20,0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x63,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x39, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39, - 0x38,0x20,0x3d,0x20,0x70,0x6f,0x77,0x28,0x5f,0x31,0x39,0x30,0x2c,0x20,0x73,0x73, - 0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x38,0x5d, - 0x2e,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31,0x39,0x38,0x2c,0x20, - 0x5f,0x31,0x39,0x38,0x2c,0x20,0x5f,0x31,0x39,0x38,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec2 position; - out vec2 quad_uv; - layout(location = 1) in vec2 uv; - - void main() - { - gl_Position = vec4(position, 0.0, 1.0); - quad_uv = uv; - } - -*/ -vs_ssao_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, - 0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, - 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x71,0x75,0x61,0x64,0x5f,0x75, - 0x76,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - vec4 _222; - - uniform highp vec4 ssao_fs_params[69]; - uniform highp sampler2D g_position_ssao_smp; - uniform highp sampler2D g_normal_ssao_smp; - uniform highp sampler2D tex_noise_ssao_smp; - - in highp vec2 quad_uv; - layout(location = 0) out highp vec4 out_color; - - void main() - { - highp vec3 _26 = texture(g_position_ssao_smp, quad_uv).xyz; - highp vec3 _35 = normalize(texture(g_normal_ssao_smp, quad_uv).xyz); - highp vec3 _51 = normalize(texture(tex_noise_ssao_smp, quad_uv * vec2(480.0, 270.0)).xyz); - highp vec3 _60 = normalize(_51 - (_35 * dot(_51, _35))); - highp mat3 _85 = mat3(_60, cross(_35, _60), _35); - highp float occlusion = 0.0; - for (int i = 0; i < 16; i++) - { - highp vec3 _121 = _26 + ((_85 * ssao_fs_params[i * 1 + 4].xyz) * 0.5); - highp vec4 _133 = mat4(ssao_fs_params[0], ssao_fs_params[1], ssao_fs_params[2], ssao_fs_params[3]) * vec4(_121, 1.0); - highp vec3 _140 = _133.xyz / vec3(_133.w); - highp vec4 _206; - _206.x = _140.x; - _206.y = _140.y; - highp vec3 _154 = (_206.xyz * 0.5) + vec3(0.5); - highp vec4 _212; - _212.x = _154.x; - _212.y = _154.y; - highp float occluded = 0.0; - if ((_121.z + 0.00999999977648258209228515625) <= texture(g_position_ssao_smp, _212.xy).z) - { - occluded = 1.0; - } - else - { - occluded = 0.0; - } - occlusion += occluded; - } - highp float _187 = occlusion; - highp float _190 = 1.0 - (_187 * 0.015625); - occlusion = _190; - highp float _198 = pow(_190, ssao_fs_params[68].x); - out_color = vec4(_198, _198, _198, 1.0); - } - -*/ -fs_ssao_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x32,0x32,0x32,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x73,0x73, - 0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x39,0x5d, - 0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x67,0x5f,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x5f,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f, - 0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x74,0x65,0x78,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x5f,0x73,0x73,0x61,0x6f, - 0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x6f,0x75,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f, - 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x36,0x20,0x3d, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x5f,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x71,0x75, - 0x61,0x64,0x5f,0x75,0x76,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x35,0x20,0x3d, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x73,0x73,0x61,0x6f, - 0x5f,0x73,0x6d,0x70,0x2c,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x2e,0x78, - 0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x35,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x5f, - 0x6e,0x6f,0x69,0x73,0x65,0x5f,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x34, - 0x38,0x30,0x2e,0x30,0x2c,0x20,0x32,0x37,0x30,0x2e,0x30,0x29,0x29,0x2e,0x78,0x79, - 0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x36,0x30,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x5f,0x35,0x31,0x20,0x2d,0x20,0x28,0x5f,0x33,0x35,0x20,0x2a,0x20, - 0x64,0x6f,0x74,0x28,0x5f,0x35,0x31,0x2c,0x20,0x5f,0x33,0x35,0x29,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x6d,0x61,0x74,0x33,0x20, - 0x5f,0x38,0x35,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x5f,0x36,0x30,0x2c,0x20, - 0x63,0x72,0x6f,0x73,0x73,0x28,0x5f,0x33,0x35,0x2c,0x20,0x5f,0x36,0x30,0x29,0x2c, - 0x20,0x5f,0x33,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, - 0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20, - 0x31,0x36,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x32,0x31,0x20,0x3d,0x20,0x5f,0x32,0x36,0x20,0x2b,0x20,0x28, - 0x28,0x5f,0x38,0x35,0x20,0x2a,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x69,0x20,0x2a,0x20,0x31,0x20,0x2b,0x20,0x34,0x5d, - 0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x31,0x33,0x33,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x73,0x73,0x61, - 0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20, - 0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31, - 0x5d,0x2c,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x32,0x5d,0x2c,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, - 0x5f,0x31,0x32,0x31,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x31,0x34,0x30,0x20,0x3d,0x20,0x5f,0x31,0x33,0x33,0x2e,0x78,0x79,0x7a,0x20,0x2f, - 0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x33,0x33,0x2e,0x77,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x32,0x30,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x32,0x30,0x36,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x34,0x30,0x2e,0x78,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x30,0x36,0x2e,0x79,0x20, - 0x3d,0x20,0x5f,0x31,0x34,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35, - 0x34,0x20,0x3d,0x20,0x28,0x5f,0x32,0x30,0x36,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x32,0x31,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x32,0x31,0x32,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34, - 0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x32, - 0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x31, - 0x32,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38, - 0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x3c,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x73, - 0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x32,0x31,0x32,0x2e,0x78,0x79,0x29, - 0x2e,0x7a,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64, - 0x65,0x64,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x20, - 0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73,0x69, - 0x6f,0x6e,0x20,0x2b,0x3d,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x37,0x20,0x3d,0x20,0x6f,0x63,0x63, - 0x6c,0x75,0x73,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x30,0x20,0x3d,0x20,0x31, - 0x2e,0x30,0x20,0x2d,0x20,0x28,0x5f,0x31,0x38,0x37,0x20,0x2a,0x20,0x30,0x2e,0x30, - 0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c, - 0x75,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x39,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x39,0x38,0x20,0x3d,0x20,0x70,0x6f,0x77,0x28,0x5f,0x31,0x39,0x30,0x2c,0x20,0x73, - 0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x38, - 0x5d,0x2e,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31,0x39,0x38,0x2c, - 0x20,0x5f,0x31,0x39,0x38,0x2c,0x20,0x5f,0x31,0x39,0x38,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 quad_uv [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 uv [[attribute(1)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - out.gl_Position = float4(in.position, 0.0, 1.0); - out.quad_uv = in.uv; - return out; - } - -*/ -vs_ssao_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69, - 0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x71,0x75,0x61,0x64, - 0x5f,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #include - #include - - using namespace metal; - - struct ssao_fs_params - { - float4x4 projection; - float4 samples[64]; - float ssao_power; - }; - - constant float4 _229 = {}; - - struct main0_out - { - float4 out_color [[color(0)]]; - }; - - struct main0_in - { - float2 quad_uv [[user(locn0)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant ssao_fs_params& _109 [[buffer(0)]], texture2d g_position [[texture(0)]], texture2d g_normal [[texture(1)]], texture2d tex_noise [[texture(2)]], sampler ssao_smp [[sampler(0)]]) - { - main0_out out = {}; - float3 _26 = g_position.sample(ssao_smp, in.quad_uv).xyz; - float3 _35 = fast::normalize(g_normal.sample(ssao_smp, in.quad_uv).xyz); - float3 _51 = fast::normalize(tex_noise.sample(ssao_smp, (in.quad_uv * float2(480.0, 270.0))).xyz); - float3 _60 = fast::normalize(_51 - (_35 * dot(_51, _35))); - float3x3 _85 = float3x3(_60, cross(_35, _60), _35); - float occlusion = 0.0; - for (int i = 0; i < 16; i++) - { - float3 _121 = _26 + ((_85 * _109.samples[i].xyz) * 0.5); - float4 _133 = _109.projection * float4(_121, 1.0); - float3 _140 = _133.xyz / float3(_133.w); - float4 _210; - _210.x = _140.x; - _210.y = _140.y; - float3 _154 = (_210.xyz * 0.5) + float3(0.5); - float4 _216; - _216.x = _154.x; - _216.y = 1.0 - _154.y; - float occluded = 0.0; - if ((_121.z + 0.00999999977648258209228515625) <= g_position.sample(ssao_smp, _216.xy).z) - { - occluded = 1.0; - } - else - { - occluded = 0.0; - } - occlusion += occluded; - } - float _191 = occlusion; - float _194 = 1.0 - (_191 * 0.015625); - occlusion = _194; - float _202 = powr(_194, _109.ssao_power); - out.out_color = float4(_202, _202, _202, 1.0); - return out; - } - -*/ -fs_ssao_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73, - 0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x70,0x72,0x6f, - 0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x73,0x5b,0x36,0x34,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x73,0x61,0x6f,0x5f, - 0x70,0x6f,0x77,0x65,0x72,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x63,0x6f,0x6e,0x73,0x74, - 0x61,0x6e,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x32,0x32,0x39,0x20, - 0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b, - 0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x71,0x75, - 0x61,0x64,0x5f,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d, - 0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x73,0x61,0x6f,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x30,0x39,0x20,0x5b,0x5b,0x62,0x75, - 0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x67,0x5f,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64, - 0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, - 0x3e,0x20,0x74,0x65,0x78,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x20,0x5b,0x5b,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x20,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, - 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x5f,0x32,0x36,0x20,0x3d,0x20,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x73,0x61,0x6f,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x5f,0x33,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20, - 0x69,0x6e,0x2e,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x29,0x2e,0x78,0x79,0x7a,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x31, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x74,0x65,0x78,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x2e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x28,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x28,0x69, - 0x6e,0x2e,0x71,0x75,0x61,0x64,0x5f,0x75,0x76,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x28,0x34,0x38,0x30,0x2e,0x30,0x2c,0x20,0x32,0x37,0x30,0x2e,0x30,0x29, - 0x29,0x29,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x5f,0x36,0x30,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x31,0x20,0x2d,0x20, - 0x28,0x5f,0x33,0x35,0x20,0x2a,0x20,0x64,0x6f,0x74,0x28,0x5f,0x35,0x31,0x2c,0x20, - 0x5f,0x33,0x35,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x78,0x33,0x20,0x5f,0x38,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x78,0x33,0x28,0x5f,0x36,0x30,0x2c,0x20,0x63,0x72,0x6f,0x73,0x73,0x28,0x5f, - 0x33,0x35,0x2c,0x20,0x5f,0x36,0x30,0x29,0x2c,0x20,0x5f,0x33,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69, - 0x20,0x3c,0x20,0x31,0x36,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x32,0x31,0x20,0x3d,0x20,0x5f,0x32,0x36,0x20,0x2b,0x20,0x28,0x28, - 0x5f,0x38,0x35,0x20,0x2a,0x20,0x5f,0x31,0x30,0x39,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x73,0x5b,0x69,0x5d,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x5f,0x31,0x33,0x33,0x20,0x3d,0x20,0x5f,0x31,0x30,0x39,0x2e,0x70,0x72, - 0x6f,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x28,0x5f,0x31,0x32,0x31,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34, - 0x30,0x20,0x3d,0x20,0x5f,0x31,0x33,0x33,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x33,0x33,0x2e,0x77,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x32, - 0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x30, - 0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x34,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x30,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31, - 0x34,0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x35,0x34,0x20,0x3d,0x20,0x28,0x5f,0x32,0x31, - 0x30,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x32,0x31,0x36,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x31,0x36,0x2e,0x78,0x20, - 0x3d,0x20,0x5f,0x31,0x35,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x32,0x31,0x36,0x2e,0x79,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x5f,0x31,0x35,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6f,0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x20, - 0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x28,0x5f,0x31,0x32,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x30,0x2e,0x30, - 0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38, - 0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x3c,0x3d, - 0x20,0x67,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x28,0x73,0x73,0x61,0x6f,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x32,0x31, - 0x36,0x2e,0x78,0x79,0x29,0x2e,0x7a,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, - 0x63,0x63,0x6c,0x75,0x64,0x65,0x64,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c, - 0x75,0x64,0x65,0x64,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x63, - 0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x20,0x2b,0x3d,0x20,0x6f,0x63,0x63,0x6c,0x75, - 0x64,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x31,0x20,0x3d,0x20,0x6f,0x63,0x63,0x6c, - 0x75,0x73,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x39,0x34,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x5f, - 0x31,0x39,0x31,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x63,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x5f,0x31,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x32,0x30,0x32,0x20,0x3d,0x20,0x70,0x6f,0x77,0x72,0x28,0x5f,0x31,0x39, - 0x34,0x2c,0x20,0x5f,0x31,0x30,0x39,0x2e,0x73,0x73,0x61,0x6f,0x5f,0x70,0x6f,0x77, - 0x65,0x72,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x6f,0x75,0x74, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28, - 0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x30,0x32, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -ssao_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "ssao_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_ssao_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_ssao_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 1104; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 69; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "ssao_fs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "g_position_ssao_smp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[1].glsl_name = "g_normal_ssao_smp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "tex_noise_ssao_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_ssao_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_ssao_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "uv"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 1104; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 69; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "ssao_fs_params"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "g_position_ssao_smp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[1].glsl_name = "g_normal_ssao_smp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - desc.image_sampler_pairs[2].glsl_name = "tex_noise_ssao_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_ssao_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_ssao_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 1104; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 1; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .FLOAT; - desc.images[2].msl_texture_n = 2; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 1; - desc.image_sampler_pairs[1].sampler_slot = 0; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 2; - desc.image_sampler_pairs[2].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_triangle.jai b/src/shaders/jai/shader_triangle.jai deleted file mode 100644 index 48e4ae0..0000000 --- a/src/shaders/jai/shader_triangle.jai +++ /dev/null @@ -1,562 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_triangle.glsl -o ./jai/shader_triangle.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'triangle': - Get shader desc: triangle_shader_desc(sg_query_backend()) - Vertex Shader: vs - Fragment Shader: fs - Attributes: - ATTR_triangle_position => 0 - ATTR_triangle_color0 => 1 - ATTR_triangle_uv => 2 - Bindings: - Image 'tex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_tex => 0 - Sampler 'smp': - Type: .FILTERING - Bind slot: SMP_smp => 0 -*/ -ATTR_triangle_position :: 0; -ATTR_triangle_color0 :: 1; -ATTR_triangle_uv :: 2; -IMG_tex :: 0; -SMP_smp :: 0; -/* - #version 430 - - layout(location = 0) in vec4 position; - layout(location = 0) out vec4 color; - layout(location = 1) in vec4 color0; - layout(location = 1) out vec4 texcoord; - layout(location = 2) in vec4 uv; - - void main() - { - gl_Position = position; - gl_Position.y += (float(gl_InstanceID) * 0.100000001490116119384765625); - color = color0; - texcoord = uv; - } - -*/ -vs_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76, - 0x65,0x63,0x34,0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67, - 0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31, - 0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - layout(binding = 16) uniform sampler2D tex_smp; - - layout(location = 1) in vec4 texcoord; - layout(location = 0) out vec4 frag_color; - layout(location = 0) in vec4 color; - - bool is_near(float a, float b) - { - return abs(a - b) < 0.00999999977648258209228515625; - } - - void main() - { - float param = texcoord.x; - float param_1 = -4.0; - bool _33 = is_near(param, param_1); - bool _43; - if (_33) - { - float param_2 = texcoord.y; - float param_3 = -2.0; - _43 = is_near(param_2, param_3); - } - else - { - _43 = _33; - } - if (_43) - { - frag_color = color; - } - else - { - frag_color = texture(tex_smp, texcoord.xy) * color; - } - } - -*/ -fs_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31, - 0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x0a,0x62,0x6f,0x6f,0x6c,0x20,0x69,0x73,0x5f,0x6e,0x65,0x61, - 0x72,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x62,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x61,0x62,0x73,0x28,0x61,0x20,0x2d,0x20,0x62,0x29,0x20,0x3c,0x20,0x30,0x2e, - 0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35, - 0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, - 0x3d,0x20,0x2d,0x34,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x33,0x33,0x20,0x3d,0x20,0x69,0x73,0x5f,0x6e,0x65,0x61,0x72,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, - 0x64,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x2d,0x32,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x33,0x20,0x3d, - 0x20,0x69,0x73,0x5f,0x6e,0x65,0x61,0x72,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x33,0x20,0x3d,0x20,0x5f, - 0x33,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x34,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x5f,0x73, - 0x6d,0x70,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x29, - 0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - layout(location = 0) in vec4 position; - out vec4 color; - layout(location = 1) in vec4 color0; - out vec4 texcoord; - layout(location = 2) in vec4 uv; - - void main() - { - gl_Position = position; - gl_Position.y += (float(gl_InstanceID) * 0.100000001490116119384765625); - color = color0; - texcoord = uv; - } - -*/ -vs_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x6f,0x75,0x74, - 0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76,0x3b, - 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2b,0x3d, - 0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61, - 0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34, - 0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - uniform highp sampler2D tex_smp; - - in highp vec4 texcoord; - layout(location = 0) out highp vec4 frag_color; - in highp vec4 color; - - bool is_near(highp float a, highp float b) - { - return abs(a - b) < 0.00999999977648258209228515625; - } - - void main() - { - highp float param = texcoord.x; - highp float param_1 = -4.0; - bool _33 = is_near(param, param_1); - bool _43; - if (_33) - { - highp float param_2 = texcoord.y; - highp float param_3 = -2.0; - _43 = is_near(param_2, param_3); - } - else - { - _43 = _33; - } - if (_43) - { - frag_color = color; - } - else - { - frag_color = texture(tex_smp, texcoord.xy) * color; - } - } - -*/ -fs_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x3b,0x0a, - 0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75, - 0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x62, - 0x6f,0x6f,0x6c,0x20,0x69,0x73,0x5f,0x6e,0x65,0x61,0x72,0x28,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x2c,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x62,0x73,0x28,0x61,0x20,0x2d,0x20,0x62, - 0x29,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35, - 0x36,0x32,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x74,0x65, - 0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x2d,0x34,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x33,0x33,0x20,0x3d,0x20,0x69,0x73,0x5f,0x6e,0x65,0x61,0x72, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x33,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x33,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d, - 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x2d,0x32,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x33,0x20,0x3d,0x20,0x69, - 0x73,0x5f,0x6e,0x65,0x61,0x72,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x33,0x20,0x3d,0x20,0x5f,0x33,0x33, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x34,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70, - 0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x29,0x20,0x2a, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a, - 0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 color [[user(locn0)]]; - float4 texcoord [[user(locn1)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 color0 [[attribute(1)]]; - float4 uv [[attribute(2)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], uint gl_InstanceIndex [[instance_id]]) - { - main0_out out = {}; - out.gl_Position = in.position; - out.gl_Position.y += (float(int(gl_InstanceIndex)) * 0.100000001490116119384765625); - out.color = in.color0; - out.texcoord = in.uv; - return out; - } - -*/ -vs_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73, - 0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x75,0x76,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65, - 0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b, - 0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x75,0x69,0x6e,0x74, - 0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65, - 0x78,0x20,0x5b,0x5b,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x5f,0x69,0x64,0x5d, - 0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, - 0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49, - 0x6e,0x64,0x65,0x78,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34, - 0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, - 0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f, - 0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x75,0x76,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float4 color [[user(locn0)]]; - float4 texcoord [[user(locn1)]]; - }; - - static inline __attribute__((always_inline)) - bool is_near(thread const float& a, thread const float& b) - { - return abs(a - b) < 0.00999999977648258209228515625; - } - - fragment main0_out main0(main0_in in [[stage_in]], texture2d tex [[texture(0)]], sampler smp [[sampler(0)]]) - { - main0_out out = {}; - float param = in.texcoord.x; - float param_1 = -4.0; - bool _33 = is_near(param, param_1); - bool _43; - if (_33) - { - float param_2 = in.texcoord.y; - float param_3 = -2.0; - _43 = is_near(param_2, param_3); - } - else - { - _43 = _33; - } - if (_43) - { - out.frag_color = in.color; - } - else - { - out.frag_color = tex.sample(smp, in.texcoord.xy) * in.color; - } - return out; - } - -*/ -fs_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, - 0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f, - 0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x74,0x65,0x78,0x63,0x6f, - 0x6f,0x72,0x64,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31, - 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x29,0x29,0x0a,0x62,0x6f,0x6f,0x6c,0x20,0x69,0x73,0x5f,0x6e,0x65, - 0x61,0x72,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x62,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x62, - 0x73,0x28,0x61,0x20,0x2d,0x20,0x62,0x29,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x39, - 0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30, - 0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x66, - 0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e, - 0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d, - 0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61, - 0x74,0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73, - 0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d, - 0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, - 0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69, - 0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, - 0x3d,0x20,0x2d,0x34,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x33,0x33,0x20,0x3d,0x20,0x69,0x73,0x5f,0x6e,0x65,0x61,0x72,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63, - 0x6f,0x6f,0x72,0x64,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20, - 0x2d,0x32,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34, - 0x33,0x20,0x3d,0x20,0x69,0x73,0x5f,0x6e,0x65,0x61,0x72,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x33,0x20, - 0x3d,0x20,0x5f,0x33,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c, - 0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x29, - 0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75, - 0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -triangle_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "triangle_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "color0"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "uv"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "tex_smp"; - case .GLES3; - desc.vertex_func.source = xx *vs_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "color0"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "uv"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "tex_smp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_trile.jai b/src/shaders/jai/shader_trile.jai deleted file mode 100644 index a107333..0000000 --- a/src/shaders/jai/shader_trile.jai +++ /dev/null @@ -1,4037 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_trile.glsl -o ./jai/shader_trile.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'trile': - Get shader desc: trile_shader_desc(sg_query_backend()) - Vertex Shader: vs_trile - Fragment Shader: fs_trile - Attributes: - ATTR_trile_position => 0 - ATTR_trile_normal => 1 - ATTR_trile_centre => 2 - ATTR_trile_instance => 3 - Bindings: - Uniform block 'trile_vs_params': - Jai struct: Trile_Vs_Params - Bind slot: UB_trile_vs_params => 0 - Uniform block 'trile_world_config': - Jai struct: Trile_World_Config - Bind slot: UB_trile_world_config => 1 - Uniform block 'trile_fs_params': - Jai struct: Trile_Fs_Params - Bind slot: UB_trile_fs_params => 3 - Image 'triletex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_triletex => 0 - Image 'shadowtex': - Image type: ._2D - Sample type: .DEPTH - Multisampled: false - Bind slot: IMG_shadowtex => 2 - Image 'ssaotex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_ssaotex => 1 - Image 'brdf_lut': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_brdf_lut => 3 - Image 'sh_irradiance': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_sh_irradiance => 4 - Sampler 'trilesmp': - Type: .FILTERING - Bind slot: SMP_trilesmp => 0 - Sampler 'shadowsmp': - Type: .COMPARISON - Bind slot: SMP_shadowsmp => 2 - Sampler 'linsmp': - Type: .FILTERING - Bind slot: SMP_linsmp => 3 -*/ -ATTR_trile_position :: 0; -ATTR_trile_normal :: 1; -ATTR_trile_centre :: 2; -ATTR_trile_instance :: 3; -UB_trile_vs_params :: 0; -UB_trile_world_config :: 1; -UB_trile_fs_params :: 3; -IMG_triletex :: 0; -IMG_shadowtex :: 2; -IMG_ssaotex :: 1; -IMG_brdf_lut :: 3; -IMG_sh_irradiance :: 4; -SMP_trilesmp :: 0; -SMP_shadowsmp :: 2; -SMP_linsmp :: 3; -Trile_Vs_Params :: struct { - mvp: [16]float; - mvp_shadow: [16]float; - camera: [3]float; - _: [4]u8; -}; -Trile_World_Config :: struct { - skyBase: [3]float; - _: [4]u8; - skyTop: [3]float; - _: [4]u8; - sunDisk: [3]float; - _: [4]u8; - horizonHalo: [3]float; - _: [4]u8; - sunHalo: [3]float; - _: [4]u8; - sunLightColor: [3]float; - _: [4]u8; - sunPosition: [3]float; - sunIntensity: float; - skyIntensity: float; - hasClouds: s32; - planeHeight: float; - animatePlaneHeight: s32; - waterColor: [3]float; - _: [4]u8; - deepColor: [3]float; - time: float; - hsv_lighting: s32; - _: [12]u8; -}; -Trile_Fs_Params :: struct { - mvp_shadow: [16]float; - is_reflection: s32; - screen_h: s32; - screen_w: s32; - ambient_intensity: float; - emissive_scale: float; - indirect_diff_scale: float; - indirect_spec_scale: float; - _: [4]u8; - ambient_color: [3]float; - is_preview: s32; - indirect_tint: [3]float; - sh_enabled: s32; - fog_start: float; - fog_end: float; - _: [8]u8; -}; -/* - #version 430 - - uniform vec4 trile_vs_params[9]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - layout(location = 4) out vec4 fnormal; - layout(location = 1) in vec4 normal; - layout(location = 5) out vec3 orig_normal; - layout(location = 1) out vec3 to_center; - layout(location = 2) in vec4 centre; - layout(location = 2) out vec3 vpos; - layout(location = 3) out vec3 ipos; - layout(location = 0) out vec3 cam; - layout(location = 6) out vec3 cv; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, -_67, 0.0), vec3(_67, _64, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, 0.0, _50), vec3(0.0, 1.0, 0.0), vec3(-_50, 0.0, _47)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - mat3 _171 = get_orientation_matrix(param); - vec3 _200 = ((_171 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz; - gl_Position = mat4(trile_vs_params[0], trile_vs_params[1], trile_vs_params[2], trile_vs_params[3]) * vec4(_200, 1.0); - fnormal = vec4(_171 * normal.xyz, 0.0); - orig_normal = normal.xyz; - to_center = centre.xyz - position.xyz; - vpos = _200; - ipos = position.xyz; - cam = trile_vs_params[8].xyz; - cv = normalize(trile_vs_params[8].xyz - vpos); - } - -*/ -vs_trile_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x6c,0x65, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x39,0x5d,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74, - 0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x34, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x35,0x29,0x20,0x6f,0x75, - 0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63, - 0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20, - 0x76,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x33,0x20,0x69,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f, - 0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x36, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x76,0x3b,0x0a,0x0a, - 0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69, - 0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20, - 0x5f,0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72, - 0x6f,0x74,0x5f,0x7a,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20, - 0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28, - 0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x37,0x2c,0x20, - 0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61, - 0x74,0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69, - 0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72, - 0x69,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32, - 0x20,0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6d,0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34, - 0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65, - 0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30, - 0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30, - 0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74, - 0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38, - 0x32,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e, - 0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36, - 0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35, - 0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32, - 0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x34,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30, - 0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72, - 0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f, - 0x72,0x69,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x62,0x61,0x73,0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d, - 0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e, - 0x64,0x28,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20, - 0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x28, - 0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35, - 0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, - 0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x32,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f, - 0x32,0x30,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31, - 0x37,0x31,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x72,0x69,0x67,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74, - 0x65,0x72,0x20,0x3d,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x2e,0x78,0x79,0x7a,0x20, - 0x2d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61, - 0x6d,0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x63,0x76,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74, - 0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38, - 0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #version 430 - - struct trile_world_config - { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - float time; - int hsv_lighting; - }; - - uniform trile_world_config _55; - - struct trile_fs_params - { - mat4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - float ambient_intensity; - float emissive_scale; - float indirect_diff_scale; - float indirect_spec_scale; - vec3 ambient_color; - int is_preview; - vec3 indirect_tint; - int sh_enabled; - float fog_start; - float fog_end; - }; - - uniform trile_fs_params _254; - - layout(binding = 16) uniform sampler2D triletex_trilesmp; - layout(binding = 17) uniform sampler2DShadow shadowtex_shadowsmp; - layout(binding = 18) uniform sampler2D ssaotex_linsmp; - layout(binding = 19) uniform sampler2D brdf_lut_linsmp; - layout(binding = 20) uniform sampler2D sh_irradiance_linsmp; - - layout(location = 2) in vec3 vpos; - layout(location = 3) in vec3 ipos; - layout(location = 5) in vec3 orig_normal; - layout(location = 1) in vec3 to_center; - layout(location = 4) in vec4 fnormal; - layout(location = 0) out vec4 frag_color; - layout(location = 0) in vec3 cam; - layout(location = 6) in vec3 cv; - - vec3 fresnelSchlick(float cosTheta, vec3 F0) - { - return F0 + ((vec3(1.0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - float DistributionGGX(vec3 N, vec3 H, float roughness) - { - float _138 = roughness * roughness; - float _142 = _138 * _138; - float _147 = max(dot(N, H), 0.0); - float _155 = ((_147 * _147) * (_142 - 1.0)) + 1.0; - return _142 / ((3.1415927410125732421875 * _155) * _155); - } - - float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) - { - float _167 = roughness + 1.0; - float _173 = (_167 * _167) * 0.125; - float _178 = max(dot(N, V), 0.0); - float _183 = max(dot(N, L), 0.0); - float _188 = 1.0 - _173; - return (_183 / ((_183 * _188) + _173)) * (_178 / ((_178 * _188) + _173)); - } - - vec3 FresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness) - { - return F0 + ((max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - vec3 sky(vec3 skypos, vec3 sunpos) - { - vec3 _45 = normalize(skypos); - float _50 = dot(_45, normalize(sunpos)); - float _66 = _45.y; - vec3 result = mix(_55.skyBase, _55.skyTop, vec3(clamp(_66 * 2.0, 0.0, 0.699999988079071044921875))) + ((_55.sunHalo * clamp((_50 - 0.949999988079071044921875) * 10.0, 0.0, 0.800000011920928955078125)) * 0.20000000298023223876953125); - if (_50 > 0.99989998340606689453125) - { - result = _55.sunDisk; - } - vec3 _115 = result; - vec3 _116 = _115 + (mix(_55.horizonHalo, vec3(0.0), vec3(clamp(abs(_66) * 80.0, 0.0, 1.0))) * 0.100000001490116119384765625); - result = _116; - return _116; - } - - vec3 sky_reflect(inout vec3 R, vec3 sunpos) - { - if (R.y < 0.0) - { - R = reflect(R, vec3(0.0, 1.0, 0.0)); - } - vec3 param = R; - vec3 param_1 = sunpos; - return sky(param, param_1); - } - - void main() - { - bool _247 = vpos.y < (_55.planeHeight - 0.00999999977648258209228515625); - bool _259; - if (_247) - { - _259 = _254.is_reflection == 1; - } - else - { - _259 = _247; - } - if (_259) - { - discard; - } - vec3 sample_pos = ipos - (orig_normal * 0.0199999995529651641845703125); - bool _275 = _254.is_reflection == 1; - int _276 = _275 ? 1 : 3; - vec4 trixel_material; - for (int i = 0; i < _276; i++) - { - vec4 _327 = texelFetch(triletex_trilesmp, ivec2(int(clamp(sample_pos.z, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0), int(clamp(sample_pos.y, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) + (int(clamp(sample_pos.x, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) * 16)), 0); - trixel_material = _327; - if (dot(_327, _327) > 9.9999997473787516355514526367188e-05) - { - break; - } - sample_pos += (to_center * 0.100000001490116119384765625); - } - int _352 = int(round(trixel_material.w * 255.0)); - float emittance = 0.0; - float roughness = 0.0; - float metallic = 0.0; - if ((_352 & 1) != 0) - { - emittance = float((_352 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - roughness = max(float((_352 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_352 >> 3) & 3) * 0.3333333432674407958984375; - } - vec3 _392 = abs(fnormal.xyz); - float _394 = _392.x; - float _396 = _392.y; - bool _397 = _394 >= _396; - bool _405; - if (_397) - { - _405 = _394 >= _392.z; - } - else - { - _405 = _397; - } - vec3 N; - if (_405) - { - N = vec3(sign(fnormal.x), 0.0, 0.0); - } - else - { - bool _418 = _396 >= _394; - bool _426; - if (_418) - { - _426 = _396 >= _392.z; - } - else - { - _426 = _418; - } - if (_426) - { - N = vec3(0.0, sign(fnormal.y), 0.0); - } - else - { - N = vec3(0.0, 0.0, sign(fnormal.z)); - } - } - if (_275) - { - frag_color = vec4(trixel_material.xyz * (((_55.sunLightColor * max(dot(N, normalize(_55.sunPosition)), 0.0)) * _55.sunIntensity) + vec3(0.100000001490116119384765625)), 1.0); - return; - } - vec3 _476 = normalize(cam - vpos); - vec3 _480 = normalize(_55.sunPosition); - vec3 _485 = normalize(_476 + _480); - float _490 = max(dot(N, _480), 0.0); - float _495 = max(dot(N, _476), 0.0); - vec3 _507 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, vec3(metallic)); - float param = max(dot(_485, _476), 0.0); - vec3 param_1 = _507; - vec3 _513 = fresnelSchlick(param, param_1); - vec3 param_2 = N; - vec3 param_3 = _485; - float param_4 = roughness; - vec3 param_5 = N; - vec3 param_6 = _476; - vec3 param_7 = _480; - float param_8 = roughness; - vec4 _552 = _254.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); - vec3 _563 = ((_552.xyz / vec3(_552.w)) * 0.5) + vec3(0.5); - float _567 = _563.z - 0.001000000047497451305389404296875; - vec3 _852 = _563; - _852.z = _567; - vec3 light = ((((((((vec3(1.0) - _513) * (1.0 - metallic)) * trixel_material.xyz) * vec3(0.3183098733425140380859375)) + ((_513 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * _495) * _490) + 9.9999997473787516355514526367188e-05))) * texture(shadowtex_shadowsmp, vec3(_852.xy, _567))) * _490) * _55.sunLightColor) * _55.sunIntensity; - vec2 _629 = gl_FragCoord.xy / vec2(float(_254.screen_w), float(_254.screen_h)); - vec4 _630 = texture(ssaotex_linsmp, _629); - float param_9 = _495; - vec3 param_10 = _507; - float param_11 = roughness; - vec3 _646 = FresnelSchlickRoughness(param_9, param_10, param_11); - if (roughness < 0.699999988079071044921875) - { - vec4 _665 = texture(brdf_lut_linsmp, vec2(_495, roughness)); - vec3 param_12 = reflect(-_476, N); - vec3 param_13 = _55.sunPosition; - vec3 _679 = sky_reflect(param_12, param_13); - light += (((_679 * ((_646 * _665.x) + vec3(_665.y))) * _254.indirect_spec_scale) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - vec3 indirectDiff; - if (_254.sh_enabled == 1) - { - indirectDiff = texture(sh_irradiance_linsmp, _629).xyz * _254.indirect_tint; - } - else - { - indirectDiff = _254.ambient_color * _254.ambient_intensity; - } - vec3 _748 = light; - vec3 _749 = _748 + (((((((vec3(1.0) - _646) * (1.0 - metallic)) * indirectDiff) * vec3(0.3183098733425140380859375)) * trixel_material.xyz) * _630.x) * _254.indirect_diff_scale); - light = _749; - frag_color = vec4(mix(mix(_55.deepColor, _749 + ((trixel_material.xyz * emittance) * _254.emissive_scale), vec3(smoothstep(0.0, _55.planeHeight, vpos.y))), _55.skyBase, vec3(smoothstep(_254.fog_start, _254.fog_end, length(vpos - cam)))), 1.0); - if (_254.is_preview == 1) - { - vec4 _795 = frag_color; - vec3 _799 = mix(_795.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); - frag_color.x = _799.x; - frag_color.y = _799.y; - frag_color.z = _799.z; - } - else - { - if (_254.is_preview == 2) - { - vec4 _813 = frag_color; - vec3 _817 = mix(_813.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); - frag_color.x = _817.x; - frag_color.y = _817.y; - frag_color.z = _817.z; - } - } - } - -*/ -fs_trile_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64, - 0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48, - 0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75, - 0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73, - 0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73, - 0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c, - 0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69, - 0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x73,0x76,0x5f, - 0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x35,0x35,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34, - 0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65, - 0x65,0x6e,0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63, - 0x72,0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65, - 0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63, - 0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74, - 0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f, - 0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62, - 0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66, - 0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x66, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x32,0x35,0x34,0x3b,0x0a,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d, - 0x20,0x31,0x36,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78,0x5f, - 0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x37,0x29,0x20,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44, - 0x53,0x68,0x61,0x64,0x6f,0x77,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x38,0x29, - 0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x6c,0x69,0x6e,0x73,0x6d, - 0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e, - 0x67,0x20,0x3d,0x20,0x31,0x39,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x62,0x72,0x64,0x66,0x5f,0x6c, - 0x75,0x74,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x32,0x30,0x29,0x20, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x73,0x68,0x5f,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x70,0x6f,0x73,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x35,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67, - 0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x34,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61, - 0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x36,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20, - 0x63,0x76,0x3b,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65, - 0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63, - 0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x30, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46, - 0x30,0x20,0x2b,0x20,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20, - 0x2d,0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69,0x73, - 0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x76,0x65,0x63, - 0x33,0x20,0x4e,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x48,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x20,0x3d, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x34,0x32,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x20,0x2a,0x20, - 0x5f,0x31,0x33,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x34,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e, - 0x2c,0x20,0x48,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x35,0x20,0x3d,0x20,0x28,0x28,0x5f, - 0x31,0x34,0x37,0x20,0x2a,0x20,0x5f,0x31,0x34,0x37,0x29,0x20,0x2a,0x20,0x28,0x5f, - 0x31,0x34,0x32,0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31, - 0x34,0x32,0x20,0x2f,0x20,0x28,0x28,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37, - 0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x20, - 0x2a,0x20,0x5f,0x31,0x35,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x35,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74, - 0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x20,0x56,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x4c,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36, - 0x37,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20, - 0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x37,0x33,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31, - 0x36,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x38,0x20,0x3d,0x20,0x6d,0x61, - 0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38, - 0x33,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x4c, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x31,0x38,0x38,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20, - 0x5f,0x31,0x37,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x28,0x5f,0x31,0x38,0x33,0x20,0x2f,0x20,0x28,0x28,0x5f,0x31,0x38,0x33,0x20, - 0x2a,0x20,0x5f,0x31,0x38,0x38,0x29,0x20,0x2b,0x20,0x5f,0x31,0x37,0x33,0x29,0x29, - 0x20,0x2a,0x20,0x28,0x5f,0x31,0x37,0x38,0x20,0x2f,0x20,0x28,0x28,0x5f,0x31,0x37, - 0x38,0x20,0x2a,0x20,0x5f,0x31,0x38,0x38,0x29,0x20,0x2b,0x20,0x5f,0x31,0x37,0x33, - 0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x46,0x72,0x65,0x73, - 0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65, - 0x74,0x61,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x30,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20, - 0x28,0x28,0x6d,0x61,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x2c,0x20,0x46,0x30,0x29, - 0x20,0x2d,0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74, - 0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e, - 0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79, - 0x28,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x64, - 0x6f,0x74,0x28,0x5f,0x34,0x35,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x36,0x20,0x3d,0x20,0x5f,0x34,0x35,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x73,0x75, - 0x6c,0x74,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x35,0x35,0x2e,0x73,0x6b,0x79, - 0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x35,0x35,0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x36,0x36, - 0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36, - 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34, - 0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f, - 0x35,0x35,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x20,0x2a,0x20,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x28,0x5f,0x35,0x30,0x20,0x2d,0x20,0x30,0x2e,0x39,0x34,0x39,0x39, - 0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32, - 0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30, - 0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x30,0x20,0x3e,0x20,0x30, - 0x2e,0x39,0x39,0x39,0x38,0x39,0x39,0x39,0x38,0x33,0x34,0x30,0x36,0x30,0x36,0x36, - 0x38,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d, - 0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x31, - 0x35,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x31,0x36,0x20,0x3d,0x20,0x5f,0x31,0x31,0x35, - 0x20,0x2b,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x35,0x35,0x2e,0x68,0x6f,0x72,0x69, - 0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x61, - 0x62,0x73,0x28,0x5f,0x36,0x36,0x29,0x20,0x2a,0x20,0x38,0x30,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31, - 0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x31,0x31,0x36,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x31,0x36, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, - 0x20,0x52,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x52,0x2e,0x79,0x20,0x3c, - 0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28, - 0x52,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x52,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x20,0x3d,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x34,0x37,0x20,0x3d,0x20,0x76, - 0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x35,0x35,0x2e,0x70,0x6c,0x61, - 0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x39, - 0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30, - 0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x35,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x32,0x34,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x35,0x39,0x20,0x3d,0x20,0x5f, - 0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x35,0x39,0x20,0x3d,0x20,0x5f,0x32,0x34,0x37, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x32,0x35,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,0x70,0x6f,0x73,0x20,0x2d,0x20, - 0x28,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35, - 0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x37,0x35,0x20,0x3d,0x20, - 0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x5f,0x32,0x37,0x36,0x20,0x3d,0x20,0x5f,0x32,0x37,0x35,0x20,0x3f,0x20,0x31, - 0x20,0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74, - 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d, - 0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x5f,0x32,0x37,0x36,0x3b,0x20,0x69,0x2b, - 0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x32,0x37,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78, - 0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32, - 0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x5f,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39, - 0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31, - 0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20, - 0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37, - 0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29, - 0x2c,0x20,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x79,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35, - 0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c, - 0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36, - 0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30, - 0x29,0x20,0x2b,0x20,0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x39,0x2e,0x39, - 0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33, - 0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d, - 0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34, - 0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31, - 0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x29,0x29,0x2c,0x20,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x33,0x32,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74, - 0x28,0x5f,0x33,0x32,0x37,0x2c,0x20,0x5f,0x33,0x32,0x37,0x29,0x20,0x3e,0x20,0x39, - 0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31, - 0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38, - 0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61, - 0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20, - 0x2b,0x3d,0x20,0x28,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31, - 0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33, - 0x35,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x74, - 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x77, - 0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20, - 0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61, - 0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x26,0x20,0x31,0x29,0x20,0x21, - 0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x3e,0x3e,0x20,0x31,0x29, - 0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38, - 0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38, - 0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x33, - 0x35,0x32,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35, - 0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30, - 0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x3e,0x3e, - 0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33, - 0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38, - 0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x39,0x32,0x20,0x3d,0x20,0x61,0x62, - 0x73,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x34,0x20,0x3d, - 0x20,0x5f,0x33,0x39,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x33,0x39,0x36,0x20,0x3d,0x20,0x5f,0x33,0x39,0x32,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x39,0x37,0x20, - 0x3d,0x20,0x5f,0x33,0x39,0x34,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x39,0x36,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34,0x30,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x39,0x37,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x30,0x35,0x20, - 0x3d,0x20,0x5f,0x33,0x39,0x34,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x39,0x32,0x2e,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x33,0x39,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x34,0x31,0x38,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20, - 0x5f,0x33,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x34,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20, - 0x5f,0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x36,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x32,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28, - 0x28,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f, - 0x6c,0x6f,0x72,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x35,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36, - 0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x37,0x36,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x38,0x30, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x35, - 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x38,0x35,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x34,0x37,0x36,0x20,0x2b,0x20, - 0x5f,0x34,0x38,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x39,0x30,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x5f,0x34,0x38,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x35,0x20,0x3d, - 0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x34,0x37,0x36, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x35,0x30,0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35, - 0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29, - 0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61, - 0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x65,0x74,0x61, - 0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x5f,0x34,0x38,0x35,0x2c,0x20,0x5f,0x34,0x37,0x36,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x35,0x30,0x37,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x31,0x33,0x20,0x3d,0x20,0x66,0x72, - 0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d, - 0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x34,0x38,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x36,0x20,0x3d,0x20,0x5f,0x34,0x37,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x34, - 0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x35,0x35,0x32, - 0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64, - 0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28, - 0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x33, - 0x20,0x3d,0x20,0x28,0x28,0x5f,0x35,0x35,0x32,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20, - 0x76,0x65,0x63,0x33,0x28,0x5f,0x35,0x35,0x32,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x36,0x37, - 0x20,0x3d,0x20,0x5f,0x35,0x36,0x33,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31, - 0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x35,0x32,0x20,0x3d, - 0x20,0x5f,0x35,0x36,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x38,0x35,0x32,0x2e, - 0x7a,0x20,0x3d,0x20,0x5f,0x35,0x36,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f, - 0x35,0x31,0x33,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65, - 0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38, - 0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33, - 0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x35,0x31,0x33,0x20,0x2a,0x20, - 0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65, - 0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29, - 0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a, - 0x20,0x5f,0x34,0x39,0x35,0x29,0x20,0x2a,0x20,0x5f,0x34,0x39,0x30,0x29,0x20,0x2b, - 0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37, - 0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31, - 0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x73,0x68, - 0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x38, - 0x35,0x32,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x35,0x36,0x37,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x34,0x39,0x30,0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e, - 0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x35, - 0x35,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x32,0x39,0x20,0x3d,0x20, - 0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79,0x20, - 0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32,0x35, - 0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x33, - 0x30,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x73,0x61,0x6f, - 0x74,0x65,0x78,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x36,0x32,0x39, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x34,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x20,0x3d, - 0x20,0x5f,0x35,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x36,0x34,0x36,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c, - 0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, - 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x36,0x36,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62, - 0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20, - 0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x39,0x35,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20, - 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x34,0x37,0x36,0x2c,0x20,0x4e, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x35,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x37,0x39,0x20,0x3d,0x20, - 0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, - 0x3d,0x20,0x28,0x28,0x28,0x5f,0x36,0x37,0x39,0x20,0x2a,0x20,0x28,0x28,0x5f,0x36, - 0x34,0x36,0x20,0x2a,0x20,0x5f,0x36,0x36,0x35,0x2e,0x78,0x29,0x20,0x2b,0x20,0x76, - 0x65,0x63,0x33,0x28,0x5f,0x36,0x36,0x35,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20, - 0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70, - 0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, - 0x20,0x2d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33, - 0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33, - 0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x68, - 0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64, - 0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x73,0x68,0x5f,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63, - 0x65,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x36,0x32,0x39,0x29,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69,0x72, - 0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44, - 0x69,0x66,0x66,0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e,0x61,0x6d,0x62,0x69,0x65, - 0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e, - 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x37,0x34,0x38,0x20,0x3d,0x20,0x6c,0x69,0x67,0x68,0x74,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d,0x20, - 0x5f,0x37,0x34,0x38,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x36,0x34,0x36,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, - 0x63,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69, - 0x66,0x66,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38, - 0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30, - 0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x5f,0x36,0x33,0x30,0x2e,0x78,0x29,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34, - 0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73, - 0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, - 0x20,0x3d,0x20,0x5f,0x37,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d, - 0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x5f,0x35,0x35,0x2e,0x64,0x65,0x65,0x70,0x43, - 0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x5f,0x37,0x34,0x39,0x20,0x2b,0x20,0x28,0x28,0x74, - 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78, - 0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20, - 0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f, - 0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f, - 0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x35, - 0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x76,0x70, - 0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x5f,0x35,0x35,0x2e,0x73,0x6b,0x79, - 0x42,0x61,0x73,0x65,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74, - 0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x32,0x35,0x34,0x2e,0x66,0x6f,0x67,0x5f,0x73, - 0x74,0x61,0x72,0x74,0x2c,0x20,0x5f,0x32,0x35,0x34,0x2e,0x66,0x6f,0x67,0x5f,0x65, - 0x6e,0x64,0x2c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x76,0x70,0x6f,0x73,0x20, - 0x2d,0x20,0x63,0x61,0x6d,0x29,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73, - 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x37,0x39,0x35,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x37,0x39,0x39,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x37,0x39, - 0x35,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30, - 0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35, - 0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39, - 0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38, - 0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x37,0x39, - 0x39,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x37,0x39,0x39, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x37,0x39,0x39,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76, - 0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x38,0x31,0x33,0x20,0x3d,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x31,0x37,0x20,0x3d,0x20, - 0x6d,0x69,0x78,0x28,0x5f,0x38,0x31,0x33,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31, - 0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39, - 0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x38,0x31,0x37,0x2e,0x78, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x38,0x31, - 0x37,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20, - 0x5f,0x38,0x31,0x37,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 trile_vs_params[9]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - out vec4 fnormal; - layout(location = 1) in vec4 normal; - out vec3 orig_normal; - out vec3 to_center; - layout(location = 2) in vec4 centre; - out vec3 vpos; - out vec3 ipos; - out vec3 cam; - out vec3 cv; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, -_67, 0.0), vec3(_67, _64, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, 0.0, _50), vec3(0.0, 1.0, 0.0), vec3(-_50, 0.0, _47)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - mat3 _171 = get_orientation_matrix(param); - vec3 _200 = ((_171 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz; - gl_Position = mat4(trile_vs_params[0], trile_vs_params[1], trile_vs_params[2], trile_vs_params[3]) * vec4(_200, 1.0); - fnormal = vec4(_171 * normal.xyz, 0.0); - orig_normal = normal.xyz; - to_center = centre.xyz - position.xyz; - vpos = _200; - ipos = position.xyz; - cam = trile_vs_params[8].xyz; - cv = normalize(trile_vs_params[8].xyz - vpos); - } - -*/ -vs_trile_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x39,0x5d, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69, - 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20, - 0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6f,0x75,0x74, - 0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x65, - 0x6e,0x74,0x72,0x65,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x70,0x6f,0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x70, - 0x6f,0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d, - 0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x76,0x3b,0x0a,0x0a, - 0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69, - 0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20, - 0x5f,0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72, - 0x6f,0x74,0x5f,0x7a,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20, - 0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28, - 0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x37,0x2c,0x20, - 0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61, - 0x74,0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69, - 0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72, - 0x69,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32, - 0x20,0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6d,0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34, - 0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65, - 0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30, - 0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30, - 0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74, - 0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38, - 0x32,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e, - 0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36, - 0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35, - 0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32, - 0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x34,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30, - 0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72, - 0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f, - 0x72,0x69,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x62,0x61,0x73,0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d, - 0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e, - 0x64,0x28,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20, - 0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x28, - 0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35, - 0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, - 0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x32,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f, - 0x32,0x30,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31, - 0x37,0x31,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x72,0x69,0x67,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74, - 0x65,0x72,0x20,0x3d,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x2e,0x78,0x79,0x7a,0x20, - 0x2d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61, - 0x6d,0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x63,0x76,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74, - 0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38, - 0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct trile_world_config - { - highp vec3 skyBase; - highp vec3 skyTop; - highp vec3 sunDisk; - highp vec3 horizonHalo; - highp vec3 sunHalo; - highp vec3 sunLightColor; - highp vec3 sunPosition; - highp float sunIntensity; - highp float skyIntensity; - int hasClouds; - highp float planeHeight; - int animatePlaneHeight; - highp vec3 waterColor; - highp vec3 deepColor; - highp float time; - int hsv_lighting; - }; - - uniform trile_world_config _55; - - struct trile_fs_params - { - highp mat4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - highp float ambient_intensity; - highp float emissive_scale; - highp float indirect_diff_scale; - highp float indirect_spec_scale; - highp vec3 ambient_color; - int is_preview; - highp vec3 indirect_tint; - int sh_enabled; - highp float fog_start; - highp float fog_end; - }; - - uniform trile_fs_params _254; - - uniform highp sampler2D triletex_trilesmp; - uniform highp sampler2DShadow shadowtex_shadowsmp; - uniform highp sampler2D ssaotex_linsmp; - uniform highp sampler2D brdf_lut_linsmp; - uniform highp sampler2D sh_irradiance_linsmp; - - in highp vec3 vpos; - in highp vec3 ipos; - in highp vec3 orig_normal; - in highp vec3 to_center; - in highp vec4 fnormal; - layout(location = 0) out highp vec4 frag_color; - in highp vec3 cam; - in highp vec3 cv; - - highp vec3 fresnelSchlick(highp float cosTheta, highp vec3 F0) - { - return F0 + ((vec3(1.0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - highp float DistributionGGX(highp vec3 N, highp vec3 H, highp float roughness) - { - highp float _138 = roughness * roughness; - highp float _142 = _138 * _138; - highp float _147 = max(dot(N, H), 0.0); - highp float _155 = ((_147 * _147) * (_142 - 1.0)) + 1.0; - return _142 / ((3.1415927410125732421875 * _155) * _155); - } - - highp float GeometrySmith(highp vec3 N, highp vec3 V, highp vec3 L, highp float roughness) - { - highp float _167 = roughness + 1.0; - highp float _173 = (_167 * _167) * 0.125; - highp float _178 = max(dot(N, V), 0.0); - highp float _183 = max(dot(N, L), 0.0); - highp float _188 = 1.0 - _173; - return (_183 / ((_183 * _188) + _173)) * (_178 / ((_178 * _188) + _173)); - } - - highp vec3 FresnelSchlickRoughness(highp float cosTheta, highp vec3 F0, highp float roughness) - { - return F0 + ((max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - highp vec3 sky(highp vec3 skypos, highp vec3 sunpos) - { - highp vec3 _45 = normalize(skypos); - highp float _50 = dot(_45, normalize(sunpos)); - highp float _66 = _45.y; - highp vec3 result = mix(_55.skyBase, _55.skyTop, vec3(clamp(_66 * 2.0, 0.0, 0.699999988079071044921875))) + ((_55.sunHalo * clamp((_50 - 0.949999988079071044921875) * 10.0, 0.0, 0.800000011920928955078125)) * 0.20000000298023223876953125); - if (_50 > 0.99989998340606689453125) - { - result = _55.sunDisk; - } - highp vec3 _115 = result; - highp vec3 _116 = _115 + (mix(_55.horizonHalo, vec3(0.0), vec3(clamp(abs(_66) * 80.0, 0.0, 1.0))) * 0.100000001490116119384765625); - result = _116; - return _116; - } - - highp vec3 sky_reflect(inout highp vec3 R, highp vec3 sunpos) - { - if (R.y < 0.0) - { - R = reflect(R, vec3(0.0, 1.0, 0.0)); - } - highp vec3 param = R; - highp vec3 param_1 = sunpos; - return sky(param, param_1); - } - - void main() - { - bool _247 = vpos.y < (_55.planeHeight - 0.00999999977648258209228515625); - bool _259; - if (_247) - { - _259 = _254.is_reflection == 1; - } - else - { - _259 = _247; - } - if (_259) - { - discard; - } - highp vec3 sample_pos = ipos - (orig_normal * 0.0199999995529651641845703125); - bool _275 = _254.is_reflection == 1; - int _276 = _275 ? 1 : 3; - highp vec4 trixel_material; - for (int i = 0; i < _276; i++) - { - highp vec4 _327 = texelFetch(triletex_trilesmp, ivec2(int(clamp(sample_pos.z, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0), int(clamp(sample_pos.y, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) + (int(clamp(sample_pos.x, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) * 16)), 0); - trixel_material = _327; - if (dot(_327, _327) > 9.9999997473787516355514526367188e-05) - { - break; - } - sample_pos += (to_center * 0.100000001490116119384765625); - } - int _352 = int(round(trixel_material.w * 255.0)); - highp float emittance = 0.0; - highp float roughness = 0.0; - highp float metallic = 0.0; - if ((_352 & 1) != 0) - { - emittance = float((_352 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - roughness = max(float((_352 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_352 >> 3) & 3) * 0.3333333432674407958984375; - } - highp vec3 _392 = abs(fnormal.xyz); - highp float _394 = _392.x; - highp float _396 = _392.y; - bool _397 = _394 >= _396; - bool _405; - if (_397) - { - _405 = _394 >= _392.z; - } - else - { - _405 = _397; - } - highp vec3 N; - if (_405) - { - N = vec3(sign(fnormal.x), 0.0, 0.0); - } - else - { - bool _418 = _396 >= _394; - bool _426; - if (_418) - { - _426 = _396 >= _392.z; - } - else - { - _426 = _418; - } - if (_426) - { - N = vec3(0.0, sign(fnormal.y), 0.0); - } - else - { - N = vec3(0.0, 0.0, sign(fnormal.z)); - } - } - if (_275) - { - frag_color = vec4(trixel_material.xyz * (((_55.sunLightColor * max(dot(N, normalize(_55.sunPosition)), 0.0)) * _55.sunIntensity) + vec3(0.100000001490116119384765625)), 1.0); - return; - } - highp vec3 _476 = normalize(cam - vpos); - highp vec3 _480 = normalize(_55.sunPosition); - highp vec3 _485 = normalize(_476 + _480); - highp float _490 = max(dot(N, _480), 0.0); - highp float _495 = max(dot(N, _476), 0.0); - highp vec3 _507 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, vec3(metallic)); - highp float param = max(dot(_485, _476), 0.0); - highp vec3 param_1 = _507; - highp vec3 _513 = fresnelSchlick(param, param_1); - highp vec3 param_2 = N; - highp vec3 param_3 = _485; - highp float param_4 = roughness; - highp vec3 param_5 = N; - highp vec3 param_6 = _476; - highp vec3 param_7 = _480; - highp float param_8 = roughness; - highp vec4 _552 = _254.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); - highp vec3 _563 = ((_552.xyz / vec3(_552.w)) * 0.5) + vec3(0.5); - highp float _567 = _563.z - 0.001000000047497451305389404296875; - highp vec3 _852 = _563; - _852.z = _567; - highp vec3 light = ((((((((vec3(1.0) - _513) * (1.0 - metallic)) * trixel_material.xyz) * vec3(0.3183098733425140380859375)) + ((_513 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * _495) * _490) + 9.9999997473787516355514526367188e-05))) * texture(shadowtex_shadowsmp, vec3(_852.xy, _567))) * _490) * _55.sunLightColor) * _55.sunIntensity; - highp vec2 _629 = gl_FragCoord.xy / vec2(float(_254.screen_w), float(_254.screen_h)); - highp vec4 _630 = texture(ssaotex_linsmp, _629); - highp float param_9 = _495; - highp vec3 param_10 = _507; - highp float param_11 = roughness; - highp vec3 _646 = FresnelSchlickRoughness(param_9, param_10, param_11); - if (roughness < 0.699999988079071044921875) - { - highp vec4 _665 = texture(brdf_lut_linsmp, vec2(_495, roughness)); - highp vec3 param_12 = reflect(-_476, N); - highp vec3 param_13 = _55.sunPosition; - highp vec3 _679 = sky_reflect(param_12, param_13); - light += (((_679 * ((_646 * _665.x) + vec3(_665.y))) * _254.indirect_spec_scale) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - highp vec3 indirectDiff; - if (_254.sh_enabled == 1) - { - indirectDiff = texture(sh_irradiance_linsmp, _629).xyz * _254.indirect_tint; - } - else - { - indirectDiff = _254.ambient_color * _254.ambient_intensity; - } - highp vec3 _748 = light; - highp vec3 _749 = _748 + (((((((vec3(1.0) - _646) * (1.0 - metallic)) * indirectDiff) * vec3(0.3183098733425140380859375)) * trixel_material.xyz) * _630.x) * _254.indirect_diff_scale); - light = _749; - frag_color = vec4(mix(mix(_55.deepColor, _749 + ((trixel_material.xyz * emittance) * _254.emissive_scale), vec3(smoothstep(0.0, _55.planeHeight, vpos.y))), _55.skyBase, vec3(smoothstep(_254.fog_start, _254.fog_end, length(vpos - cam)))), 1.0); - if (_254.is_preview == 1) - { - highp vec4 _795 = frag_color; - highp vec3 _799 = mix(_795.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); - frag_color.x = _799.x; - frag_color.y = _799.y; - frag_color.z = _799.z; - } - else - { - if (_254.is_preview == 2) - { - highp vec4 _813 = frag_color; - highp vec3 _817 = mix(_813.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); - frag_color.x = _817.x; - frag_color.y = _817.y; - frag_color.z = _817.z; - } - } - } - -*/ -fs_trile_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e, - 0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b, - 0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65, - 0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,0x6d, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x73,0x76,0x5f,0x6c, - 0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64, - 0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x35,0x35,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x66,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x6d,0x61,0x74,0x34,0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x62, - 0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63, - 0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70, - 0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x6e,0x64,0x69,0x72, - 0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f, - 0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x32, - 0x35,0x34,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x72,0x69, - 0x6c,0x65,0x74,0x65,0x78,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x3b,0x0a, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x53,0x68,0x61,0x64,0x6f,0x77,0x20,0x73,0x68, - 0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d, - 0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x73,0x73,0x61,0x6f,0x74, - 0x65,0x78,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f, - 0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, - 0x32,0x44,0x20,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e,0x73, - 0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x73,0x68,0x5f,0x69, - 0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70, - 0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x69,0x70,0x6f,0x73,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x69, - 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x76,0x3b,0x0a,0x0a,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29,0x20,0x2a, - 0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69,0x73,0x74, - 0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x48,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x33,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x34,0x32,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x20,0x2a,0x20,0x5f,0x31,0x33, - 0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x31,0x34,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x4e,0x2c,0x20,0x48,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x35,0x35,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x34,0x37,0x20,0x2a,0x20,0x5f, - 0x31,0x34,0x37,0x29,0x20,0x2a,0x20,0x28,0x5f,0x31,0x34,0x32,0x20,0x2d,0x20,0x31, - 0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x34,0x32,0x20,0x2f,0x20,0x28,0x28, - 0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37, - 0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x35,0x35,0x29, - 0x20,0x2a,0x20,0x5f,0x31,0x35,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72, - 0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x4e,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x56,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4c,0x2c, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x37,0x20,0x3d, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20,0x31,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x37,0x33,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a, - 0x20,0x5f,0x31,0x36,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x37,0x38,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e, - 0x2c,0x20,0x56,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x33, - 0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x4c,0x29, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x38,0x20,0x3d,0x20,0x31, - 0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x37,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x5f,0x31,0x38,0x33,0x20,0x2f,0x20,0x28,0x28, - 0x5f,0x31,0x38,0x33,0x20,0x2a,0x20,0x5f,0x31,0x38,0x38,0x29,0x20,0x2b,0x20,0x5f, - 0x31,0x37,0x33,0x29,0x29,0x20,0x2a,0x20,0x28,0x5f,0x31,0x37,0x38,0x20,0x2f,0x20, - 0x28,0x28,0x5f,0x31,0x37,0x38,0x20,0x2a,0x20,0x5f,0x31,0x38,0x38,0x29,0x20,0x2b, - 0x20,0x5f,0x31,0x37,0x33,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68, - 0x65,0x74,0x61,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x46,0x30,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x6d, - 0x61,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x2c,0x20,0x46,0x30,0x29,0x20,0x2d,0x20, - 0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x6b,0x79,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73, - 0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x35,0x20,0x3d, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f, - 0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x34, - 0x35,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e, - 0x70,0x6f,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x36,0x20,0x3d,0x20,0x5f,0x34,0x35, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28, - 0x5f,0x35,0x35,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x35,0x35, - 0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x5f,0x36,0x36,0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30, - 0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c, - 0x6f,0x20,0x2a,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x35,0x30,0x20,0x2d, - 0x20,0x30,0x2e,0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, - 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x31, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30, - 0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37, - 0x38,0x31,0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39, - 0x35,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x35,0x30,0x20,0x3e,0x20,0x30,0x2e,0x39,0x39,0x39,0x38,0x39,0x39,0x39,0x38, - 0x33,0x34,0x30,0x36,0x30,0x36,0x36,0x38,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, - 0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x44, - 0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x31,0x35,0x20,0x3d, - 0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x31,0x36,0x20,0x3d,0x20,0x5f, - 0x31,0x31,0x35,0x20,0x2b,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x35,0x35,0x2e,0x68, - 0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x61,0x62,0x73,0x28,0x5f,0x36,0x36,0x29,0x20,0x2a,0x20,0x38,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31, - 0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x31, - 0x31,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f, - 0x31,0x31,0x36,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x69, - 0x6e,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x52,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75, - 0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x52,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20,0x72,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x34,0x37,0x20,0x3d,0x20, - 0x76,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x35,0x35,0x2e,0x70,0x6c, - 0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32, - 0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x35,0x39,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x34,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x35,0x39,0x20,0x3d,0x20, - 0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x35,0x39,0x20,0x3d,0x20,0x5f,0x32,0x34, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x32,0x35,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20, - 0x69,0x70,0x6f,0x73,0x20,0x2d,0x20,0x28,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39, - 0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30, - 0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x32,0x37,0x35,0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x72, - 0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x32,0x37,0x36,0x20,0x3d,0x20,0x5f, - 0x32,0x37,0x35,0x20,0x3f,0x20,0x31,0x20,0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x78, - 0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b, - 0x20,0x69,0x20,0x3c,0x20,0x5f,0x32,0x37,0x36,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x32,0x37,0x20,0x3d,0x20, - 0x74,0x65,0x78,0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x74,0x72,0x69,0x6c,0x65, - 0x74,0x65,0x78,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x69,0x76, - 0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20,0x39,0x2e,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35, - 0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30, - 0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31, - 0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36, - 0x2e,0x30,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x79,0x2c,0x20,0x39,0x2e,0x39, - 0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33, - 0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d, - 0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34, - 0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31, - 0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39, - 0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20, - 0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x29,0x29,0x2c,0x20, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x69,0x78, - 0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x33, - 0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x64,0x6f,0x74,0x28,0x5f,0x33,0x32,0x37,0x2c,0x20,0x5f,0x33,0x32,0x37,0x29,0x20, - 0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38, - 0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37, - 0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70, - 0x6f,0x73,0x20,0x2b,0x3d,0x20,0x28,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72, - 0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39, - 0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x5f,0x33,0x35,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e, - 0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61, - 0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65, - 0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x26, - 0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63, - 0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x33,0x35,0x32,0x20, - 0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38, - 0x35,0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20, - 0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39, - 0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32, - 0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34, - 0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61, - 0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x33, - 0x35,0x32,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34, - 0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x33,0x39,0x32,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x34,0x20, - 0x3d,0x20,0x5f,0x33,0x39,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x36,0x20,0x3d, - 0x20,0x5f,0x33,0x39,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x20,0x3e,0x3d, - 0x20,0x5f,0x33,0x39,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x34,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33, - 0x39,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x20,0x3e,0x3d, - 0x20,0x5f,0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x33,0x39, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x34,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x34, - 0x31,0x38,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x39, - 0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x34,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34, - 0x32,0x36,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x39, - 0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x73, - 0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x32,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x34,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, - 0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f, - 0x35,0x35,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72, - 0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29, - 0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39, - 0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x37,0x36,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x76, - 0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x38,0x30,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x38,0x35,0x20,0x3d,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x34,0x37,0x36,0x20,0x2b,0x20,0x5f, - 0x34,0x38,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x30,0x20,0x3d,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x34,0x38,0x30,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x39,0x35,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28, - 0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x34,0x37,0x36,0x29,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x35,0x30,0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30, - 0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35, - 0x29,0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69, - 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x65,0x74, - 0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, - 0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x34,0x38,0x35,0x2c,0x20,0x5f, - 0x34,0x37,0x36,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x20,0x3d,0x20,0x5f,0x35,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x31,0x33,0x20,0x3d, - 0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x34,0x38,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x34,0x37,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x37,0x20,0x3d,0x20,0x5f,0x34,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f, - 0x35,0x35,0x32,0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e,0x6d,0x76,0x70,0x5f,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x66,0x6c,0x6f, - 0x6f,0x72,0x28,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20, - 0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x33,0x20,0x3d,0x20,0x28,0x28,0x5f,0x35, - 0x35,0x32,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x35, - 0x35,0x32,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x36,0x37,0x20, - 0x3d,0x20,0x5f,0x35,0x36,0x33,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33, - 0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x38,0x35,0x32,0x20,0x3d,0x20,0x5f,0x35,0x36,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x5f,0x38,0x35,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x35,0x36,0x37,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69, - 0x67,0x68,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x35,0x31,0x33,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, - 0x63,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, - 0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32, - 0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20, - 0x2b,0x20,0x28,0x28,0x5f,0x35,0x31,0x33,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74, - 0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72, - 0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76, - 0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x34,0x39,0x35, - 0x29,0x20,0x2a,0x20,0x5f,0x34,0x39,0x30,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35, - 0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30, - 0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73, - 0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x38,0x35,0x32,0x2e,0x78,0x79, - 0x2c,0x20,0x5f,0x35,0x36,0x37,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x34,0x39,0x30, - 0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74, - 0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e, - 0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x32,0x39,0x20,0x3d, - 0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32, - 0x35,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f, - 0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x36,0x33,0x30,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x6c,0x69,0x6e,0x73,0x6d, - 0x70,0x2c,0x20,0x5f,0x36,0x32,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x39,0x20,0x3d,0x20,0x5f,0x34,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x30,0x20,0x3d,0x20,0x5f,0x35,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x31,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x36,0x34,0x36,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68, - 0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c,0x20, - 0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37, - 0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x36,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x5f,0x6c,0x69,0x6e, - 0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x34,0x39,0x35,0x2c,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x28,0x2d,0x5f,0x34,0x37,0x36,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x35,0x2e, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x36,0x37,0x39,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x5f,0x36,0x37,0x39, - 0x20,0x2a,0x20,0x28,0x28,0x5f,0x36,0x34,0x36,0x20,0x2a,0x20,0x5f,0x36,0x36,0x35, - 0x2e,0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x36,0x35,0x2e, - 0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29, - 0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35, - 0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38, - 0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x68,0x5f,0x65,0x6e, - 0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x44,0x69,0x66,0x66,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x73,0x68,0x5f,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65,0x5f,0x6c, - 0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x36,0x32,0x39,0x29,0x2e,0x78,0x79,0x7a, - 0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74, - 0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66, - 0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x61,0x6d,0x62, - 0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x34,0x38,0x20,0x3d,0x20,0x6c,0x69,0x67,0x68, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d,0x20,0x5f,0x37,0x34,0x38,0x20,0x2b,0x20, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29, - 0x20,0x2d,0x20,0x5f,0x36,0x34,0x36,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20, - 0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x69, - 0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x29,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33, - 0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29, - 0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72, - 0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x36,0x33,0x30,0x2e, - 0x78,0x29,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x5f,0x37,0x34,0x39, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28, - 0x5f,0x35,0x35,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x5f, - 0x37,0x34,0x39,0x20,0x2b,0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, - 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d, - 0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e, - 0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x35,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48, - 0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29, - 0x2c,0x20,0x5f,0x35,0x35,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f, - 0x32,0x35,0x34,0x2e,0x66,0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x5f, - 0x32,0x35,0x34,0x2e,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x2c,0x20,0x6c,0x65,0x6e, - 0x67,0x74,0x68,0x28,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x63,0x61,0x6d,0x29,0x29, - 0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65, - 0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x37,0x39,0x35,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x39,0x39,0x20,0x3d,0x20,0x6d,0x69, - 0x78,0x28,0x5f,0x37,0x39,0x35,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39, - 0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36, - 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34, - 0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20, - 0x3d,0x20,0x5f,0x37,0x39,0x39,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d, - 0x20,0x5f,0x37,0x39,0x39,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20, - 0x5f,0x37,0x39,0x39,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73, - 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x38,0x31,0x33,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x31,0x37,0x20,0x3d, - 0x20,0x6d,0x69,0x78,0x28,0x5f,0x38,0x31,0x33,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32, - 0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32, - 0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x38,0x31,0x37,0x2e, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x38, - 0x31,0x37,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d, - 0x20,0x5f,0x38,0x31,0x37,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trile_vs_params - { - float4x4 mvp; - float4x4 mvp_shadow; - float3 camera; - }; - - struct main0_out - { - float3 cam [[user(locn0)]]; - float3 to_center [[user(locn1)]]; - float3 vpos [[user(locn2)]]; - float3 ipos [[user(locn3)]]; - float4 fnormal [[user(locn4)]]; - float3 orig_normal [[user(locn5)]]; - float3 cv [[user(locn6)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 normal [[attribute(1)]]; - float4 centre [[attribute(2)]]; - float4 instance [[attribute(3)]]; - }; - - static inline __attribute__((always_inline)) - float3x3 rot_x(thread const float& a) - { - float _28 = cos(a); - float _31 = sin(a); - return float3x3(float3(1.0, 0.0, 0.0), float3(0.0, _28, -_31), float3(0.0, _31, _28)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_z(thread const float& a) - { - float _64 = cos(a); - float _67 = sin(a); - return float3x3(float3(_64, -_67, 0.0), float3(_67, _64, 0.0), float3(0.0, 0.0, 1.0)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_y(thread const float& a) - { - float _47 = cos(a); - float _50 = sin(a); - return float3x3(float3(_47, 0.0, _50), float3(0.0, 1.0, 0.0), float3(-_50, 0.0, _47)); - } - - static inline __attribute__((always_inline)) - float3x3 get_orientation_matrix(thread const int& ori) - { - int _82 = ori / 4; - float3x3 base; - if (_82 == 0) - { - base = float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - vertex main0_out main0(main0_in in [[stage_in]], constant trile_vs_params& _193 [[buffer(0)]]) - { - main0_out out = {}; - int param = int(round(in.instance.w)); - float3x3 _171 = get_orientation_matrix(param); - float3 _200 = ((_171 * (in.position.xyz - float3(0.5))) + float3(0.5)) + in.instance.xyz; - out.gl_Position = _193.mvp * float4(_200, 1.0); - out.fnormal = float4(_171 * in.normal.xyz, 0.0); - out.orig_normal = in.normal.xyz; - out.to_center = in.centre.xyz - in.position.xyz; - out.vpos = _200; - out.ipos = in.position.xyz; - out.cam = _193.camera; - out.cv = fast::normalize(_193.camera - out.vpos); - return out; - } - -*/ -vs_trile_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x63,0x61,0x6d,0x65,0x72,0x61,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e, - 0x74,0x65,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31, - 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x76,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x69,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x35,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x76, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x36,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63, - 0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f, - 0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29, - 0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78, - 0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32, - 0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f, - 0x74,0x5f,0x7a,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36, - 0x37,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x5f,0x36,0x37,0x2c,0x20,0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20, - 0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74, - 0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74, - 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79, - 0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x78,0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74, - 0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x74,0x68,0x72,0x65,0x61, - 0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x6f,0x72,0x69, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20, - 0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61, - 0x73,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31, - 0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20, - 0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36, - 0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d, - 0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30, - 0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30, - 0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d, - 0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36, - 0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20, - 0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73, - 0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67, - 0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x26,0x20,0x5f,0x31,0x39,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28, - 0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e,0x2e,0x69,0x6e,0x73, - 0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20,0x67, - 0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x28,0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x69,0x6e, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x28,0x5f,0x32,0x30,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20, - 0x69,0x6e,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x6f,0x72,0x69, - 0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x3d,0x20,0x69,0x6e, - 0x2e,0x63,0x65,0x6e,0x74,0x72,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x69,0x6e, - 0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32, - 0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x69,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x61,0x6d,0x20, - 0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x76,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x39,0x33, - 0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x20,0x2d,0x20,0x6f,0x75,0x74,0x2e,0x76,0x70, - 0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trile_world_config - { - float3 skyBase; - float3 skyTop; - float3 sunDisk; - float3 horizonHalo; - float3 sunHalo; - float3 sunLightColor; - packed_float3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - float3 waterColor; - packed_float3 deepColor; - float time; - int hsv_lighting; - }; - - struct trile_fs_params - { - float4x4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - float ambient_intensity; - float emissive_scale; - float indirect_diff_scale; - float indirect_spec_scale; - char _m8_pad[4]; - packed_float3 ambient_color; - int is_preview; - packed_float3 indirect_tint; - int sh_enabled; - float fog_start; - float fog_end; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float3 cam [[user(locn0)]]; - float3 to_center [[user(locn1)]]; - float3 vpos [[user(locn2)]]; - float3 ipos [[user(locn3)]]; - float4 fnormal [[user(locn4)]]; - float3 orig_normal [[user(locn5)]]; - }; - - static inline __attribute__((always_inline)) - float3 fresnelSchlick(thread const float& cosTheta, thread const float3& F0) - { - return F0 + ((float3(1.0) - F0) * powr(fast::clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - static inline __attribute__((always_inline)) - float DistributionGGX(thread const float3& N, thread const float3& H, thread const float& roughness) - { - float _138 = roughness * roughness; - float _142 = _138 * _138; - float _147 = fast::max(dot(N, H), 0.0); - float _155 = ((_147 * _147) * (_142 - 1.0)) + 1.0; - return _142 / ((3.1415927410125732421875 * _155) * _155); - } - - static inline __attribute__((always_inline)) - float GeometrySmith(thread const float3& N, thread const float3& V, thread const float3& L, thread const float& roughness) - { - float _167 = roughness + 1.0; - float _173 = (_167 * _167) * 0.125; - float _178 = fast::max(dot(N, V), 0.0); - float _183 = fast::max(dot(N, L), 0.0); - float _188 = 1.0 - _173; - return (_183 / ((_183 * _188) + _173)) * (_178 / ((_178 * _188) + _173)); - } - - static inline __attribute__((always_inline)) - float3 FresnelSchlickRoughness(thread const float& cosTheta, thread const float3& F0, thread const float& roughness) - { - return F0 + ((fast::max(float3(1.0 - roughness), F0) - F0) * powr(fast::clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - static inline __attribute__((always_inline)) - float3 sky(thread const float3& skypos, thread const float3& sunpos, constant trile_world_config& _55) - { - float3 _45 = fast::normalize(skypos); - float _50 = dot(_45, fast::normalize(sunpos)); - float _66 = _45.y; - float3 result = mix(_55.skyBase, _55.skyTop, float3(fast::clamp(_66 * 2.0, 0.0, 0.699999988079071044921875))) + ((_55.sunHalo * fast::clamp((_50 - 0.949999988079071044921875) * 10.0, 0.0, 0.800000011920928955078125)) * 0.20000000298023223876953125); - if (_50 > 0.99989998340606689453125) - { - result = _55.sunDisk; - } - float3 _115 = result; - float3 _116 = _115 + (mix(_55.horizonHalo, float3(0.0), float3(fast::clamp(abs(_66) * 80.0, 0.0, 1.0))) * 0.100000001490116119384765625); - result = _116; - return _116; - } - - static inline __attribute__((always_inline)) - float3 sky_reflect(thread float3& R, thread const float3& sunpos, constant trile_world_config& _55) - { - if (R.y < 0.0) - { - R = reflect(R, float3(0.0, 1.0, 0.0)); - } - float3 param = R; - float3 param_1 = sunpos; - return sky(param, param_1, _55); - } - - fragment main0_out main0(main0_in in [[stage_in]], constant trile_world_config& _55 [[buffer(0)]], constant trile_fs_params& _254 [[buffer(1)]], texture2d triletex [[texture(0)]], depth2d shadowtex [[texture(1)]], texture2d ssaotex [[texture(2)]], texture2d brdf_lut [[texture(3)]], texture2d sh_irradiance [[texture(4)]], sampler trilesmp [[sampler(0)]], sampler shadowsmp [[sampler(1)]], sampler linsmp [[sampler(2)]], float4 gl_FragCoord [[position]]) - { - main0_out out = {}; - bool _247 = in.vpos.y < (_55.planeHeight - 0.00999999977648258209228515625); - bool _259; - if (_247) - { - _259 = _254.is_reflection == 1; - } - else - { - _259 = _247; - } - if (_259) - { - discard_fragment(); - } - float3 sample_pos = in.ipos - (in.orig_normal * 0.0199999995529651641845703125); - bool _275 = _254.is_reflection == 1; - int _276 = _275 ? 1 : 3; - float4 trixel_material; - for (int i = 0; i < _276; i++) - { - float4 _327 = triletex.read(uint2(int2(int(fast::clamp(sample_pos.z, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0), int(fast::clamp(sample_pos.y, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) + (int(fast::clamp(sample_pos.x, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) * 16))), 0); - trixel_material = _327; - if (dot(_327, _327) > 9.9999997473787516355514526367188e-05) - { - break; - } - sample_pos += (in.to_center * 0.100000001490116119384765625); - } - int _352 = int(round(trixel_material.w * 255.0)); - float emittance = 0.0; - float roughness = 0.0; - float metallic = 0.0; - if ((_352 & 1) != 0) - { - emittance = float((_352 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - roughness = fast::max(float((_352 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_352 >> 3) & 3) * 0.3333333432674407958984375; - } - float3 _392 = abs(in.fnormal.xyz); - float _394 = _392.x; - float _396 = _392.y; - bool _397 = _394 >= _396; - bool _405; - if (_397) - { - _405 = _394 >= _392.z; - } - else - { - _405 = _397; - } - float3 N; - if (_405) - { - N = float3(sign(in.fnormal.x), 0.0, 0.0); - } - else - { - bool _418 = _396 >= _394; - bool _426; - if (_418) - { - _426 = _396 >= _392.z; - } - else - { - _426 = _418; - } - if (_426) - { - N = float3(0.0, sign(in.fnormal.y), 0.0); - } - else - { - N = float3(0.0, 0.0, sign(in.fnormal.z)); - } - } - if (_275) - { - out.frag_color = float4(trixel_material.xyz * (((_55.sunLightColor * fast::max(dot(N, fast::normalize(float3(_55.sunPosition))), 0.0)) * _55.sunIntensity) + float3(0.100000001490116119384765625)), 1.0); - return out; - } - float3 _476 = fast::normalize(in.cam - in.vpos); - float3 _480 = fast::normalize(float3(_55.sunPosition)); - float3 _485 = fast::normalize(_476 + _480); - float _490 = fast::max(dot(N, _480), 0.0); - float _495 = fast::max(dot(N, _476), 0.0); - float3 _507 = mix(float3(0.039999999105930328369140625), trixel_material.xyz, float3(metallic)); - float param = fast::max(dot(_485, _476), 0.0); - float3 param_1 = _507; - float3 _513 = fresnelSchlick(param, param_1); - float3 param_2 = N; - float3 param_3 = _485; - float param_4 = roughness; - float3 param_5 = N; - float3 param_6 = _476; - float3 param_7 = _480; - float param_8 = roughness; - float4 _552 = _254.mvp_shadow * float4(floor(in.vpos * 16.0) * float3(0.0625), 1.0); - float3 _563 = ((_552.xyz / float3(_552.w)) * 0.5) + float3(0.5); - float _567 = _563.z - 0.001000000047497451305389404296875; - float3 _852 = _563; - _852.z = _567; - float3 light = ((((((((float3(1.0) - _513) * (1.0 - metallic)) * trixel_material.xyz) * float3(0.3183098733425140380859375)) + ((_513 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * _495) * _490) + 9.9999997473787516355514526367188e-05))) * shadowtex.sample_compare(shadowsmp, _852.xy, _567)) * _490) * _55.sunLightColor) * _55.sunIntensity; - float2 _629 = gl_FragCoord.xy / float2(float(_254.screen_w), float(_254.screen_h)); - float4 _630 = ssaotex.sample(linsmp, _629); - float param_9 = _495; - float3 param_10 = _507; - float param_11 = roughness; - float3 _646 = FresnelSchlickRoughness(param_9, param_10, param_11); - if (roughness < 0.699999988079071044921875) - { - float4 _665 = brdf_lut.sample(linsmp, float2(_495, roughness)); - float3 param_12 = reflect(-_476, N); - float3 param_13 = float3(_55.sunPosition); - float3 _679 = sky_reflect(param_12, param_13, _55); - light += (((_679 * ((_646 * _665.x) + float3(_665.y))) * _254.indirect_spec_scale) * (1.0 - fast::clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - float3 indirectDiff; - if (_254.sh_enabled == 1) - { - indirectDiff = sh_irradiance.sample(linsmp, _629).xyz * float3(_254.indirect_tint); - } - else - { - indirectDiff = float3(_254.ambient_color) * _254.ambient_intensity; - } - float3 _748 = light; - float3 _749 = _748 + (((((((float3(1.0) - _646) * (1.0 - metallic)) * indirectDiff) * float3(0.3183098733425140380859375)) * trixel_material.xyz) * _630.x) * _254.indirect_diff_scale); - light = _749; - out.frag_color = float4(mix(mix(float3(_55.deepColor), _749 + ((trixel_material.xyz * emittance) * _254.emissive_scale), float3(smoothstep(0.0, _55.planeHeight, in.vpos.y))), _55.skyBase, float3(smoothstep(_254.fog_start, _254.fog_end, length(in.vpos - in.cam)))), 1.0); - if (_254.is_preview == 1) - { - float4 _795 = out.frag_color; - float3 _799 = mix(_795.xyz, float3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), float3(0.5)); - out.frag_color.x = _799.x; - out.frag_color.y = _799.y; - out.frag_color.z = _799.z; - } - else - { - if (_254.is_preview == 2) - { - float4 _813 = out.frag_color; - float3 _817 = mix(_813.xyz, float3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), float3(0.5)); - out.frag_color.x = _817.x; - out.frag_color.y = _817.y; - out.frag_color.z = _817.z; - } - } - return out; - } - -*/ -fs_trile_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x54, - 0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73, - 0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x48,0x61, - 0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73, - 0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73, - 0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48, - 0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61, - 0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x77,0x61, - 0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61, - 0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x64,0x65,0x65,0x70, - 0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68, - 0x73,0x76,0x5f,0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x66,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f, - 0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63, - 0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69, - 0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61, - 0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e, - 0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x20,0x5f,0x6d,0x38,0x5f, - 0x70,0x61,0x64,0x5b,0x34,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b, - 0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e, - 0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x69, - 0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f, - 0x73,0x74,0x61,0x72,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30, - 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20, - 0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x70,0x6f,0x73, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x69,0x70,0x6f, - 0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x33,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x35,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28, - 0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x63,0x6f,0x73,0x54,0x68,0x65, - 0x74,0x61,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x46, - 0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54, - 0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c, - 0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69, - 0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x26,0x20,0x4e,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x48,0x2c,0x20,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x20,0x3d,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x34,0x32,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x20,0x2a,0x20,0x5f, - 0x31,0x33,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x34,0x37,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28, - 0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x48,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x35,0x20, - 0x3d,0x20,0x28,0x28,0x5f,0x31,0x34,0x37,0x20,0x2a,0x20,0x5f,0x31,0x34,0x37,0x29, - 0x20,0x2a,0x20,0x28,0x5f,0x31,0x34,0x32,0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29, - 0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x5f,0x31,0x34,0x32,0x20,0x2f,0x20,0x28,0x28,0x33,0x2e,0x31,0x34, - 0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32, - 0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x35,0x35,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x35,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d, - 0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4e, - 0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x56,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4c, - 0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36, - 0x37,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20, - 0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x37,0x33,0x20,0x3d,0x20,0x28,0x5f,0x31,0x36,0x37,0x20,0x2a,0x20,0x5f,0x31, - 0x36,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x38,0x20,0x3d,0x20,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x31,0x38,0x33,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x38,0x38,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x37,0x33, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x5f,0x31, - 0x38,0x33,0x20,0x2f,0x20,0x28,0x28,0x5f,0x31,0x38,0x33,0x20,0x2a,0x20,0x5f,0x31, - 0x38,0x38,0x29,0x20,0x2b,0x20,0x5f,0x31,0x37,0x33,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x5f,0x31,0x37,0x38,0x20,0x2f,0x20,0x28,0x28,0x5f,0x31,0x37,0x38,0x20,0x2a,0x20, - 0x5f,0x31,0x38,0x38,0x29,0x20,0x2b,0x20,0x5f,0x31,0x37,0x33,0x29,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28, - 0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x26,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x26,0x20,0x46,0x30,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d, - 0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x2c,0x20,0x46,0x30,0x29,0x20, - 0x2d,0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63, - 0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74, - 0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74, - 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79, - 0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x73,0x6b,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x73,0x6b,0x79,0x70,0x6f, - 0x73,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x2c,0x20, - 0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x77, - 0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x35,0x35, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x34,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x64,0x6f, - 0x74,0x28,0x5f,0x34,0x35,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x36,0x20,0x3d, - 0x20,0x5f,0x34,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28, - 0x5f,0x35,0x35,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x35,0x35, - 0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x36,0x36,0x20, - 0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39, - 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34, - 0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x35, - 0x35,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x20,0x2a,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x35,0x30,0x20,0x2d,0x20,0x30, - 0x2e,0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31, - 0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31, - 0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33, - 0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35, - 0x30,0x20,0x3e,0x20,0x30,0x2e,0x39,0x39,0x39,0x38,0x39,0x39,0x39,0x38,0x33,0x34, - 0x30,0x36,0x30,0x36,0x36,0x38,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x44,0x69,0x73, - 0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x5f,0x31,0x31,0x35,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x31,0x36,0x20,0x3d,0x20,0x5f,0x31,0x31,0x35,0x20,0x2b,0x20,0x28,0x6d,0x69,0x78, - 0x28,0x5f,0x35,0x35,0x2e,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x61,0x62,0x73,0x28,0x5f,0x36,0x36,0x29,0x20,0x2a,0x20,0x38,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31, - 0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x31, - 0x31,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f, - 0x31,0x31,0x36,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x5f, - 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x52,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x73, - 0x75,0x6e,0x70,0x6f,0x73,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66, - 0x69,0x67,0x26,0x20,0x5f,0x35,0x35,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x52,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20, - 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20,0x5f,0x35,0x35,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65, - 0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66, - 0x69,0x67,0x26,0x20,0x5f,0x35,0x35,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72, - 0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26, - 0x20,0x5f,0x32,0x35,0x34,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x31, - 0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66, - 0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78,0x20,0x5b, - 0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x64, - 0x65,0x70,0x74,0x68,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x68, - 0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32, - 0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x73,0x61,0x6f,0x74,0x65,0x78, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d,0x5d,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, - 0x3e,0x20,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x20,0x5b,0x5b,0x74,0x65,0x78, - 0x74,0x75,0x72,0x65,0x28,0x33,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x73,0x68,0x5f,0x69, - 0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x34,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x72,0x20,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x20,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61, - 0x6d,0x70,0x6c,0x65,0x72,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x20, - 0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75, - 0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x32,0x34,0x37,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x2e, - 0x79,0x20,0x3c,0x20,0x28,0x5f,0x35,0x35,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65, - 0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38, - 0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x32,0x35,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x32,0x34,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x32,0x35,0x39,0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e, - 0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x3d, - 0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x32,0x35,0x39,0x20,0x3d,0x20,0x5f,0x32,0x34,0x37,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x39, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74, - 0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20, - 0x3d,0x20,0x69,0x6e,0x2e,0x69,0x70,0x6f,0x73,0x20,0x2d,0x20,0x28,0x69,0x6e,0x2e, - 0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31, - 0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x37,0x35,0x20,0x3d,0x20,0x5f, - 0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x5f,0x32,0x37,0x36,0x20,0x3d,0x20,0x5f,0x32,0x37,0x35,0x20,0x3f,0x20,0x31,0x20, - 0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20, - 0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x5f,0x32,0x37,0x36,0x3b,0x20,0x69, - 0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x32,0x37,0x20,0x3d,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78,0x2e,0x72,0x65,0x61,0x64,0x28,0x75,0x69, - 0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74,0x28,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, - 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e, - 0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37, - 0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x2c,0x20, - 0x69,0x6e,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x79,0x2c,0x20,0x39,0x2e, - 0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36, - 0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65, - 0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36, - 0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20, - 0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x28,0x69,0x6e,0x74,0x28,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, - 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e, - 0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37, - 0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a, - 0x20,0x31,0x36,0x29,0x29,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72, - 0x69,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x33,0x32,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x32,0x37, - 0x2c,0x20,0x5f,0x33,0x32,0x37,0x29,0x20,0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35, - 0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20,0x2b,0x3d,0x20,0x28,0x69, - 0x6e,0x2e,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x2a,0x20,0x30,0x2e, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31, - 0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x33,0x35,0x32, - 0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a, - 0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20, - 0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c, - 0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26, - 0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34, - 0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39, - 0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d, - 0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x28,0x28,0x5f,0x33,0x35,0x32,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32, - 0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35, - 0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35, - 0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c, - 0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x33,0x35, - 0x32,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30, - 0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x39, - 0x32,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x33,0x39,0x34,0x20,0x3d,0x20,0x5f,0x33,0x39,0x32,0x2e,0x78, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x36, - 0x20,0x3d,0x20,0x5f,0x33,0x39,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x20, - 0x3e,0x3d,0x20,0x5f,0x33,0x39,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x34,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x33,0x39,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x20, - 0x3e,0x3d,0x20,0x5f,0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f, - 0x33,0x39,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x34,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x34,0x31,0x38,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20, - 0x5f,0x33,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x34,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20, - 0x5f,0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x34,0x32,0x36,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37, - 0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28, - 0x28,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f, - 0x6c,0x6f,0x72,0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28, - 0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x35, - 0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x29, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75, - 0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31, - 0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36, - 0x32,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x34,0x37,0x36,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x63,0x61,0x6d,0x20,0x2d, - 0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x34,0x38,0x30,0x20,0x3d,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x5f,0x34,0x38,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x34,0x37,0x36,0x20,0x2b,0x20, - 0x5f,0x34,0x38,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x39,0x30,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61, - 0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x34,0x38,0x30,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x39,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x34,0x37,0x36,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x5f,0x35,0x30,0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35, - 0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29, - 0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61, - 0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x6d,0x65, - 0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x34,0x38,0x35,0x2c,0x20, - 0x5f,0x34,0x37,0x36,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, - 0x3d,0x20,0x5f,0x35,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x35,0x31,0x33,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65, - 0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x34,0x38,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d, - 0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x34,0x37,0x36,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x37,0x20,0x3d,0x20,0x5f,0x34,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x5f,0x35,0x35,0x32,0x20,0x3d,0x20,0x5f,0x32,0x35,0x34,0x2e, - 0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x2e,0x76,0x70,0x6f, - 0x73,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x35,0x36, - 0x33,0x20,0x3d,0x20,0x28,0x28,0x5f,0x35,0x35,0x32,0x2e,0x78,0x79,0x7a,0x20,0x2f, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x35,0x35,0x32,0x2e,0x77,0x29,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x35,0x36,0x37,0x20,0x3d,0x20,0x5f,0x35,0x36,0x33,0x2e,0x7a,0x20,0x2d, - 0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34, - 0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39, - 0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x38,0x35,0x32,0x20,0x3d,0x20,0x5f,0x35,0x36,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x5f,0x38,0x35,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x35,0x36,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x69,0x67,0x68, - 0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x35,0x31,0x33,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, - 0x63,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, - 0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33, - 0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x35,0x31,0x33,0x20,0x2a,0x20,0x28,0x44,0x69, - 0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65, - 0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20, - 0x5f,0x34,0x39,0x35,0x29,0x20,0x2a,0x20,0x5f,0x34,0x39,0x30,0x29,0x20,0x2b,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x73,0x68,0x61,0x64,0x6f, - 0x77,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x63,0x6f,0x6d,0x70, - 0x61,0x72,0x65,0x28,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x5f, - 0x38,0x35,0x32,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x35,0x36,0x37,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x34,0x39,0x30,0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e, - 0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x35, - 0x35,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x36,0x32,0x39,0x20, - 0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78, - 0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x63,0x72,0x65, - 0x65,0x6e,0x5f,0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x5f,0x36,0x33,0x30,0x20,0x3d,0x20,0x73,0x73,0x61,0x6f,0x74,0x65, - 0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c, - 0x20,0x5f,0x36,0x32,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x34,0x39,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x30,0x20,0x3d,0x20,0x5f,0x35,0x30,0x37,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31, - 0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x36,0x34,0x36,0x20,0x3d,0x20, - 0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39, - 0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x36,0x36,0x35,0x20, - 0x3d,0x20,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x5f,0x34,0x39,0x35,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x34,0x37,0x36,0x2c,0x20,0x4e,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x5f,0x35,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x36,0x37,0x39,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x2c,0x20,0x5f,0x35,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d, - 0x20,0x28,0x28,0x28,0x5f,0x36,0x37,0x39,0x20,0x2a,0x20,0x28,0x28,0x5f,0x36,0x34, - 0x36,0x20,0x2a,0x20,0x5f,0x36,0x36,0x35,0x2e,0x78,0x29,0x20,0x2b,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x36,0x35,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73, - 0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28, - 0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35, - 0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38, - 0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65, - 0x64,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69, - 0x66,0x66,0x20,0x3d,0x20,0x73,0x68,0x5f,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e, - 0x63,0x65,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x6c,0x69,0x6e,0x73,0x6d,0x70, - 0x2c,0x20,0x5f,0x36,0x32,0x39,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44, - 0x69,0x66,0x66,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x35, - 0x34,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29, - 0x20,0x2a,0x20,0x5f,0x32,0x35,0x34,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x37,0x34,0x38, - 0x20,0x3d,0x20,0x6c,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d,0x20,0x5f,0x37,0x34,0x38, - 0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x36,0x34,0x36,0x29,0x20,0x2a,0x20, - 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29, - 0x29,0x20,0x2a,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66, - 0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38, - 0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30, - 0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x5f,0x36,0x33,0x30,0x2e,0x78,0x29,0x20,0x2a,0x20,0x5f,0x32,0x35,0x34, - 0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73, - 0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, - 0x20,0x3d,0x20,0x5f,0x37,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, - 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x5f,0x35,0x35,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f, - 0x72,0x29,0x2c,0x20,0x5f,0x37,0x34,0x39,0x20,0x2b,0x20,0x28,0x28,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a, - 0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20, - 0x5f,0x32,0x35,0x34,0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63, - 0x61,0x6c,0x65,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f, - 0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x35, - 0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e, - 0x2e,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x5f,0x35,0x35,0x2e, - 0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x32,0x35,0x34,0x2e, - 0x66,0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x5f,0x32,0x35,0x34,0x2e, - 0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x2c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28, - 0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x69,0x6e,0x2e,0x63,0x61,0x6d, - 0x29,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76, - 0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f, - 0x37,0x39,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x37,0x39,0x39,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28, - 0x5f,0x37,0x39,0x35,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39, - 0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36, - 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34, - 0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x37,0x39,0x39,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x37,0x39,0x39,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x37, - 0x39,0x39,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x34,0x2e,0x69,0x73,0x5f,0x70, - 0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x38,0x31,0x33,0x20,0x3d, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x5f,0x38,0x31,0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f, - 0x38,0x31,0x33,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31, - 0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c, - 0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32, - 0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x38,0x31, - 0x37,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x79,0x20,0x3d,0x20,0x5f,0x38,0x31,0x37,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x38,0x31,0x37,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75, - 0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -trile_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "trile_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_trile_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 9; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_55.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_55.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_55.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_55.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_55.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_55.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_55.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_55.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_55.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_55.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_55.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_55.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_55.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_55.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_55.time"; - desc.uniform_blocks[1].glsl_uniforms[15].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[15].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[15].glsl_name = "_55.hsv_lighting"; - desc.uniform_blocks[3].stage = .FRAGMENT; - desc.uniform_blocks[3].layout = .STD140; - desc.uniform_blocks[3].size = 144; - desc.uniform_blocks[3].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[3].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[0].glsl_name = "_254.mvp_shadow"; - desc.uniform_blocks[3].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[1].glsl_name = "_254.is_reflection"; - desc.uniform_blocks[3].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[2].glsl_name = "_254.screen_h"; - desc.uniform_blocks[3].glsl_uniforms[3].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[3].glsl_name = "_254.screen_w"; - desc.uniform_blocks[3].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[4].glsl_name = "_254.ambient_intensity"; - desc.uniform_blocks[3].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[5].glsl_name = "_254.emissive_scale"; - desc.uniform_blocks[3].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[6].glsl_name = "_254.indirect_diff_scale"; - desc.uniform_blocks[3].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[7].glsl_name = "_254.indirect_spec_scale"; - desc.uniform_blocks[3].glsl_uniforms[8].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[8].glsl_name = "_254.ambient_color"; - desc.uniform_blocks[3].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[9].glsl_name = "_254.is_preview"; - desc.uniform_blocks[3].glsl_uniforms[10].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[10].glsl_name = "_254.indirect_tint"; - desc.uniform_blocks[3].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[11].glsl_name = "_254.sh_enabled"; - desc.uniform_blocks[3].glsl_uniforms[12].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[12].glsl_name = "_254.fog_start"; - desc.uniform_blocks[3].glsl_uniforms[13].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[13].glsl_name = "_254.fog_end"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .DEPTH; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .COMPARISON; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "triletex_trilesmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 2; - desc.image_sampler_pairs[1].sampler_slot = 2; - desc.image_sampler_pairs[1].glsl_name = "shadowtex_shadowsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 1; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[2].glsl_name = "ssaotex_linsmp"; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 3; - desc.image_sampler_pairs[3].sampler_slot = 3; - desc.image_sampler_pairs[3].glsl_name = "brdf_lut_linsmp"; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 4; - desc.image_sampler_pairs[4].sampler_slot = 3; - desc.image_sampler_pairs[4].glsl_name = "sh_irradiance_linsmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_trile_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 9; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_55.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_55.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_55.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_55.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_55.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_55.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_55.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_55.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_55.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_55.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_55.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_55.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_55.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_55.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_55.time"; - desc.uniform_blocks[1].glsl_uniforms[15].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[15].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[15].glsl_name = "_55.hsv_lighting"; - desc.uniform_blocks[3].stage = .FRAGMENT; - desc.uniform_blocks[3].layout = .STD140; - desc.uniform_blocks[3].size = 144; - desc.uniform_blocks[3].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[3].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[0].glsl_name = "_254.mvp_shadow"; - desc.uniform_blocks[3].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[1].glsl_name = "_254.is_reflection"; - desc.uniform_blocks[3].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[2].glsl_name = "_254.screen_h"; - desc.uniform_blocks[3].glsl_uniforms[3].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[3].glsl_name = "_254.screen_w"; - desc.uniform_blocks[3].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[4].glsl_name = "_254.ambient_intensity"; - desc.uniform_blocks[3].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[5].glsl_name = "_254.emissive_scale"; - desc.uniform_blocks[3].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[6].glsl_name = "_254.indirect_diff_scale"; - desc.uniform_blocks[3].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[7].glsl_name = "_254.indirect_spec_scale"; - desc.uniform_blocks[3].glsl_uniforms[8].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[8].glsl_name = "_254.ambient_color"; - desc.uniform_blocks[3].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[9].glsl_name = "_254.is_preview"; - desc.uniform_blocks[3].glsl_uniforms[10].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[10].glsl_name = "_254.indirect_tint"; - desc.uniform_blocks[3].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[11].glsl_name = "_254.sh_enabled"; - desc.uniform_blocks[3].glsl_uniforms[12].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[12].glsl_name = "_254.fog_start"; - desc.uniform_blocks[3].glsl_uniforms[13].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[13].glsl_name = "_254.fog_end"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .DEPTH; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .COMPARISON; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "triletex_trilesmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 2; - desc.image_sampler_pairs[1].sampler_slot = 2; - desc.image_sampler_pairs[1].glsl_name = "shadowtex_shadowsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 1; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[2].glsl_name = "ssaotex_linsmp"; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 3; - desc.image_sampler_pairs[3].sampler_slot = 3; - desc.image_sampler_pairs[3].glsl_name = "brdf_lut_linsmp"; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 4; - desc.image_sampler_pairs[4].sampler_slot = 3; - desc.image_sampler_pairs[4].glsl_name = "sh_irradiance_linsmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_trile_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_trile_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.uniform_blocks[3].stage = .FRAGMENT; - desc.uniform_blocks[3].layout = .STD140; - desc.uniform_blocks[3].size = 144; - desc.uniform_blocks[3].msl_buffer_n = 1; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 0; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 2; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .DEPTH; - desc.images[2].msl_texture_n = 1; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[3].msl_texture_n = 3; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.images[4].msl_texture_n = 4; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 0; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .COMPARISON; - desc.samplers[2].msl_sampler_n = 1; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.samplers[3].msl_sampler_n = 2; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 2; - desc.image_sampler_pairs[1].sampler_slot = 2; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 1; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 3; - desc.image_sampler_pairs[3].sampler_slot = 3; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 4; - desc.image_sampler_pairs[4].sampler_slot = 3; - } - return desc; -} diff --git a/src/shaders/jai/shader_trile_lod.jai b/src/shaders/jai/shader_trile_lod.jai deleted file mode 100644 index c91a6d2..0000000 --- a/src/shaders/jai/shader_trile_lod.jai +++ /dev/null @@ -1,1491 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_trile_lod.glsl -o ./jai/shader_trile_lod.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'trile_lod': - Get shader desc: trile_lod_shader_desc(sg_query_backend()) - Vertex Shader: vs_trile_lod - Fragment Shader: fs_trile_lod - Attributes: - ATTR_trile_lod_position => 0 - ATTR_trile_lod_normal => 1 - ATTR_trile_lod_color => 2 - ATTR_trile_lod_instance => 3 - Bindings: - Uniform block 'trile_lod_vs_params': - Jai struct: Trile_Lod_Vs_Params - Bind slot: UB_trile_lod_vs_params => 0 - Uniform block 'trile_lod_fs_params': - Jai struct: Trile_Lod_Fs_Params - Bind slot: UB_trile_lod_fs_params => 1 -*/ -ATTR_trile_lod_position :: 0; -ATTR_trile_lod_normal :: 1; -ATTR_trile_lod_color :: 2; -ATTR_trile_lod_instance :: 3; -UB_trile_lod_vs_params :: 0; -UB_trile_lod_fs_params :: 1; -Trile_Lod_Vs_Params :: struct { - mvp: [16]float; - camera: [3]float; - _: [4]u8; -}; -Trile_Lod_Fs_Params :: struct { - skyBase: [3]float; - _: [4]u8; - sunPosition: [3]float; - _: [4]u8; - sunLightColor: [3]float; - sunIntensity: float; - ambient_color: [3]float; - ambient_intensity: float; - planeHeight: float; - _: [12]u8; - deepColor: [3]float; - is_reflection: s32; - fog_start: float; - fog_end: float; - _: [8]u8; -}; -/* - #version 430 - - uniform vec4 trile_lod_vs_params[5]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - layout(location = 0) out vec3 vpos; - layout(location = 1) out vec3 cam; - layout(location = 2) out vec3 vcolor; - layout(location = 2) in vec4 color; - layout(location = 3) out vec3 vnorm; - layout(location = 1) in vec4 normal; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, -_67, 0.0), vec3(_67, _64, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, 0.0, _50), vec3(0.0, 1.0, 0.0), vec3(-_50, 0.0, _47)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - mat3 _171 = get_orientation_matrix(param); - vec3 _200 = ((_171 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz; - gl_Position = mat4(trile_lod_vs_params[0], trile_lod_vs_params[1], trile_lod_vs_params[2], trile_lod_vs_params[3]) * vec4(_200, 1.0); - vpos = _200; - cam = trile_lod_vs_params[4].xyz; - vcolor = color.xyz; - vnorm = _171 * normal.xyz; - } - -*/ -vs_trile_lod_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x6c,0x65, - 0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35, - 0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20, - 0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74, - 0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20, - 0x76,0x6e,0x6f,0x72,0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76, - 0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x0a,0x6d,0x61,0x74, - 0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x38, - 0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61, - 0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38, - 0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f, - 0x7a,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63, - 0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x37,0x2c,0x20,0x5f,0x36,0x34, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x73, - 0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x37,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20, - 0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72,0x69,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20, - 0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74, - 0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d, - 0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31, - 0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20, - 0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36, - 0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d, - 0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30, - 0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30, - 0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d, - 0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36, - 0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20, - 0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73, - 0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69, - 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6d,0x61,0x74,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20,0x67,0x65,0x74, - 0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74, - 0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31, - 0x37,0x31,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78, - 0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20, - 0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x6d,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x74,0x72,0x69, - 0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x31,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x74,0x72,0x69, - 0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32,0x30,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61,0x6d, - 0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6e,0x6f,0x72,0x6d, - 0x20,0x3d,0x20,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - struct trile_lod_fs_params - { - vec3 skyBase; - vec3 sunPosition; - vec3 sunLightColor; - float sunIntensity; - vec3 ambient_color; - float ambient_intensity; - float planeHeight; - vec3 deepColor; - int is_reflection; - float fog_start; - float fog_end; - }; - - uniform trile_lod_fs_params _19; - - layout(location = 0) in vec3 vpos; - layout(location = 3) in vec3 vnorm; - layout(location = 2) in vec3 vcolor; - layout(location = 1) in vec3 cam; - layout(location = 0) out vec4 frag_color; - - void main() - { - bool _26 = vpos.y < (_19.planeHeight - 0.00999999977648258209228515625); - bool _35; - if (_26) - { - _35 = _19.is_reflection == 1; - } - else - { - _35 = _26; - } - if (_35) - { - discard; - } - float _55 = max(dot(normalize(vnorm), normalize(_19.sunPosition)), 0.0); - vec3 lit; - if (_19.is_reflection == 1) - { - lit = (vcolor * (((_19.sunLightColor * _55) * _19.sunIntensity) + vec3(0.100000001490116119384765625))) * vec3(0.3183098733425140380859375); - } - else - { - lit = (vcolor * (((_19.sunLightColor * _55) * _19.sunIntensity) + (_19.ambient_color * _19.ambient_intensity))) * vec3(0.3183098733425140380859375); - } - frag_color = vec4(mix(mix(_19.deepColor, lit, vec3(smoothstep(0.0, _19.planeHeight, vpos.y))), _19.skyBase, vec3(smoothstep(_19.fog_start, _19.fog_end, length(vpos - cam)))), 1.0); - } - -*/ -fs_trile_lod_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x66, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c, - 0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x6d,0x62,0x69, - 0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x20,0x5f,0x31,0x39,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x33,0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x6e,0x6f,0x72,0x6d,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33, - 0x20,0x63,0x61,0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, - 0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x36,0x20,0x3d,0x20,0x76,0x70, - 0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x31,0x39,0x2e,0x70,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x39,0x39, - 0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39, - 0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x32,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x2e,0x69, - 0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x3d,0x20, - 0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x33,0x35,0x20,0x3d,0x20,0x5f,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63, - 0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x35,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64, - 0x6f,0x74,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x6e,0x6f, - 0x72,0x6d,0x29,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f, - 0x31,0x39,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x6c,0x69,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x39,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x74,0x20,0x3d,0x20,0x28,0x76,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x4c,0x69, - 0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x35,0x35,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,0x30,0x30, - 0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33, - 0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34, - 0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69, - 0x74,0x20,0x3d,0x20,0x28,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x28,0x28, - 0x28,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c, - 0x6f,0x72,0x20,0x2a,0x20,0x5f,0x35,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39,0x2e, - 0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b,0x20, - 0x28,0x5f,0x31,0x39,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x2a,0x20,0x5f,0x31,0x39,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20,0x2a,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33, - 0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d, - 0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x39,0x2e,0x64,0x65,0x65,0x70,0x43, - 0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x6c,0x69,0x74,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x5f,0x31,0x39,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c, - 0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x5f,0x31,0x39,0x2e, - 0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d, - 0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x31,0x39,0x2e,0x66,0x6f,0x67, - 0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x5f,0x31,0x39,0x2e,0x66,0x6f,0x67,0x5f, - 0x65,0x6e,0x64,0x2c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x76,0x70,0x6f,0x73, - 0x20,0x2d,0x20,0x63,0x61,0x6d,0x29,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 trile_lod_vs_params[5]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - out vec3 vpos; - out vec3 cam; - out vec3 vcolor; - layout(location = 2) in vec4 color; - out vec3 vnorm; - layout(location = 1) in vec4 normal; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, -_67, 0.0), vec3(_67, _64, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, 0.0, _50), vec3(0.0, 1.0, 0.0), vec3(-_50, 0.0, _47)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - mat3 _171 = get_orientation_matrix(param); - vec3 _200 = ((_171 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz; - gl_Position = mat4(trile_lod_vs_params[0], trile_lod_vs_params[1], trile_lod_vs_params[2], trile_lod_vs_params[3]) * vec4(_200, 1.0); - vpos = _200; - cam = trile_lod_vs_params[4].xyz; - vcolor = color.xyz; - vnorm = _171 * normal.xyz; - } - -*/ -vs_trile_lod_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x35,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x70,0x6f, - 0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x3b, - 0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x76, - 0x6e,0x6f,0x72,0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x0a,0x6d,0x61,0x74,0x33, - 0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x38,0x20, - 0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74, - 0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38,0x29, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x7a, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28, - 0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36, - 0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33, - 0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x37,0x2c,0x20,0x5f,0x36,0x34,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x73,0x69, - 0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x67, - 0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72,0x69,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20,0x6f, - 0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33, - 0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61, - 0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32, - 0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72, - 0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38, - 0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d, - 0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20, - 0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39, - 0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33, - 0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65, - 0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20, - 0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32, - 0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20,0x25, - 0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37, - 0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65, - 0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6d,0x61,0x74,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f, - 0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72, - 0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x37, - 0x31,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79, - 0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69, - 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d, - 0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x31,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32,0x30,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x70,0x6f,0x73,0x20, - 0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61,0x6d,0x20, - 0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6e,0x6f,0x72,0x6d,0x20, - 0x3d,0x20,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct trile_lod_fs_params - { - highp vec3 skyBase; - highp vec3 sunPosition; - highp vec3 sunLightColor; - highp float sunIntensity; - highp vec3 ambient_color; - highp float ambient_intensity; - highp float planeHeight; - highp vec3 deepColor; - int is_reflection; - highp float fog_start; - highp float fog_end; - }; - - uniform trile_lod_fs_params _19; - - in highp vec3 vpos; - in highp vec3 vnorm; - in highp vec3 vcolor; - in highp vec3 cam; - layout(location = 0) out highp vec4 frag_color; - - void main() - { - bool _26 = vpos.y < (_19.planeHeight - 0.00999999977648258209228515625); - bool _35; - if (_26) - { - _35 = _19.is_reflection == 1; - } - else - { - _35 = _26; - } - if (_35) - { - discard; - } - highp float _55 = max(dot(normalize(vnorm), normalize(_19.sunPosition)), 0.0); - highp vec3 lit; - if (_19.is_reflection == 1) - { - lit = (vcolor * (((_19.sunLightColor * _55) * _19.sunIntensity) + vec3(0.100000001490116119384765625))) * vec3(0.3183098733425140380859375); - } - else - { - lit = (vcolor * (((_19.sunLightColor * _55) * _19.sunIntensity) + (_19.ambient_color * _19.ambient_intensity))) * vec3(0.3183098733425140380859375); - } - frag_color = vec4(mix(mix(_19.deepColor, lit, vec3(smoothstep(0.0, _19.planeHeight, vpos.y))), _19.skyBase, vec3(smoothstep(_19.fog_start, _19.fog_end, length(vpos - cam)))), 1.0); - } - -*/ -fs_trile_lod_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f, - 0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61, - 0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73, - 0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75, - 0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x61,0x6d,0x62,0x69,0x65, - 0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e, - 0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61, - 0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72, - 0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x73, - 0x74,0x61,0x72,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x6c,0x65, - 0x5f,0x6c,0x6f,0x64,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f, - 0x31,0x39,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x6e,0x6f,0x72,0x6d,0x3b,0x0a,0x69,0x6e, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f, - 0x32,0x36,0x20,0x3d,0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f, - 0x31,0x39,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d, - 0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34, - 0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x36,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x35,0x20, - 0x3d,0x20,0x5f,0x31,0x39,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x5f,0x32,0x36, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x33,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x35,0x35,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x6e,0x6f,0x72,0x6d,0x29, - 0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x39,0x2e, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x6c,0x69,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x39,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x74,0x20,0x3d,0x20,0x28,0x76,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x31,0x39,0x2e,0x73,0x75, - 0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x35, - 0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65, - 0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31, - 0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37, - 0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6c,0x69,0x74,0x20,0x3d,0x20,0x28,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a, - 0x20,0x28,0x28,0x28,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74, - 0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x35,0x35,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x39,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29, - 0x20,0x2b,0x20,0x28,0x5f,0x31,0x39,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x31,0x39,0x2e,0x61,0x6d,0x62,0x69, - 0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29, - 0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39, - 0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39, - 0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x39,0x2e,0x64,0x65, - 0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x6c,0x69,0x74,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x5f,0x31,0x39,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67, - 0x68,0x74,0x2c,0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x5f, - 0x31,0x39,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x5f,0x31,0x39,0x2e, - 0x66,0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x5f,0x31,0x39,0x2e,0x66, - 0x6f,0x67,0x5f,0x65,0x6e,0x64,0x2c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x76, - 0x70,0x6f,0x73,0x20,0x2d,0x20,0x63,0x61,0x6d,0x29,0x29,0x29,0x29,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trile_lod_vs_params - { - float4x4 mvp; - float3 camera; - }; - - struct main0_out - { - float3 vpos [[user(locn0)]]; - float3 cam [[user(locn1)]]; - float3 vcolor [[user(locn2)]]; - float3 vnorm [[user(locn3)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 normal [[attribute(1)]]; - float4 color [[attribute(2)]]; - float4 instance [[attribute(3)]]; - }; - - static inline __attribute__((always_inline)) - float3x3 rot_x(thread const float& a) - { - float _28 = cos(a); - float _31 = sin(a); - return float3x3(float3(1.0, 0.0, 0.0), float3(0.0, _28, -_31), float3(0.0, _31, _28)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_z(thread const float& a) - { - float _64 = cos(a); - float _67 = sin(a); - return float3x3(float3(_64, -_67, 0.0), float3(_67, _64, 0.0), float3(0.0, 0.0, 1.0)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_y(thread const float& a) - { - float _47 = cos(a); - float _50 = sin(a); - return float3x3(float3(_47, 0.0, _50), float3(0.0, 1.0, 0.0), float3(-_50, 0.0, _47)); - } - - static inline __attribute__((always_inline)) - float3x3 get_orientation_matrix(thread const int& ori) - { - int _82 = ori / 4; - float3x3 base; - if (_82 == 0) - { - base = float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - vertex main0_out main0(main0_in in [[stage_in]], constant trile_lod_vs_params& _193 [[buffer(0)]]) - { - main0_out out = {}; - int param = int(round(in.instance.w)); - float3x3 _171 = get_orientation_matrix(param); - float3 _200 = ((_171 * (in.position.xyz - float3(0.5))) + float3(0.5)) + in.instance.xyz; - out.gl_Position = _193.mvp * float4(_200, 1.0); - out.vpos = _200; - out.cam = _193.camera; - out.vcolor = in.color.xyz; - out.vnorm = _171 * in.normal.xyz; - return out; - } - -*/ -vs_trile_lod_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f, - 0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x65,0x72, - 0x61,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x76,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75, - 0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x6e,0x6f,0x72,0x6d,0x20,0x5b, - 0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x33,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31, - 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x5b,0x5b,0x61,0x74, - 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b, - 0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20, - 0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61, - 0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73, - 0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32, - 0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38,0x29,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f, - 0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29, - 0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74,0x5f,0x7a, - 0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x37,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x37, - 0x2c,0x20,0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f, - 0x74,0x5f,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x35,0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e, - 0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x6f,0x72,0x69,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20,0x6f, - 0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x78,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37, - 0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74, - 0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20, - 0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30, - 0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x33, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36, - 0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f, - 0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31, - 0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36, - 0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20,0x25,0x20,0x34, - 0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35, - 0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65,0x20,0x2a, - 0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69, - 0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x26,0x20,0x5f,0x31,0x39,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72, - 0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, - 0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e,0x2e,0x69,0x6e, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20, - 0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d, - 0x20,0x28,0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x69, - 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x5f,0x32,0x30,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x70,0x6f,0x73,0x20,0x3d,0x20, - 0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x61, - 0x6d,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x6e,0x6f,0x72,0x6d,0x20,0x3d,0x20, - 0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct trile_lod_fs_params - { - float3 skyBase; - float3 sunPosition; - packed_float3 sunLightColor; - float sunIntensity; - packed_float3 ambient_color; - float ambient_intensity; - float planeHeight; - char _m7_pad[12]; - packed_float3 deepColor; - int is_reflection; - float fog_start; - float fog_end; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float3 vpos [[user(locn0)]]; - float3 cam [[user(locn1)]]; - float3 vcolor [[user(locn2)]]; - float3 vnorm [[user(locn3)]]; - }; - - fragment main0_out main0(main0_in in [[stage_in]], constant trile_lod_fs_params& _19 [[buffer(0)]]) - { - main0_out out = {}; - bool _26 = in.vpos.y < (_19.planeHeight - 0.00999999977648258209228515625); - bool _35; - if (_26) - { - _35 = _19.is_reflection == 1; - } - else - { - _35 = _26; - } - if (_35) - { - discard_fragment(); - } - float _55 = fast::max(dot(fast::normalize(in.vnorm), fast::normalize(_19.sunPosition)), 0.0); - float3 lit; - if (_19.is_reflection == 1) - { - lit = (in.vcolor * (((float3(_19.sunLightColor) * _55) * _19.sunIntensity) + float3(0.100000001490116119384765625))) * float3(0.3183098733425140380859375); - } - else - { - lit = (in.vcolor * (((float3(_19.sunLightColor) * _55) * _19.sunIntensity) + (float3(_19.ambient_color) * _19.ambient_intensity))) * float3(0.3183098733425140380859375); - } - out.frag_color = float4(mix(mix(float3(_19.deepColor), lit, float3(smoothstep(0.0, _19.planeHeight, in.vpos.y))), _19.skyBase, float3(smoothstep(_19.fog_start, _19.fog_end, length(in.vpos - in.cam)))), 1.0); - return out; - } - -*/ -fs_trile_lod_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74, - 0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f,0x64,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49, - 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61, - 0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x61,0x6d,0x62,0x69, - 0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x20,0x5f,0x6d,0x37,0x5f,0x70,0x61,0x64,0x5b, - 0x31,0x32,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b, - 0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x70,0x6f, - 0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61, - 0x6d,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x76,0x6e,0x6f,0x72,0x6d,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, - 0x63,0x6e,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67, - 0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e, - 0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x6c,0x6f, - 0x64,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x39, - 0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20, - 0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x32,0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73, - 0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x31,0x39,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48, - 0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39, - 0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32, - 0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x33,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x32,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x33,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x2e,0x69,0x73,0x5f, - 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33, - 0x35,0x20,0x3d,0x20,0x5f,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72, - 0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35, - 0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x69,0x6e,0x2e,0x76,0x6e,0x6f,0x72,0x6d,0x29,0x2c,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x39, - 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x6c,0x69,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x39,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x2e,0x76,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c, - 0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x35,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39, - 0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37, - 0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32, - 0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x74, - 0x20,0x3d,0x20,0x28,0x69,0x6e,0x2e,0x76,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20, - 0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x39,0x2e,0x73,0x75, - 0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f, - 0x35,0x35,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x5f,0x31,0x39,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39,0x2e,0x61,0x6d,0x62,0x69,0x65, - 0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30, - 0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35, - 0x39,0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x39,0x2e,0x64,0x65,0x65,0x70, - 0x43,0x6f,0x6c,0x6f,0x72,0x29,0x2c,0x20,0x6c,0x69,0x74,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x31,0x39,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69, - 0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29, - 0x29,0x2c,0x20,0x5f,0x31,0x39,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65, - 0x70,0x28,0x5f,0x31,0x39,0x2e,0x66,0x6f,0x67,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c, - 0x20,0x5f,0x31,0x39,0x2e,0x66,0x6f,0x67,0x5f,0x65,0x6e,0x64,0x2c,0x20,0x6c,0x65, - 0x6e,0x67,0x74,0x68,0x28,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x69, - 0x6e,0x2e,0x63,0x61,0x6d,0x29,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x00, -]; -trile_lod_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "trile_lod_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_trile_lod_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_lod_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "color"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_lod_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 112; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_19.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_19.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_19.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_19.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_19.ambient_color"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_19.ambient_intensity"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_19.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_19.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_19.is_reflection"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_19.fog_start"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_19.fog_end"; - case .GLES3; - desc.vertex_func.source = xx *vs_trile_lod_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_lod_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "color"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 5; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_lod_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 112; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_19.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_19.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_19.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_19.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_19.ambient_color"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_19.ambient_intensity"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_19.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_19.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_19.is_reflection"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_19.fog_start"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_19.fog_end"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_trile_lod_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_trile_lod_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 80; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 112; - desc.uniform_blocks[1].msl_buffer_n = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_trile_rdm.jai b/src/shaders/jai/shader_trile_rdm.jai deleted file mode 100644 index 5f31f36..0000000 --- a/src/shaders/jai/shader_trile_rdm.jai +++ /dev/null @@ -1,5593 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_trile_rdm.glsl -o ./jai/shader_trile_rdm.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'trile_rdm': - Get shader desc: trile_rdm_shader_desc(sg_query_backend()) - Vertex Shader: vs_trile_rdm - Fragment Shader: fs_trile_rdm - Attributes: - ATTR_trile_rdm_position => 0 - ATTR_trile_rdm_normal => 1 - ATTR_trile_rdm_centre => 2 - ATTR_trile_rdm_instance => 3 - Bindings: - Uniform block 'trile_rdm_vs_params': - Jai struct: Trile_Rdm_Vs_Params - Bind slot: UB_trile_rdm_vs_params => 0 - Uniform block 'trile_rdm_world_config': - Jai struct: Trile_Rdm_World_Config - Bind slot: UB_trile_rdm_world_config => 1 - Uniform block 'trile_rdm_fs_params': - Jai struct: Trile_Rdm_Fs_Params - Bind slot: UB_trile_rdm_fs_params => 3 - Image 'rdm_atlas': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_rdm_atlas => 5 - Image 'rdm_triletex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_rdm_triletex => 0 - Image 'rdm_shadowtex': - Image type: ._2D - Sample type: .DEPTH - Multisampled: false - Bind slot: IMG_rdm_shadowtex => 2 - Image 'rdm_ssaotex': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_rdm_ssaotex => 1 - Image 'rdm_brdflut': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_rdm_brdflut => 3 - Image 'rdm_shirradiance': - Image type: ._2D - Sample type: .FLOAT - Multisampled: false - Bind slot: IMG_rdm_shirradiance => 4 - Sampler 'rdm_linsmp': - Type: .FILTERING - Bind slot: SMP_rdm_linsmp => 3 - Sampler 'rdm_trilesmp': - Type: .FILTERING - Bind slot: SMP_rdm_trilesmp => 0 - Sampler 'rdm_shadowsmp': - Type: .COMPARISON - Bind slot: SMP_rdm_shadowsmp => 2 -*/ -ATTR_trile_rdm_position :: 0; -ATTR_trile_rdm_normal :: 1; -ATTR_trile_rdm_centre :: 2; -ATTR_trile_rdm_instance :: 3; -UB_trile_rdm_vs_params :: 0; -UB_trile_rdm_world_config :: 1; -UB_trile_rdm_fs_params :: 3; -IMG_rdm_atlas :: 5; -IMG_rdm_triletex :: 0; -IMG_rdm_shadowtex :: 2; -IMG_rdm_ssaotex :: 1; -IMG_rdm_brdflut :: 3; -IMG_rdm_shirradiance :: 4; -SMP_rdm_linsmp :: 3; -SMP_rdm_trilesmp :: 0; -SMP_rdm_shadowsmp :: 2; -Trile_Rdm_Vs_Params :: struct { - mvp: [16]float; - mvp_shadow: [16]float; - camera: [3]float; - _: [4]u8; -}; -Trile_Rdm_World_Config :: struct { - skyBase: [3]float; - _: [4]u8; - skyTop: [3]float; - _: [4]u8; - sunDisk: [3]float; - _: [4]u8; - horizonHalo: [3]float; - _: [4]u8; - sunHalo: [3]float; - _: [4]u8; - sunLightColor: [3]float; - _: [4]u8; - sunPosition: [3]float; - sunIntensity: float; - skyIntensity: float; - hasClouds: s32; - planeHeight: float; - animatePlaneHeight: s32; - waterColor: [3]float; - _: [4]u8; - deepColor: [3]float; - time: float; - hsv_lighting: s32; - _: [12]u8; -}; -Trile_Rdm_Fs_Params :: struct { - mvp_shadow: [16]float; - is_reflection: s32; - screen_h: s32; - screen_w: s32; - ambient_intensity: float; - emissive_scale: float; - indirect_diff_scale: float; - indirect_spec_scale: float; - _: [4]u8; - ambient_color: [3]float; - is_preview: s32; - indirect_tint: [3]float; - sh_enabled: s32; - atlas_rect: [4]float; -}; -/* - #version 430 - - uniform vec4 trile_rdm_vs_params[9]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - layout(location = 4) out vec4 fnormal; - layout(location = 1) in vec4 normal; - layout(location = 5) out vec3 orig_normal; - layout(location = 1) out vec3 to_center; - layout(location = 2) in vec4 centre; - layout(location = 2) out vec3 vpos; - layout(location = 3) out vec3 ipos; - layout(location = 0) out vec3 cam; - layout(location = 7) out vec3 cv; - layout(location = 6) out vec3 trileCenter; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, -_67, 0.0), vec3(_67, _64, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, 0.0, _50), vec3(0.0, 1.0, 0.0), vec3(-_50, 0.0, _47)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - mat3 _171 = get_orientation_matrix(param); - vec3 _200 = ((_171 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz; - gl_Position = mat4(trile_rdm_vs_params[0], trile_rdm_vs_params[1], trile_rdm_vs_params[2], trile_rdm_vs_params[3]) * vec4(_200, 1.0); - fnormal = vec4(_171 * normal.xyz, 0.0); - orig_normal = normal.xyz; - to_center = centre.xyz - position.xyz; - vpos = _200; - ipos = position.xyz; - cam = trile_rdm_vs_params[8].xyz; - cv = normalize(trile_rdm_vs_params[8].xyz - vpos); - trileCenter = instance.xyz + vec3(0.5); - } - -*/ -vs_trile_rdm_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x6c,0x65, - 0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x39, - 0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20, - 0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x34,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20, - 0x76,0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x35, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, - 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74, - 0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x65, - 0x6e,0x74,0x72,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x33,0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x6f, - 0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x37,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63, - 0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x36,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x0a,0x6d, - 0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f, - 0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f, - 0x74,0x5f,0x7a,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63, - 0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76, - 0x65,0x63,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x37,0x2c,0x20,0x5f, - 0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d, - 0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x34, - 0x37,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74, - 0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, - 0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72,0x69, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20, - 0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31, - 0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20, - 0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f, - 0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32, - 0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35, - 0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32, - 0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65, - 0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37, - 0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31, - 0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34, - 0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35, - 0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f, - 0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72, - 0x69,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39, - 0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33, - 0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62, - 0x61,0x73,0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64, - 0x28,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20,0x67, - 0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x28,0x28, - 0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20, - 0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x74, - 0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x74, - 0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32, - 0x30,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31,0x37, - 0x31,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65, - 0x72,0x20,0x3d,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d, - 0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61,0x6d, - 0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x63,0x76,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76, - 0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x72,0x69,0x6c,0x65,0x43, - 0x65,0x6e,0x74,0x65,0x72,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65, - 0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - struct trile_rdm_world_config - { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - float time; - int hsv_lighting; - }; - - uniform trile_rdm_world_config _97; - - struct trile_rdm_fs_params - { - mat4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - float ambient_intensity; - float emissive_scale; - float indirect_diff_scale; - float indirect_spec_scale; - vec3 ambient_color; - int is_preview; - vec3 indirect_tint; - int sh_enabled; - vec4 atlas_rect; - }; - - uniform trile_rdm_fs_params _590; - - layout(binding = 16) uniform sampler2D rdm_triletex_rdm_trilesmp; - layout(binding = 17) uniform sampler2DShadow rdm_shadowtex_rdm_shadowsmp; - layout(binding = 18) uniform sampler2D rdm_ssaotex_rdm_linsmp; - layout(binding = 19) uniform sampler2D rdm_atlas_rdm_linsmp; - layout(binding = 20) uniform sampler2D rdm_brdflut_rdm_linsmp; - layout(binding = 21) uniform sampler2D rdm_shirradiance_rdm_linsmp; - - layout(location = 2) in vec3 vpos; - layout(location = 3) in vec3 ipos; - layout(location = 5) in vec3 orig_normal; - layout(location = 1) in vec3 to_center; - layout(location = 4) in vec4 fnormal; - layout(location = 0) out vec4 frag_color; - layout(location = 0) in vec3 cam; - layout(location = 6) in vec3 trileCenter; - layout(location = 7) in vec3 cv; - - vec3 fresnelSchlick(float cosTheta, vec3 F0) - { - return F0 + ((vec3(1.0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - float DistributionGGX(vec3 N, vec3 H, float roughness) - { - float _180 = roughness * roughness; - float _184 = _180 * _180; - float _189 = max(dot(N, H), 0.0); - float _197 = ((_189 * _189) * (_184 - 1.0)) + 1.0; - return _184 / ((3.1415927410125732421875 * _197) * _197); - } - - float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) - { - float _209 = roughness + 1.0; - float _215 = (_209 * _209) * 0.125; - float _220 = max(dot(N, V), 0.0); - float _225 = max(dot(N, L), 0.0); - float _230 = 1.0 - _215; - return (_225 / ((_225 * _230) + _215)) * (_220 / ((_220 * _230) + _215)); - } - - vec3 FresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness) - { - return F0 + ((max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - int rdm_face_from_normal(vec3 N) - { - vec3 _348 = abs(N); - float _350 = _348.y; - float _352 = _348.x; - bool _353 = _350 >= _352; - bool _361; - if (_353) - { - _361 = _350 >= _348.z; - } - else - { - _361 = _353; - } - if (_361) - { - return (N.y >= 0.0) ? 0 : 1; - } - float _370 = _348.z; - bool _373 = _370 >= _352; - bool _381; - if (_373) - { - _381 = _370 >= _350; - } - else - { - _381 = _373; - } - if (_381) - { - return (N.z >= 0.0) ? 2 : 3; - } - return (N.x >= 0.0) ? 4 : 5; - } - - ivec2 rdm_face_offset(vec4 rect, int face, int rdmSize, ivec2 atlasSize) - { - return ivec2(int(rect.x * float(atlasSize.x)) + ((face % 2) * rdmSize), int(rect.y * float(atlasSize.y)) + ((face / 2) * rdmSize)); - } - - vec2 rdm_hemioct(vec3 v, int face) - { - vec3 vc = v; - if ((face / 2) == 0) - { - vec3 _1294 = vc; - _1294.z = v.y; - _1294.y = v.z; - vc = _1294; - } - if ((face / 2) == 2) - { - vec3 _1298 = vc; - _1298.z = v.x; - _1298.x = v.z; - vc = _1298; - } - if ((face % 2) == 1) - { - vec3 _1302 = vc; - _1302.z = _1302.z * (-1.0); - vc = _1302; - } - vec2 _328 = vc.xy * (1.0 / ((abs(vc.x) + abs(vc.y)) + vc.z)); - float _330 = _328.x; - float _332 = _328.y; - return (vec2(_330 + _332, _330 - _332) * 0.5) + vec2(0.5); - } - - vec3 sky(vec3 skypos, vec3 sunpos) - { - vec3 _88 = normalize(skypos); - float _93 = dot(_88, normalize(sunpos)); - float _108 = _88.y; - vec3 result = mix(_97.skyBase, _97.skyTop, vec3(clamp(_108 * 2.0, 0.0, 0.699999988079071044921875))) + ((_97.sunHalo * clamp((_93 - 0.949999988079071044921875) * 10.0, 0.0, 0.800000011920928955078125)) * 0.20000000298023223876953125); - if (_93 > 0.99989998340606689453125) - { - result = _97.sunDisk; - } - vec3 _157 = result; - vec3 _158 = _157 + (mix(_97.horizonHalo, vec3(0.0), vec3(clamp(abs(_108) * 80.0, 0.0, 1.0))) * 0.100000001490116119384765625); - result = _158; - return _158; - } - - vec3 sky_reflect(inout vec3 R, vec3 sunpos) - { - if (R.y < 0.0) - { - R = reflect(R, vec3(0.0, 1.0, 0.0)); - } - vec3 param = R; - vec3 param_1 = sunpos; - return sky(param, param_1); - } - - vec3 rdm_spec_raymarch(vec3 N, vec3 V, vec3 diff, int face, ivec2 faceOffset, int rdmSize, vec2 atlasInvSize) - { - vec3 _430 = reflect(V, N); - for (int i = 0; i < 40; i++) - { - vec3 _460 = diff + (_430 * (0.5 * float(i + 1))); - if (dot(_460, N) < 0.0) - { - continue; - } - vec3 param = normalize(_460); - int param_1 = face; - vec4 _499 = texture(rdm_atlas_rdm_linsmp, (vec2(faceOffset) + (rdm_hemioct(param, param_1) * float(rdmSize))) * atlasInvSize, 0.0); - float _502 = length(_460); - float _505 = _499.w; - bool _506 = _505 > 0.0; - bool _513; - if (_506) - { - _513 = _505 < _502; - } - else - { - _513 = _506; - } - bool _522; - if (_513) - { - _522 = (_505 + 0.5) > _502; - } - else - { - _522 = _513; - } - if (_522) - { - return _499.xyz; - } - } - vec3 param_2 = _430; - vec3 param_3 = _97.sunPosition; - vec3 _536 = sky_reflect(param_2, param_3); - return _536; - } - - vec3 rdm_spec_single(vec3 N, vec3 V, vec3 diff, int face, ivec2 faceOffset, int rdmSize, vec2 atlasInvSize) - { - vec3 param = normalize(diff + (reflect(V, N) * 2.0)); - int param_1 = face; - return texture(rdm_atlas_rdm_linsmp, (vec2(faceOffset) + (rdm_hemioct(param, param_1) * float(rdmSize))) * atlasInvSize).xyz; - } - - void main() - { - bool _584 = vpos.y < (_97.planeHeight - 0.00999999977648258209228515625); - bool _595; - if (_584) - { - _595 = _590.is_reflection == 1; - } - else - { - _595 = _584; - } - if (_595) - { - discard; - } - vec3 sample_pos = ipos - (orig_normal * 0.0199999995529651641845703125); - bool _610 = _590.is_reflection == 1; - int _611 = _610 ? 1 : 3; - vec4 trixel_material; - for (int i = 0; i < _611; i++) - { - vec4 _652 = texelFetch(rdm_triletex_rdm_trilesmp, ivec2(int(clamp(sample_pos.z, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0), int(clamp(sample_pos.y, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) + (int(clamp(sample_pos.x, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) * 16)), 0); - trixel_material = _652; - if (dot(_652, _652) > 9.9999997473787516355514526367188e-05) - { - break; - } - sample_pos += (to_center * 0.100000001490116119384765625); - } - int _676 = int(round(trixel_material.w * 255.0)); - float emittance = 0.0; - int roughnessInt = 0; - float roughness = 0.0; - float metallic = 0.0; - if ((_676 & 1) != 0) - { - emittance = float((_676 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - int _697 = (_676 >> 5) & 7; - roughnessInt = _697; - roughness = max(float(_697) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_676 >> 3) & 3) * 0.3333333432674407958984375; - } - vec3 _715 = abs(fnormal.xyz); - float _717 = _715.x; - float _719 = _715.y; - bool _720 = _717 >= _719; - bool _728; - if (_720) - { - _728 = _717 >= _715.z; - } - else - { - _728 = _720; - } - vec3 N; - if (_728) - { - N = vec3(sign(fnormal.x), 0.0, 0.0); - } - else - { - bool _741 = _719 >= _717; - bool _749; - if (_741) - { - _749 = _719 >= _715.z; - } - else - { - _749 = _741; - } - if (_749) - { - N = vec3(0.0, sign(fnormal.y), 0.0); - } - else - { - N = vec3(0.0, 0.0, sign(fnormal.z)); - } - } - if (_610) - { - frag_color = vec4(trixel_material.xyz * (((_97.sunLightColor * max(dot(N, normalize(_97.sunPosition)), 0.0)) * _97.sunIntensity) + vec3(0.100000001490116119384765625)), 1.0); - return; - } - vec3 _798 = normalize(cam - vpos); - vec3 _802 = normalize(_97.sunPosition); - vec3 _807 = normalize(_798 + _802); - float _812 = max(dot(N, _802), 0.0); - float _817 = max(dot(N, _798), 0.0); - vec3 _829 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, vec3(metallic)); - float param = max(dot(_807, _798), 0.0); - vec3 param_1 = _829; - vec3 _835 = fresnelSchlick(param, param_1); - vec3 param_2 = N; - vec3 param_3 = _807; - float param_4 = roughness; - vec3 param_5 = N; - vec3 param_6 = _798; - vec3 param_7 = _802; - float param_8 = roughness; - vec4 _874 = _590.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); - vec3 _884 = ((_874.xyz / vec3(_874.w)) * 0.5) + vec3(0.5); - float _888 = _884.z - 0.001000000047497451305389404296875; - vec3 _1286 = _884; - _1286.z = _888; - vec3 light = ((((((((vec3(1.0) - _835) * (1.0 - metallic)) * trixel_material.xyz) * vec3(0.3183098733425140380859375)) + ((_835 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * _817) * _812) + 9.9999997473787516355514526367188e-05))) * texture(rdm_shadowtex_rdm_shadowsmp, vec3(_1286.xy, _888))) * _812) * _97.sunLightColor) * _97.sunIntensity; - vec2 _948 = gl_FragCoord.xy / vec2(float(_590.screen_w), float(_590.screen_h)); - vec4 _949 = texture(rdm_ssaotex_rdm_linsmp, _948); - float param_9 = _817; - vec3 param_10 = _829; - float param_11 = roughness; - vec3 _965 = FresnelSchlickRoughness(param_9, param_10, param_11); - vec3 _976 = vpos - (trileCenter + (N * 0.4900000095367431640625)); - if (roughnessInt <= 1) - { - vec3 param_12 = N; - int _984 = rdm_face_from_normal(param_12); - ivec2 _990 = textureSize(rdm_atlas_rdm_linsmp, 0); - vec2 _995 = vec2(1.0) / vec2(_990); - int _1005 = int(_590.atlas_rect.z * float(_990.x)) / 2; - vec4 param_13 = _590.atlas_rect; - int param_14 = _984; - int param_15 = _1005; - ivec2 param_16 = _990; - ivec2 _1017 = rdm_face_offset(param_13, param_14, param_15, param_16); - vec3 _1021; - if (roughness < 0.20000000298023223876953125) - { - vec3 param_17 = N; - vec3 param_18 = -cv; - vec3 param_19 = _976; - int param_20 = _984; - ivec2 param_21 = _1017; - int param_22 = _1005; - vec2 param_23 = _995; - _1021 = rdm_spec_raymarch(param_17, param_18, param_19, param_20, param_21, param_22, param_23); - } - else - { - vec3 param_24 = N; - vec3 param_25 = -cv; - vec3 param_26 = _976; - int param_27 = _984; - ivec2 param_28 = _1017; - int param_29 = _1005; - vec2 param_30 = _995; - _1021 = rdm_spec_single(param_24, param_25, param_26, param_27, param_28, param_29, param_30); - } - vec4 _1067 = texture(rdm_brdflut_rdm_linsmp, vec2(_817, roughness)); - float _1072 = sin(roughness * 3.1415927410125732421875); - light += (((((_1021 * ((_965 * _1067.x) + vec3(_1067.y))) * _590.indirect_spec_scale) * (1.0 - (0.699999988079071044921875 * _1072))) * (1.0 - (((0.89999997615814208984375 * roughness) * _1072) * pow(1.0 - _817, 2.0)))) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - else - { - if (roughness < 0.699999988079071044921875) - { - vec4 _1133 = texture(rdm_brdflut_rdm_linsmp, vec2(_817, roughness)); - vec3 param_31 = reflect(-_798, N); - vec3 param_32 = _97.sunPosition; - vec3 _1146 = sky_reflect(param_31, param_32); - light += (((_1146 * ((_965 * _1133.x) + vec3(_1133.y))) * _590.indirect_spec_scale) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - } - vec3 indirectDiff; - if (_590.sh_enabled == 1) - { - indirectDiff = texture(rdm_shirradiance_rdm_linsmp, _948).xyz * _590.indirect_tint; - } - else - { - indirectDiff = _590.ambient_color * _590.ambient_intensity; - } - vec3 _1215 = light; - vec3 _1216 = _1215 + (((((((vec3(1.0) - _965) * (1.0 - metallic)) * indirectDiff) * vec3(0.3183098733425140380859375)) * trixel_material.xyz) * _949.x) * _590.indirect_diff_scale); - light = _1216; - frag_color = vec4(mix(_97.deepColor, _1216 + ((trixel_material.xyz * emittance) * _590.emissive_scale), vec3(smoothstep(0.0, _97.planeHeight, vpos.y))), 1.0); - if (_590.is_preview == 1) - { - vec4 _1242 = frag_color; - vec3 _1246 = mix(_1242.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); - frag_color.x = _1246.x; - frag_color.y = _1246.y; - frag_color.z = _1246.z; - } - else - { - if (_590.is_preview == 2) - { - vec4 _1260 = frag_color; - vec3 _1264 = mix(_1260.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); - frag_color.x = _1264.x; - frag_color.y = _1264.y; - frag_color.z = _1264.z; - } - } - } - -*/ -fs_trile_rdm_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x77, - 0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73, - 0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69, - 0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e, - 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61, - 0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65, - 0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x68,0x73,0x76,0x5f,0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x3b,0x0a,0x7d,0x3b, - 0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f, - 0x72,0x64,0x6d,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67, - 0x20,0x5f,0x39,0x37,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x6d,0x76,0x70, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d, - 0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x73,0x73, - 0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69, - 0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65, - 0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x70,0x72,0x65,0x76, - 0x69,0x65,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x6e, - 0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x61,0x74,0x6c,0x61,0x73,0x5f, - 0x72,0x65,0x63,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x35,0x39,0x30,0x3b,0x0a,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x36, - 0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x72,0x32,0x44,0x20,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78, - 0x5f,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20, - 0x31,0x37,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x72,0x32,0x44,0x53,0x68,0x61,0x64,0x6f,0x77,0x20,0x72,0x64,0x6d,0x5f, - 0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x73,0x68, - 0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x38,0x29,0x20,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, - 0x72,0x64,0x6d,0x5f,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62, - 0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x31,0x39,0x29,0x20,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x72, - 0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e, - 0x73,0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64, - 0x69,0x6e,0x67,0x20,0x3d,0x20,0x32,0x30,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x72,0x64,0x6d,0x5f, - 0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73, - 0x6d,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69, - 0x6e,0x67,0x20,0x3d,0x20,0x32,0x31,0x29,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x72,0x64,0x6d,0x5f,0x73, - 0x68,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65,0x5f,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x70,0x6f,0x73,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x35,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67, - 0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x34,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61, - 0x6d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x36,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20, - 0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x37, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x76,0x3b,0x0a,0x0a,0x76, - 0x65,0x63,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69, - 0x63,0x6b,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74, - 0x61,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28, - 0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29,0x20, - 0x2a,0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20, - 0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74, - 0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x20,0x48,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x30,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x34, - 0x20,0x3d,0x20,0x5f,0x31,0x38,0x30,0x20,0x2a,0x20,0x5f,0x31,0x38,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x39,0x20,0x3d, - 0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x48,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x39,0x37,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x38,0x39,0x20,0x2a,0x20, - 0x5f,0x31,0x38,0x39,0x29,0x20,0x2a,0x20,0x28,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20, - 0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x38,0x34,0x20,0x2f,0x20,0x28, - 0x28,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35, - 0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x39,0x37, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x39,0x37,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74, - 0x68,0x28,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x56, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x4c,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x30,0x39,0x20,0x3d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31,0x35,0x20,0x3d,0x20, - 0x28,0x5f,0x32,0x30,0x39,0x20,0x2a,0x20,0x5f,0x32,0x30,0x39,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x56,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x35,0x20,0x3d,0x20,0x6d,0x61, - 0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33, - 0x30,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x5f,0x32,0x32,0x35, - 0x20,0x2f,0x20,0x28,0x28,0x5f,0x32,0x32,0x35,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30, - 0x29,0x20,0x2b,0x20,0x5f,0x32,0x31,0x35,0x29,0x29,0x20,0x2a,0x20,0x28,0x5f,0x32, - 0x32,0x30,0x20,0x2f,0x20,0x28,0x28,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f,0x32, - 0x33,0x30,0x29,0x20,0x2b,0x20,0x5f,0x32,0x31,0x35,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x76,0x65,0x63,0x33,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68, - 0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x20,0x46,0x30,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x6d,0x61,0x78,0x28, - 0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x72,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x29,0x2c,0x20,0x46,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29, - 0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30, - 0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x69,0x6e,0x74,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x66, - 0x72,0x6f,0x6d,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x28,0x76,0x65,0x63,0x33,0x20, - 0x4e,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33, - 0x34,0x38,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x30,0x20,0x3d,0x20,0x5f,0x33, - 0x34,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x33,0x35,0x32,0x20,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x35,0x33,0x20,0x3d,0x20,0x5f, - 0x33,0x35,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x36,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x36,0x31,0x20,0x3d,0x20,0x5f, - 0x33,0x35,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x36,0x31, - 0x20,0x3d,0x20,0x5f,0x33,0x35,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x36,0x31,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x28,0x4e,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x2e,0x30,0x29,0x20,0x3f, - 0x20,0x30,0x20,0x3a,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x37,0x30,0x20,0x3d,0x20,0x5f, - 0x33,0x34,0x38,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x33,0x37,0x33,0x20,0x3d,0x20,0x5f,0x33,0x37,0x30,0x20,0x3e,0x3d,0x20,0x5f, - 0x33,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33, - 0x38,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x37,0x33, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x33,0x38,0x31,0x20,0x3d,0x20,0x5f,0x33,0x37,0x30,0x20,0x3e,0x3d,0x20,0x5f, - 0x33,0x35,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x33,0x38,0x31,0x20,0x3d,0x20,0x5f,0x33,0x37,0x33,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x38, - 0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x4e,0x2e,0x7a,0x20,0x3e,0x3d,0x20, - 0x30,0x2e,0x30,0x29,0x20,0x3f,0x20,0x32,0x20,0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28, - 0x4e,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x2e,0x30,0x29,0x20,0x3f,0x20,0x34,0x20, - 0x3a,0x20,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x69,0x76,0x65,0x63,0x32,0x20,0x72,0x64, - 0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x76,0x65, - 0x63,0x34,0x20,0x72,0x65,0x63,0x74,0x2c,0x20,0x69,0x6e,0x74,0x20,0x66,0x61,0x63, - 0x65,0x2c,0x20,0x69,0x6e,0x74,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x2c,0x20, - 0x69,0x76,0x65,0x63,0x32,0x20,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x76, - 0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x72,0x65,0x63,0x74,0x2e,0x78,0x20,0x2a, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65, - 0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x25,0x20, - 0x32,0x29,0x20,0x2a,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x2c,0x20,0x69, - 0x6e,0x74,0x28,0x72,0x65,0x63,0x74,0x2e,0x79,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x2e,0x79,0x29,0x29,0x20, - 0x2b,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x2f,0x20,0x32,0x29,0x20,0x2a,0x20, - 0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65, - 0x63,0x32,0x20,0x72,0x64,0x6d,0x5f,0x68,0x65,0x6d,0x69,0x6f,0x63,0x74,0x28,0x76, - 0x65,0x63,0x33,0x20,0x76,0x2c,0x20,0x69,0x6e,0x74,0x20,0x66,0x61,0x63,0x65,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x20,0x3d, - 0x20,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63, - 0x65,0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x32,0x39,0x34,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x34,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x34, - 0x2e,0x79,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x32,0x39,0x34,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63, - 0x65,0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x32,0x39,0x38,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x38, - 0x2e,0x78,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x32,0x39,0x38,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63, - 0x65,0x20,0x25,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x33,0x30,0x32,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x30,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31, - 0x33,0x30,0x32,0x2e,0x7a,0x20,0x2a,0x20,0x28,0x2d,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x33, - 0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x33,0x32,0x38,0x20,0x3d,0x20,0x76,0x63,0x2e,0x78,0x79,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x28,0x28,0x61,0x62,0x73,0x28,0x76, - 0x63,0x2e,0x78,0x29,0x20,0x2b,0x20,0x61,0x62,0x73,0x28,0x76,0x63,0x2e,0x79,0x29, - 0x29,0x20,0x2b,0x20,0x76,0x63,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x30,0x20,0x3d,0x20,0x5f,0x33,0x32, - 0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x33,0x33,0x32,0x20,0x3d,0x20,0x5f,0x33,0x32,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x5f, - 0x33,0x33,0x30,0x20,0x2b,0x20,0x5f,0x33,0x33,0x32,0x2c,0x20,0x5f,0x33,0x33,0x30, - 0x20,0x2d,0x20,0x5f,0x33,0x33,0x32,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x28,0x76,0x65,0x63,0x33,0x20,0x73,0x6b, - 0x79,0x70,0x6f,0x73,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x70,0x6f, - 0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38, - 0x38,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b, - 0x79,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x39,0x33,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x38,0x38,0x2c,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e,0x70,0x6f,0x73, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x30,0x38,0x20,0x3d,0x20,0x5f,0x38,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6d,0x69, - 0x78,0x28,0x5f,0x39,0x37,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x5f, - 0x39,0x37,0x2e,0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x31,0x30,0x38,0x20,0x2a,0x20,0x32,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39, - 0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37, - 0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e, - 0x48,0x61,0x6c,0x6f,0x20,0x2a,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x39, - 0x33,0x20,0x2d,0x20,0x30,0x2e,0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30, - 0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20, - 0x2a,0x20,0x31,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38, - 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35, - 0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38, - 0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x39,0x33,0x20,0x3e,0x20,0x30,0x2e,0x39,0x39,0x39,0x38,0x39, - 0x39,0x39,0x38,0x33,0x34,0x30,0x36,0x30,0x36,0x36,0x38,0x39,0x34,0x35,0x33,0x31, - 0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x39,0x37,0x2e,0x73, - 0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x37,0x20,0x3d,0x20,0x72,0x65, - 0x73,0x75,0x6c,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x31,0x35,0x38,0x20,0x3d,0x20,0x5f,0x31,0x35,0x37,0x20,0x2b,0x20,0x28,0x6d,0x69, - 0x78,0x28,0x5f,0x39,0x37,0x2e,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c, - 0x6f,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x61,0x62,0x73,0x28,0x5f,0x31,0x30, - 0x38,0x29,0x20,0x2a,0x20,0x38,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34, - 0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x35,0x38,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x28,0x69,0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x52,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x52,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52, - 0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d, - 0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33, - 0x20,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x72,0x61,0x79,0x6d,0x61,0x72, - 0x63,0x68,0x28,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x76,0x65,0x63,0x33,0x20, - 0x56,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x69,0x66,0x66,0x2c,0x20,0x69,0x6e, - 0x74,0x20,0x66,0x61,0x63,0x65,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x66,0x61, - 0x63,0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x74,0x20,0x72,0x64, - 0x6d,0x53,0x69,0x7a,0x65,0x2c,0x20,0x76,0x65,0x63,0x32,0x20,0x61,0x74,0x6c,0x61, - 0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x33,0x30,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x28,0x56,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69, - 0x20,0x3c,0x20,0x34,0x30,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x34,0x36,0x30,0x20,0x3d,0x20,0x64,0x69,0x66,0x66,0x20,0x2b,0x20,0x28,0x5f,0x34, - 0x33,0x30,0x20,0x2a,0x20,0x28,0x30,0x2e,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x69,0x20,0x2b,0x20,0x31,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x34,0x36,0x30, - 0x2c,0x20,0x4e,0x29,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x5f,0x34,0x36,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, - 0x3d,0x20,0x66,0x61,0x63,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x34,0x39,0x39,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64, - 0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x28,0x76,0x65,0x63,0x32,0x28, - 0x66,0x61,0x63,0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2b,0x20,0x28,0x72, - 0x64,0x6d,0x5f,0x68,0x65,0x6d,0x69,0x6f,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x29,0x29,0x20,0x2a,0x20, - 0x61,0x74,0x6c,0x61,0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x35,0x30,0x32,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28, - 0x5f,0x34,0x36,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x35,0x20,0x3d,0x20,0x5f,0x34,0x39,0x39, - 0x2e,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x35,0x30,0x36,0x20,0x3d,0x20,0x5f,0x35,0x30,0x35,0x20,0x3e,0x20,0x30, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x35,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x35,0x30,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x35,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x30,0x35,0x20,0x3c,0x20,0x5f,0x35,0x30, - 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x35,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x30,0x36,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x32,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x31,0x33,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x35,0x32,0x32,0x20,0x3d,0x20,0x28,0x5f,0x35,0x30,0x35,0x20,0x2b, - 0x20,0x30,0x2e,0x35,0x29,0x20,0x3e,0x20,0x5f,0x35,0x30,0x32,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x32,0x32,0x20, - 0x3d,0x20,0x5f,0x35,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35, - 0x32,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x5f,0x34,0x39,0x39,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x34, - 0x33,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x35,0x33,0x36,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x5f,0x35,0x33,0x36,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20, - 0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x69,0x6e,0x67,0x6c,0x65,0x28, - 0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x56,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x20,0x64,0x69,0x66,0x66,0x2c,0x20,0x69,0x6e,0x74,0x20,0x66, - 0x61,0x63,0x65,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x66,0x61,0x63,0x65,0x4f, - 0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x74,0x20,0x72,0x64,0x6d,0x53,0x69, - 0x7a,0x65,0x2c,0x20,0x76,0x65,0x63,0x32,0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e, - 0x76,0x53,0x69,0x7a,0x65,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x64,0x69,0x66,0x66,0x20,0x2b,0x20,0x28,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x28,0x56,0x2c,0x20,0x4e,0x29,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x20,0x3d,0x20,0x66,0x61,0x63,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x64, - 0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73, - 0x6d,0x70,0x2c,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x61,0x63,0x65,0x4f,0x66, - 0x66,0x73,0x65,0x74,0x29,0x20,0x2b,0x20,0x28,0x72,0x64,0x6d,0x5f,0x68,0x65,0x6d, - 0x69,0x6f,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x72,0x64,0x6d, - 0x53,0x69,0x7a,0x65,0x29,0x29,0x29,0x20,0x2a,0x20,0x61,0x74,0x6c,0x61,0x73,0x49, - 0x6e,0x76,0x53,0x69,0x7a,0x65,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x38,0x34,0x20,0x3d,0x20,0x76,0x70, - 0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x39,0x37,0x2e,0x70,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x39,0x39, - 0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39, - 0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x35,0x38,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x39,0x35,0x20,0x3d,0x20,0x5f,0x35, - 0x39,0x30,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x35,0x39,0x35,0x20,0x3d,0x20,0x5f,0x35,0x38,0x34,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x35,0x39,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,0x70,0x6f,0x73,0x20,0x2d,0x20,0x28, - 0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31, - 0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x31,0x30,0x20,0x3d,0x20,0x5f, - 0x35,0x39,0x30,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x5f,0x36,0x31,0x31,0x20,0x3d,0x20,0x5f,0x36,0x31,0x30,0x20,0x3f,0x20,0x31,0x20, - 0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72, - 0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20, - 0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x5f,0x36,0x31,0x31,0x3b,0x20,0x69,0x2b,0x2b, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x35,0x32,0x20,0x3d,0x20,0x74,0x65,0x78,0x65, - 0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65, - 0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70, - 0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39, - 0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20, - 0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x79,0x2c, - 0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37, - 0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31, - 0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39, - 0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29, - 0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x28,0x69,0x6e,0x74,0x28, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73, - 0x2e,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33, - 0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33, - 0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39, - 0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33, - 0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36, - 0x29,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x20, - 0x3d,0x20,0x5f,0x36,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x36,0x35,0x32,0x2c,0x20,0x5f,0x36, - 0x35,0x32,0x29,0x20,0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34, - 0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32, - 0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20,0x2b,0x3d,0x20,0x28,0x74,0x6f,0x5f,0x63,0x65, - 0x6e,0x74,0x65,0x72,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36, - 0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x37,0x36,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28, - 0x72,0x6f,0x75,0x6e,0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, - 0x65,0x72,0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69, - 0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49, - 0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x26,0x20,0x31,0x29,0x20, - 0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x31, - 0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37, - 0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35, - 0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x39,0x37, - 0x20,0x3d,0x20,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26, - 0x20,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x5f,0x36,0x39,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x36,0x39,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31, - 0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38, - 0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65, - 0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, - 0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37, - 0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37, - 0x31,0x35,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x37,0x31,0x37,0x20,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x31,0x39,0x20,0x3d, - 0x20,0x5f,0x37,0x31,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x37,0x32,0x30,0x20,0x3d,0x20,0x5f,0x37,0x31,0x37,0x20,0x3e,0x3d, - 0x20,0x5f,0x37,0x31,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x37,0x32,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37, - 0x32,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x37,0x32,0x38,0x20,0x3d,0x20,0x5f,0x37,0x31,0x37,0x20,0x3e,0x3d, - 0x20,0x5f,0x37,0x31,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x32,0x38,0x20,0x3d,0x20,0x5f,0x37,0x32, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x32, - 0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x66, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x34,0x31,0x20,0x3d,0x20,0x5f, - 0x37,0x31,0x39,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x34,0x39,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x34,0x31, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d,0x20,0x5f, - 0x37,0x31,0x39,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x34,0x39, - 0x20,0x3d,0x20,0x5f,0x37,0x34,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x37,0x34,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x31,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e, - 0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x39,0x37, - 0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35, - 0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x39,0x38, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d, - 0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x38,0x30,0x32,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x38,0x30,0x37,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x37,0x39,0x38,0x20,0x2b,0x20,0x5f,0x38,0x30,0x32,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x32,0x20,0x3d,0x20,0x6d, - 0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x38,0x30,0x32,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x38,0x31,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x5f,0x37,0x39,0x38,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x32,0x39,0x20,0x3d,0x20, - 0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39, - 0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39, - 0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, - 0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x38,0x30,0x37,0x2c,0x20,0x5f, - 0x37,0x39,0x38,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f, - 0x38,0x32,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38, - 0x33,0x35,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c, - 0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x38, - 0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x37,0x39,0x38, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x37,0x20,0x3d,0x20,0x5f,0x38,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x34,0x20,0x5f,0x38,0x37,0x34,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e,0x6d, - 0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34, - 0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36, - 0x2e,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36,0x32, - 0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x38,0x38,0x34,0x20,0x3d,0x20,0x28,0x28,0x5f,0x38,0x37,0x34, - 0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x38,0x37,0x34, - 0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x38,0x38,0x38,0x20,0x3d,0x20,0x5f,0x38,0x38,0x34,0x2e,0x7a, - 0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34, - 0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34, - 0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x31,0x32,0x38,0x36,0x20,0x3d,0x20,0x5f,0x38,0x38,0x34,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x32,0x38,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x38,0x38, - 0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68, - 0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x38,0x33,0x35,0x29,0x20,0x2a,0x20, - 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29, - 0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72, - 0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31, - 0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2b,0x20, - 0x28,0x28,0x5f,0x38,0x33,0x35,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69, - 0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53, - 0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63, - 0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x38,0x31,0x37,0x29,0x20, - 0x2a,0x20,0x5f,0x38,0x31,0x32,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35, - 0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29, - 0x29,0x29,0x20,0x2a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x64,0x6d, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x31,0x32,0x38,0x36,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x38,0x38,0x38,0x29,0x29,0x29, - 0x20,0x2a,0x20,0x5f,0x38,0x31,0x32,0x29,0x20,0x2a,0x20,0x5f,0x39,0x37,0x2e,0x73, - 0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20, - 0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x39,0x34,0x38,0x20, - 0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78, - 0x79,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x35,0x39,0x30,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x5f,0x35,0x39,0x30,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x5f,0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f, - 0x39,0x34,0x39,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x64, - 0x6d,0x5f,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69, - 0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x39,0x34,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d, - 0x20,0x5f,0x38,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x20,0x3d,0x20,0x5f,0x38,0x32,0x39,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x31,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x39,0x36,0x35,0x20,0x3d, - 0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x39,0x37,0x36,0x20,0x3d,0x20,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x28,0x74, - 0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20,0x28,0x4e,0x20, - 0x2a,0x20,0x30,0x2e,0x34,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36, - 0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49, - 0x6e,0x74,0x20,0x3c,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x39,0x38,0x34,0x20,0x3d,0x20,0x72,0x64,0x6d, - 0x5f,0x66,0x61,0x63,0x65,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x5f,0x39,0x39,0x30,0x20, - 0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x72,0x64, - 0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73, - 0x6d,0x70,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x39,0x39,0x35,0x20,0x3d,0x20,0x76,0x65,0x63,0x32, - 0x28,0x31,0x2e,0x30,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x39,0x39, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x5f,0x31,0x30,0x30,0x35,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x5f,0x35,0x39,0x30, - 0x2e,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x2e,0x7a,0x20,0x2a,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x39,0x39,0x30,0x2e,0x78,0x29,0x29,0x20,0x2f, - 0x20,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30, - 0x2e,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x34,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20,0x3d, - 0x20,0x5f,0x31,0x30,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x20,0x3d, - 0x20,0x5f,0x39,0x39,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x30,0x31,0x37,0x20,0x3d,0x20,0x72,0x64,0x6d, - 0x5f,0x66,0x61,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x34,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x30,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20, - 0x3c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30, - 0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x37,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x38,0x20,0x3d,0x20,0x2d,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x39,0x20,0x3d,0x20,0x5f,0x39,0x37,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x30,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x30,0x31,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x30,0x30, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x20,0x3d,0x20,0x5f, - 0x39,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x30,0x32,0x31,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65, - 0x63,0x5f,0x72,0x61,0x79,0x6d,0x61,0x72,0x63,0x68,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x35,0x20,0x3d,0x20,0x2d,0x63, - 0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x36,0x20,0x3d,0x20,0x5f, - 0x39,0x37,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x37,0x20,0x3d,0x20, - 0x5f,0x39,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x38, - 0x20,0x3d,0x20,0x5f,0x31,0x30,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x39,0x20,0x3d,0x20,0x5f,0x31,0x30,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x30,0x20,0x3d,0x20,0x5f,0x39,0x39,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x30,0x32,0x31,0x20, - 0x3d,0x20,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x69,0x6e,0x67,0x6c, - 0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x36,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x38,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x39,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x33,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x31,0x30,0x36,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x72,0x64,0x6d,0x5f,0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x38,0x31, - 0x37,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x30,0x37,0x32,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x20,0x2a,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34, - 0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, - 0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x5f,0x31,0x30,0x32,0x31,0x20,0x2a,0x20,0x28, - 0x28,0x5f,0x39,0x36,0x35,0x20,0x2a,0x20,0x5f,0x31,0x30,0x36,0x37,0x2e,0x78,0x29, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x30,0x36,0x37,0x2e,0x79,0x29, - 0x29,0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a, - 0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39, - 0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31, - 0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x30,0x37,0x32,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x30,0x2e,0x38,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38, - 0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x37,0x32,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77, - 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x38,0x31,0x37,0x2c,0x20,0x32,0x2e,0x30, - 0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d, - 0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33, - 0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c,0x20,0x30,0x2e,0x36,0x39, - 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34, - 0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x34,0x20,0x5f,0x31,0x31,0x33,0x33,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x72,0x64,0x6d,0x5f,0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x5f,0x72, - 0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28, - 0x5f,0x38,0x31,0x37,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x31,0x20,0x3d,0x20,0x72, - 0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x37,0x39,0x38,0x2c,0x20,0x4e,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x32,0x20,0x3d,0x20,0x5f,0x39, - 0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x31,0x34,0x36,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x31,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x33,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28, - 0x28,0x5f,0x31,0x31,0x34,0x36,0x20,0x2a,0x20,0x28,0x28,0x5f,0x39,0x36,0x35,0x20, - 0x2a,0x20,0x5f,0x31,0x31,0x33,0x33,0x2e,0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63, - 0x33,0x28,0x5f,0x31,0x31,0x33,0x33,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f, - 0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65, - 0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20, - 0x2d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33, - 0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32, - 0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65, - 0x64,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69, - 0x66,0x66,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x64,0x6d, - 0x5f,0x73,0x68,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65,0x5f,0x72,0x64, - 0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x39,0x34,0x38,0x29,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72, - 0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44, - 0x69,0x66,0x66,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e,0x61,0x6d,0x62,0x69,0x65, - 0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e, - 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x32,0x31,0x35,0x20,0x3d,0x20,0x6c,0x69,0x67,0x68,0x74,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x31,0x36,0x20, - 0x3d,0x20,0x5f,0x31,0x32,0x31,0x35,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x39,0x36, - 0x35,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61, - 0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63, - 0x74,0x44,0x69,0x66,0x66,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30, - 0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72, - 0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79, - 0x7a,0x29,0x20,0x2a,0x20,0x5f,0x39,0x34,0x39,0x2e,0x78,0x29,0x20,0x2a,0x20,0x5f, - 0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69,0x66, - 0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69, - 0x67,0x68,0x74,0x20,0x3d,0x20,0x5f,0x31,0x32,0x31,0x36,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x5f,0x39,0x37,0x2e,0x64,0x65,0x65,0x70,0x43, - 0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x5f,0x31,0x32,0x31,0x36,0x20,0x2b,0x20,0x28,0x28, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29, - 0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65, - 0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d, - 0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x39, - 0x37,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x76, - 0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73,0x5f, - 0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x31,0x32,0x34,0x32,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x32,0x34,0x36,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31, - 0x32,0x34,0x32,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39, - 0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39, - 0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f, - 0x31,0x32,0x34,0x36,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f, - 0x31,0x32,0x34,0x36,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f, - 0x31,0x32,0x34,0x36,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73, - 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x32,0x36,0x30,0x20, - 0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x31,0x32,0x36,0x34,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x32,0x36,0x30, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32, - 0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38, - 0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20, - 0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 trile_rdm_vs_params[9]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - out vec4 fnormal; - layout(location = 1) in vec4 normal; - out vec3 orig_normal; - out vec3 to_center; - layout(location = 2) in vec4 centre; - out vec3 vpos; - out vec3 ipos; - out vec3 cam; - out vec3 cv; - out vec3 trileCenter; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, -_67, 0.0), vec3(_67, _64, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, 0.0, _50), vec3(0.0, 1.0, 0.0), vec3(-_50, 0.0, _47)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - mat3 _171 = get_orientation_matrix(param); - vec3 _200 = ((_171 * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz; - gl_Position = mat4(trile_rdm_vs_params[0], trile_rdm_vs_params[1], trile_rdm_vs_params[2], trile_rdm_vs_params[3]) * vec4(_200, 1.0); - fnormal = vec4(_171 * normal.xyz, 0.0); - orig_normal = normal.xyz; - to_center = centre.xyz - position.xyz; - vpos = _200; - ipos = position.xyz; - cam = trile_rdm_vs_params[8].xyz; - cv = normalize(trile_rdm_vs_params[8].xyz - vpos); - trileCenter = instance.xyz + vec3(0.5); - } - -*/ -vs_trile_rdm_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x39,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76, - 0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e, - 0x74,0x65,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65, - 0x63,0x33,0x20,0x76,0x70,0x6f,0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63, - 0x33,0x20,0x69,0x70,0x6f,0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, - 0x20,0x63,0x61,0x6d,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63, - 0x76,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72, - 0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20, - 0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28, - 0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f, - 0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38,0x29,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x37,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x5f,0x36,0x37,0x2c,0x20,0x5f,0x36,0x34,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61, - 0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34, - 0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28, - 0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d, - 0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x34, - 0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x67,0x65,0x74, - 0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74, - 0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72,0x69,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20,0x6f,0x72,0x69, - 0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x62, - 0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32, - 0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33, - 0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37, - 0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74, - 0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20, - 0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30, - 0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x33, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36, - 0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f, - 0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31, - 0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36, - 0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20,0x25,0x20,0x34, - 0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35, - 0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65,0x20,0x2a, - 0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e,0x73,0x74, - 0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61, - 0x74,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72, - 0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x37,0x31,0x20, - 0x2a,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20, - 0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x73, - 0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67, - 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74, - 0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f, - 0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d, - 0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f, - 0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d, - 0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32,0x30,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x3d,0x20,0x63, - 0x65,0x6e,0x74,0x72,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x70, - 0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61,0x6d,0x20,0x3d,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x76, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x74,0x72,0x69, - 0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x38,0x5d,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72, - 0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct trile_rdm_world_config - { - highp vec3 skyBase; - highp vec3 skyTop; - highp vec3 sunDisk; - highp vec3 horizonHalo; - highp vec3 sunHalo; - highp vec3 sunLightColor; - highp vec3 sunPosition; - highp float sunIntensity; - highp float skyIntensity; - int hasClouds; - highp float planeHeight; - int animatePlaneHeight; - highp vec3 waterColor; - highp vec3 deepColor; - highp float time; - int hsv_lighting; - }; - - uniform trile_rdm_world_config _97; - - struct trile_rdm_fs_params - { - highp mat4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - highp float ambient_intensity; - highp float emissive_scale; - highp float indirect_diff_scale; - highp float indirect_spec_scale; - highp vec3 ambient_color; - int is_preview; - highp vec3 indirect_tint; - int sh_enabled; - highp vec4 atlas_rect; - }; - - uniform trile_rdm_fs_params _590; - - uniform highp sampler2D rdm_triletex_rdm_trilesmp; - uniform highp sampler2DShadow rdm_shadowtex_rdm_shadowsmp; - uniform highp sampler2D rdm_ssaotex_rdm_linsmp; - uniform highp sampler2D rdm_atlas_rdm_linsmp; - uniform highp sampler2D rdm_brdflut_rdm_linsmp; - uniform highp sampler2D rdm_shirradiance_rdm_linsmp; - - in highp vec3 vpos; - in highp vec3 ipos; - in highp vec3 orig_normal; - in highp vec3 to_center; - in highp vec4 fnormal; - layout(location = 0) out highp vec4 frag_color; - in highp vec3 cam; - in highp vec3 trileCenter; - in highp vec3 cv; - - highp vec3 fresnelSchlick(highp float cosTheta, highp vec3 F0) - { - return F0 + ((vec3(1.0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - highp float DistributionGGX(highp vec3 N, highp vec3 H, highp float roughness) - { - highp float _180 = roughness * roughness; - highp float _184 = _180 * _180; - highp float _189 = max(dot(N, H), 0.0); - highp float _197 = ((_189 * _189) * (_184 - 1.0)) + 1.0; - return _184 / ((3.1415927410125732421875 * _197) * _197); - } - - highp float GeometrySmith(highp vec3 N, highp vec3 V, highp vec3 L, highp float roughness) - { - highp float _209 = roughness + 1.0; - highp float _215 = (_209 * _209) * 0.125; - highp float _220 = max(dot(N, V), 0.0); - highp float _225 = max(dot(N, L), 0.0); - highp float _230 = 1.0 - _215; - return (_225 / ((_225 * _230) + _215)) * (_220 / ((_220 * _230) + _215)); - } - - highp vec3 FresnelSchlickRoughness(highp float cosTheta, highp vec3 F0, highp float roughness) - { - return F0 + ((max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - int rdm_face_from_normal(highp vec3 N) - { - highp vec3 _348 = abs(N); - highp float _350 = _348.y; - highp float _352 = _348.x; - bool _353 = _350 >= _352; - bool _361; - if (_353) - { - _361 = _350 >= _348.z; - } - else - { - _361 = _353; - } - if (_361) - { - return (N.y >= 0.0) ? 0 : 1; - } - highp float _370 = _348.z; - bool _373 = _370 >= _352; - bool _381; - if (_373) - { - _381 = _370 >= _350; - } - else - { - _381 = _373; - } - if (_381) - { - return (N.z >= 0.0) ? 2 : 3; - } - return (N.x >= 0.0) ? 4 : 5; - } - - ivec2 rdm_face_offset(highp vec4 rect, int face, int rdmSize, ivec2 atlasSize) - { - return ivec2(int(rect.x * float(atlasSize.x)) + ((face % 2) * rdmSize), int(rect.y * float(atlasSize.y)) + ((face / 2) * rdmSize)); - } - - highp vec2 rdm_hemioct(highp vec3 v, int face) - { - highp vec3 vc = v; - if ((face / 2) == 0) - { - highp vec3 _1294 = vc; - _1294.z = v.y; - _1294.y = v.z; - vc = _1294; - } - if ((face / 2) == 2) - { - highp vec3 _1298 = vc; - _1298.z = v.x; - _1298.x = v.z; - vc = _1298; - } - if ((face % 2) == 1) - { - highp vec3 _1302 = vc; - _1302.z = _1302.z * (-1.0); - vc = _1302; - } - highp vec2 _328 = vc.xy * (1.0 / ((abs(vc.x) + abs(vc.y)) + vc.z)); - highp float _330 = _328.x; - highp float _332 = _328.y; - return (vec2(_330 + _332, _330 - _332) * 0.5) + vec2(0.5); - } - - highp vec3 sky(highp vec3 skypos, highp vec3 sunpos) - { - highp vec3 _88 = normalize(skypos); - highp float _93 = dot(_88, normalize(sunpos)); - highp float _108 = _88.y; - highp vec3 result = mix(_97.skyBase, _97.skyTop, vec3(clamp(_108 * 2.0, 0.0, 0.699999988079071044921875))) + ((_97.sunHalo * clamp((_93 - 0.949999988079071044921875) * 10.0, 0.0, 0.800000011920928955078125)) * 0.20000000298023223876953125); - if (_93 > 0.99989998340606689453125) - { - result = _97.sunDisk; - } - highp vec3 _157 = result; - highp vec3 _158 = _157 + (mix(_97.horizonHalo, vec3(0.0), vec3(clamp(abs(_108) * 80.0, 0.0, 1.0))) * 0.100000001490116119384765625); - result = _158; - return _158; - } - - highp vec3 sky_reflect(inout highp vec3 R, highp vec3 sunpos) - { - if (R.y < 0.0) - { - R = reflect(R, vec3(0.0, 1.0, 0.0)); - } - highp vec3 param = R; - highp vec3 param_1 = sunpos; - return sky(param, param_1); - } - - highp vec3 rdm_spec_raymarch(highp vec3 N, highp vec3 V, highp vec3 diff, int face, ivec2 faceOffset, int rdmSize, highp vec2 atlasInvSize) - { - highp vec3 _430 = reflect(V, N); - for (int i = 0; i < 40; i++) - { - highp vec3 _460 = diff + (_430 * (0.5 * float(i + 1))); - if (dot(_460, N) < 0.0) - { - continue; - } - highp vec3 param = normalize(_460); - int param_1 = face; - highp vec4 _499 = texture(rdm_atlas_rdm_linsmp, (vec2(faceOffset) + (rdm_hemioct(param, param_1) * float(rdmSize))) * atlasInvSize, 0.0); - highp float _502 = length(_460); - highp float _505 = _499.w; - bool _506 = _505 > 0.0; - bool _513; - if (_506) - { - _513 = _505 < _502; - } - else - { - _513 = _506; - } - bool _522; - if (_513) - { - _522 = (_505 + 0.5) > _502; - } - else - { - _522 = _513; - } - if (_522) - { - return _499.xyz; - } - } - highp vec3 param_2 = _430; - highp vec3 param_3 = _97.sunPosition; - highp vec3 _536 = sky_reflect(param_2, param_3); - return _536; - } - - highp vec3 rdm_spec_single(highp vec3 N, highp vec3 V, highp vec3 diff, int face, ivec2 faceOffset, int rdmSize, highp vec2 atlasInvSize) - { - highp vec3 param = normalize(diff + (reflect(V, N) * 2.0)); - int param_1 = face; - return texture(rdm_atlas_rdm_linsmp, (vec2(faceOffset) + (rdm_hemioct(param, param_1) * float(rdmSize))) * atlasInvSize).xyz; - } - - void main() - { - bool _584 = vpos.y < (_97.planeHeight - 0.00999999977648258209228515625); - bool _595; - if (_584) - { - _595 = _590.is_reflection == 1; - } - else - { - _595 = _584; - } - if (_595) - { - discard; - } - highp vec3 sample_pos = ipos - (orig_normal * 0.0199999995529651641845703125); - bool _610 = _590.is_reflection == 1; - int _611 = _610 ? 1 : 3; - highp vec4 trixel_material; - for (int i = 0; i < _611; i++) - { - highp vec4 _652 = texelFetch(rdm_triletex_rdm_trilesmp, ivec2(int(clamp(sample_pos.z, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0), int(clamp(sample_pos.y, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) + (int(clamp(sample_pos.x, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) * 16)), 0); - trixel_material = _652; - if (dot(_652, _652) > 9.9999997473787516355514526367188e-05) - { - break; - } - sample_pos += (to_center * 0.100000001490116119384765625); - } - int _676 = int(round(trixel_material.w * 255.0)); - highp float emittance = 0.0; - int roughnessInt = 0; - highp float roughness = 0.0; - highp float metallic = 0.0; - if ((_676 & 1) != 0) - { - emittance = float((_676 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - int _697 = (_676 >> 5) & 7; - roughnessInt = _697; - roughness = max(float(_697) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_676 >> 3) & 3) * 0.3333333432674407958984375; - } - highp vec3 _715 = abs(fnormal.xyz); - highp float _717 = _715.x; - highp float _719 = _715.y; - bool _720 = _717 >= _719; - bool _728; - if (_720) - { - _728 = _717 >= _715.z; - } - else - { - _728 = _720; - } - highp vec3 N; - if (_728) - { - N = vec3(sign(fnormal.x), 0.0, 0.0); - } - else - { - bool _741 = _719 >= _717; - bool _749; - if (_741) - { - _749 = _719 >= _715.z; - } - else - { - _749 = _741; - } - if (_749) - { - N = vec3(0.0, sign(fnormal.y), 0.0); - } - else - { - N = vec3(0.0, 0.0, sign(fnormal.z)); - } - } - if (_610) - { - frag_color = vec4(trixel_material.xyz * (((_97.sunLightColor * max(dot(N, normalize(_97.sunPosition)), 0.0)) * _97.sunIntensity) + vec3(0.100000001490116119384765625)), 1.0); - return; - } - highp vec3 _798 = normalize(cam - vpos); - highp vec3 _802 = normalize(_97.sunPosition); - highp vec3 _807 = normalize(_798 + _802); - highp float _812 = max(dot(N, _802), 0.0); - highp float _817 = max(dot(N, _798), 0.0); - highp vec3 _829 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, vec3(metallic)); - highp float param = max(dot(_807, _798), 0.0); - highp vec3 param_1 = _829; - highp vec3 _835 = fresnelSchlick(param, param_1); - highp vec3 param_2 = N; - highp vec3 param_3 = _807; - highp float param_4 = roughness; - highp vec3 param_5 = N; - highp vec3 param_6 = _798; - highp vec3 param_7 = _802; - highp float param_8 = roughness; - highp vec4 _874 = _590.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); - highp vec3 _884 = ((_874.xyz / vec3(_874.w)) * 0.5) + vec3(0.5); - highp float _888 = _884.z - 0.001000000047497451305389404296875; - highp vec3 _1286 = _884; - _1286.z = _888; - highp vec3 light = ((((((((vec3(1.0) - _835) * (1.0 - metallic)) * trixel_material.xyz) * vec3(0.3183098733425140380859375)) + ((_835 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * _817) * _812) + 9.9999997473787516355514526367188e-05))) * texture(rdm_shadowtex_rdm_shadowsmp, vec3(_1286.xy, _888))) * _812) * _97.sunLightColor) * _97.sunIntensity; - highp vec2 _948 = gl_FragCoord.xy / vec2(float(_590.screen_w), float(_590.screen_h)); - highp vec4 _949 = texture(rdm_ssaotex_rdm_linsmp, _948); - highp float param_9 = _817; - highp vec3 param_10 = _829; - highp float param_11 = roughness; - highp vec3 _965 = FresnelSchlickRoughness(param_9, param_10, param_11); - highp vec3 _976 = vpos - (trileCenter + (N * 0.4900000095367431640625)); - if (roughnessInt <= 1) - { - highp vec3 param_12 = N; - int _984 = rdm_face_from_normal(param_12); - ivec2 _990 = textureSize(rdm_atlas_rdm_linsmp, 0); - highp vec2 _995 = vec2(1.0) / vec2(_990); - int _1005 = int(_590.atlas_rect.z * float(_990.x)) / 2; - highp vec4 param_13 = _590.atlas_rect; - int param_14 = _984; - int param_15 = _1005; - ivec2 param_16 = _990; - ivec2 _1017 = rdm_face_offset(param_13, param_14, param_15, param_16); - highp vec3 _1021; - if (roughness < 0.20000000298023223876953125) - { - highp vec3 param_17 = N; - highp vec3 param_18 = -cv; - highp vec3 param_19 = _976; - int param_20 = _984; - ivec2 param_21 = _1017; - int param_22 = _1005; - highp vec2 param_23 = _995; - _1021 = rdm_spec_raymarch(param_17, param_18, param_19, param_20, param_21, param_22, param_23); - } - else - { - highp vec3 param_24 = N; - highp vec3 param_25 = -cv; - highp vec3 param_26 = _976; - int param_27 = _984; - ivec2 param_28 = _1017; - int param_29 = _1005; - highp vec2 param_30 = _995; - _1021 = rdm_spec_single(param_24, param_25, param_26, param_27, param_28, param_29, param_30); - } - highp vec4 _1067 = texture(rdm_brdflut_rdm_linsmp, vec2(_817, roughness)); - highp float _1072 = sin(roughness * 3.1415927410125732421875); - light += (((((_1021 * ((_965 * _1067.x) + vec3(_1067.y))) * _590.indirect_spec_scale) * (1.0 - (0.699999988079071044921875 * _1072))) * (1.0 - (((0.89999997615814208984375 * roughness) * _1072) * pow(1.0 - _817, 2.0)))) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - else - { - if (roughness < 0.699999988079071044921875) - { - highp vec4 _1133 = texture(rdm_brdflut_rdm_linsmp, vec2(_817, roughness)); - highp vec3 param_31 = reflect(-_798, N); - highp vec3 param_32 = _97.sunPosition; - highp vec3 _1146 = sky_reflect(param_31, param_32); - light += (((_1146 * ((_965 * _1133.x) + vec3(_1133.y))) * _590.indirect_spec_scale) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - } - highp vec3 indirectDiff; - if (_590.sh_enabled == 1) - { - indirectDiff = texture(rdm_shirradiance_rdm_linsmp, _948).xyz * _590.indirect_tint; - } - else - { - indirectDiff = _590.ambient_color * _590.ambient_intensity; - } - highp vec3 _1215 = light; - highp vec3 _1216 = _1215 + (((((((vec3(1.0) - _965) * (1.0 - metallic)) * indirectDiff) * vec3(0.3183098733425140380859375)) * trixel_material.xyz) * _949.x) * _590.indirect_diff_scale); - light = _1216; - frag_color = vec4(mix(_97.deepColor, _1216 + ((trixel_material.xyz * emittance) * _590.emissive_scale), vec3(smoothstep(0.0, _97.planeHeight, vpos.y))), 1.0); - if (_590.is_preview == 1) - { - highp vec4 _1242 = frag_color; - highp vec3 _1246 = mix(_1242.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); - frag_color.x = _1246.x; - frag_color.y = _1246.y; - frag_color.z = _1246.z; - } - else - { - if (_590.is_preview == 2) - { - highp vec4 _1260 = frag_color; - highp vec3 _1264 = mix(_1260.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); - frag_color.x = _1264.x; - frag_color.y = _1264.y; - frag_color.z = _1264.z; - } - } - } - -*/ -fs_trile_rdm_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f, - 0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b, - 0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e, - 0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68, - 0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64, - 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50, - 0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72, - 0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68, - 0x73,0x76,0x5f,0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72, - 0x64,0x6d,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x20, - 0x5f,0x39,0x37,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69, - 0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x6d,0x61,0x74, - 0x34,0x20,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72, - 0x65,0x65,0x6e,0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73, - 0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, - 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x73, - 0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73, - 0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x70, - 0x72,0x65,0x76,0x69,0x65,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f, - 0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x68, - 0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72, - 0x65,0x63,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x66,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x20,0x5f,0x35,0x39,0x30,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x72,0x32,0x44,0x20,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78, - 0x5f,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x3b,0x0a,0x75, - 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x32,0x44,0x53,0x68,0x61,0x64,0x6f,0x77,0x20,0x72,0x64,0x6d, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x72,0x64,0x6d,0x5f,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x72,0x64, - 0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72, - 0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32, - 0x44,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, - 0x72,0x64,0x6d,0x5f,0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, - 0x72,0x64,0x6d,0x5f,0x73,0x68,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e,0x63,0x65, - 0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x70,0x6f,0x73, - 0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x69,0x70,0x6f,0x73,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x74, - 0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63, - 0x61,0x6d,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x3b,0x0a,0x69, - 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x76,0x3b, - 0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x72,0x65, - 0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61, - 0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x30,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30, - 0x20,0x2b,0x20,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d, - 0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70, - 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47, - 0x58,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x48,0x2c,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x30,0x20,0x3d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x30, - 0x20,0x2a,0x20,0x5f,0x31,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x39,0x20,0x3d,0x20, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x48,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x37,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31, - 0x38,0x39,0x20,0x2a,0x20,0x5f,0x31,0x38,0x39,0x29,0x20,0x2a,0x20,0x28,0x5f,0x31, - 0x38,0x34,0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x31,0x38, - 0x34,0x20,0x2f,0x20,0x28,0x28,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34, - 0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x20,0x2a, - 0x20,0x5f,0x31,0x39,0x37,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39,0x37,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47, - 0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x56,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x4c,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x32,0x30,0x39,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31,0x35,0x20,0x3d,0x20,0x28, - 0x5f,0x32,0x30,0x39,0x20,0x2a,0x20,0x5f,0x32,0x30,0x39,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x32,0x32,0x35,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74, - 0x28,0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32, - 0x33,0x30,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x32,0x31,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x5f,0x32,0x32, - 0x35,0x20,0x2f,0x20,0x28,0x28,0x5f,0x32,0x32,0x35,0x20,0x2a,0x20,0x5f,0x32,0x33, - 0x30,0x29,0x20,0x2b,0x20,0x5f,0x32,0x31,0x35,0x29,0x29,0x20,0x2a,0x20,0x28,0x5f, - 0x32,0x32,0x30,0x20,0x2f,0x20,0x28,0x28,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f, - 0x32,0x33,0x30,0x29,0x20,0x2b,0x20,0x5f,0x32,0x31,0x35,0x29,0x29,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x72,0x65, - 0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x46,0x30,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30, - 0x20,0x2b,0x20,0x28,0x28,0x6d,0x61,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x2c,0x20, - 0x46,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54, - 0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c, - 0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x69,0x6e,0x74,0x20,0x72, - 0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x33,0x34,0x38,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x4e,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x33,0x35,0x30,0x20,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x33,0x35,0x32,0x20,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x35,0x33,0x20,0x3d,0x20, - 0x5f,0x33,0x35,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x35,0x32,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x36,0x31,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x36,0x31,0x20,0x3d,0x20, - 0x5f,0x33,0x35,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x36, - 0x31,0x20,0x3d,0x20,0x5f,0x33,0x35,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x36,0x31,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x28,0x4e,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x2e,0x30,0x29,0x20, - 0x3f,0x20,0x30,0x20,0x3a,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x33,0x37,0x30,0x20,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x37,0x33,0x20,0x3d,0x20,0x5f,0x33, - 0x37,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x38,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x33,0x37,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x38,0x31,0x20,0x3d,0x20,0x5f,0x33, - 0x37,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x35,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x38,0x31,0x20,0x3d,0x20, - 0x5f,0x33,0x37,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x33,0x38,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28, - 0x4e,0x2e,0x7a,0x20,0x3e,0x3d,0x20,0x30,0x2e,0x30,0x29,0x20,0x3f,0x20,0x32,0x20, - 0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x4e,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x2e, - 0x30,0x29,0x20,0x3f,0x20,0x34,0x20,0x3a,0x20,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x69, - 0x76,0x65,0x63,0x32,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x6f,0x66, - 0x66,0x73,0x65,0x74,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x72,0x65,0x63,0x74,0x2c,0x20,0x69,0x6e,0x74,0x20,0x66,0x61,0x63,0x65,0x2c,0x20, - 0x69,0x6e,0x74,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x2c,0x20,0x69,0x76,0x65, - 0x63,0x32,0x20,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x76,0x65,0x63,0x32, - 0x28,0x69,0x6e,0x74,0x28,0x72,0x65,0x63,0x74,0x2e,0x78,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x2e,0x78,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x25,0x20,0x32,0x29,0x20, - 0x2a,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28, - 0x72,0x65,0x63,0x74,0x2e,0x79,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x61, - 0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28, - 0x28,0x66,0x61,0x63,0x65,0x20,0x2f,0x20,0x32,0x29,0x20,0x2a,0x20,0x72,0x64,0x6d, - 0x53,0x69,0x7a,0x65,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x32,0x20,0x72,0x64,0x6d,0x5f,0x68,0x65,0x6d,0x69,0x6f,0x63, - 0x74,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x2c,0x20, - 0x69,0x6e,0x74,0x20,0x66,0x61,0x63,0x65,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x20,0x3d,0x20, - 0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63,0x65, - 0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x39,0x34,0x20,0x3d,0x20,0x76,0x63,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x34,0x2e,0x7a, - 0x20,0x3d,0x20,0x76,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x31,0x32,0x39,0x34,0x2e,0x79,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x32,0x39, - 0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x32, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x39,0x38, - 0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x31,0x32,0x39,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x78,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x38,0x2e,0x78,0x20,0x3d,0x20, - 0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20, - 0x3d,0x20,0x5f,0x31,0x32,0x39,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x25,0x20,0x32, - 0x29,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x31,0x33,0x30,0x32,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x30,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x30,0x32,0x2e,0x7a,0x20,0x2a,0x20,0x28,0x2d,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31, - 0x33,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x33,0x32,0x38,0x20,0x3d, - 0x20,0x76,0x63,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20, - 0x28,0x28,0x61,0x62,0x73,0x28,0x76,0x63,0x2e,0x78,0x29,0x20,0x2b,0x20,0x61,0x62, - 0x73,0x28,0x76,0x63,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x76,0x63,0x2e,0x7a,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x33,0x33,0x30,0x20,0x3d,0x20,0x5f,0x33,0x32,0x38,0x2e,0x78, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x33,0x33,0x32,0x20,0x3d,0x20,0x5f,0x33,0x32,0x38,0x2e,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x76,0x65,0x63, - 0x32,0x28,0x5f,0x33,0x33,0x30,0x20,0x2b,0x20,0x5f,0x33,0x33,0x32,0x2c,0x20,0x5f, - 0x33,0x33,0x30,0x20,0x2d,0x20,0x5f,0x33,0x33,0x32,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b, - 0x79,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79, - 0x70,0x6f,0x73,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x38,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x39,0x33,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x38,0x38,0x2c, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e,0x70,0x6f, - 0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30,0x38,0x20,0x3d,0x20,0x5f,0x38,0x38,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f, - 0x39,0x37,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x39,0x37,0x2e, - 0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x5f,0x31,0x30,0x38,0x20,0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30, - 0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c, - 0x6f,0x20,0x2a,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x39,0x33,0x20,0x2d, - 0x20,0x30,0x2e,0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, - 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x31, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30, - 0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37, - 0x38,0x31,0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39, - 0x35,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x39,0x33,0x20,0x3e,0x20,0x30,0x2e,0x39,0x39,0x39,0x38,0x39,0x39,0x39,0x38, - 0x33,0x34,0x30,0x36,0x30,0x36,0x36,0x38,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, - 0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x44, - 0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x37,0x20,0x3d, - 0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x38,0x20,0x3d,0x20,0x5f, - 0x31,0x35,0x37,0x20,0x2b,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x39,0x37,0x2e,0x68, - 0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x61,0x62,0x73,0x28,0x5f,0x31,0x30,0x38,0x29,0x20,0x2a,0x20,0x38,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30, - 0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f, - 0x31,0x35,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x5f,0x31,0x35,0x38,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28, - 0x69,0x6e,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x52,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73, - 0x75,0x6e,0x70,0x6f,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x52,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x64, - 0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x72,0x61,0x79,0x6d,0x61,0x72,0x63,0x68,0x28, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x56,0x2c,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x69,0x66,0x66,0x2c,0x20,0x69,0x6e,0x74, - 0x20,0x66,0x61,0x63,0x65,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x66,0x61,0x63, - 0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x74,0x20,0x72,0x64,0x6d, - 0x53,0x69,0x7a,0x65,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, - 0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x34,0x33,0x30,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x56, - 0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69, - 0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x30, - 0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x34,0x36,0x30,0x20,0x3d,0x20,0x64,0x69,0x66,0x66,0x20,0x2b,0x20,0x28,0x5f, - 0x34,0x33,0x30,0x20,0x2a,0x20,0x28,0x30,0x2e,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x69,0x20,0x2b,0x20,0x31,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x34,0x36, - 0x30,0x2c,0x20,0x4e,0x29,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x34,0x36,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x66,0x61,0x63,0x65,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x34,0x39,0x39,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64,0x6d,0x5f,0x6c, - 0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x61,0x63, - 0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2b,0x20,0x28,0x72,0x64,0x6d,0x5f, - 0x68,0x65,0x6d,0x69,0x6f,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x29,0x29,0x20,0x2a,0x20,0x61,0x74,0x6c, - 0x61,0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x32,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67, - 0x74,0x68,0x28,0x5f,0x34,0x36,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35, - 0x30,0x35,0x20,0x3d,0x20,0x5f,0x34,0x39,0x39,0x2e,0x77,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x30,0x36,0x20,0x3d, - 0x20,0x5f,0x35,0x30,0x35,0x20,0x3e,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x31,0x33,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x30,0x36, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x31,0x33,0x20,0x3d,0x20,0x5f, - 0x35,0x30,0x35,0x20,0x3c,0x20,0x5f,0x35,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x31,0x33,0x20,0x3d,0x20, - 0x5f,0x35,0x30,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x32, - 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x35,0x31,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x32,0x32,0x20, - 0x3d,0x20,0x28,0x5f,0x35,0x30,0x35,0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x3e, - 0x20,0x5f,0x35,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x35,0x32,0x32,0x20,0x3d,0x20,0x5f,0x35,0x31,0x33,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x32,0x32,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x34,0x39,0x39,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x34,0x33, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x39,0x37,0x2e, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x33,0x36, - 0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x35,0x33, - 0x36,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x69,0x6e,0x67,0x6c,0x65, - 0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x56,0x2c,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x69,0x66,0x66,0x2c,0x20,0x69,0x6e, - 0x74,0x20,0x66,0x61,0x63,0x65,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x66,0x61, - 0x63,0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x74,0x20,0x72,0x64, - 0x6d,0x53,0x69,0x7a,0x65,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x32,0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x64,0x69,0x66,0x66,0x20,0x2b,0x20,0x28,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x28,0x56,0x2c,0x20,0x4e,0x29,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x66,0x61,0x63,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x64,0x6d, - 0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d, - 0x70,0x2c,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x66,0x61,0x63,0x65,0x4f,0x66,0x66, - 0x73,0x65,0x74,0x29,0x20,0x2b,0x20,0x28,0x72,0x64,0x6d,0x5f,0x68,0x65,0x6d,0x69, - 0x6f,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x72,0x64,0x6d,0x53, - 0x69,0x7a,0x65,0x29,0x29,0x29,0x20,0x2a,0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e, - 0x76,0x53,0x69,0x7a,0x65,0x29,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x7d,0x0a,0x0a,0x76, - 0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x38,0x34,0x20,0x3d,0x20,0x76,0x70,0x6f, - 0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x39,0x37,0x2e,0x70,0x6c,0x61,0x6e,0x65, - 0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39, - 0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32, - 0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x35,0x38,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x39,0x35,0x20,0x3d,0x20,0x5f,0x35,0x39, - 0x30,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x35,0x39,0x35,0x20,0x3d,0x20,0x5f,0x35,0x38,0x34,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35, - 0x39,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,0x70,0x6f, - 0x73,0x20,0x2d,0x20,0x28,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35, - 0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x31, - 0x30,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x31,0x31,0x20,0x3d,0x20,0x5f,0x36,0x31,0x30, - 0x20,0x3f,0x20,0x31,0x20,0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f, - 0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20, - 0x3c,0x20,0x5f,0x36,0x31,0x31,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x35,0x32,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x65,0x6c,0x46,0x65,0x74,0x63,0x68,0x28,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c, - 0x65,0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d, - 0x70,0x2c,0x20,0x69,0x76,0x65,0x63,0x32,0x28,0x69,0x6e,0x74,0x28,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x7a,0x2c, - 0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37, - 0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31, - 0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39, - 0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29, - 0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x79, - 0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38, - 0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37, - 0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38, - 0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35, - 0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b,0x20,0x28,0x69,0x6e,0x74, - 0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f, - 0x73,0x2e,0x78,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37, - 0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36, - 0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39, - 0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34, - 0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31, - 0x36,0x29,0x29,0x2c,0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c, - 0x20,0x3d,0x20,0x5f,0x36,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x36,0x35,0x32,0x2c,0x20,0x5f, - 0x36,0x35,0x32,0x29,0x20,0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, - 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x20,0x2b,0x3d,0x20,0x28,0x74,0x6f,0x5f,0x63, - 0x65,0x6e,0x74,0x65,0x72,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37, - 0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x37,0x36,0x20,0x3d,0x20,0x69,0x6e,0x74, - 0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61, - 0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20, - 0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x26,0x20, - 0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e, - 0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35, - 0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f, - 0x36,0x39,0x37,0x20,0x3d,0x20,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x35, - 0x29,0x20,0x26,0x20,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x5f,0x36, - 0x39,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x5f,0x36,0x39,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38, - 0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36, - 0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33, - 0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20, - 0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33, - 0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x31,0x35,0x20,0x3d,0x20,0x61,0x62, - 0x73,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x37,0x31,0x37,0x20,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x37,0x31,0x39,0x20,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x32,0x30,0x20,0x3d,0x20,0x5f,0x37, - 0x31,0x37,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x32,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x37,0x32,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x32,0x38,0x20,0x3d,0x20,0x5f,0x37, - 0x31,0x37,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x32,0x38,0x20, - 0x3d,0x20,0x5f,0x37,0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x32,0x38,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x37,0x34,0x31,0x20,0x3d,0x20,0x5f,0x37,0x31,0x39,0x20,0x3e, - 0x3d,0x20,0x5f,0x37,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x34,0x31,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d,0x20,0x5f,0x37,0x31,0x39,0x20,0x3e, - 0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d,0x20,0x5f,0x37, - 0x34,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x34,0x39,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28, - 0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x31,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a, - 0x20,0x28,0x28,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74, - 0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x39,0x37, - 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x49, - 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31, - 0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x37,0x39, - 0x38,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61, - 0x6d,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x30,0x32,0x20,0x3d, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x39,0x37,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x30,0x37, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x37,0x39, - 0x38,0x20,0x2b,0x20,0x5f,0x38,0x30,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x32,0x20, - 0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x38,0x30, - 0x32,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x37,0x20,0x3d, - 0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x37,0x39,0x38, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x32,0x39,0x20,0x3d,0x20,0x6d, - 0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39, - 0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31, - 0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, - 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x38, - 0x30,0x37,0x2c,0x20,0x5f,0x37,0x39,0x38,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x38,0x32,0x39,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x38,0x33,0x35,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68, - 0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x38,0x30,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x37,0x39,0x38,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x38,0x30,0x32,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x38,0x37,0x34,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e, - 0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31, - 0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36, - 0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x38,0x38,0x34,0x20,0x3d, - 0x20,0x28,0x28,0x5f,0x38,0x37,0x34,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65, - 0x63,0x33,0x28,0x5f,0x38,0x37,0x34,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x38,0x38,0x38,0x20,0x3d,0x20,0x5f,0x38,0x38,0x34,0x2e,0x7a,0x20,0x2d,0x20, - 0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39, - 0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36, - 0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x38,0x36,0x20,0x3d,0x20,0x5f,0x38,0x38,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x38,0x36,0x2e,0x7a,0x20,0x3d,0x20, - 0x5f,0x38,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d, - 0x20,0x5f,0x38,0x33,0x35,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30, - 0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35, - 0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x38,0x33,0x35,0x20, - 0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47, - 0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20, - 0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38, - 0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30, - 0x20,0x2a,0x20,0x5f,0x38,0x31,0x37,0x29,0x20,0x2a,0x20,0x5f,0x38,0x31,0x32,0x29, - 0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37, - 0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36, - 0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x72,0x64,0x6d,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77, - 0x74,0x65,0x78,0x5f,0x72,0x64,0x6d,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d, - 0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x32,0x38,0x36,0x2e,0x78,0x79, - 0x2c,0x20,0x5f,0x38,0x38,0x38,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x38,0x31,0x32, - 0x29,0x20,0x2a,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74, - 0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e, - 0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x39,0x34,0x38,0x20,0x3d, - 0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x79, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x35, - 0x39,0x30,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x5f,0x35,0x39,0x30,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f, - 0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x39,0x34,0x39,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x72,0x64,0x6d,0x5f,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x72, - 0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x39,0x34,0x38,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x38,0x31,0x37, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x20,0x3d,0x20,0x5f,0x38,0x32,0x39, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x20,0x3d,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x39,0x36,0x35,0x20,0x3d,0x20,0x46,0x72, - 0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x39,0x37,0x36,0x20,0x3d,0x20,0x76,0x70,0x6f,0x73,0x20,0x2d, - 0x20,0x28,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20, - 0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e,0x34,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39, - 0x35,0x33,0x36,0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x49,0x6e,0x74,0x20,0x3c,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20, - 0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f, - 0x39,0x38,0x34,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x66, - 0x72,0x6f,0x6d,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x39,0x39,0x30,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x53,0x69,0x7a,0x65,0x28,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73, - 0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x39,0x39,0x35,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28, - 0x31,0x2e,0x30,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x39,0x39,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f, - 0x31,0x30,0x30,0x35,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x5f,0x35,0x39,0x30,0x2e, - 0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x2e,0x7a,0x20,0x2a,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x5f,0x39,0x39,0x30,0x2e,0x78,0x29,0x29,0x20,0x2f,0x20, - 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d, - 0x20,0x5f,0x35,0x39,0x30,0x2e,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x34,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x35,0x20,0x3d,0x20,0x5f,0x31,0x30,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x36,0x20,0x3d,0x20,0x5f,0x39,0x39,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x30,0x31,0x37,0x20, - 0x3d,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65, - 0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, - 0x30,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c,0x20,0x30,0x2e,0x32, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33, - 0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x37,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20,0x3d,0x20,0x2d,0x63,0x76,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39, - 0x20,0x3d,0x20,0x5f,0x39,0x37,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x30,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x30,0x31,0x37,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x30,0x30,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x20, - 0x3d,0x20,0x5f,0x39,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x30,0x32,0x31,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f, - 0x73,0x70,0x65,0x63,0x5f,0x72,0x61,0x79,0x6d,0x61,0x72,0x63,0x68,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x35,0x20,0x3d,0x20,0x2d,0x63,0x76, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x36,0x20,0x3d,0x20,0x5f,0x39,0x37,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x37,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x30,0x31,0x37,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x39,0x20,0x3d,0x20,0x5f,0x31,0x30,0x30,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x30, - 0x20,0x3d,0x20,0x5f,0x39,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x30,0x32,0x31,0x20,0x3d,0x20,0x72,0x64,0x6d, - 0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x69,0x6e,0x67,0x6c,0x65,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x35,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x38,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, - 0x20,0x5f,0x31,0x30,0x36,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x72,0x64,0x6d,0x5f,0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d, - 0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x38, - 0x31,0x37,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30,0x37,0x32,0x20,0x3d,0x20,0x73,0x69,0x6e, - 0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x33,0x2e,0x31, - 0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34, - 0x32,0x31,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x5f,0x31, - 0x30,0x32,0x31,0x20,0x2a,0x20,0x28,0x28,0x5f,0x39,0x36,0x35,0x20,0x2a,0x20,0x5f, - 0x31,0x30,0x36,0x37,0x2e,0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x31,0x30,0x36,0x37,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30, - 0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73, - 0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28, - 0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37, - 0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x30, - 0x37,0x32,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28, - 0x28,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38, - 0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x37,0x32, - 0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x38, - 0x31,0x37,0x2c,0x20,0x32,0x2e,0x30,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31, - 0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33, - 0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33, - 0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x20,0x3c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37, - 0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x31,0x31,0x33,0x33,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, - 0x72,0x64,0x6d,0x5f,0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x38,0x31, - 0x37,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x31,0x20, - 0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x37,0x39,0x38,0x2c, - 0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x32,0x20,0x3d,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x31,0x31,0x34,0x36,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x31,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28, - 0x5f,0x31,0x31,0x34,0x36,0x20,0x2a,0x20,0x28,0x28,0x5f,0x39,0x36,0x35,0x20,0x2a, - 0x20,0x5f,0x31,0x31,0x33,0x33,0x2e,0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x5f,0x31,0x31,0x33,0x33,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x35, - 0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65,0x63, - 0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33, - 0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, - 0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x73,0x68,0x5f,0x65, - 0x6e,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72, - 0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x72,0x64,0x6d,0x5f,0x73,0x68,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e, - 0x63,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f, - 0x39,0x34,0x38,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e, - 0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e, - 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20, - 0x5f,0x35,0x39,0x30,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32, - 0x31,0x35,0x20,0x3d,0x20,0x6c,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x31,0x36, - 0x20,0x3d,0x20,0x5f,0x31,0x32,0x31,0x35,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x39, - 0x36,0x35,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x44,0x69,0x66,0x66,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34, - 0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74, - 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78, - 0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x39,0x34,0x39,0x2e,0x78,0x29,0x20,0x2a,0x20, - 0x5f,0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x64,0x69, - 0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c, - 0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x5f,0x31,0x32,0x31,0x36,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x5f,0x39,0x37,0x2e,0x64,0x65,0x65,0x70, - 0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x5f,0x31,0x32,0x31,0x36,0x20,0x2b,0x20,0x28, - 0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65, - 0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76, - 0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73, - 0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f, - 0x39,0x37,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20, - 0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73, - 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x32,0x34,0x32,0x20,0x3d,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x31,0x32,0x34,0x36,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x32,0x34,0x32, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30, - 0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30, - 0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39, - 0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37, - 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x32,0x34, - 0x36,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x32,0x34, - 0x36,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x32,0x34, - 0x36,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73,0x5f,0x70,0x72, - 0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x32, - 0x36,0x30,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x32,0x36,0x34,0x20,0x3d,0x20, - 0x6d,0x69,0x78,0x28,0x5f,0x31,0x32,0x36,0x30,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32, - 0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32, - 0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x32,0x36,0x34, - 0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f, - 0x31,0x32,0x36,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a, - 0x20,0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, - -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trile_rdm_vs_params - { - float4x4 mvp; - float4x4 mvp_shadow; - float3 camera; - }; - - struct main0_out - { - float3 cam [[user(locn0)]]; - float3 to_center [[user(locn1)]]; - float3 vpos [[user(locn2)]]; - float3 ipos [[user(locn3)]]; - float4 fnormal [[user(locn4)]]; - float3 orig_normal [[user(locn5)]]; - float3 trileCenter [[user(locn6)]]; - float3 cv [[user(locn7)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 normal [[attribute(1)]]; - float4 centre [[attribute(2)]]; - float4 instance [[attribute(3)]]; - }; - - static inline __attribute__((always_inline)) - float3x3 rot_x(thread const float& a) - { - float _28 = cos(a); - float _31 = sin(a); - return float3x3(float3(1.0, 0.0, 0.0), float3(0.0, _28, -_31), float3(0.0, _31, _28)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_z(thread const float& a) - { - float _64 = cos(a); - float _67 = sin(a); - return float3x3(float3(_64, -_67, 0.0), float3(_67, _64, 0.0), float3(0.0, 0.0, 1.0)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_y(thread const float& a) - { - float _47 = cos(a); - float _50 = sin(a); - return float3x3(float3(_47, 0.0, _50), float3(0.0, 1.0, 0.0), float3(-_50, 0.0, _47)); - } - - static inline __attribute__((always_inline)) - float3x3 get_orientation_matrix(thread const int& ori) - { - int _82 = ori / 4; - float3x3 base; - if (_82 == 0) - { - base = float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - vertex main0_out main0(main0_in in [[stage_in]], constant trile_rdm_vs_params& _193 [[buffer(0)]]) - { - main0_out out = {}; - int param = int(round(in.instance.w)); - float3x3 _171 = get_orientation_matrix(param); - float3 _200 = ((_171 * (in.position.xyz - float3(0.5))) + float3(0.5)) + in.instance.xyz; - out.gl_Position = _193.mvp * float4(_200, 1.0); - out.fnormal = float4(_171 * in.normal.xyz, 0.0); - out.orig_normal = in.normal.xyz; - out.to_center = in.centre.xyz - in.position.xyz; - out.vpos = _200; - out.ipos = in.position.xyz; - out.cam = _193.camera; - out.cv = fast::normalize(_193.camera - out.vpos); - out.trileCenter = in.instance.xyz + float3(0.5); - return out; - } - -*/ -vs_trile_rdm_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64, - 0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x65,0x72,0x61,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61, - 0x6d,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x74,0x6f, - 0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c, - 0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x76,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x69,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, - 0x6e,0x35,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x36,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x76,0x20,0x5b,0x5b,0x75, - 0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x37,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d, - 0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61, - 0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d, - 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x65, - 0x6e,0x74,0x72,0x65,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x5b,0x5b,0x61,0x74,0x74, - 0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f, - 0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c, - 0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26, - 0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69, - 0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38, - 0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32,0x38,0x29,0x29,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e, - 0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28, - 0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29, - 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28, - 0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x37,0x20,0x3d, - 0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x37,0x2c, - 0x20,0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e, - 0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e, - 0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74, - 0x5f,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28, - 0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35, - 0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x35,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x5f,0x34,0x37,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63, - 0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62, - 0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e, - 0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20, - 0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f, - 0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x6f,0x72,0x69,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20,0x3d,0x20,0x6f,0x72, - 0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x78,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x33, - 0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33, - 0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d, - 0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35, - 0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x33,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74, - 0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38, - 0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37, - 0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20, - 0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31,0x2e, - 0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36, - 0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20,0x25,0x20,0x34,0x29, - 0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30, - 0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65,0x20,0x2a,0x20, - 0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e, - 0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72,0x69, - 0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x26,0x20,0x5f,0x31,0x39,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28, - 0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e,0x2e,0x69,0x6e,0x73, - 0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x5f,0x31,0x37,0x31,0x20,0x3d,0x20,0x67, - 0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d, - 0x61,0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20, - 0x28,0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x69,0x6e, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x28,0x5f,0x32,0x30,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x31,0x37,0x31,0x20,0x2a,0x20, - 0x69,0x6e,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x6f,0x72,0x69, - 0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x74,0x6f,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x3d,0x20,0x69,0x6e, - 0x2e,0x63,0x65,0x6e,0x74,0x72,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x69,0x6e, - 0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x76,0x70,0x6f,0x73,0x20,0x3d,0x20,0x5f,0x32, - 0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x69,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78, - 0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x61,0x6d,0x20, - 0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x76,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x39,0x33, - 0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x20,0x2d,0x20,0x6f,0x75,0x74,0x2e,0x76,0x70, - 0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x74,0x72,0x69, - 0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,0x6e, - 0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trile_rdm_world_config - { - float3 skyBase; - float3 skyTop; - float3 sunDisk; - float3 horizonHalo; - float3 sunHalo; - float3 sunLightColor; - packed_float3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - float3 waterColor; - packed_float3 deepColor; - float time; - int hsv_lighting; - }; - - struct trile_rdm_fs_params - { - float4x4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - float ambient_intensity; - float emissive_scale; - float indirect_diff_scale; - float indirect_spec_scale; - char _m8_pad[4]; - packed_float3 ambient_color; - int is_preview; - packed_float3 indirect_tint; - int sh_enabled; - float4 atlas_rect; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float3 cam [[user(locn0)]]; - float3 to_center [[user(locn1)]]; - float3 vpos [[user(locn2)]]; - float3 ipos [[user(locn3)]]; - float4 fnormal [[user(locn4)]]; - float3 orig_normal [[user(locn5)]]; - float3 trileCenter [[user(locn6)]]; - float3 cv [[user(locn7)]]; - }; - - static inline __attribute__((always_inline)) - float3 fresnelSchlick(thread const float& cosTheta, thread const float3& F0) - { - return F0 + ((float3(1.0) - F0) * powr(fast::clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - static inline __attribute__((always_inline)) - float DistributionGGX(thread const float3& N, thread const float3& H, thread const float& roughness) - { - float _180 = roughness * roughness; - float _184 = _180 * _180; - float _189 = fast::max(dot(N, H), 0.0); - float _197 = ((_189 * _189) * (_184 - 1.0)) + 1.0; - return _184 / ((3.1415927410125732421875 * _197) * _197); - } - - static inline __attribute__((always_inline)) - float GeometrySmith(thread const float3& N, thread const float3& V, thread const float3& L, thread const float& roughness) - { - float _209 = roughness + 1.0; - float _215 = (_209 * _209) * 0.125; - float _220 = fast::max(dot(N, V), 0.0); - float _225 = fast::max(dot(N, L), 0.0); - float _230 = 1.0 - _215; - return (_225 / ((_225 * _230) + _215)) * (_220 / ((_220 * _230) + _215)); - } - - static inline __attribute__((always_inline)) - float3 FresnelSchlickRoughness(thread const float& cosTheta, thread const float3& F0, thread const float& roughness) - { - return F0 + ((fast::max(float3(1.0 - roughness), F0) - F0) * powr(fast::clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - static inline __attribute__((always_inline)) - int rdm_face_from_normal(thread const float3& N) - { - float3 _348 = abs(N); - float _350 = _348.y; - float _352 = _348.x; - bool _353 = _350 >= _352; - bool _361; - if (_353) - { - _361 = _350 >= _348.z; - } - else - { - _361 = _353; - } - if (_361) - { - return (N.y >= 0.0) ? 0 : 1; - } - float _370 = _348.z; - bool _373 = _370 >= _352; - bool _381; - if (_373) - { - _381 = _370 >= _350; - } - else - { - _381 = _373; - } - if (_381) - { - return (N.z >= 0.0) ? 2 : 3; - } - return (N.x >= 0.0) ? 4 : 5; - } - - static inline __attribute__((always_inline)) - int2 rdm_face_offset(thread const float4& rect, thread const int& face, thread const int& rdmSize, thread const int2& atlasSize) - { - return int2(int(rect.x * float(atlasSize.x)) + ((face % 2) * rdmSize), int(rect.y * float(atlasSize.y)) + ((face / 2) * rdmSize)); - } - - static inline __attribute__((always_inline)) - float2 rdm_hemioct(thread const float3& v, thread const int& face) - { - float3 vc = v; - if ((face / 2) == 0) - { - float3 _1294 = vc; - _1294.z = v.y; - _1294.y = v.z; - vc = _1294; - } - if ((face / 2) == 2) - { - float3 _1298 = vc; - _1298.z = v.x; - _1298.x = v.z; - vc = _1298; - } - if ((face % 2) == 1) - { - float3 _1302 = vc; - _1302.z = _1302.z * (-1.0); - vc = _1302; - } - float2 _328 = vc.xy * (1.0 / ((abs(vc.x) + abs(vc.y)) + vc.z)); - float _330 = _328.x; - float _332 = _328.y; - return (float2(_330 + _332, _330 - _332) * 0.5) + float2(0.5); - } - - static inline __attribute__((always_inline)) - float3 sky(thread const float3& skypos, thread const float3& sunpos, constant trile_rdm_world_config& _97) - { - float3 _88 = fast::normalize(skypos); - float _93 = dot(_88, fast::normalize(sunpos)); - float _108 = _88.y; - float3 result = mix(_97.skyBase, _97.skyTop, float3(fast::clamp(_108 * 2.0, 0.0, 0.699999988079071044921875))) + ((_97.sunHalo * fast::clamp((_93 - 0.949999988079071044921875) * 10.0, 0.0, 0.800000011920928955078125)) * 0.20000000298023223876953125); - if (_93 > 0.99989998340606689453125) - { - result = _97.sunDisk; - } - float3 _157 = result; - float3 _158 = _157 + (mix(_97.horizonHalo, float3(0.0), float3(fast::clamp(abs(_108) * 80.0, 0.0, 1.0))) * 0.100000001490116119384765625); - result = _158; - return _158; - } - - static inline __attribute__((always_inline)) - float3 sky_reflect(thread float3& R, thread const float3& sunpos, constant trile_rdm_world_config& _97) - { - if (R.y < 0.0) - { - R = reflect(R, float3(0.0, 1.0, 0.0)); - } - float3 param = R; - float3 param_1 = sunpos; - return sky(param, param_1, _97); - } - - static inline __attribute__((always_inline)) - float3 rdm_spec_raymarch(thread const float3& N, thread const float3& V, thread const float3& diff, thread const int& face, thread const int2& faceOffset, thread const int& rdmSize, thread const float2& atlasInvSize, constant trile_rdm_world_config& _97, texture2d rdm_atlas, sampler rdm_linsmp) - { - float3 _430 = reflect(V, N); - for (int i = 0; i < 40; i++) - { - float3 _460 = diff + (_430 * (0.5 * float(i + 1))); - if (dot(_460, N) < 0.0) - { - continue; - } - float3 param = fast::normalize(_460); - int param_1 = face; - float4 _499 = rdm_atlas.sample(rdm_linsmp, ((float2(faceOffset) + (rdm_hemioct(param, param_1) * float(rdmSize))) * atlasInvSize), bias(0.0)); - float _502 = length(_460); - float _505 = _499.w; - bool _506 = _505 > 0.0; - bool _513; - if (_506) - { - _513 = _505 < _502; - } - else - { - _513 = _506; - } - bool _522; - if (_513) - { - _522 = (_505 + 0.5) > _502; - } - else - { - _522 = _513; - } - if (_522) - { - return _499.xyz; - } - } - float3 param_2 = _430; - float3 param_3 = float3(_97.sunPosition); - float3 _536 = sky_reflect(param_2, param_3, _97); - return _536; - } - - static inline __attribute__((always_inline)) - float3 rdm_spec_single(thread const float3& N, thread const float3& V, thread const float3& diff, thread const int& face, thread const int2& faceOffset, thread const int& rdmSize, thread const float2& atlasInvSize, texture2d rdm_atlas, sampler rdm_linsmp) - { - float3 param = fast::normalize(diff + (reflect(V, N) * 2.0)); - int param_1 = face; - return rdm_atlas.sample(rdm_linsmp, ((float2(faceOffset) + (rdm_hemioct(param, param_1) * float(rdmSize))) * atlasInvSize)).xyz; - } - - fragment main0_out main0(main0_in in [[stage_in]], constant trile_rdm_world_config& _97 [[buffer(0)]], constant trile_rdm_fs_params& _590 [[buffer(1)]], texture2d rdm_atlas [[texture(0)]], texture2d rdm_triletex [[texture(1)]], depth2d rdm_shadowtex [[texture(2)]], texture2d rdm_ssaotex [[texture(3)]], texture2d rdm_brdflut [[texture(4)]], texture2d rdm_shirradiance [[texture(5)]], sampler rdm_linsmp [[sampler(0)]], sampler rdm_trilesmp [[sampler(1)]], sampler rdm_shadowsmp [[sampler(2)]], float4 gl_FragCoord [[position]]) - { - main0_out out = {}; - bool _584 = in.vpos.y < (_97.planeHeight - 0.00999999977648258209228515625); - bool _595; - if (_584) - { - _595 = _590.is_reflection == 1; - } - else - { - _595 = _584; - } - if (_595) - { - discard_fragment(); - } - float3 sample_pos = in.ipos - (in.orig_normal * 0.0199999995529651641845703125); - bool _610 = _590.is_reflection == 1; - int _611 = _610 ? 1 : 3; - float4 trixel_material; - for (int i = 0; i < _611; i++) - { - float4 _652 = rdm_triletex.read(uint2(int2(int(fast::clamp(sample_pos.z, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0), int(fast::clamp(sample_pos.y, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) + (int(fast::clamp(sample_pos.x, 9.9999997473787516355514526367188e-05, 0.999989986419677734375) * 16.0) * 16))), 0); - trixel_material = _652; - if (dot(_652, _652) > 9.9999997473787516355514526367188e-05) - { - break; - } - sample_pos += (in.to_center * 0.100000001490116119384765625); - } - int _676 = int(round(trixel_material.w * 255.0)); - float emittance = 0.0; - int roughnessInt = 0; - float roughness = 0.0; - float metallic = 0.0; - if ((_676 & 1) != 0) - { - emittance = float((_676 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - int _697 = (_676 >> 5) & 7; - roughnessInt = _697; - roughness = fast::max(float(_697) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_676 >> 3) & 3) * 0.3333333432674407958984375; - } - float3 _715 = abs(in.fnormal.xyz); - float _717 = _715.x; - float _719 = _715.y; - bool _720 = _717 >= _719; - bool _728; - if (_720) - { - _728 = _717 >= _715.z; - } - else - { - _728 = _720; - } - float3 N; - if (_728) - { - N = float3(sign(in.fnormal.x), 0.0, 0.0); - } - else - { - bool _741 = _719 >= _717; - bool _749; - if (_741) - { - _749 = _719 >= _715.z; - } - else - { - _749 = _741; - } - if (_749) - { - N = float3(0.0, sign(in.fnormal.y), 0.0); - } - else - { - N = float3(0.0, 0.0, sign(in.fnormal.z)); - } - } - if (_610) - { - out.frag_color = float4(trixel_material.xyz * (((_97.sunLightColor * fast::max(dot(N, fast::normalize(float3(_97.sunPosition))), 0.0)) * _97.sunIntensity) + float3(0.100000001490116119384765625)), 1.0); - return out; - } - float3 _798 = fast::normalize(in.cam - in.vpos); - float3 _802 = fast::normalize(float3(_97.sunPosition)); - float3 _807 = fast::normalize(_798 + _802); - float _812 = fast::max(dot(N, _802), 0.0); - float _817 = fast::max(dot(N, _798), 0.0); - float3 _829 = mix(float3(0.039999999105930328369140625), trixel_material.xyz, float3(metallic)); - float param = fast::max(dot(_807, _798), 0.0); - float3 param_1 = _829; - float3 _835 = fresnelSchlick(param, param_1); - float3 param_2 = N; - float3 param_3 = _807; - float param_4 = roughness; - float3 param_5 = N; - float3 param_6 = _798; - float3 param_7 = _802; - float param_8 = roughness; - float4 _874 = _590.mvp_shadow * float4(floor(in.vpos * 16.0) * float3(0.0625), 1.0); - float3 _884 = ((_874.xyz / float3(_874.w)) * 0.5) + float3(0.5); - float _888 = _884.z - 0.001000000047497451305389404296875; - float3 _1286 = _884; - _1286.z = _888; - float3 light = ((((((((float3(1.0) - _835) * (1.0 - metallic)) * trixel_material.xyz) * float3(0.3183098733425140380859375)) + ((_835 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * _817) * _812) + 9.9999997473787516355514526367188e-05))) * rdm_shadowtex.sample_compare(rdm_shadowsmp, _1286.xy, _888)) * _812) * _97.sunLightColor) * _97.sunIntensity; - float2 _948 = gl_FragCoord.xy / float2(float(_590.screen_w), float(_590.screen_h)); - float4 _949 = rdm_ssaotex.sample(rdm_linsmp, _948); - float param_9 = _817; - float3 param_10 = _829; - float param_11 = roughness; - float3 _965 = FresnelSchlickRoughness(param_9, param_10, param_11); - float3 _976 = in.vpos - (in.trileCenter + (N * 0.4900000095367431640625)); - if (roughnessInt <= 1) - { - float3 param_12 = N; - int _984 = rdm_face_from_normal(param_12); - int2 _990 = int2(rdm_atlas.get_width(), rdm_atlas.get_height()); - float2 _995 = float2(1.0) / float2(_990); - int _1005 = int(_590.atlas_rect.z * float(_990.x)) / 2; - float4 param_13 = _590.atlas_rect; - int param_14 = _984; - int param_15 = _1005; - int2 param_16 = _990; - int2 _1017 = rdm_face_offset(param_13, param_14, param_15, param_16); - float3 _1021; - if (roughness < 0.20000000298023223876953125) - { - float3 param_17 = N; - float3 param_18 = -in.cv; - float3 param_19 = _976; - int param_20 = _984; - int2 param_21 = _1017; - int param_22 = _1005; - float2 param_23 = _995; - _1021 = rdm_spec_raymarch(param_17, param_18, param_19, param_20, param_21, param_22, param_23, _97, rdm_atlas, rdm_linsmp); - } - else - { - float3 param_24 = N; - float3 param_25 = -in.cv; - float3 param_26 = _976; - int param_27 = _984; - int2 param_28 = _1017; - int param_29 = _1005; - float2 param_30 = _995; - _1021 = rdm_spec_single(param_24, param_25, param_26, param_27, param_28, param_29, param_30, rdm_atlas, rdm_linsmp); - } - float4 _1067 = rdm_brdflut.sample(rdm_linsmp, float2(_817, roughness)); - float _1072 = sin(roughness * 3.1415927410125732421875); - light += (((((_1021 * ((_965 * _1067.x) + float3(_1067.y))) * _590.indirect_spec_scale) * (1.0 - (0.699999988079071044921875 * _1072))) * (1.0 - (((0.89999997615814208984375 * roughness) * _1072) * powr(1.0 - _817, 2.0)))) * (1.0 - fast::clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - else - { - if (roughness < 0.699999988079071044921875) - { - float4 _1133 = rdm_brdflut.sample(rdm_linsmp, float2(_817, roughness)); - float3 param_31 = reflect(-_798, N); - float3 param_32 = float3(_97.sunPosition); - float3 _1146 = sky_reflect(param_31, param_32, _97); - light += (((_1146 * ((_965 * _1133.x) + float3(_1133.y))) * _590.indirect_spec_scale) * (1.0 - fast::clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); - } - } - float3 indirectDiff; - if (_590.sh_enabled == 1) - { - indirectDiff = rdm_shirradiance.sample(rdm_linsmp, _948).xyz * float3(_590.indirect_tint); - } - else - { - indirectDiff = float3(_590.ambient_color) * _590.ambient_intensity; - } - float3 _1215 = light; - float3 _1216 = _1215 + (((((((float3(1.0) - _965) * (1.0 - metallic)) * indirectDiff) * float3(0.3183098733425140380859375)) * trixel_material.xyz) * _949.x) * _590.indirect_diff_scale); - light = _1216; - out.frag_color = float4(mix(float3(_97.deepColor), _1216 + ((trixel_material.xyz * emittance) * _590.emissive_scale), float3(smoothstep(0.0, _97.planeHeight, in.vpos.y))), 1.0); - if (_590.is_preview == 1) - { - float4 _1242 = out.frag_color; - float3 _1246 = mix(_1242.xyz, float3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), float3(0.5)); - out.frag_color.x = _1246.x; - out.frag_color.y = _1246.y; - out.frag_color.z = _1246.z; - } - else - { - if (_590.is_preview == 2) - { - float4 _1260 = out.frag_color; - float3 _1264 = mix(_1260.xyz, float3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), float3(0.5)); - out.frag_color.x = _1264.x; - out.frag_color.y = _1264.y; - out.frag_color.z = _1264.z; - } - } - return out; - } - -*/ -fs_trile_rdm_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64, - 0x6d,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x42, - 0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61, - 0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73, - 0x75,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e, - 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75, - 0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c, - 0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48, - 0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x68,0x73,0x76,0x5f,0x6c,0x69,0x67,0x68,0x74,0x69,0x6e,0x67,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x5f,0x72,0x64,0x6d,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d, - 0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x5f,0x68,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x63,0x72,0x65, - 0x65,0x6e,0x5f,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69, - 0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f, - 0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73, - 0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63, - 0x68,0x61,0x72,0x20,0x5f,0x6d,0x38,0x5f,0x70,0x61,0x64,0x5b,0x34,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x73,0x5f,0x70,0x72,0x65,0x76, - 0x69,0x65,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f, - 0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x68, - 0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b, - 0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x74,0x6f,0x5f, - 0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, - 0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x76,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c, - 0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x69,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75, - 0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x35,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x5b,0x5b,0x75, - 0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x36,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x76,0x20,0x5b,0x5b,0x75,0x73, - 0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x37,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f, - 0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c, - 0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c, - 0x69,0x63,0x6b,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61, - 0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29, - 0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54,0x68,0x65, - 0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69,0x73,0x74, - 0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x74,0x68,0x72,0x65, - 0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26, - 0x20,0x4e,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x48,0x2c,0x20,0x74,0x68,0x72,0x65, - 0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x30,0x20,0x3d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x38,0x34,0x20,0x3d,0x20,0x5f,0x31,0x38,0x30,0x20,0x2a,0x20,0x5f,0x31,0x38, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38, - 0x39,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x4e,0x2c,0x20,0x48,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x39,0x37,0x20,0x3d,0x20, - 0x28,0x28,0x5f,0x31,0x38,0x39,0x20,0x2a,0x20,0x5f,0x31,0x38,0x39,0x29,0x20,0x2a, - 0x20,0x28,0x5f,0x31,0x38,0x34,0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b, - 0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x5f,0x31,0x38,0x34,0x20,0x2f,0x20,0x28,0x28,0x33,0x2e,0x31,0x34,0x31,0x35, - 0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38, - 0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x39,0x37,0x29,0x20,0x2a,0x20,0x5f,0x31,0x39, - 0x37,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e, - 0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e, - 0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74, - 0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4e,0x2c,0x20, - 0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x26,0x20,0x56,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4c,0x2c,0x20, - 0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x30,0x39,0x20, - 0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20,0x31,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31, - 0x35,0x20,0x3d,0x20,0x28,0x5f,0x32,0x30,0x39,0x20,0x2a,0x20,0x5f,0x32,0x30,0x39, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x32,0x32,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61, - 0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x33, - 0x30,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x5f,0x32,0x32,0x35, - 0x20,0x2f,0x20,0x28,0x28,0x5f,0x32,0x32,0x35,0x20,0x2a,0x20,0x5f,0x32,0x33,0x30, - 0x29,0x20,0x2b,0x20,0x5f,0x32,0x31,0x35,0x29,0x29,0x20,0x2a,0x20,0x28,0x5f,0x32, - 0x32,0x30,0x20,0x2f,0x20,0x28,0x28,0x5f,0x32,0x32,0x30,0x20,0x2a,0x20,0x5f,0x32, - 0x33,0x30,0x29,0x20,0x2b,0x20,0x5f,0x32,0x31,0x35,0x29,0x29,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f, - 0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c, - 0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c, - 0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26, - 0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x74,0x68,0x72,0x65,0x61, - 0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20, - 0x46,0x30,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x2c,0x20,0x46,0x30,0x29,0x20,0x2d,0x20, - 0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x66,0x61,0x73,0x74,0x3a, - 0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73, - 0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74, - 0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72, - 0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x69,0x6e,0x74,0x20,0x72,0x64,0x6d, - 0x5f,0x66,0x61,0x63,0x65,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4e,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x34,0x38,0x20,0x3d,0x20,0x61,0x62, - 0x73,0x28,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x33,0x35,0x30,0x20,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x32,0x20,0x3d,0x20, - 0x5f,0x33,0x34,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x33,0x35,0x33,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x20,0x3e,0x3d,0x20, - 0x5f,0x33,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f, - 0x33,0x36,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x35, - 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x33,0x36,0x31,0x20,0x3d,0x20,0x5f,0x33,0x35,0x30,0x20,0x3e,0x3d,0x20, - 0x5f,0x33,0x34,0x38,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x36,0x31,0x20,0x3d,0x20,0x5f,0x33,0x35,0x33, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x33,0x36,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x4e,0x2e,0x79,0x20, - 0x3e,0x3d,0x20,0x30,0x2e,0x30,0x29,0x20,0x3f,0x20,0x30,0x20,0x3a,0x20,0x31,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x33,0x37,0x30,0x20,0x3d,0x20,0x5f,0x33,0x34,0x38,0x2e,0x7a,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x37,0x33,0x20,0x3d,0x20, - 0x5f,0x33,0x37,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x35,0x32,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x33,0x38,0x31,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x37,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x38,0x31,0x20,0x3d,0x20, - 0x5f,0x33,0x37,0x30,0x20,0x3e,0x3d,0x20,0x5f,0x33,0x35,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x33,0x38,0x31,0x20, - 0x3d,0x20,0x5f,0x33,0x37,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x38,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x28,0x4e,0x2e,0x7a,0x20,0x3e,0x3d,0x20,0x30,0x2e,0x30,0x29,0x20,0x3f,0x20, - 0x32,0x20,0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x4e,0x2e,0x78,0x20,0x3e,0x3d,0x20, - 0x30,0x2e,0x30,0x29,0x20,0x3f,0x20,0x34,0x20,0x3a,0x20,0x35,0x3b,0x0a,0x7d,0x0a, - 0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f, - 0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c, - 0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x69,0x6e, - 0x74,0x32,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73, - 0x65,0x74,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x26,0x20,0x72,0x65,0x63,0x74,0x2c,0x20,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20, - 0x66,0x61,0x63,0x65,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x2c, - 0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e, - 0x74,0x32,0x26,0x20,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6e,0x74,0x32, - 0x28,0x69,0x6e,0x74,0x28,0x72,0x65,0x63,0x74,0x2e,0x78,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x61,0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x2e,0x78,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x25,0x20,0x32,0x29,0x20, - 0x2a,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28, - 0x72,0x65,0x63,0x74,0x2e,0x79,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x61, - 0x74,0x6c,0x61,0x73,0x53,0x69,0x7a,0x65,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x28, - 0x28,0x66,0x61,0x63,0x65,0x20,0x2f,0x20,0x32,0x29,0x20,0x2a,0x20,0x72,0x64,0x6d, - 0x53,0x69,0x7a,0x65,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x72, - 0x64,0x6d,0x5f,0x68,0x65,0x6d,0x69,0x6f,0x63,0x74,0x28,0x74,0x68,0x72,0x65,0x61, - 0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20, - 0x76,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x69,0x6e,0x74,0x26,0x20,0x66,0x61,0x63,0x65,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x76,0x63,0x20,0x3d,0x20,0x76,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20,0x2f,0x20, - 0x32,0x29,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x32,0x39,0x34,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x31,0x32,0x39,0x34,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x79,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x34,0x2e,0x79, - 0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x32,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63,0x65,0x20, - 0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x5f,0x31,0x32,0x39,0x38,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e, - 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x39,0x38, - 0x2e,0x78,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x32,0x39,0x38,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x66,0x61,0x63, - 0x65,0x20,0x25,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x5f,0x31,0x33,0x30,0x32,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x30,0x32,0x2e,0x7a,0x20,0x3d,0x20, - 0x5f,0x31,0x33,0x30,0x32,0x2e,0x7a,0x20,0x2a,0x20,0x28,0x2d,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x33,0x32,0x38,0x20,0x3d,0x20,0x76,0x63, - 0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x28,0x28,0x61, - 0x62,0x73,0x28,0x76,0x63,0x2e,0x78,0x29,0x20,0x2b,0x20,0x61,0x62,0x73,0x28,0x76, - 0x63,0x2e,0x79,0x29,0x29,0x20,0x2b,0x20,0x76,0x63,0x2e,0x7a,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x30,0x20,0x3d, - 0x20,0x5f,0x33,0x32,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x33,0x33,0x32,0x20,0x3d,0x20,0x5f,0x33,0x32,0x38,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x28,0x5f,0x33,0x33,0x30,0x20,0x2b,0x20,0x5f,0x33,0x33,0x32, - 0x2c,0x20,0x5f,0x33,0x33,0x30,0x20,0x2d,0x20,0x5f,0x33,0x33,0x32,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30, - 0x2e,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x28, - 0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x26,0x20,0x73,0x6b,0x79,0x70,0x6f,0x73,0x2c,0x20,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x26,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61, - 0x6e,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x77,0x6f,0x72, - 0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x39,0x37,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x38,0x38, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x73,0x6b,0x79,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x33,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28, - 0x5f,0x38,0x38,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x73,0x75,0x6e,0x70,0x6f,0x73,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30,0x38,0x20,0x3d,0x20, - 0x5f,0x38,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f, - 0x39,0x37,0x2e,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x2c,0x20,0x5f,0x39,0x37,0x2e, - 0x73,0x6b,0x79,0x54,0x6f,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x66, - 0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x5f,0x31,0x30,0x38,0x20, - 0x2a,0x20,0x32,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x36,0x39, - 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34, - 0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x39, - 0x37,0x2e,0x73,0x75,0x6e,0x48,0x61,0x6c,0x6f,0x20,0x2a,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f,0x39,0x33,0x20,0x2d,0x20,0x30, - 0x2e,0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31, - 0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x30,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31, - 0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33, - 0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x39, - 0x33,0x20,0x3e,0x20,0x30,0x2e,0x39,0x39,0x39,0x38,0x39,0x39,0x39,0x38,0x33,0x34, - 0x30,0x36,0x30,0x36,0x36,0x38,0x39,0x34,0x35,0x33,0x31,0x32,0x35,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73, - 0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x44,0x69,0x73, - 0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x5f,0x31,0x35,0x37,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x35,0x38,0x20,0x3d,0x20,0x5f,0x31,0x35,0x37,0x20,0x2b,0x20,0x28,0x6d,0x69,0x78, - 0x28,0x5f,0x39,0x37,0x2e,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x61,0x62,0x73,0x28,0x5f,0x31,0x30,0x38,0x29,0x20,0x2a,0x20,0x38,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30, - 0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x5f, - 0x31,0x35,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x5f,0x31,0x35,0x38,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79, - 0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x52,0x2c,0x20,0x74,0x68,0x72,0x65,0x61, - 0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20, - 0x73,0x75,0x6e,0x70,0x6f,0x73,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x77,0x6f,0x72,0x6c,0x64, - 0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x39,0x37,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x52,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x52,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, - 0x20,0x52,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x73,0x75,0x6e,0x70,0x6f,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x2c,0x20, - 0x5f,0x39,0x37,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x72,0x64,0x6d, - 0x5f,0x73,0x70,0x65,0x63,0x5f,0x72,0x61,0x79,0x6d,0x61,0x72,0x63,0x68,0x28,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x26,0x20,0x4e,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x56,0x2c,0x20,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x26,0x20,0x64,0x69,0x66,0x66,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x66,0x61,0x63,0x65, - 0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69, - 0x6e,0x74,0x32,0x26,0x20,0x66,0x61,0x63,0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c, - 0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e, - 0x74,0x26,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x2c,0x20,0x74,0x68,0x72,0x65, - 0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26, - 0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x2c,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64, - 0x6d,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20, - 0x5f,0x39,0x37,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66, - 0x6c,0x6f,0x61,0x74,0x3e,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2c, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e, - 0x73,0x6d,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x5f,0x34,0x33,0x30,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x28,0x56,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, - 0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20, - 0x34,0x30,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x34, - 0x36,0x30,0x20,0x3d,0x20,0x64,0x69,0x66,0x66,0x20,0x2b,0x20,0x28,0x5f,0x34,0x33, - 0x30,0x20,0x2a,0x20,0x28,0x30,0x2e,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x28,0x69,0x20,0x2b,0x20,0x31,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x6f,0x74,0x28,0x5f,0x34,0x36,0x30,0x2c, - 0x20,0x4e,0x29,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x34,0x36,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x66,0x61,0x63,0x65,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x34, - 0x39,0x39,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2e,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x28,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70, - 0x2c,0x20,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x66,0x61,0x63,0x65,0x4f, - 0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2b,0x20,0x28,0x72,0x64,0x6d,0x5f,0x68,0x65, - 0x6d,0x69,0x6f,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x72,0x64, - 0x6d,0x53,0x69,0x7a,0x65,0x29,0x29,0x29,0x20,0x2a,0x20,0x61,0x74,0x6c,0x61,0x73, - 0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x29,0x2c,0x20,0x62,0x69,0x61,0x73,0x28,0x30, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x32,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74, - 0x68,0x28,0x5f,0x34,0x36,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x35,0x20,0x3d,0x20,0x5f,0x34, - 0x39,0x39,0x2e,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x35,0x30,0x36,0x20,0x3d,0x20,0x5f,0x35,0x30,0x35,0x20,0x3e, - 0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x35,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x30,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x35,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x30,0x35,0x20,0x3c,0x20,0x5f, - 0x35,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x35,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x30,0x36,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x32,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x31,0x33,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x35,0x32,0x32,0x20,0x3d,0x20,0x28,0x5f,0x35,0x30,0x35, - 0x20,0x2b,0x20,0x30,0x2e,0x35,0x29,0x20,0x3e,0x20,0x5f,0x35,0x30,0x32,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x32, - 0x32,0x20,0x3d,0x20,0x5f,0x35,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x35,0x32,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x5f,0x34,0x39,0x39,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20, - 0x3d,0x20,0x5f,0x34,0x33,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x35,0x33,0x36,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x2c,0x20,0x5f,0x39,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x35,0x33,0x36,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77, - 0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x69,0x6e, - 0x67,0x6c,0x65,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4e,0x2c,0x20,0x74,0x68,0x72,0x65, - 0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26, - 0x20,0x56,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x64,0x69,0x66,0x66,0x2c,0x20,0x74, - 0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26, - 0x20,0x66,0x61,0x63,0x65,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x26,0x20,0x66,0x61,0x63,0x65,0x4f,0x66, - 0x66,0x73,0x65,0x74,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x2c, - 0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x26,0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e,0x76,0x53,0x69, - 0x7a,0x65,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c, - 0x6f,0x61,0x74,0x3e,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2c,0x20, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73, - 0x6d,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x64,0x69,0x66,0x66,0x20,0x2b,0x20, - 0x28,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x56,0x2c,0x20,0x4e,0x29,0x20,0x2a, - 0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x66,0x61,0x63,0x65,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x64,0x6d,0x5f,0x61, - 0x74,0x6c,0x61,0x73,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x72,0x64,0x6d,0x5f, - 0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x66,0x61,0x63,0x65,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2b,0x20,0x28, - 0x72,0x64,0x6d,0x5f,0x68,0x65,0x6d,0x69,0x6f,0x63,0x74,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x72,0x64,0x6d,0x53,0x69,0x7a,0x65,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x61,0x74,0x6c,0x61,0x73,0x49,0x6e,0x76,0x53,0x69,0x7a,0x65,0x29,0x29,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73, - 0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x39,0x37,0x20, - 0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x72,0x64, - 0x6d,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x35,0x39, - 0x30,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, - 0x3e,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x20,0x5b,0x5b,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x72,0x64,0x6d, - 0x5f,0x74,0x72,0x69,0x6c,0x65,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x64,0x65,0x70,0x74,0x68,0x32, - 0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x72,0x64,0x6d,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64, - 0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x72,0x64,0x6d,0x5f,0x73,0x73,0x61,0x6f, - 0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x33,0x29, - 0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c, - 0x6f,0x61,0x74,0x3e,0x20,0x72,0x64,0x6d,0x5f,0x62,0x72,0x64,0x66,0x6c,0x75,0x74, - 0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x34,0x29,0x5d,0x5d,0x2c, - 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, - 0x3e,0x20,0x72,0x64,0x6d,0x5f,0x73,0x68,0x69,0x72,0x72,0x61,0x64,0x69,0x61,0x6e, - 0x63,0x65,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x35,0x29,0x5d, - 0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x72,0x64,0x6d,0x5f,0x6c, - 0x69,0x6e,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28, - 0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x72,0x64, - 0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x72,0x20,0x72,0x64,0x6d,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70, - 0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x32,0x29,0x5d,0x5d,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43, - 0x6f,0x6f,0x72,0x64,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d, - 0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, - 0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x38,0x34,0x20,0x3d,0x20,0x69,0x6e,0x2e, - 0x76,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x28,0x5f,0x39,0x37,0x2e,0x70,0x6c, - 0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32, - 0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x35,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x38,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x39,0x35,0x20,0x3d,0x20, - 0x5f,0x35,0x39,0x30,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x35,0x39,0x35,0x20,0x3d,0x20,0x5f,0x35,0x38, - 0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x35,0x39,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61, - 0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,0x70,0x6f,0x73,0x20,0x2d, - 0x20,0x28,0x69,0x6e,0x2e,0x6f,0x72,0x69,0x67,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35, - 0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x36,0x31, - 0x30,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73,0x5f,0x72,0x65,0x66,0x6c, - 0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x31,0x31,0x20,0x3d,0x20,0x5f,0x36,0x31,0x30, - 0x20,0x3f,0x20,0x31,0x20,0x3a,0x20,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65, - 0x72,0x69,0x61,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69, - 0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x5f,0x36, - 0x31,0x31,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x36, - 0x35,0x32,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x74,0x72,0x69,0x6c,0x65,0x74,0x65, - 0x78,0x2e,0x72,0x65,0x61,0x64,0x28,0x75,0x69,0x6e,0x74,0x32,0x28,0x69,0x6e,0x74, - 0x32,0x28,0x69,0x6e,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39, - 0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20, - 0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x2c,0x20,0x69,0x6e,0x74,0x28,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x70,0x6f,0x73,0x2e,0x79,0x2c,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, - 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, - 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e, - 0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37, - 0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2b, - 0x20,0x28,0x69,0x6e,0x74,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x2c,0x20,0x30,0x2e,0x39,0x39,0x39,0x39,0x38,0x39,0x39, - 0x38,0x36,0x34,0x31,0x39,0x36,0x37,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20, - 0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x31,0x36,0x29,0x29,0x29,0x2c, - 0x20,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x20,0x3d,0x20,0x5f, - 0x36,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x64,0x6f,0x74,0x28,0x5f,0x36,0x35,0x32,0x2c,0x20,0x5f,0x36,0x35,0x32,0x29, - 0x20,0x3e,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37, - 0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36, - 0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f, - 0x70,0x6f,0x73,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x2e,0x74,0x6f,0x5f,0x63,0x65, - 0x6e,0x74,0x65,0x72,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36, - 0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x37,0x36,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28, - 0x72,0x6f,0x75,0x6e,0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, - 0x65,0x72,0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69, - 0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49, - 0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x26,0x20,0x31,0x29,0x20, - 0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x31, - 0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37, - 0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35, - 0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x36,0x39,0x37, - 0x20,0x3d,0x20,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26, - 0x20,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67, - 0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x5f,0x36,0x39,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x5f,0x36,0x39,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31, - 0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39, - 0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36, - 0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x36,0x37,0x36,0x20,0x3e,0x3e,0x20,0x33,0x29, - 0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33, - 0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x37,0x31,0x35,0x20,0x3d,0x20,0x61,0x62,0x73, - 0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x31,0x37, - 0x20,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x31,0x39,0x20,0x3d,0x20,0x5f,0x37,0x31,0x35, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x32, - 0x30,0x20,0x3d,0x20,0x5f,0x37,0x31,0x37,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x39, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x32,0x38,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x32,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x32, - 0x38,0x20,0x3d,0x20,0x5f,0x37,0x31,0x37,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x35, - 0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x37,0x32,0x38,0x20,0x3d,0x20,0x5f,0x37,0x32,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37,0x32,0x38,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20, - 0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e, - 0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x34,0x31,0x20,0x3d, - 0x20,0x5f,0x37,0x31,0x39,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x37,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x37,0x34,0x39, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x37, - 0x34,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37,0x34,0x39,0x20,0x3d, - 0x20,0x5f,0x37,0x31,0x39,0x20,0x3e,0x3d,0x20,0x5f,0x37,0x31,0x35,0x2e,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x37, - 0x34,0x39,0x20,0x3d,0x20,0x5f,0x37,0x34,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x37,0x34,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67, - 0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e, - 0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x36,0x31,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61, - 0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x28,0x5f,0x39,0x37,0x2e,0x73, - 0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x66, - 0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29, - 0x20,0x2a,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73, - 0x69,0x74,0x79,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31, - 0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x37,0x39,0x38,0x20,0x3d, - 0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, - 0x28,0x69,0x6e,0x2e,0x63,0x61,0x6d,0x20,0x2d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f, - 0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x38,0x30,0x32,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x39,0x37, - 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x38,0x30,0x37,0x20, - 0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x5f,0x37,0x39,0x38,0x20,0x2b,0x20,0x5f,0x38,0x30,0x32,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x32,0x20,0x3d, - 0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e, - 0x2c,0x20,0x5f,0x38,0x30,0x32,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x31,0x37,0x20,0x3d,0x20, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c, - 0x20,0x5f,0x37,0x39,0x38,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x38,0x32,0x39,0x20,0x3d,0x20, - 0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x33,0x39, - 0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33, - 0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64, - 0x6f,0x74,0x28,0x5f,0x38,0x30,0x37,0x2c,0x20,0x5f,0x37,0x39,0x38,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x38,0x32,0x39,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x38,0x33,0x35, - 0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63, - 0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20, - 0x5f,0x38,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20, - 0x3d,0x20,0x5f,0x37,0x39,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x38,0x30, - 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x38,0x37, - 0x34,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x6c,0x6f, - 0x6f,0x72,0x28,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e, - 0x30,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x36, - 0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x38,0x38,0x34,0x20,0x3d,0x20,0x28,0x28,0x5f, - 0x38,0x37,0x34,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x5f,0x38,0x37,0x34,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x38,0x38,0x38,0x20,0x3d, - 0x20,0x5f,0x38,0x38,0x34,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30, - 0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x32,0x38,0x36,0x20, - 0x3d,0x20,0x5f,0x38,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x32,0x38, - 0x36,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x38,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e, - 0x30,0x29,0x20,0x2d,0x20,0x5f,0x38,0x33,0x35,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a, - 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30, - 0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34,0x32,0x35,0x31,0x34, - 0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28, - 0x28,0x5f,0x38,0x33,0x35,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62, - 0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d, - 0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x38,0x31,0x37,0x29, - 0x20,0x2a,0x20,0x5f,0x38,0x31,0x32,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39, - 0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35, - 0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35, - 0x29,0x29,0x29,0x20,0x2a,0x20,0x72,0x64,0x6d,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77, - 0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x63,0x6f,0x6d,0x70,0x61, - 0x72,0x65,0x28,0x72,0x64,0x6d,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70, - 0x2c,0x20,0x5f,0x31,0x32,0x38,0x36,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x38,0x38,0x38, - 0x29,0x29,0x20,0x2a,0x20,0x5f,0x38,0x31,0x32,0x29,0x20,0x2a,0x20,0x5f,0x39,0x37, - 0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20, - 0x2a,0x20,0x5f,0x39,0x37,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f, - 0x39,0x34,0x38,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f, - 0x72,0x64,0x2e,0x78,0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x5f,0x35,0x39,0x30,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x5f,0x77,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x35,0x39,0x30,0x2e, - 0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x39,0x34,0x39,0x20,0x3d,0x20,0x72,0x64, - 0x6d,0x5f,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x28,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x39,0x34, - 0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x38,0x31,0x37,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x30,0x20,0x3d,0x20,0x5f,0x38,0x32,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x20,0x3d,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x39,0x36,0x35,0x20,0x3d,0x20,0x46,0x72,0x65,0x73, - 0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x39,0x37, - 0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x28,0x69, - 0x6e,0x2e,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20, - 0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e,0x34,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39, - 0x35,0x33,0x36,0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x49,0x6e,0x74,0x20,0x3c,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x39,0x38,0x34,0x20, - 0x3d,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x66,0x72,0x6f,0x6d,0x5f, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x5f, - 0x39,0x39,0x30,0x20,0x3d,0x20,0x69,0x6e,0x74,0x32,0x28,0x72,0x64,0x6d,0x5f,0x61, - 0x74,0x6c,0x61,0x73,0x2e,0x67,0x65,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x28,0x29, - 0x2c,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2e,0x67,0x65,0x74,0x5f, - 0x68,0x65,0x69,0x67,0x68,0x74,0x28,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x39,0x39,0x35,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x29,0x20,0x2f,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x39,0x39,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x30,0x30,0x35,0x20,0x3d, - 0x20,0x69,0x6e,0x74,0x28,0x5f,0x35,0x39,0x30,0x2e,0x61,0x74,0x6c,0x61,0x73,0x5f, - 0x72,0x65,0x63,0x74,0x2e,0x7a,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x39,0x39,0x30,0x2e,0x78,0x29,0x29,0x20,0x2f,0x20,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x2e,0x61,0x74,0x6c,0x61, - 0x73,0x5f,0x72,0x65,0x63,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x34,0x20,0x3d,0x20,0x5f, - 0x39,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20,0x3d,0x20,0x5f,0x31,0x30,0x30, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x20,0x3d,0x20,0x5f,0x39,0x39,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x5f,0x31, - 0x30,0x31,0x37,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x66,0x61,0x63,0x65,0x5f,0x6f, - 0x66,0x66,0x73,0x65,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x30,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c,0x20,0x30,0x2e,0x32, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33, - 0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37, - 0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x38,0x20,0x3d,0x20,0x2d,0x69,0x6e,0x2e,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x20,0x3d,0x20,0x5f,0x39,0x37,0x36,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x30, - 0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f, - 0x31,0x30,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x33,0x20,0x3d,0x20,0x5f,0x39,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x30,0x32,0x31,0x20,0x3d,0x20,0x72,0x64, - 0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x72,0x61,0x79,0x6d,0x61,0x72,0x63,0x68,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x38,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x33,0x2c,0x20,0x5f,0x39,0x37,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x61, - 0x74,0x6c,0x61,0x73,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x20, - 0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x35, - 0x20,0x3d,0x20,0x2d,0x69,0x6e,0x2e,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x36,0x20,0x3d,0x20,0x5f,0x39,0x37,0x36,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x37,0x20,0x3d,0x20,0x5f,0x39,0x38,0x34,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x30,0x31, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x39,0x20,0x3d,0x20,0x5f,0x31, - 0x30,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x30, - 0x20,0x3d,0x20,0x5f,0x39,0x39,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x30,0x32,0x31,0x20,0x3d,0x20,0x72,0x64,0x6d, - 0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x69,0x6e,0x67,0x6c,0x65,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x35,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x38,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33, - 0x30,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2c,0x20,0x72,0x64, - 0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x5f,0x31,0x30,0x36,0x37,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f, - 0x62,0x72,0x64,0x66,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x72, - 0x64,0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x5f,0x38,0x31,0x37,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x31,0x30,0x37,0x32,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x33,0x2e,0x31,0x34,0x31, - 0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31, - 0x38,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69, - 0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x5f,0x31,0x30,0x32, - 0x31,0x20,0x2a,0x20,0x28,0x28,0x5f,0x39,0x36,0x35,0x20,0x2a,0x20,0x5f,0x31,0x30, - 0x36,0x37,0x2e,0x78,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f, - 0x31,0x30,0x36,0x37,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30, - 0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73, - 0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28, - 0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37, - 0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x30, - 0x37,0x32,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28, - 0x28,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38, - 0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x37,0x32, - 0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f, - 0x38,0x31,0x37,0x2c,0x20,0x32,0x2e,0x30,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d,0x20,0x30, - 0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35, - 0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39, - 0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x5f,0x31,0x31,0x33,0x33,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x62, - 0x72,0x64,0x66,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x72,0x64, - 0x6d,0x5f,0x6c,0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x5f,0x38,0x31,0x37,0x2c,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x31,0x20, - 0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x37,0x39,0x38,0x2c, - 0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x32, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x39,0x37,0x2e,0x73,0x75, - 0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x31,0x31,0x34,0x36,0x20,0x3d,0x20,0x73,0x6b,0x79,0x5f,0x72,0x65,0x66,0x6c,0x65, - 0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x31,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x32,0x2c,0x20,0x5f,0x39,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, - 0x3d,0x20,0x28,0x28,0x28,0x5f,0x31,0x31,0x34,0x36,0x20,0x2a,0x20,0x28,0x28,0x5f, - 0x39,0x36,0x35,0x20,0x2a,0x20,0x5f,0x31,0x31,0x33,0x33,0x2e,0x78,0x29,0x20,0x2b, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x31,0x33,0x33,0x2e,0x79,0x29, - 0x29,0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a, - 0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c, - 0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d, - 0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33, - 0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x69,0x6e,0x64,0x69,0x72,0x65, - 0x63,0x74,0x44,0x69,0x66,0x66,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x35,0x39,0x30,0x2e,0x73,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66, - 0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x73,0x68,0x69,0x72,0x72,0x61,0x64,0x69,0x61, - 0x6e,0x63,0x65,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x72,0x64,0x6d,0x5f,0x6c, - 0x69,0x6e,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x39,0x34,0x38,0x29,0x2e,0x78,0x79,0x7a, - 0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x35,0x39,0x30,0x2e,0x69, - 0x6e,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x74,0x69,0x6e,0x74,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x5f,0x35,0x39,0x30,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x61,0x6d,0x62, - 0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x32,0x31,0x35,0x20,0x3d,0x20,0x6c,0x69,0x67,0x68,0x74,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x32,0x31,0x36, - 0x20,0x3d,0x20,0x5f,0x31,0x32,0x31,0x35,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20, - 0x5f,0x39,0x36,0x35,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d, - 0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x64,0x69, - 0x72,0x65,0x63,0x74,0x44,0x69,0x66,0x66,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x30,0x39,0x38,0x37,0x33,0x33,0x34, - 0x32,0x35,0x31,0x34,0x30,0x33,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x29, - 0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69, - 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x39,0x34,0x39,0x2e,0x78, - 0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x69,0x6e,0x64,0x69,0x72,0x65,0x63, - 0x74,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x5f,0x31,0x32,0x31,0x36, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x6d,0x69, - 0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x39,0x37,0x2e,0x64,0x65,0x65, - 0x70,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x2c,0x20,0x5f,0x31,0x32,0x31,0x36,0x20,0x2b, - 0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69, - 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e, - 0x63,0x65,0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x30,0x2e,0x65,0x6d,0x69,0x73,0x73, - 0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x5f,0x39,0x37,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67, - 0x68,0x74,0x2c,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x35,0x39,0x30,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x32,0x34,0x32, - 0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x5f,0x31,0x32,0x34,0x36,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31, - 0x32,0x34,0x32,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32, - 0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39, - 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34, - 0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x32,0x34,0x36,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x32,0x34,0x36, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f, - 0x31,0x32,0x34,0x36,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x35,0x39,0x30,0x2e,0x69,0x73, - 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x32,0x36, - 0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x32,0x36,0x34,0x20,0x3d,0x20,0x6d, - 0x69,0x78,0x28,0x5f,0x31,0x32,0x36,0x30,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30, - 0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37, - 0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31, - 0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, - 0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20, - 0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, - 0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20, - 0x3d,0x20,0x5f,0x31,0x32,0x36,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -trile_rdm_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "trile_rdm_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_trile_rdm_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_rdm_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 9; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_rdm_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_97.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_97.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_97.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_97.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_97.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_97.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_97.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_97.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_97.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_97.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_97.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_97.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_97.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_97.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_97.time"; - desc.uniform_blocks[1].glsl_uniforms[15].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[15].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[15].glsl_name = "_97.hsv_lighting"; - desc.uniform_blocks[3].stage = .FRAGMENT; - desc.uniform_blocks[3].layout = .STD140; - desc.uniform_blocks[3].size = 144; - desc.uniform_blocks[3].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[3].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[0].glsl_name = "_590.mvp_shadow"; - desc.uniform_blocks[3].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[1].glsl_name = "_590.is_reflection"; - desc.uniform_blocks[3].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[2].glsl_name = "_590.screen_h"; - desc.uniform_blocks[3].glsl_uniforms[3].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[3].glsl_name = "_590.screen_w"; - desc.uniform_blocks[3].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[4].glsl_name = "_590.ambient_intensity"; - desc.uniform_blocks[3].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[5].glsl_name = "_590.emissive_scale"; - desc.uniform_blocks[3].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[6].glsl_name = "_590.indirect_diff_scale"; - desc.uniform_blocks[3].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[7].glsl_name = "_590.indirect_spec_scale"; - desc.uniform_blocks[3].glsl_uniforms[8].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[8].glsl_name = "_590.ambient_color"; - desc.uniform_blocks[3].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[9].glsl_name = "_590.is_preview"; - desc.uniform_blocks[3].glsl_uniforms[10].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[10].glsl_name = "_590.indirect_tint"; - desc.uniform_blocks[3].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[11].glsl_name = "_590.sh_enabled"; - desc.uniform_blocks[3].glsl_uniforms[12].type = .FLOAT4; - desc.uniform_blocks[3].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[12].glsl_name = "_590.atlas_rect"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .DEPTH; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.images[5].stage = .FRAGMENT; - desc.images[5].multisampled = false; - desc.images[5].image_type = ._2D; - desc.images[5].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .COMPARISON; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "rdm_triletex_rdm_trilesmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 2; - desc.image_sampler_pairs[1].sampler_slot = 2; - desc.image_sampler_pairs[1].glsl_name = "rdm_shadowtex_rdm_shadowsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 1; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[2].glsl_name = "rdm_ssaotex_rdm_linsmp"; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 5; - desc.image_sampler_pairs[3].sampler_slot = 3; - desc.image_sampler_pairs[3].glsl_name = "rdm_atlas_rdm_linsmp"; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 3; - desc.image_sampler_pairs[4].sampler_slot = 3; - desc.image_sampler_pairs[4].glsl_name = "rdm_brdflut_rdm_linsmp"; - desc.image_sampler_pairs[5].stage = .FRAGMENT; - desc.image_sampler_pairs[5].image_slot = 4; - desc.image_sampler_pairs[5].sampler_slot = 3; - desc.image_sampler_pairs[5].glsl_name = "rdm_shirradiance_rdm_linsmp"; - case .GLES3; - desc.vertex_func.source = xx *vs_trile_rdm_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_rdm_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 9; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_rdm_vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_97.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_97.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_97.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_97.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_97.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_97.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_97.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_97.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_97.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_97.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_97.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_97.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_97.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_97.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_97.time"; - desc.uniform_blocks[1].glsl_uniforms[15].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[15].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[15].glsl_name = "_97.hsv_lighting"; - desc.uniform_blocks[3].stage = .FRAGMENT; - desc.uniform_blocks[3].layout = .STD140; - desc.uniform_blocks[3].size = 144; - desc.uniform_blocks[3].glsl_uniforms[0].type = .MAT4; - desc.uniform_blocks[3].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[0].glsl_name = "_590.mvp_shadow"; - desc.uniform_blocks[3].glsl_uniforms[1].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[1].glsl_name = "_590.is_reflection"; - desc.uniform_blocks[3].glsl_uniforms[2].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[2].glsl_name = "_590.screen_h"; - desc.uniform_blocks[3].glsl_uniforms[3].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[3].glsl_name = "_590.screen_w"; - desc.uniform_blocks[3].glsl_uniforms[4].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[4].glsl_name = "_590.ambient_intensity"; - desc.uniform_blocks[3].glsl_uniforms[5].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[5].glsl_name = "_590.emissive_scale"; - desc.uniform_blocks[3].glsl_uniforms[6].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[6].glsl_name = "_590.indirect_diff_scale"; - desc.uniform_blocks[3].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[3].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[7].glsl_name = "_590.indirect_spec_scale"; - desc.uniform_blocks[3].glsl_uniforms[8].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[8].glsl_name = "_590.ambient_color"; - desc.uniform_blocks[3].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[9].glsl_name = "_590.is_preview"; - desc.uniform_blocks[3].glsl_uniforms[10].type = .FLOAT3; - desc.uniform_blocks[3].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[10].glsl_name = "_590.indirect_tint"; - desc.uniform_blocks[3].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[3].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[11].glsl_name = "_590.sh_enabled"; - desc.uniform_blocks[3].glsl_uniforms[12].type = .FLOAT4; - desc.uniform_blocks[3].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[3].glsl_uniforms[12].glsl_name = "_590.atlas_rect"; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .DEPTH; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.images[5].stage = .FRAGMENT; - desc.images[5].multisampled = false; - desc.images[5].image_type = ._2D; - desc.images[5].sample_type = .FLOAT; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .COMPARISON; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[0].glsl_name = "rdm_triletex_rdm_trilesmp"; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 2; - desc.image_sampler_pairs[1].sampler_slot = 2; - desc.image_sampler_pairs[1].glsl_name = "rdm_shadowtex_rdm_shadowsmp"; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 1; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[2].glsl_name = "rdm_ssaotex_rdm_linsmp"; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 5; - desc.image_sampler_pairs[3].sampler_slot = 3; - desc.image_sampler_pairs[3].glsl_name = "rdm_atlas_rdm_linsmp"; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 3; - desc.image_sampler_pairs[4].sampler_slot = 3; - desc.image_sampler_pairs[4].glsl_name = "rdm_brdflut_rdm_linsmp"; - desc.image_sampler_pairs[5].stage = .FRAGMENT; - desc.image_sampler_pairs[5].image_slot = 4; - desc.image_sampler_pairs[5].sampler_slot = 3; - desc.image_sampler_pairs[5].glsl_name = "rdm_shirradiance_rdm_linsmp"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_trile_rdm_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_trile_rdm_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 144; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 176; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.uniform_blocks[3].stage = .FRAGMENT; - desc.uniform_blocks[3].layout = .STD140; - desc.uniform_blocks[3].size = 144; - desc.uniform_blocks[3].msl_buffer_n = 1; - desc.images[0].stage = .FRAGMENT; - desc.images[0].multisampled = false; - desc.images[0].image_type = ._2D; - desc.images[0].sample_type = .FLOAT; - desc.images[0].msl_texture_n = 1; - desc.images[1].stage = .FRAGMENT; - desc.images[1].multisampled = false; - desc.images[1].image_type = ._2D; - desc.images[1].sample_type = .FLOAT; - desc.images[1].msl_texture_n = 3; - desc.images[2].stage = .FRAGMENT; - desc.images[2].multisampled = false; - desc.images[2].image_type = ._2D; - desc.images[2].sample_type = .DEPTH; - desc.images[2].msl_texture_n = 2; - desc.images[3].stage = .FRAGMENT; - desc.images[3].multisampled = false; - desc.images[3].image_type = ._2D; - desc.images[3].sample_type = .FLOAT; - desc.images[3].msl_texture_n = 4; - desc.images[4].stage = .FRAGMENT; - desc.images[4].multisampled = false; - desc.images[4].image_type = ._2D; - desc.images[4].sample_type = .FLOAT; - desc.images[4].msl_texture_n = 5; - desc.images[5].stage = .FRAGMENT; - desc.images[5].multisampled = false; - desc.images[5].image_type = ._2D; - desc.images[5].sample_type = .FLOAT; - desc.images[5].msl_texture_n = 0; - desc.samplers[0].stage = .FRAGMENT; - desc.samplers[0].sampler_type = .FILTERING; - desc.samplers[0].msl_sampler_n = 1; - desc.samplers[2].stage = .FRAGMENT; - desc.samplers[2].sampler_type = .COMPARISON; - desc.samplers[2].msl_sampler_n = 2; - desc.samplers[3].stage = .FRAGMENT; - desc.samplers[3].sampler_type = .FILTERING; - desc.samplers[3].msl_sampler_n = 0; - desc.image_sampler_pairs[0].stage = .FRAGMENT; - desc.image_sampler_pairs[0].image_slot = 0; - desc.image_sampler_pairs[0].sampler_slot = 0; - desc.image_sampler_pairs[1].stage = .FRAGMENT; - desc.image_sampler_pairs[1].image_slot = 2; - desc.image_sampler_pairs[1].sampler_slot = 2; - desc.image_sampler_pairs[2].stage = .FRAGMENT; - desc.image_sampler_pairs[2].image_slot = 1; - desc.image_sampler_pairs[2].sampler_slot = 3; - desc.image_sampler_pairs[3].stage = .FRAGMENT; - desc.image_sampler_pairs[3].image_slot = 5; - desc.image_sampler_pairs[3].sampler_slot = 3; - desc.image_sampler_pairs[4].stage = .FRAGMENT; - desc.image_sampler_pairs[4].image_slot = 3; - desc.image_sampler_pairs[4].sampler_slot = 3; - desc.image_sampler_pairs[5].stage = .FRAGMENT; - desc.image_sampler_pairs[5].image_slot = 4; - desc.image_sampler_pairs[5].sampler_slot = 3; - } - return desc; -} diff --git a/src/shaders/jai/shader_trile_shadow.jai b/src/shaders/jai/shader_trile_shadow.jai deleted file mode 100644 index 5cb9274..0000000 --- a/src/shaders/jai/shader_trile_shadow.jai +++ /dev/null @@ -1,907 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_trile_shadow.glsl -o ./jai/shader_trile_shadow.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'trile_shadow': - Get shader desc: trile_shadow_shader_desc(sg_query_backend()) - Vertex Shader: vs_trile_shadow - Fragment Shader: fs_trile_shadow - Attributes: - ATTR_trile_shadow_position => 0 - ATTR_trile_shadow_normal => 1 - ATTR_trile_shadow_centre => 2 - ATTR_trile_shadow_instance => 3 - Bindings: - Uniform block 'trile_shadow_vs_params': - Jai struct: Trile_Shadow_Vs_Params - Bind slot: UB_trile_shadow_vs_params => 0 -*/ -ATTR_trile_shadow_position :: 0; -ATTR_trile_shadow_normal :: 1; -ATTR_trile_shadow_centre :: 2; -ATTR_trile_shadow_instance :: 3; -UB_trile_shadow_vs_params :: 0; -Trile_Shadow_Vs_Params :: struct { - mvp: [16]float; -}; -/* - #version 430 - - uniform vec4 trile_shadow_vs_params[4]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - layout(location = 1) in vec4 normal; - layout(location = 2) in vec4 centre; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, -_50, 0.0), vec3(_50, _47, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, 0.0, _67), vec3(0.0, 1.0, 0.0), vec3(-_67, 0.0, _64)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - gl_Position = mat4(trile_shadow_vs_params[0], trile_shadow_vs_params[1], trile_shadow_vs_params[2], trile_shadow_vs_params[3]) * vec4(((get_orientation_matrix(param) * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz, 1.0); - } - -*/ -vs_trile_shadow_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x6c,0x65, - 0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, - 0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x3b,0x0a,0x0a,0x6d, - 0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20,0x73,0x69,0x6e, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f, - 0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f, - 0x74,0x5f,0x7a,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63, - 0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76, - 0x65,0x63,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x2d,0x5f,0x35,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x35,0x30,0x2c,0x20,0x5f, - 0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x37,0x20,0x3d, - 0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x36, - 0x34,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x37,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30,0x2e, - 0x30,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74, - 0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, - 0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20,0x6f,0x72,0x69, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20, - 0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6d, - 0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31, - 0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20, - 0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f, - 0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32, - 0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35, - 0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32, - 0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65, - 0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37, - 0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31, - 0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34, - 0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35, - 0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f, - 0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72, - 0x69,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39, - 0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33, - 0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62, - 0x61,0x73,0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64, - 0x28,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x6d,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73,0x68,0x61,0x64, - 0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c, - 0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d, - 0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x67,0x65,0x74,0x5f,0x6f, - 0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x20,0x2a,0x20,0x28,0x70,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - layout(location = 0) out vec4 frag_color; - - void main() - { - frag_color = vec4(0.0); - } - -*/ -fs_trile_shadow_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 trile_shadow_vs_params[4]; - layout(location = 3) in vec4 instance; - layout(location = 0) in vec4 position; - layout(location = 1) in vec4 normal; - layout(location = 2) in vec4 centre; - - mat3 rot_x(float a) - { - float _28 = cos(a); - float _31 = sin(a); - return mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, _28, -_31), vec3(0.0, _31, _28)); - } - - mat3 rot_z(float a) - { - float _47 = cos(a); - float _50 = sin(a); - return mat3(vec3(_47, -_50, 0.0), vec3(_50, _47, 0.0), vec3(0.0, 0.0, 1.0)); - } - - mat3 rot_y(float a) - { - float _64 = cos(a); - float _67 = sin(a); - return mat3(vec3(_64, 0.0, _67), vec3(0.0, 1.0, 0.0), vec3(-_67, 0.0, _64)); - } - - mat3 get_orientation_matrix(int ori) - { - int _82 = ori / 4; - mat3 base; - if (_82 == 0) - { - base = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - void main() - { - int param = int(round(instance.w)); - gl_Position = mat4(trile_shadow_vs_params[0], trile_shadow_vs_params[1], trile_shadow_vs_params[2], trile_shadow_vs_params[3]) * vec4(((get_orientation_matrix(param) * (position.xyz - vec3(0.5))) + vec3(0.5)) + instance.xyz, 1.0); - } - -*/ -vs_trile_shadow_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72, - 0x69,0x6c,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76, - 0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29, - 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x65,0x6e,0x74,0x72,0x65,0x3b, - 0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20,0x3d,0x20, - 0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31, - 0x2c,0x20,0x5f,0x32,0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33, - 0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20, - 0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74, - 0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x2d,0x5f,0x35,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x35,0x30, - 0x2c,0x20,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x6d,0x61,0x74,0x33,0x20,0x72,0x6f,0x74,0x5f,0x79, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28, - 0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36, - 0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33, - 0x28,0x5f,0x36,0x34,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x37,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x2d,0x5f,0x36,0x37,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x6d,0x61,0x74,0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61, - 0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x69,0x6e,0x74,0x20, - 0x6f,0x72,0x69,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f, - 0x38,0x32,0x20,0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6d,0x61,0x74,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x6d,0x61,0x74,0x33,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d, - 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32, - 0x37,0x34,0x31,0x30,0x31,0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61, - 0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35, - 0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32, - 0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72, - 0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20, - 0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38, - 0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, - 0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31, - 0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36, - 0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x28,0x6f,0x72,0x69,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37, - 0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31, - 0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, - 0x6e,0x20,0x62,0x61,0x73,0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64, - 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f, - 0x75,0x6e,0x64,0x28,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73, - 0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, - 0x30,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77, - 0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x74, - 0x72,0x69,0x6c,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f, - 0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x67,0x65, - 0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61, - 0x74,0x72,0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x20,0x2a,0x20,0x28,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63, - 0x65,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a, - 0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - layout(location = 0) out highp vec4 frag_color; - - void main() - { - frag_color = vec4(0.0); - } - -*/ -fs_trile_shadow_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a, - 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trile_shadow_vs_params - { - float4x4 mvp; - }; - - struct main0_out - { - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 instance [[attribute(3)]]; - }; - - static inline __attribute__((always_inline)) - float3x3 rot_x(thread const float& a) - { - float _28 = cos(a); - float _31 = sin(a); - return float3x3(float3(1.0, 0.0, 0.0), float3(0.0, _28, -_31), float3(0.0, _31, _28)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_z(thread const float& a) - { - float _47 = cos(a); - float _50 = sin(a); - return float3x3(float3(_47, -_50, 0.0), float3(_50, _47, 0.0), float3(0.0, 0.0, 1.0)); - } - - static inline __attribute__((always_inline)) - float3x3 rot_y(thread const float& a) - { - float _64 = cos(a); - float _67 = sin(a); - return float3x3(float3(_64, 0.0, _67), float3(0.0, 1.0, 0.0), float3(-_67, 0.0, _64)); - } - - static inline __attribute__((always_inline)) - float3x3 get_orientation_matrix(thread const int& ori) - { - int _82 = ori / 4; - float3x3 base; - if (_82 == 0) - { - base = float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)); - } - else - { - if (_82 == 1) - { - float param = 3.1415927410125732421875; - base = rot_x(param); - } - else - { - if (_82 == 2) - { - float param_1 = -1.57079637050628662109375; - base = rot_z(param_1); - } - else - { - if (_82 == 3) - { - float param_2 = 1.57079637050628662109375; - base = rot_z(param_2); - } - else - { - if (_82 == 4) - { - float param_3 = 1.57079637050628662109375; - base = rot_x(param_3); - } - else - { - float param_4 = -1.57079637050628662109375; - base = rot_x(param_4); - } - } - } - } - } - float param_5 = float(ori % 4) * 1.57079637050628662109375; - return base * rot_y(param_5); - } - - vertex main0_out main0(main0_in in [[stage_in]], constant trile_shadow_vs_params& _193 [[buffer(0)]]) - { - main0_out out = {}; - int param = int(round(in.instance.w)); - out.gl_Position = _193.mvp * float4(((get_orientation_matrix(param) * (in.position.xyz - float3(0.5))) + float3(0.5)) + in.instance.xyz, 1.0); - return out; - } - -*/ -vs_trile_shadow_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73,0x68, - 0x61,0x64,0x6f,0x77,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76, - 0x70,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x5b, - 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b, - 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f, - 0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29, - 0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f,0x74,0x5f,0x78, - 0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x32,0x38,0x20,0x3d,0x20,0x63,0x6f,0x73,0x28,0x61,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x20, - 0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x5f,0x32,0x38,0x2c,0x20,0x2d,0x5f,0x33,0x31,0x29,0x2c,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x33,0x31,0x2c,0x20,0x5f,0x32, - 0x38,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69, - 0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x72,0x6f, - 0x74,0x5f,0x7a,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x37,0x20,0x3d,0x20,0x63,0x6f,0x73, - 0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x35,0x30,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x34,0x37,0x2c,0x20,0x2d,0x5f,0x35, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x5f,0x35,0x30,0x2c,0x20,0x5f,0x34,0x37,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33, - 0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f, - 0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x61,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x34,0x20,0x3d,0x20, - 0x63,0x6f,0x73,0x28,0x61,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x36,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x61,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x78,0x33,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x36,0x34,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x5f,0x36,0x37,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x2d,0x5f,0x36,0x37,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x5f,0x36,0x34,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74, - 0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74, - 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79, - 0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x78,0x33,0x20,0x67,0x65,0x74,0x5f,0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74, - 0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72,0x69,0x78,0x28,0x74,0x68,0x72,0x65,0x61, - 0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x26,0x20,0x6f,0x72,0x69, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x38,0x32,0x20, - 0x3d,0x20,0x6f,0x72,0x69,0x20,0x2f,0x20,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x20,0x62,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61, - 0x73,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x78,0x33,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x37,0x34,0x31,0x30,0x31, - 0x32,0x35,0x37,0x33,0x32,0x34,0x32,0x31,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20, - 0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x38,0x32,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36, - 0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x32,0x20,0x3d, - 0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30, - 0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30, - 0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d, - 0x20,0x72,0x6f,0x74,0x5f,0x7a,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x38,0x32,0x20,0x3d,0x3d,0x20,0x34,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x31,0x2e,0x35,0x37,0x30,0x37, - 0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39, - 0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, - 0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d, - 0x20,0x2d,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33,0x37,0x30,0x35,0x30,0x36, - 0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x72,0x6f,0x74,0x5f, - 0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x6f,0x72,0x69,0x20, - 0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x31,0x2e,0x35,0x37,0x30,0x37,0x39,0x36,0x33, - 0x37,0x30,0x35,0x30,0x36,0x32,0x38,0x36,0x36,0x32,0x31,0x30,0x39,0x33,0x37,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73, - 0x65,0x20,0x2a,0x20,0x72,0x6f,0x74,0x5f,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61, - 0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67, - 0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x5f,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x39,0x33,0x20,0x5b,0x5b, - 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, - 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64, - 0x28,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x77,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x2e,0x6d,0x76,0x70, - 0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x28,0x67,0x65,0x74,0x5f, - 0x6f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x6d,0x61,0x74,0x72, - 0x69,0x78,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x2e, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2b,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x69,0x6e, - 0x2e,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - fragment main0_out main0() - { - main0_out out = {}; - out.frag_color = float4(0.0); - return out; - } - -*/ -fs_trile_shadow_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x29,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75, - 0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -trile_shadow_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "trile_shadow_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_trile_shadow_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_shadow_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_shadow_vs_params"; - case .GLES3; - desc.vertex_func.source = xx *vs_trile_shadow_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trile_shadow_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "centre"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "instance"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "trile_shadow_vs_params"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_trile_shadow_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_trile_shadow_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 64; - desc.uniform_blocks[0].msl_buffer_n = 0; - } - return desc; -} diff --git a/src/shaders/jai/shader_trixel.jai b/src/shaders/jai/shader_trixel.jai deleted file mode 100644 index 9b8cc25..0000000 --- a/src/shaders/jai/shader_trixel.jai +++ /dev/null @@ -1,1815 +0,0 @@ -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: - sokol-shdc -i shader_trixel.glsl -o ./jai/shader_trixel.jai -l glsl430:glsl300es:metal_macos -f sokol_jai - - Overview: - ========= - Shader program: 'trixel': - Get shader desc: trixel_shader_desc(sg_query_backend()) - Vertex Shader: vs_trixel - Fragment Shader: fs_trixel - Attributes: - ATTR_trixel_position => 0 - ATTR_trixel_normal => 1 - ATTR_trixel_inst => 2 - ATTR_trixel_inst_col => 3 - Bindings: - Uniform block 'vs_params': - Jai struct: Vs_Params - Bind slot: UB_vs_params => 0 - Uniform block 'trixel_world_config': - Jai struct: Trixel_World_Config - Bind slot: UB_trixel_world_config => 1 - Uniform block 'trixel_fs_params': - Jai struct: Trixel_Fs_Params - Bind slot: UB_trixel_fs_params => 2 -*/ -ATTR_trixel_position :: 0; -ATTR_trixel_normal :: 1; -ATTR_trixel_inst :: 2; -ATTR_trixel_inst_col :: 3; -UB_vs_params :: 0; -UB_trixel_world_config :: 1; -UB_trixel_fs_params :: 2; -Vs_Params :: struct { - mvp: [16]float; - camera: [3]float; - _: [4]u8; - world_offset: [3]float; - _: [4]u8; - tile_rotation: [16]float; -}; -Trixel_World_Config :: struct { - skyBase: [3]float; - _: [4]u8; - skyTop: [3]float; - _: [4]u8; - sunDisk: [3]float; - _: [4]u8; - horizonHalo: [3]float; - _: [4]u8; - sunHalo: [3]float; - _: [4]u8; - sunLightColor: [3]float; - _: [4]u8; - sunPosition: [3]float; - sunIntensity: float; - skyIntensity: float; - hasClouds: s32; - planeHeight: float; - animatePlaneHeight: s32; - waterColor: [3]float; - _: [4]u8; - deepColor: [3]float; - time: float; -}; -Trixel_Fs_Params :: struct { - view_mode: s32; - brightness: float; - _: [8]u8; -}; -/* - #version 430 - - uniform vec4 vs_params[10]; - layout(location = 2) in vec4 inst; - layout(location = 0) in vec4 position; - layout(location = 1) out vec4 fnormal; - layout(location = 1) in vec4 normal; - layout(location = 0) out vec4 color; - layout(location = 3) in vec4 inst_col; - layout(location = 2) out vec4 pos; - layout(location = 3) out vec3 cam; - layout(location = 4) out float vtrixel_state; - - void main() - { - mat4 _30 = mat4(vs_params[6], vs_params[7], vs_params[8], vs_params[9]); - gl_Position = mat4(vs_params[0], vs_params[1], vs_params[2], vs_params[3]) * vec4(((_30 * vec4((position.xyz + inst.xyz) - vec3(0.5), 0.0)).xyz + vec3(0.5)) + vs_params[5].xyz, 1.0); - fnormal = _30 * vec4(normal.xyz, 0.0); - color = inst_col; - pos = gl_Position; - cam = vs_params[4].xyz; - vtrixel_state = inst.w; - } - -*/ -vs_trixel_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x31,0x30,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69, - 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63, - 0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20, - 0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, - 0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29, - 0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x33,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x34,0x29,0x20,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x76,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x3b,0x0a, - 0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x6d,0x61,0x74,0x34,0x20,0x5f,0x33,0x30,0x20,0x3d,0x20,0x6d,0x61, - 0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2c, - 0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x2c,0x20,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x2c,0x20,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x39,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61, - 0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c, - 0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x34,0x28,0x28,0x28,0x5f,0x33,0x30,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x69, - 0x6e,0x73,0x74,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x20,0x3d,0x20,0x5f,0x33,0x30,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e, - 0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20, - 0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x63,0x61,0x6d,0x20,0x3d,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x34,0x5d,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x69, - 0x6e,0x73,0x74,0x2e,0x77,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 430 - - struct trixel_world_config - { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - float time; - }; - - uniform trixel_world_config _215; - - struct trixel_fs_params - { - int view_mode; - float brightness; - }; - - uniform trixel_fs_params _313; - - layout(location = 0) in vec4 color; - layout(location = 1) in vec4 fnormal; - layout(location = 3) in vec3 cam; - layout(location = 2) in vec4 pos; - layout(location = 0) out vec4 frag_color; - layout(location = 4) in float vtrixel_state; - - vec3 fresnelSchlick(float cosTheta, vec3 F0) - { - return F0 + ((vec3(1.0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - float DistributionGGX(vec3 N, vec3 H, float roughness) - { - float _36 = roughness * roughness; - float _40 = _36 * _36; - float _46 = max(dot(N, H), 0.0); - float _59 = ((_46 * _46) * (_40 - 1.0)) + 1.0; - return _40 / ((3.141285419464111328125 * _59) * _59); - } - - float GeometrySchlickGGX(float NdotV, float roughness) - { - float _72 = roughness + 1.0; - float _78 = (_72 * _72) * 0.125; - return NdotV / ((NdotV * (1.0 - _78)) + _78); - } - - float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) - { - float param = max(dot(N, V), 0.0); - float param_1 = roughness; - float param_2 = max(dot(N, L), 0.0); - float param_3 = roughness; - return GeometrySchlickGGX(param_2, param_3) * GeometrySchlickGGX(param, param_1); - } - - void main() - { - int _150 = int(round(color.w * 255.0)); - float emittance = 0.0; - float roughness = 0.0500000007450580596923828125; - float metallic = 0.0; - if ((_150 & 1) != 0) - { - emittance = float((_150 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - roughness = max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_150 >> 3) & 3) * 0.3333333432674407958984375; - } - vec3 light = color.xyz * 0.300000011920928955078125; - vec3 _197 = (color.xyz * emittance) * 5.0; - vec3 _202 = normalize(fnormal.xyz); - vec3 _211 = normalize(cam - pos.xyz); - vec3 _220 = normalize(_215.sunPosition); - vec3 _225 = normalize(_211 + _220); - float param = max(dot(_225, _211), 0.0); - vec3 param_1 = mix(vec3(0.039999999105930328369140625), color.xyz, vec3(metallic)); - vec3 _242 = fresnelSchlick(param, param_1); - vec3 param_2 = _202; - vec3 param_3 = _225; - float param_4 = roughness; - vec3 param_5 = _202; - vec3 param_6 = _211; - vec3 param_7 = _220; - float param_8 = roughness; - float _277 = max(dot(_202, _220), 0.0); - light += ((((((vec3(1.0) - _242) * (1.0 - metallic)) * color.xyz) * vec3(0.3183410167694091796875)) + ((_242 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(_202, _211), 0.0)) * _277) + 9.9999997473787516355514526367188e-05))) * _277); - if (_313.view_mode == 1) - { - frag_color = vec4((_202 * 0.5) + vec3(0.5), 1.0); - } - else - { - if (_313.view_mode == 2) - { - frag_color = vec4((color.xyz * ((_277 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _197, 1.0); - } - else - { - if (_313.view_mode == 3) - { - frag_color = vec4(((color.xyz * ((_202 * 0.5) + vec3(0.5))) * ((_277 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _197, 1.0); - } - else - { - frag_color = vec4(light + _197, 1.0); - } - } - } - vec4 _396 = frag_color; - vec3 _398 = _396.xyz * _313.brightness; - frag_color.x = _398.x; - frag_color.y = _398.y; - frag_color.z = _398.z; - if (vtrixel_state > 0.5) - { - vec4 _414 = frag_color; - vec3 _418 = mix(_414.xyz, vec3(1.0, 1.0, 0.5), vec3(0.5)); - frag_color.x = _418.x; - frag_color.y = _418.y; - frag_color.z = _418.z; - } - } - -*/ -fs_trixel_source_glsl430 := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e, - 0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73, - 0x75,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61, - 0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50, - 0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74, - 0x69,0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f, - 0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x5f,0x33,0x31,0x33, - 0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76, - 0x65,0x63,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x6c, - 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b, - 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75, - 0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x34,0x29,0x20, - 0x69,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x74,0x72,0x69,0x78,0x65,0x6c, - 0x5f,0x73,0x74,0x61,0x74,0x65,0x3b,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x66,0x72, - 0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x63,0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31, - 0x2e,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54, - 0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c, - 0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58, - 0x28,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x48,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33, - 0x36,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x20,0x3d,0x20,0x5f,0x33,0x36,0x20,0x2a, - 0x20,0x5f,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x36,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c, - 0x20,0x48,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x20,0x3d,0x20,0x28,0x28,0x5f,0x34,0x36, - 0x20,0x2a,0x20,0x5f,0x34,0x36,0x29,0x20,0x2a,0x20,0x28,0x5f,0x34,0x30,0x20,0x2d, - 0x20,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x34,0x30,0x20,0x2f,0x20,0x28, - 0x28,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34,0x36,0x34,0x31, - 0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x5f,0x35,0x39,0x29,0x20, - 0x2a,0x20,0x5f,0x35,0x39,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b, - 0x47,0x47,0x58,0x28,0x66,0x6c,0x6f,0x61,0x74,0x20,0x4e,0x64,0x6f,0x74,0x56,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37, - 0x32,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20, - 0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x37,0x38,0x20,0x3d,0x20,0x28,0x5f,0x37,0x32,0x20,0x2a,0x20,0x5f,0x37,0x32,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x4e,0x64,0x6f,0x74,0x56,0x20,0x2f,0x20,0x28,0x28,0x4e, - 0x64,0x6f,0x74,0x56,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x37, - 0x38,0x29,0x29,0x20,0x2b,0x20,0x5f,0x37,0x38,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69, - 0x74,0x68,0x28,0x76,0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x76,0x65,0x63,0x33,0x20, - 0x56,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x4c,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53, - 0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x20,0x2a,0x20,0x47,0x65, - 0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47,0x58, - 0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29, - 0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x35,0x30,0x20, - 0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e, - 0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20, - 0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35, - 0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c, - 0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20, - 0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26, - 0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34, - 0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39, - 0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d, - 0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30, - 0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37, - 0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35, - 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39, - 0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x33, - 0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33, - 0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38, - 0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, - 0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, - 0x39,0x37,0x20,0x3d,0x20,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20, - 0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20,0x35, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30, - 0x32,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x31,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x70,0x6f,0x73,0x2e, - 0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x32,0x32,0x30,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x32,0x31,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x32,0x35, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31, - 0x31,0x20,0x2b,0x20,0x5f,0x32,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x32,0x35,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31, - 0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32, - 0x35,0x29,0x2c,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20, - 0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x32,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x35,0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x32,0x31, - 0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x32,0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28, - 0x64,0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x32,0x30,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, - 0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31, - 0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x20,0x2a,0x20,0x28,0x31, - 0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20, - 0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37, - 0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x28,0x5f,0x32,0x34,0x32,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72, - 0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79, - 0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65, - 0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64, - 0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x20,0x2b,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x33,0x2e,0x76, - 0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28, - 0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x33,0x31,0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d, - 0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x63,0x6f, - 0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x37,0x37, - 0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34, - 0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20, - 0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36, - 0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20, - 0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31, - 0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x33, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, - 0x28,0x28,0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28, - 0x5f,0x32,0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36, - 0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32, - 0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29, - 0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6c, - 0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x39,0x36,0x20,0x3d, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x33,0x39,0x38,0x20,0x3d,0x20,0x5f,0x33,0x39, - 0x36,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x33,0x31,0x33,0x2e,0x62,0x72,0x69, - 0x67,0x68,0x74,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x33,0x39,0x38, - 0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33,0x39,0x38,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20, - 0x3d,0x20,0x5f,0x33,0x39,0x38,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x76,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20, - 0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x34,0x31,0x34,0x20,0x3d, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x31,0x38,0x20,0x3d, - 0x20,0x6d,0x69,0x78,0x28,0x5f,0x34,0x31,0x34,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, - 0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - - uniform vec4 vs_params[10]; - layout(location = 2) in vec4 inst; - layout(location = 0) in vec4 position; - out vec4 fnormal; - layout(location = 1) in vec4 normal; - out vec4 color; - layout(location = 3) in vec4 inst_col; - out vec4 pos; - out vec3 cam; - out float vtrixel_state; - - void main() - { - mat4 _30 = mat4(vs_params[6], vs_params[7], vs_params[8], vs_params[9]); - gl_Position = mat4(vs_params[0], vs_params[1], vs_params[2], vs_params[3]) * vec4(((_30 * vec4((position.xyz + inst.xyz) - vec3(0.5), 0.0)).xyz + vec3(0.5)) + vs_params[5].xyz, 1.0); - fnormal = _30 * vec4(normal.xyz, 0.0); - color = inst_col; - pos = gl_Position; - cam = vs_params[4].xyz; - vtrixel_state = inst.w; - } - -*/ -vs_trixel_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x30,0x5d,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32, - 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x3b,0x0a, - 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20, - 0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e, - 0x20,0x76,0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x0a,0x6f,0x75, - 0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f, - 0x63,0x6f,0x6c,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f, - 0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x3b, - 0x0a,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x74,0x72,0x69,0x78, - 0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x74, - 0x34,0x20,0x5f,0x33,0x30,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x38,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x39,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x5f,0x33, - 0x30,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x2e,0x78,0x79, - 0x7a,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x5b,0x35,0x5d,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x3d,0x20,0x5f, - 0x33,0x30,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x61,0x6d, - 0x20,0x3d,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2e, - 0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x74,0x72,0x69,0x78,0x65,0x6c, - 0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x2e,0x77,0x3b, - 0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #version 300 es - precision mediump float; - precision highp int; - - struct trixel_world_config - { - highp vec3 skyBase; - highp vec3 skyTop; - highp vec3 sunDisk; - highp vec3 horizonHalo; - highp vec3 sunHalo; - highp vec3 sunLightColor; - highp vec3 sunPosition; - highp float sunIntensity; - highp float skyIntensity; - int hasClouds; - highp float planeHeight; - int animatePlaneHeight; - highp vec3 waterColor; - highp vec3 deepColor; - highp float time; - }; - - uniform trixel_world_config _215; - - struct trixel_fs_params - { - int view_mode; - highp float brightness; - }; - - uniform trixel_fs_params _313; - - in highp vec4 color; - in highp vec4 fnormal; - in highp vec3 cam; - in highp vec4 pos; - layout(location = 0) out highp vec4 frag_color; - in highp float vtrixel_state; - - highp vec3 fresnelSchlick(highp float cosTheta, highp vec3 F0) - { - return F0 + ((vec3(1.0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - highp float DistributionGGX(highp vec3 N, highp vec3 H, highp float roughness) - { - highp float _36 = roughness * roughness; - highp float _40 = _36 * _36; - highp float _46 = max(dot(N, H), 0.0); - highp float _59 = ((_46 * _46) * (_40 - 1.0)) + 1.0; - return _40 / ((3.141285419464111328125 * _59) * _59); - } - - highp float GeometrySchlickGGX(highp float NdotV, highp float roughness) - { - highp float _72 = roughness + 1.0; - highp float _78 = (_72 * _72) * 0.125; - return NdotV / ((NdotV * (1.0 - _78)) + _78); - } - - highp float GeometrySmith(highp vec3 N, highp vec3 V, highp vec3 L, highp float roughness) - { - highp float param = max(dot(N, V), 0.0); - highp float param_1 = roughness; - highp float param_2 = max(dot(N, L), 0.0); - highp float param_3 = roughness; - return GeometrySchlickGGX(param_2, param_3) * GeometrySchlickGGX(param, param_1); - } - - void main() - { - int _150 = int(round(color.w * 255.0)); - highp float emittance = 0.0; - highp float roughness = 0.0500000007450580596923828125; - highp float metallic = 0.0; - if ((_150 & 1) != 0) - { - emittance = float((_150 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - roughness = max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_150 >> 3) & 3) * 0.3333333432674407958984375; - } - highp vec3 light = color.xyz * 0.300000011920928955078125; - highp vec3 _197 = (color.xyz * emittance) * 5.0; - highp vec3 _202 = normalize(fnormal.xyz); - highp vec3 _211 = normalize(cam - pos.xyz); - highp vec3 _220 = normalize(_215.sunPosition); - highp vec3 _225 = normalize(_211 + _220); - highp float param = max(dot(_225, _211), 0.0); - highp vec3 param_1 = mix(vec3(0.039999999105930328369140625), color.xyz, vec3(metallic)); - highp vec3 _242 = fresnelSchlick(param, param_1); - highp vec3 param_2 = _202; - highp vec3 param_3 = _225; - highp float param_4 = roughness; - highp vec3 param_5 = _202; - highp vec3 param_6 = _211; - highp vec3 param_7 = _220; - highp float param_8 = roughness; - highp float _277 = max(dot(_202, _220), 0.0); - light += ((((((vec3(1.0) - _242) * (1.0 - metallic)) * color.xyz) * vec3(0.3183410167694091796875)) + ((_242 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(_202, _211), 0.0)) * _277) + 9.9999997473787516355514526367188e-05))) * _277); - if (_313.view_mode == 1) - { - frag_color = vec4((_202 * 0.5) + vec3(0.5), 1.0); - } - else - { - if (_313.view_mode == 2) - { - frag_color = vec4((color.xyz * ((_277 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _197, 1.0); - } - else - { - if (_313.view_mode == 3) - { - frag_color = vec4(((color.xyz * ((_202 * 0.5) + vec3(0.5))) * ((_277 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _197, 1.0); - } - else - { - frag_color = vec4(light + _197, 1.0); - } - } - } - highp vec4 _396 = frag_color; - highp vec3 _398 = _396.xyz * _313.brightness; - frag_color.x = _398.x; - frag_color.y = _398.y; - frag_color.z = _398.z; - if (vtrixel_state > 0.5) - { - highp vec4 _414 = frag_color; - highp vec3 _418 = mix(_414.xyz, vec3(1.0, 1.0, 0.5), vec3(0.5)); - frag_color.x = _418.x; - frag_color.y = _418.y; - frag_color.z = _418.z; - } - } - -*/ -fs_trixel_source_glsl300es := u8.[ - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, - 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, - 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72, - 0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x42,0x61, - 0x73,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x73,0x6b,0x79,0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x44,0x69,0x73, - 0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75, - 0x6e,0x48,0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73, - 0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x43,0x6f,0x6c, - 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69, - 0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e, - 0x66,0x69,0x67,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63, - 0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x76,0x69,0x65, - 0x77,0x5f,0x6d,0x6f,0x64,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x6e,0x65, - 0x73,0x73,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, - 0x20,0x5f,0x33,0x31,0x33,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x63,0x61,0x6d,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, - 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f, - 0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x74,0x72,0x69,0x78,0x65,0x6c, - 0x5f,0x73,0x74,0x61,0x74,0x65,0x3b,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69, - 0x63,0x6b,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63, - 0x6f,0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28,0x28,0x76,0x65,0x63,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x46,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f, - 0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f, - 0x73,0x54,0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x2c,0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69,0x73,0x74,0x72,0x69,0x62, - 0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x48,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33, - 0x36,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x20,0x3d, - 0x20,0x5f,0x33,0x36,0x20,0x2a,0x20,0x5f,0x33,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x20, - 0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x48,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x20,0x3d,0x20,0x28,0x28,0x5f, - 0x34,0x36,0x20,0x2a,0x20,0x5f,0x34,0x36,0x29,0x20,0x2a,0x20,0x28,0x5f,0x34,0x30, - 0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x34,0x30,0x20,0x2f, - 0x20,0x28,0x28,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34,0x36, - 0x34,0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x5f,0x35,0x39, - 0x29,0x20,0x2a,0x20,0x5f,0x35,0x39,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72, - 0x79,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47,0x58,0x28,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x4e,0x64,0x6f,0x74,0x56,0x2c,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x32,0x20,0x3d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x37,0x38,0x20,0x3d,0x20,0x28,0x5f,0x37,0x32,0x20,0x2a,0x20,0x5f,0x37,0x32,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x4e,0x64,0x6f,0x74,0x56,0x20,0x2f,0x20,0x28,0x28,0x4e, - 0x64,0x6f,0x74,0x56,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x37, - 0x38,0x29,0x29,0x20,0x2b,0x20,0x5f,0x37,0x38,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d,0x65, - 0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x4e,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x56,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x4c,0x2c,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x47,0x65,0x6f, - 0x6d,0x65,0x74,0x72,0x79,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47,0x58,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33, - 0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x63,0x68,0x6c, - 0x69,0x63,0x6b,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x5f,0x31,0x35,0x30,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e, - 0x64,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e, - 0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d, - 0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20, - 0x3d,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35, - 0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x31,0x35,0x30,0x20, - 0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e, - 0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30, - 0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39, - 0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75, - 0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26, - 0x20,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34, - 0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31, - 0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37, - 0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31, - 0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f, - 0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34, - 0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30, - 0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x39,0x37,0x20,0x3d,0x20,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29, - 0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x32,0x20,0x3d,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x31,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x70,0x6f,0x73,0x2e, - 0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x32,0x35,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31,0x31,0x20,0x2b,0x20, - 0x5f,0x32,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d, - 0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x32,0x35,0x2c,0x20,0x5f,0x32,0x31, - 0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33, - 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38, - 0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x65,0x74,0x61, - 0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20,0x66,0x72, - 0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x32,0x31,0x31,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x32,0x32,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x32,0x30,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, - 0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30, - 0x29,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, - 0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39, - 0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28, - 0x28,0x5f,0x32,0x34,0x32,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62, - 0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d, - 0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x33, - 0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74, - 0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x20,0x2b,0x20,0x39,0x2e, - 0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36, - 0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65, - 0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x33,0x2e,0x76,0x69,0x65, - 0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x5f,0x32, - 0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33, - 0x31,0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20, - 0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x37,0x37,0x20,0x2a, - 0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38, - 0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e, - 0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34, - 0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31, - 0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x33,0x2e, - 0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28, - 0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32, - 0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35, - 0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35, - 0x29,0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38, - 0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x29,0x20, - 0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6c,0x69,0x67, - 0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33, - 0x39,0x36,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x33,0x39,0x38,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36,0x2e,0x78,0x79,0x7a,0x20, - 0x2a,0x20,0x5f,0x33,0x31,0x33,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x6e,0x65,0x73, - 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x33,0x39,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d, - 0x20,0x5f,0x33,0x39,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x39,0x38, - 0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x76,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x34,0x31,0x34,0x20,0x3d, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x34,0x31,0x38,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x34,0x31,0x34,0x2e, - 0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, - 0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x34,0x31, - 0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38, - 0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, -]; -/* - #include - #include - - using namespace metal; - - struct vs_params - { - float4x4 mvp; - float3 camera; - float3 world_offset; - float4x4 tile_rotation; - }; - - struct main0_out - { - float4 color [[user(locn0)]]; - float4 fnormal [[user(locn1)]]; - float4 pos [[user(locn2)]]; - float3 cam [[user(locn3)]]; - float vtrixel_state [[user(locn4)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float4 position [[attribute(0)]]; - float4 normal [[attribute(1)]]; - float4 inst [[attribute(2)]]; - float4 inst_col [[attribute(3)]]; - }; - - vertex main0_out main0(main0_in in [[stage_in]], constant vs_params& _25 [[buffer(0)]]) - { - main0_out out = {}; - out.gl_Position = _25.mvp * float4(((_25.tile_rotation * float4((in.position.xyz + in.inst.xyz) - float3(0.5), 0.0)).xyz + float3(0.5)) + _25.world_offset, 1.0); - out.fnormal = _25.tile_rotation * float4(in.normal.xyz, 0.0); - out.color = in.inst_col; - out.pos = out.gl_Position; - out.cam = _25.camera; - out.vtrixel_state = in.inst.w; - return out; - } - -*/ -vs_trixel_source_metal_macos := u8.[ - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d,0x65,0x72,0x61,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x77,0x6f,0x72,0x6c,0x64, - 0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x78,0x34,0x20,0x74,0x69,0x6c,0x65,0x5f,0x72,0x6f,0x74,0x61,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75, - 0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x63,0x61,0x6d, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x33,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x76,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30, - 0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72, - 0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b, - 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x20, - 0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x73, - 0x74,0x5f,0x63,0x6f,0x6c,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74, - 0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b, - 0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x61,0x6e,0x74,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26, - 0x20,0x5f,0x32,0x35,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29, - 0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x5f,0x32,0x35,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x28,0x28,0x5f,0x32,0x35,0x2e,0x74,0x69,0x6c,0x65,0x5f, - 0x72,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78, - 0x79,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x32,0x35,0x2e, - 0x77,0x6f,0x72,0x6c,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x20,0x3d,0x20,0x5f,0x32,0x35,0x2e,0x74,0x69,0x6c,0x65,0x5f,0x72, - 0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x28,0x69,0x6e,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f, - 0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x70,0x6f,0x73,0x20,0x3d, - 0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x61,0x6d,0x20,0x3d,0x20, - 0x5f,0x32,0x35,0x2e,0x63,0x61,0x6d,0x65,0x72,0x61,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x6f,0x75,0x74,0x2e,0x76,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74, - 0x65,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,0x6e,0x73,0x74,0x2e,0x77,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d, - 0x0a,0x0a,0x00, -]; -/* - #pragma clang diagnostic ignored "-Wmissing-prototypes" - - #include - #include - - using namespace metal; - - struct trixel_world_config - { - float3 skyBase; - float3 skyTop; - float3 sunDisk; - float3 horizonHalo; - float3 sunHalo; - float3 sunLightColor; - packed_float3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - float3 waterColor; - packed_float3 deepColor; - float time; - }; - - struct trixel_fs_params - { - int view_mode; - float brightness; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float4 color [[user(locn0)]]; - float4 fnormal [[user(locn1)]]; - float4 pos [[user(locn2)]]; - float3 cam [[user(locn3)]]; - float vtrixel_state [[user(locn4)]]; - }; - - static inline __attribute__((always_inline)) - float3 fresnelSchlick(thread const float& cosTheta, thread const float3& F0) - { - return F0 + ((float3(1.0) - F0) * powr(fast::clamp(1.0 - cosTheta, 0.0, 1.0), 5.0)); - } - - static inline __attribute__((always_inline)) - float DistributionGGX(thread const float3& N, thread const float3& H, thread const float& roughness) - { - float _36 = roughness * roughness; - float _40 = _36 * _36; - float _46 = fast::max(dot(N, H), 0.0); - float _59 = ((_46 * _46) * (_40 - 1.0)) + 1.0; - return _40 / ((3.141285419464111328125 * _59) * _59); - } - - static inline __attribute__((always_inline)) - float GeometrySchlickGGX(thread const float& NdotV, thread const float& roughness) - { - float _72 = roughness + 1.0; - float _78 = (_72 * _72) * 0.125; - return NdotV / ((NdotV * (1.0 - _78)) + _78); - } - - static inline __attribute__((always_inline)) - float GeometrySmith(thread const float3& N, thread const float3& V, thread const float3& L, thread const float& roughness) - { - float param = fast::max(dot(N, V), 0.0); - float param_1 = roughness; - float param_2 = fast::max(dot(N, L), 0.0); - float param_3 = roughness; - return GeometrySchlickGGX(param_2, param_3) * GeometrySchlickGGX(param, param_1); - } - - fragment main0_out main0(main0_in in [[stage_in]], constant trixel_world_config& _215 [[buffer(0)]], constant trixel_fs_params& _313 [[buffer(1)]]) - { - main0_out out = {}; - int _150 = int(round(in.color.w * 255.0)); - float emittance = 0.0; - float roughness = 0.0500000007450580596923828125; - float metallic = 0.0; - if ((_150 & 1) != 0) - { - emittance = float((_150 >> 1) & 127) * 0.0078740157186985015869140625; - } - else - { - roughness = fast::max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - metallic = float((_150 >> 3) & 3) * 0.3333333432674407958984375; - } - float3 light = in.color.xyz * 0.300000011920928955078125; - float3 _197 = (in.color.xyz * emittance) * 5.0; - float3 _202 = fast::normalize(in.fnormal.xyz); - float3 _211 = fast::normalize(in.cam - in.pos.xyz); - float3 _220 = fast::normalize(float3(_215.sunPosition)); - float3 _225 = fast::normalize(_211 + _220); - float param = fast::max(dot(_225, _211), 0.0); - float3 param_1 = mix(float3(0.039999999105930328369140625), in.color.xyz, float3(metallic)); - float3 _242 = fresnelSchlick(param, param_1); - float3 param_2 = _202; - float3 param_3 = _225; - float param_4 = roughness; - float3 param_5 = _202; - float3 param_6 = _211; - float3 param_7 = _220; - float param_8 = roughness; - float _277 = fast::max(dot(_202, _220), 0.0); - light += ((((((float3(1.0) - _242) * (1.0 - metallic)) * in.color.xyz) * float3(0.3183410167694091796875)) + ((_242 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * fast::max(dot(_202, _211), 0.0)) * _277) + 9.9999997473787516355514526367188e-05))) * _277); - if (_313.view_mode == 1) - { - out.frag_color = float4((_202 * 0.5) + float3(0.5), 1.0); - } - else - { - if (_313.view_mode == 2) - { - out.frag_color = float4((in.color.xyz * ((_277 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _197, 1.0); - } - else - { - if (_313.view_mode == 3) - { - out.frag_color = float4(((in.color.xyz * ((_202 * 0.5) + float3(0.5))) * ((_277 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _197, 1.0); - } - else - { - out.frag_color = float4(light + _197, 1.0); - } - } - } - float4 _396 = out.frag_color; - float3 _398 = _396.xyz * _313.brightness; - out.frag_color.x = _398.x; - out.frag_color.y = _398.y; - out.frag_color.z = _398.z; - if (in.vtrixel_state > 0.5) - { - float4 _414 = out.frag_color; - float3 _418 = mix(_414.xyz, float3(1.0, 1.0, 0.5), float3(0.5)); - out.frag_color.x = _418.x; - out.frag_color.y = _418.y; - out.frag_color.z = _418.z; - } - return out; - } - -*/ -fs_trixel_source_metal_macos := u8.[ - 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, - 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, - 0x20,0x22,0x2d,0x57,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0x2d,0x70,0x72,0x6f,0x74, - 0x6f,0x74,0x79,0x70,0x65,0x73,0x22,0x0a,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64, - 0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,0x73,0x74,0x64,0x6c,0x69,0x62,0x3e, - 0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f, - 0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,0x75,0x73,0x69,0x6e,0x67,0x20,0x6e, - 0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77, - 0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79,0x42,0x61,0x73,0x65, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x6b,0x79, - 0x54,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x75,0x6e,0x44,0x69,0x73,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x48,0x61,0x6c,0x6f,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x73,0x75,0x6e,0x48, - 0x61,0x6c,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x70,0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e, - 0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x73,0x6b,0x79,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x61,0x73,0x43,0x6c,0x6f,0x75,0x64,0x73,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65, - 0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, - 0x61,0x6e,0x69,0x6d,0x61,0x74,0x65,0x50,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67, - 0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x77, - 0x61,0x74,0x65,0x72,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70, - 0x61,0x63,0x6b,0x65,0x64,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x64,0x65,0x65, - 0x70,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75, - 0x63,0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x76,0x69, - 0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f, - 0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x63,0x61,0x6d,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, - 0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x76,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x5b,0x5b, - 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x34,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28, - 0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63, - 0x68,0x6c,0x69,0x63,0x6b,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26,0x20,0x63,0x6f,0x73,0x54,0x68,0x65, - 0x74,0x61,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x46,0x30,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x46,0x30,0x20,0x2b,0x20,0x28, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x46, - 0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6f,0x73,0x54, - 0x68,0x65,0x74,0x61,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c, - 0x20,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69, - 0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x44,0x69, - 0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x26,0x20,0x4e,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e, - 0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x48,0x2c,0x20,0x74,0x68, - 0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x36,0x20,0x3d,0x20,0x72, - 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68, - 0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x34,0x30,0x20,0x3d,0x20,0x5f,0x33,0x36,0x20,0x2a,0x20,0x5f,0x33,0x36,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x36,0x20,0x3d, - 0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e, - 0x2c,0x20,0x48,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x20,0x3d,0x20,0x28,0x28,0x5f,0x34, - 0x36,0x20,0x2a,0x20,0x5f,0x34,0x36,0x29,0x20,0x2a,0x20,0x28,0x5f,0x34,0x30,0x20, - 0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x34,0x30,0x20,0x2f,0x20, - 0x28,0x28,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34,0x36,0x34, - 0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x5f,0x35,0x39,0x29, - 0x20,0x2a,0x20,0x5f,0x35,0x39,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74, - 0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72, - 0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47, - 0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47, - 0x58,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x26,0x20,0x4e,0x64,0x6f,0x74,0x56,0x2c,0x20,0x74,0x68,0x72, - 0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x26, - 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x32,0x20,0x3d,0x20,0x72,0x6f, - 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x37,0x38,0x20,0x3d,0x20,0x28, - 0x5f,0x37,0x32,0x20,0x2a,0x20,0x5f,0x37,0x32,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31, - 0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4e, - 0x64,0x6f,0x74,0x56,0x20,0x2f,0x20,0x28,0x28,0x4e,0x64,0x6f,0x74,0x56,0x20,0x2a, - 0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x37,0x38,0x29,0x29,0x20,0x2b,0x20, - 0x5f,0x37,0x38,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, - 0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c, - 0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x47,0x65,0x6f,0x6d, - 0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4e, - 0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x56,0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64, - 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x26,0x20,0x4c, - 0x2c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x26,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64, - 0x6f,0x74,0x28,0x4e,0x2c,0x20,0x56,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74, - 0x28,0x4e,0x2c,0x20,0x4c,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20, - 0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79, - 0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x20,0x2a,0x20,0x47, - 0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x47,0x47, - 0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, - 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e, - 0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63, - 0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x32,0x31,0x35,0x20,0x5b,0x5b,0x62,0x75, - 0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74, - 0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x33,0x31,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66, - 0x66,0x65,0x72,0x28,0x31,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20, - 0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x35,0x30, - 0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e,0x2e, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69, - 0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, - 0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37, - 0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31, - 0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65, - 0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x26,0x20,0x31,0x29, - 0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20, - 0x31,0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30, - 0x37,0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31, - 0x35,0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x35,0x29, - 0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37, - 0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32, - 0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32, - 0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d, - 0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36, - 0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31, - 0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x31,0x39,0x37,0x20,0x3d,0x20,0x28,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29, - 0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x32,0x30,0x32,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x31,0x31,0x20,0x3d,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e, - 0x63,0x61,0x6d,0x20,0x2d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32, - 0x32,0x30,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x31,0x35, - 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x32,0x35,0x20, - 0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x5f,0x32,0x31,0x31,0x20,0x2b,0x20,0x5f,0x32,0x32,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20, - 0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x5f,0x32,0x32,0x35,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30, - 0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35, - 0x29,0x2c,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x32,0x34,0x32,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68, - 0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20, - 0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x32,0x31,0x31,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x32,0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20, - 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20, - 0x5f,0x32,0x32,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32, - 0x34,0x32,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74, - 0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34, - 0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28, - 0x5f,0x32,0x34,0x32,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75, - 0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69, - 0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32, - 0x31,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37, - 0x37,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37, - 0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36, - 0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20, - 0x5f,0x32,0x37,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x33,0x31,0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d, - 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x5f,0x32,0x30,0x32,0x20, - 0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31, - 0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28, - 0x28,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, - 0x28,0x28,0x5f,0x32,0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30, - 0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36, - 0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30, - 0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32, - 0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x33,0x31,0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64, - 0x65,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x28, - 0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28, - 0x28,0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x28,0x5f,0x32,0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30, - 0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30, - 0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35, - 0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x28,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31, - 0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x5f,0x33,0x39,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x33,0x39,0x38,0x20,0x3d,0x20,0x5f,0x33,0x39,0x36, - 0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x33,0x31,0x33,0x2e,0x62,0x72,0x69,0x67, - 0x68,0x74,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f, - 0x33,0x39,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33, - 0x39,0x38,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x39, - 0x38,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x2e, - 0x76,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20, - 0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x34,0x31,0x34,0x20,0x3d, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x5f,0x34,0x31,0x38,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x34,0x31,0x34,0x2e, - 0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x78,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x34,0x31,0x38,0x2e, - 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -]; -trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc { - desc: sg_shader_desc; - desc.label = "trixel_shader"; - if backend == { - case .GLCORE; - desc.vertex_func.source = xx *vs_trixel_source_glsl430; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trixel_source_glsl430; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "inst"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "inst_col"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 160; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 10; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 160; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_215.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_215.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_215.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_215.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_215.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_215.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_215.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_215.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_215.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_215.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_215.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_215.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_215.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_215.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_215.time"; - desc.uniform_blocks[2].stage = .FRAGMENT; - desc.uniform_blocks[2].layout = .STD140; - desc.uniform_blocks[2].size = 16; - desc.uniform_blocks[2].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[0].glsl_name = "_313.view_mode"; - desc.uniform_blocks[2].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[2].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[1].glsl_name = "_313.brightness"; - case .GLES3; - desc.vertex_func.source = xx *vs_trixel_source_glsl300es; - desc.vertex_func.entry = "main"; - desc.fragment_func.source = xx *fs_trixel_source_glsl300es; - desc.fragment_func.entry = "main"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[0].glsl_name = "position"; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[1].glsl_name = "normal"; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[2].glsl_name = "inst"; - desc.attrs[3].base_type = .FLOAT; - desc.attrs[3].glsl_name = "inst_col"; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 160; - desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4; - desc.uniform_blocks[0].glsl_uniforms[0].array_count = 10; - desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "vs_params"; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 160; - desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_215.skyBase"; - desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_215.skyTop"; - desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_215.sunDisk"; - desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_215.horizonHalo"; - desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_215.sunHalo"; - desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_215.sunLightColor"; - desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_215.sunPosition"; - desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_215.sunIntensity"; - desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_215.skyIntensity"; - desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_215.hasClouds"; - desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_215.planeHeight"; - desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; - desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_215.animatePlaneHeight"; - desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_215.waterColor"; - desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; - desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_215.deepColor"; - desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; - desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_215.time"; - desc.uniform_blocks[2].stage = .FRAGMENT; - desc.uniform_blocks[2].layout = .STD140; - desc.uniform_blocks[2].size = 16; - desc.uniform_blocks[2].glsl_uniforms[0].type = .INT; - desc.uniform_blocks[2].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[0].glsl_name = "_313.view_mode"; - desc.uniform_blocks[2].glsl_uniforms[1].type = .FLOAT; - desc.uniform_blocks[2].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[2].glsl_uniforms[1].glsl_name = "_313.brightness"; - case .METAL_MACOS; - desc.vertex_func.source = xx *vs_trixel_source_metal_macos; - desc.vertex_func.entry = "main0"; - desc.fragment_func.source = xx *fs_trixel_source_metal_macos; - desc.fragment_func.entry = "main0"; - desc.attrs[0].base_type = .FLOAT; - desc.attrs[1].base_type = .FLOAT; - desc.attrs[2].base_type = .FLOAT; - desc.attrs[3].base_type = .FLOAT; - desc.uniform_blocks[0].stage = .VERTEX; - desc.uniform_blocks[0].layout = .STD140; - desc.uniform_blocks[0].size = 160; - desc.uniform_blocks[0].msl_buffer_n = 0; - desc.uniform_blocks[1].stage = .FRAGMENT; - desc.uniform_blocks[1].layout = .STD140; - desc.uniform_blocks[1].size = 160; - desc.uniform_blocks[1].msl_buffer_n = 0; - desc.uniform_blocks[2].stage = .FRAGMENT; - desc.uniform_blocks[2].layout = .STD140; - desc.uniform_blocks[2].size = 16; - desc.uniform_blocks[2].msl_buffer_n = 1; - } - return desc; -} diff --git a/src/shaders/shader_billboard.glsl b/src/shaders/shader_billboard.glsl deleted file mode 100644 index 0cdb521..0000000 --- a/src/shaders/shader_billboard.glsl +++ /dev/null @@ -1,48 +0,0 @@ -@vs vs_billboard - -in vec3 position; - -layout(binding=0) uniform billboard_vs_params { - mat4 mvp; - vec4 uvs; - vec3 offset; - vec2 size; - vec3 cam; - vec3 faceDir; -}; - -out vec2 uv_in; - -void main() { - vec3 local_pos = vec3((position.x - 0.5) * size.x, (position.y) * size.y, position.z); - vec3 world_up = vec3(0.0, 1.0, 0.0); - vec3 look_dir = offset - cam; - look_dir.y = 0.0; - look_dir = normalize(look_dir); - if(faceDir.x > -10) look_dir = faceDir; - vec3 world_right = normalize(cross(world_up, look_dir)); - vec3 world_pos = offset + (world_right * local_pos.x) + (world_up * local_pos.y); - gl_Position = mvp * vec4(world_pos, 1.0); - uv_in = vec2(uvs.x + position.x * uvs.z, uvs.y + position.y * uvs.w); -} -@end - -@fs fs_billboard - -in vec2 uv_in; -out vec4 color; - -layout(binding = 0) uniform texture2D sprite; -layout(binding = 0) uniform sampler spritesmp; - -void main() { - vec2 uv = uv_in; - uv.y = 1.0 - uv.y; - vec4 sampled = texture(sampler2D(sprite, spritesmp), uv); - if(sampled.a < 0.01) discard; - color = vec4(sampled.rgb * 0.5, 1.0); -} - -@end - -@program billboard vs_billboard fs_billboard diff --git a/src/shaders/shader_bloom_downsample.glsl b/src/shaders/shader_bloom_downsample.glsl deleted file mode 100644 index 4890d83..0000000 --- a/src/shaders/shader_bloom_downsample.glsl +++ /dev/null @@ -1,35 +0,0 @@ -@vs vs_bloom_downsample -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_bloom_downsample -in vec2 texcoord; -out vec4 frag_color; - -layout(binding=0) uniform bloom_downsample_params { - float src_texel_x; - float src_texel_y; -}; - -layout(binding = 0) uniform texture2D bloom_downsample_src; -layout(binding = 0) uniform sampler bloom_downsample_src_smp; - -void main() { - vec2 ts = vec2(src_texel_x, src_texel_y) * 0.5; - vec3 a = texture(sampler2D(bloom_downsample_src, bloom_downsample_src_smp), texcoord + vec2(-ts.x, -ts.y)).rgb; - vec3 b = texture(sampler2D(bloom_downsample_src, bloom_downsample_src_smp), texcoord + vec2( ts.x, -ts.y)).rgb; - vec3 c = texture(sampler2D(bloom_downsample_src, bloom_downsample_src_smp), texcoord + vec2(-ts.x, ts.y)).rgb; - vec3 d = texture(sampler2D(bloom_downsample_src, bloom_downsample_src_smp), texcoord + vec2( ts.x, ts.y)).rgb; - frag_color = vec4((a + b + c + d) * 0.25, 1.0); -} -@end - -@program bloom_downsample vs_bloom_downsample fs_bloom_downsample diff --git a/src/shaders/shader_bloom_prefilter.glsl b/src/shaders/shader_bloom_prefilter.glsl deleted file mode 100644 index acb92fe..0000000 --- a/src/shaders/shader_bloom_prefilter.glsl +++ /dev/null @@ -1,39 +0,0 @@ -@vs vs_bloom_prefilter -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_bloom_prefilter -in vec2 texcoord; -out vec4 frag_color; - -layout(binding=0) uniform bloom_prefilter_params { - float src_texel_x; - float src_texel_y; - float threshold; -}; - -layout(binding = 0) uniform texture2D bloom_prefilter_src; -layout(binding = 0) uniform sampler bloom_prefilter_src_smp; - -void main() { - vec2 ts = vec2(src_texel_x, src_texel_y) * 0.5; - vec3 a = texture(sampler2D(bloom_prefilter_src, bloom_prefilter_src_smp), texcoord + vec2(-ts.x, -ts.y)).rgb; - vec3 b = texture(sampler2D(bloom_prefilter_src, bloom_prefilter_src_smp), texcoord + vec2( ts.x, -ts.y)).rgb; - vec3 c = texture(sampler2D(bloom_prefilter_src, bloom_prefilter_src_smp), texcoord + vec2(-ts.x, ts.y)).rgb; - vec3 d = texture(sampler2D(bloom_prefilter_src, bloom_prefilter_src_smp), texcoord + vec2( ts.x, ts.y)).rgb; - vec3 color = (a + b + c + d) * 0.25; - float lum = dot(color, vec3(0.2126, 0.7152, 0.0722)); - if (lum < threshold) color = vec3(0.0); - frag_color = vec4(color, 1.0); -} -@end - -@program bloom_prefilter vs_bloom_prefilter fs_bloom_prefilter diff --git a/src/shaders/shader_bloom_upsample.glsl b/src/shaders/shader_bloom_upsample.glsl deleted file mode 100644 index 1299b46..0000000 --- a/src/shaders/shader_bloom_upsample.glsl +++ /dev/null @@ -1,39 +0,0 @@ -@vs vs_bloom_upsample -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_bloom_upsample -in vec2 texcoord; -out vec4 frag_color; - -layout(binding=0) uniform bloom_upsample_params { - float src_texel_x; - float src_texel_y; -}; - -layout(binding = 0) uniform texture2D bloom_upsample_small; -layout(binding = 0) uniform sampler bloom_upsample_small_smp; -layout(binding = 1) uniform texture2D bloom_upsample_large; -layout(binding = 1) uniform sampler bloom_upsample_large_smp; - -void main() { - vec2 ts = vec2(src_texel_x, src_texel_y) * 0.5; - vec3 tent = - texture(sampler2D(bloom_upsample_small, bloom_upsample_small_smp), texcoord + vec2(-ts.x, -ts.y)).rgb + - texture(sampler2D(bloom_upsample_small, bloom_upsample_small_smp), texcoord + vec2( ts.x, -ts.y)).rgb + - texture(sampler2D(bloom_upsample_small, bloom_upsample_small_smp), texcoord + vec2(-ts.x, ts.y)).rgb + - texture(sampler2D(bloom_upsample_small, bloom_upsample_small_smp), texcoord + vec2( ts.x, ts.y)).rgb; - vec3 large = texture(sampler2D(bloom_upsample_large, bloom_upsample_large_smp), texcoord).rgb; - frag_color = vec4(tent * 0.25 + large, 1.0); -} -@end - -@program bloom_upsample vs_bloom_upsample fs_bloom_upsample diff --git a/src/shaders/shader_debugline.glsl b/src/shaders/shader_debugline.glsl deleted file mode 100644 index a2dd04b..0000000 --- a/src/shaders/shader_debugline.glsl +++ /dev/null @@ -1,58 +0,0 @@ -@vs vs_debugline - -// Lines are drawn as camera-facing quads rather than GL lines, so they can have -// a real pixel width. Buffer 0 holds the six corners of a unit quad, buffer 1 -// one instance per line. -in vec2 a_corner; // x = which side (-1 / +1), y = which end (0 = a, 1 = b) -in vec3 a_pos_a; -in vec3 a_pos_b; -in vec4 a_col; -in float a_width; // in pixels - -layout(binding=0) uniform debugline_vs_params { - mat4 mvp; - vec4 viewport; // xy = size in pixels, zw = unused -}; - -out vec4 v_col; - -void main() { - vec4 clip_a = mvp * vec4(a_pos_a, 1.0); - vec4 clip_b = mvp * vec4(a_pos_b, 1.0); - - // Widen in screen space so the line keeps its pixel width at any depth. - // Guard against w <= 0: an endpoint behind the eye has no screen position, - // so fall back to the other end's and let clipping handle the rest. - float wa = max(clip_a.w, 0.0001); - float wb = max(clip_b.w, 0.0001); - vec2 screen_a = (clip_a.xy / wa) * viewport.xy; - vec2 screen_b = (clip_b.xy / wb) * viewport.xy; - - vec2 delta = screen_b - screen_a; - float len = length(delta); - vec2 dir = (len > 0.0001) ? delta / len : vec2(1.0, 0.0); - vec2 normal = vec2(-dir.y, dir.x); - - vec4 clip = mix(clip_a, clip_b, a_corner.y); - // Half a pixel of extra width keeps thin lines from disappearing between - // sample points. - vec2 offset = normal * a_corner.x * (a_width * 0.5 + 0.5) / viewport.xy; - gl_Position = clip + vec4(offset * clip.w, 0.0, 0.0); - - v_col = a_col; -} - -@end - -@fs fs_debugline - -in vec4 v_col; -out vec4 frag_color; - -void main() { - frag_color = v_col; -} - -@end - -@program debugline vs_debugline fs_debugline diff --git a/src/shaders/shader_dof_blur.glsl b/src/shaders/shader_dof_blur.glsl deleted file mode 100644 index 05519c3..0000000 --- a/src/shaders/shader_dof_blur.glsl +++ /dev/null @@ -1,48 +0,0 @@ -@vs vs_dof_blur -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_dof_blur -in vec2 texcoord; -out vec4 frag_color; - -layout(binding=0) uniform dof_blur_params { - float bokeh_radius_x; - float bokeh_radius_y; -}; - -layout(binding = 0) uniform texture2D dof_blur_src; -layout(binding = 0) uniform sampler dof_blur_src_smp; - -void main() { - const int NUM_SAMPLES = 32; - const float GOLDEN_ANGLE = 2.39996323; - - vec4 best = texture(sampler2D(dof_blur_src, dof_blur_src_smp), texcoord); - float best_lum = dot(best.rgb, vec3(0.2126, 0.7152, 0.0722)); - - for (int i = 0; i < NUM_SAMPLES; i++) { - float theta = float(i) * GOLDEN_ANGLE; - float r = sqrt(float(i) / float(NUM_SAMPLES - 1) + 0.001); - vec2 offset = vec2(cos(theta), sin(theta)) * r * vec2(bokeh_radius_x, bokeh_radius_y); - vec4 s = texture(sampler2D(dof_blur_src, dof_blur_src_smp), texcoord + offset); - float lum = dot(s.rgb, vec3(0.2126, 0.7152, 0.0722)); - if (lum > best_lum) { - best = s; - best_lum = lum; - } - } - - frag_color = best; -} -@end - -@program dof_blur vs_dof_blur fs_dof_blur diff --git a/src/shaders/shader_dof_downsample.glsl b/src/shaders/shader_dof_downsample.glsl deleted file mode 100644 index 81b77e7..0000000 --- a/src/shaders/shader_dof_downsample.glsl +++ /dev/null @@ -1,25 +0,0 @@ -@vs vs_dof_downsample -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_dof_downsample -in vec2 texcoord; -out vec4 frag_color; - -layout(binding = 0) uniform texture2D dof_downsample_src; -layout(binding = 0) uniform sampler dof_downsample_src_smp; - -void main() { - frag_color = vec4(texture(sampler2D(dof_downsample_src, dof_downsample_src_smp), texcoord).rgb, 1.0); -} -@end - -@program dof_downsample vs_dof_downsample fs_dof_downsample diff --git a/src/shaders/shader_gbuffer.glsl b/src/shaders/shader_gbuffer.glsl deleted file mode 100644 index 4ae41c3..0000000 --- a/src/shaders/shader_gbuffer.glsl +++ /dev/null @@ -1,76 +0,0 @@ -@vs vs_g -layout(binding=0) uniform gbuffer_vs_params { - mat4 mvp; - mat4 view_matrix; - int isGround; - float planeHeight; -}; - -in vec4 position; -in vec4 normal; -in vec4 centre; -in vec4 instance; - -out vec3 view_space_pos; -out vec3 view_space_normal; -out vec3 v_world_pos; - -mat3 gbuf_rot_x(float a) { float c=cos(a),s=sin(a); return mat3(1,0,0, 0,c,-s, 0,s,c); } -mat3 gbuf_rot_z(float a) { float c=cos(a),s=sin(a); return mat3(c,-s,0, s,c,0, 0,0,1); } -mat3 gbuf_rot_y(float a) { float c=cos(a),s=sin(a); return mat3(c,0,s, 0,1,0, -s,0,c); } - -mat3 gbuf_get_orientation_matrix(int ori) { - int face = ori / 4; - int twist = ori % 4; - float PI = 3.1415927; - mat3 base; - if (face == 0) base = mat3(1.0); - else if (face == 1) base = gbuf_rot_x(PI); - else if (face == 2) base = gbuf_rot_z(-PI*0.5); - else if (face == 3) base = gbuf_rot_z( PI*0.5); - else if (face == 4) base = gbuf_rot_x( PI*0.5); - else base = gbuf_rot_x(-PI*0.5); - return base * gbuf_rot_y(float(twist) * PI * 0.5); -} - -void main() { - if (isGround == 1) { - vec4 world_pos = vec4(position.x * 100.0, planeHeight, position.z * 100.0, 1.0); - vec4 view_pos_4 = view_matrix * world_pos; - gl_Position = mvp * world_pos; - view_space_pos = view_pos_4.xyz; - view_space_normal = mat3(view_matrix) * normal.xyz; - v_world_pos = world_pos.xyz; - } else { - int ori = int(round(instance.w)); - mat3 rot = gbuf_get_orientation_matrix(ori); - vec3 local = position.xyz - 0.5; - vec3 rotated = rot * local + 0.5; - vec4 world_pos = vec4(rotated + instance.xyz, 1.0); - vec4 view_pos_4 = view_matrix * world_pos; - gl_Position = mvp * world_pos; - view_space_pos = view_pos_4.xyz; - view_space_normal = mat3(view_matrix) * (rot * normal.xyz); - v_world_pos = world_pos.xyz; - } -} -@end - -@fs fs_g - -in vec3 view_space_pos; -in vec3 view_space_normal; -in vec3 v_world_pos; - -layout(location=0) out vec4 out_position; -layout(location=1) out vec4 out_normal; -layout(location=2) out vec4 out_worldpos; - -void main() { - out_position = vec4(view_space_pos, 1.0); - out_normal = vec4(normalize(view_space_normal), 1.0); - out_worldpos = vec4(v_world_pos, 1.0); -} -@end - -@program gbuffer vs_g fs_g diff --git a/src/shaders/shader_gbuffer_billboard.glsl b/src/shaders/shader_gbuffer_billboard.glsl deleted file mode 100644 index 52986d7..0000000 --- a/src/shaders/shader_gbuffer_billboard.glsl +++ /dev/null @@ -1,59 +0,0 @@ -@vs vs_gbuffer_billboard - -in vec3 position; - -layout(binding=0) uniform gbuffer_billboard_vs_params { - mat4 mvp; - vec4 uvs; - vec3 offset; - vec2 size; - vec3 cam; - mat4 view_matrix; - vec3 faceDir; -}; - -out vec2 uv_in; -out vec3 view_space_pos; -out vec3 view_space_normal; - -void main() { - vec3 local_pos = vec3((position.x - 0.5) * size.x, (position.y) * size.y, position.z); - vec3 world_up = vec3(0.0, 1.0, 0.0); - vec3 look_dir = offset - cam; - look_dir.y = 0.0; - look_dir = normalize(look_dir); - if(faceDir.x > -10) look_dir = faceDir; - vec3 world_right = normalize(cross(world_up, look_dir)); - vec3 world_pos = offset + (world_right * local_pos.x) + (world_up * local_pos.y); - gl_Position = mvp * vec4(world_pos, 1.0); - vec4 view_pos_4 = view_matrix * vec4(world_pos, 1.0); - view_space_pos = view_pos_4.xyz; - view_space_normal = mat3(view_matrix) * vec3(0,1,0); - uv_in = vec2(uvs.x + position.x * uvs.z, uvs.y + position.y * uvs.w); -} -@end - -@fs fs_gbuffer_billboard - -in vec2 uv_in; -in vec3 view_space_pos; -in vec3 view_space_normal; - -layout(binding = 0) uniform texture2D gsprite; -layout(binding = 0) uniform sampler gspritesmp; - -layout(location=0) out vec4 out_position; -layout(location=1) out vec4 out_normal; - -void main() { - vec2 uv = uv_in; - uv.y = 1.0 - uv.y; - vec4 sampled = texture(sampler2D(gsprite, gspritesmp), uv); - if(sampled.a < 0.01) discard; - out_position = vec4(view_space_pos, 1.0); - out_normal = vec4(normalize(view_space_normal), 1.0); -} - -@end - -@program gbuffer_billboard vs_gbuffer_billboard fs_gbuffer_billboard diff --git a/src/shaders/shader_mix.glsl b/src/shaders/shader_mix.glsl deleted file mode 100644 index 63051dc..0000000 --- a/src/shaders/shader_mix.glsl +++ /dev/null @@ -1,50 +0,0 @@ -@vs vs_mix -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_mix -in vec2 texcoord; -out vec4 frag_color; - -layout(binding=1) uniform mix_fs_params { - int op; - float dof_min; - float dof_max; - float dof_point; - /* - List of mixs: - 0. DOF - 1. Add - */ -}; - -layout(binding = 0) uniform texture2D mixtex_a; -layout(binding = 1) uniform texture2D mixtex_b; -layout(binding = 2) uniform texture2D mixtex_c; -layout(binding = 0) uniform sampler mixsmp; - -void main() { - if(op == 0) { - vec2 texelSize = 1.0 / vec2(textureSize(sampler2D(mixtex_a, mixsmp), 0)); - vec3 in_focus = texture(sampler2D(mixtex_b, mixsmp), texcoord).rgb; - vec3 out_focus = texture(sampler2D(mixtex_a, mixsmp), texcoord).rgb; - vec4 position = texture(sampler2D(mixtex_c, mixsmp), texcoord); - float blur = smoothstep(dof_min, dof_max, abs(position.z + dof_point)); - frag_color = vec4(mix(in_focus, out_focus, blur), 1.0); - } else if(op == 1) { - vec3 a = texture(sampler2D(mixtex_b, mixsmp), texcoord).rgb; - vec3 b = texture(sampler2D(mixtex_a, mixsmp), texcoord).rgb; - frag_color = vec4(a+b, 1.0); - } -} -@end - -@program mix vs_mix fs_mix diff --git a/src/shaders/shader_op.glsl b/src/shaders/shader_op.glsl deleted file mode 100644 index dc579b2..0000000 --- a/src/shaders/shader_op.glsl +++ /dev/null @@ -1,112 +0,0 @@ -@vs vs_op -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_op -in vec2 texcoord; -out vec4 frag_color; - -layout(binding=1) uniform op_fs_params { - /* - List of ops: - 0. blur for ssao - 1. dilate. - 2. normal blur - 3. bloom - */ - int op; - - // Common - int blur_size; - float separation; - - // DOF - float dilate_min; - float dilate_max; - - // Bloom - float bloom_amount; - float bloom_treshold; - -}; - -layout(binding = 0) uniform texture2D optex; -layout(binding = 0) uniform sampler opsmp; - -void main() { - if(op == 3) { - vec2 texSize = vec2(textureSize(sampler2D(optex, opsmp), 0)); - float value = 0.0; - float count = 0.0; - - vec4 result = vec4(0.0); - vec4 color = vec4(0.0); - - for(int i = -blur_size ; i <= blur_size; ++i) { - for(int j = -blur_size; j <= blur_size; ++j) { - color = texture(sampler2D(optex, opsmp), (gl_FragCoord.xy + vec2(i,j) * separation) / texSize); - value = max(color.r, max(color.g, color.b)); - if(value < bloom_treshold) { color = vec4(0); } - result += color; - count += 1.0; - } - } - result /= count; - frag_color = vec4(result.xyz * bloom_amount, 1.0); - } else if(op == 2) { - vec2 texelSize = 1.0 / vec2(textureSize(sampler2D(optex, opsmp), 0)); - vec3 result = vec3(0.0); - for (int x = -blur_size; x < blur_size; ++x) - { - for (int y = -blur_size; y < blur_size; ++y) - { - vec2 offset = vec2(float(x), float(y)) * texelSize; - result += texture(sampler2D(optex, opsmp), texcoord + offset).xyz; - } - } - frag_color = vec4((result / (blur_size*2 * blur_size*2)), 1.0); - } - else if(op == 1) { - float minThreshold = dilate_min; - float maxThreshold = dilate_max; - vec2 texSize = textureSize(sampler2D(optex, opsmp), 0).xy; - vec2 fragCoord = gl_FragCoord.xy; - frag_color = texture(sampler2D(optex, opsmp), fragCoord / texSize); - if (blur_size <= 0) { return; } - float mx = 0.0; - vec4 cmx = frag_color; - for (int i = -blur_size; i <= blur_size; ++i) { - for (int j = -blur_size; j <= blur_size; ++j) { - if (!(distance(vec2(i, j), vec2(0, 0)) <= blur_size)) { continue; } - vec4 c = texture(sampler2D(optex,opsmp),(gl_FragCoord.xy + (vec2(i, j) * separation)) / texSize); - float mxt = dot(c.rgb, vec3(0.3, 0.59, 0.11)); - if (mxt > mx) { - mx = mxt; - cmx = c; - } - } - } - frag_color.rgb = mix(frag_color.rgb, cmx.rgb, smoothstep(minThreshold, maxThreshold, mx)); - } else { - vec2 texelSize = 1.0 / vec2(textureSize(sampler2D(optex, opsmp), 0)); - float result = 0.0; - for (int x = -blur_size; x < blur_size; ++x) { - for (int y = -blur_size; y < blur_size; ++y) { - vec2 offset = vec2(float(x), float(y)) * texelSize; - result += texture(sampler2D(optex, opsmp), texcoord + offset).r; - } - } - frag_color = vec4(vec3(result / (blur_size*2 * blur_size*2)), 1.0); - } -} -@end - -@program op vs_op fs_op diff --git a/src/shaders/shader_particle.glsl b/src/shaders/shader_particle.glsl deleted file mode 100644 index 562c9a8..0000000 --- a/src/shaders/shader_particle.glsl +++ /dev/null @@ -1,54 +0,0 @@ -@vs vs_particle - -in vec3 position; -in vec4 inst_pos_size; -in vec4 inst_uv_rect; -in vec4 inst_color; - -layout(binding=0) uniform particle_vs_params { - mat4 mvp; - vec3 cam; -}; - -out vec2 uv_in; -out vec4 color_in; - -void main() { - float size = inst_pos_size.w; - vec3 inst_pos = inst_pos_size.xyz; - vec3 local_pos = vec3((position.x - 0.5) * size, position.y * size, 0.0); - vec3 world_up = vec3(0.0, 1.0, 0.0); - vec3 look_dir = inst_pos - cam; - look_dir.y = 0.0; - if (length(look_dir) < 0.0001) look_dir = vec3(1.0, 0.0, 0.0); - look_dir = normalize(look_dir); - vec3 world_right = normalize(cross(world_up, look_dir)); - vec3 world_pos = inst_pos + world_right * local_pos.x + world_up * local_pos.y; - gl_Position = mvp * vec4(world_pos, 1.0); - uv_in = vec2(inst_uv_rect.x + position.x * inst_uv_rect.z, - inst_uv_rect.y + position.y * inst_uv_rect.w); - color_in = inst_color; -} - -@end - -@fs fs_particle - -in vec2 uv_in; -in vec4 color_in; -out vec4 color; - -layout(binding = 0) uniform texture2D particle_sprite; -layout(binding = 0) uniform sampler particle_spritesmp; - -void main() { - vec2 uv = uv_in; - uv.y = 1.0 - uv.y; - vec4 sampled = texture(sampler2D(particle_sprite, particle_spritesmp), uv); - if (sampled.a < 0.01) discard; - color = sampled * color_in; -} - -@end - -@program particle vs_particle fs_particle diff --git a/src/shaders/shader_plane.glsl b/src/shaders/shader_plane.glsl deleted file mode 100644 index 6810fa3..0000000 --- a/src/shaders/shader_plane.glsl +++ /dev/null @@ -1,161 +0,0 @@ -@vs vs_plane -// @glsl_options fixup_clipspace - -in vec4 position; - -layout(binding=0) uniform plane_vs_params { - mat4 mvp; - float planeHeight; -}; - -out vec4 pos; -out flat int idx; -out float depth; - -void main() { - vec3 multisize = vec3(position.xyz * 1000.0); - multisize.y += float(gl_InstanceIndex) * planeHeight; - gl_Position = mvp * vec4(multisize, 1.0); - depth = gl_Position.z; - pos = vec4(multisize, 1.0); - idx = gl_InstanceIndex; -} -@end - -@fs fs_plane - -in vec4 pos; -in flat int idx; -in float depth; -out vec4 frag_color; - -layout(binding=1) uniform plane_world_config { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - int hasClouds; - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - float time; - float waterReflectivity; -}; - -layout(binding=2) uniform plane_data { - mat4 mvp_shadow; - int screen_w; - int screen_h; - int is_reflection_pass; - vec3 cameraPosition; - float shininess; // Controls the size of the sun's glint, e.g., 64.0 - float reflectionDistortion; // Controls how much waves distort reflections, e.g., 0.05 -}; - -// Texture bindings -layout(binding = 0) uniform texture2D reftex; -layout(binding = 1) uniform texture2D shadow; -layout(binding = 2) uniform texture2D normal_map; - -// Sampler bindings -layout(binding = 0) uniform sampler refsmp; -layout(binding = 1) uniform sampler plane_shadowsmp; -layout(binding = 2) uniform sampler normalsmp; - -vec3 fresnelSchlick(float cosTheta) { - vec3 F0 = vec3(0.02); - return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0); -} - -float hash(vec2 p) { - return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); -} - -float noise(vec2 p) { - vec2 i = floor(p); - vec2 f = fract(p); - vec2 u = f * f * (3.0 - 2.0 * f); - return mix(mix(hash(i + vec2(0.0, 0.0)), - hash(i + vec2(1.0, 0.0)), u.x), - mix(hash(i + vec2(0.0, 1.0)), - hash(i + vec2(1.0, 1.0)), u.x), u.y); -} - -float fbm(vec2 p) { - float value = 0.0; - float amplitude = 0.5; - for (int i = 0; i < 4; i++) { - value += amplitude * noise(p); - p *= 2.0; // Double the frequency - amplitude *= 0.5; // Halve the amplitude - } - return value; -} - -vec3 sky(vec3 skypos, vec3 sunpos) { - vec3 skyGradient = mix(skyBase, skyTop, clamp(skypos.y * 2.0, 0.0, 0.7)); - vec3 final = skyGradient; - return final; -} - -void main() { - if(idx == 1) { // Second instance of the plane is the actual water surface. - vec2 uv1 = pos.xz * 0.4 + time * vec2(-0.005, -0.012) * 1.5; - vec2 uv2 = pos.xz * 0.1 + time * vec2(-0.005, -0.012) * 1.7; - vec2 uv3 = pos.xz * 1.0 + time * vec2(-0.005, -0.012) * 2.7; - vec2 uv4 = pos.xz * 0.02 + time * vec2(-0.005, -0.012) * 0.1; - - vec3 normal1 = texture(sampler2D(normal_map, normalsmp), uv1).xzy * 2.0 - 1.0; - vec3 normal2 = texture(sampler2D(normal_map, normalsmp), uv2).xzy * 2.0 - 1.0; - vec3 normal3 = texture(sampler2D(normal_map, normalsmp), uv3).xzy * 2.0 - 1.0; - vec3 normal4 = texture(sampler2D(normal_map, normalsmp), uv4).xzy * 2.0 - 1.0; - - vec3 normal = normalize(normal1 + normal2 + normal3 + normal4); - - vec3 view_dir = normalize(cameraPosition - pos.xyz); - vec3 light_dir = normalize(sunPosition); - vec3 halfway_dir = normalize(light_dir + view_dir); - - float diffuse = max(0.0, dot(normal, light_dir)); - float spec = pow(max(0.0, dot(halfway_dir, normal)), max(shininess, 1.0)); - float fresnel = min(1.0, fresnelSchlick(max(0.0, dot(view_dir, normal))).x + 0.45); - - vec4 shadow_proj_pos = mvp_shadow * vec4(floor(pos.xyz * 16.0) / 16.0, 1.0); - vec3 shadow_pos = shadow_proj_pos.xyz / shadow_proj_pos.w; - shadow_pos = shadow_pos * 0.5 + 0.5; - shadow_pos.z -= 0.001; - float shadowp = texture(sampler2DShadow(shadow, plane_shadowsmp), shadow_pos); - - vec3 refracted_color = waterColor * diffuse * sunLightColor * sunIntensity * shadowp; - vec3 specular_highlight = sunLightColor * sunIntensity * spec * fresnel * shadowp; - - vec2 screen_uv = gl_FragCoord.xy / vec2(screen_w, screen_h); - screen_uv.y = 1.0 - screen_uv.y; - vec2 distortion = normal.xz * reflectionDistortion; - vec3 reflected_color = texture(sampler2D(reftex, refsmp), screen_uv + distortion).rgb; - - vec3 surface_color = mix(refracted_color, reflected_color, mix(fresnel, 1.0, waterReflectivity)); - vec3 final_color = surface_color + specular_highlight; - float alpha = mix(mix(0.3, 0.5, fresnel), 1.0, waterReflectivity); - - vec3 fog = skyIntensity * sky(normalize(pos.xyz), sunPosition); - float fogFactor = smoothstep(750.0, 1000.0, length(pos.xz)); - - frag_color = vec4(mix(final_color, fog, fogFactor), mix(alpha, 1.0, fogFactor)); - - } else { // Deep water plane - vec2 noise_uv = pos.xz * 0.05 + time * 0.01; - float noise_value = fbm(noise_uv); - vec3 noisy_deep_color = deepColor * mix(0.8, 1.2, noise_value); - frag_color = vec4(noisy_deep_color, 1.0); - } -} -@end - -@program plane vs_plane fs_plane diff --git a/src/shaders/shader_post_process_main.glsl b/src/shaders/shader_post_process_main.glsl deleted file mode 100644 index da8d400..0000000 --- a/src/shaders/shader_post_process_main.glsl +++ /dev/null @@ -1,207 +0,0 @@ -@vs vs_pp -in vec2 position; -in vec2 uv; - -out vec2 texcoord; - -void main() { - gl_Position = vec4(position, 0.5, 1.0); - texcoord = uv; -} -@end - -@fs fs_pp -in vec2 texcoord; -out vec4 frag_color; - -layout(binding = 0) uniform texture2D pptex; -layout(binding = 0) uniform sampler ppsmp; -layout(binding = 1) uniform texture2D lut; -layout(binding = 1) uniform sampler lut_linear; -layout(binding = 2) uniform texture2D bloom_tex; -layout(binding = 2) uniform sampler bloom_smp; -layout(binding = 3) uniform texture2D dof_tex; -layout(binding = 3) uniform sampler dof_smp; -layout(binding = 4) uniform texture2D pos_buf; -layout(binding = 4) uniform sampler pos_smp; - -layout(binding=1) uniform dof_config { - int dof_disabled; - float dof_max; - float dof_point; -}; - -layout(binding=0) uniform post_process_config { - float exposure; - float contrast; - float saturation; - float gamma; - float tonemap; - float vignette_intensity; - float vignette_radius; - float scanlines_intensity; - float scanlines_density; - float chromatic_aberration_intensity; - float film_grain_intensity; - float barrel_distortion_intensity; - int lut_mode; - float dither_intensity; - float bloom_amount; -}; - -vec3 aces(vec3 x) { - const float a = 2.51; - const float b = 0.03; - const float c = 2.43; - const float d = 0.59; - const float e = 0.14; - return clamp((x * (a * x + b)) / (x * (c * x + d) + e), 0.0, 1.0); -} - -float rand(vec2 co){ - return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); -} - -float bayer8(vec2 pos) { - ivec2 p = ivec2(pos) % 8; - int index = p.x + p.y * 8; - // Bayer 8x8 matrix, normalized to [0,1] - const int bayer[64] = int[64]( - 0, 32, 8, 40, 2, 34, 10, 42, - 48, 16, 56, 24, 50, 18, 58, 26, - 12, 44, 4, 36, 14, 46, 6, 38, - 60, 28, 52, 20, 62, 30, 54, 22, - 3, 35, 11, 43, 1, 33, 9, 41, - 51, 19, 59, 27, 49, 17, 57, 25, - 15, 47, 7, 39, 13, 45, 5, 37, - 63, 31, 55, 23, 61, 29, 53, 21 - ); - return (float(bayer[index]) / 64.0) - 0.5; -} - -vec3 texture_bicubic(texture2D tex, sampler smp, vec2 uv, vec2 tex_size) { - vec2 pixel = uv * tex_size - 0.5; - vec2 f = fract(pixel); - vec2 pixel_floor = (floor(pixel) + 0.5) / tex_size; - - vec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f)); - vec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f); - vec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f)); - vec2 w3 = f * f * (-0.5 + 0.5 * f); - - vec2 w12 = w1 + w2; - vec2 offset0 = -1.0 / tex_size; - vec2 offset12 = (w2 / w12) / tex_size; - vec2 offset3 = 2.0 / tex_size; - - vec3 result = - texture(sampler2D(tex, smp), pixel_floor + vec2(offset0.x, offset0.y)).rgb * w0.x * w0.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset12.x, offset0.y)).rgb * w12.x * w0.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset3.x, offset0.y)).rgb * w3.x * w0.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset0.x, offset12.y)).rgb * w0.x * w12.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset12.x, offset12.y)).rgb * w12.x * w12.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset3.x, offset12.y)).rgb * w3.x * w12.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset0.x, offset3.y)).rgb * w0.x * w3.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset12.x, offset3.y)).rgb * w12.x * w3.y + - texture(sampler2D(tex, smp), pixel_floor + vec2(offset3.x, offset3.y)).rgb * w3.x * w3.y; - - return result; -} - -void main() { - vec2 distorted_texcoord = texcoord; - float barrel_dist = length(texcoord - 0.5); - distorted_texcoord -= 0.5; - distorted_texcoord *= 1.0 + barrel_dist * barrel_distortion_intensity; - distorted_texcoord += 0.5; - - if (barrel_distortion_intensity > 0.0) { - if (distorted_texcoord.x < 0.0 || distorted_texcoord.x > 1.0 || distorted_texcoord.y < 0.0 || distorted_texcoord.y > 1.0) { - frag_color = vec4(0.0, 0.0, 0.0, 1.0); - return; - } - } - - vec3 sampled_color_hdr; - if(chromatic_aberration_intensity > 0.01) { - float r = texture(sampler2D(pptex, ppsmp), distorted_texcoord + vec2(chromatic_aberration_intensity, 0.0)).r; - float g = texture(sampler2D(pptex, ppsmp), distorted_texcoord).g; - float b = texture(sampler2D(pptex, ppsmp), distorted_texcoord - vec2(chromatic_aberration_intensity, 0.0)).b; - sampled_color_hdr = vec3(r,g,b); - } else { - sampled_color_hdr = texture(sampler2D(pptex, ppsmp), distorted_texcoord).rgb; - } - - if(dof_disabled == 0) { - float view_z = texture(sampler2D(pos_buf, pos_smp), distorted_texcoord).z; - float depth = abs(view_z); - float coc = smoothstep(0.0, 1.0, abs(depth - dof_point) / max(dof_max, 0.0001)); - vec3 dof_blurred = texture(sampler2D(dof_tex, dof_smp), distorted_texcoord).rgb; - sampled_color_hdr = mix(sampled_color_hdr, dof_blurred, coc); - } - - vec3 bloom_color = texture(sampler2D(bloom_tex, bloom_smp), distorted_texcoord).rgb; - vec3 color_hdr = (sampled_color_hdr + bloom_color * bloom_amount) * exposure; - - vec3 color_ldr_linear; - if(tonemap > 0.5) { - color_ldr_linear = aces(color_hdr); - } else { - color_ldr_linear = color_hdr; - } - - color_ldr_linear = ((color_ldr_linear - 0.5f) * max(contrast, 0)) + 0.5f; - - float lum = dot(color_ldr_linear, vec3(0.2125, 0.7154, 0.0721)); - vec3 brtColor = vec3(lum, lum, lum); - color_ldr_linear = mix(brtColor, color_ldr_linear, saturation); - - color_ldr_linear = clamp(color_ldr_linear, 0.0, 1.0); - - if(dither_intensity > 0.0) { - float dither = bayer8(gl_FragCoord.xy) * dither_intensity * (1.0 / 15.0); - color_ldr_linear = clamp(color_ldr_linear + dither, 0.0, 1.0); - } - - if(lut_mode != 0) { - if(lut_mode == 2) { - float u = floor(color_ldr_linear.b * 15.0) * (1.0/16.0); - u = u + floor(color_ldr_linear.r * 15.0) * (1.0/256.0); - float v = floor(color_ldr_linear.g * 15.0) * (1.0 / 16.0); - vec3 left = texture(sampler2D(lut, ppsmp), vec2(u, v)).rgb; - color_ldr_linear = left; - } else { - float b_scaled = color_ldr_linear.b * 15.0; - float b_floor = floor(b_scaled); - float b_fract = b_scaled - b_floor; // fract(b_scaled) - - float v = (color_ldr_linear.g * 15.0 + 0.5) / 16.0; - - float u1 = (b_floor * 16.0 + color_ldr_linear.r * 15.0 + 0.5) / 256.0; - vec3 sample1 = texture(sampler2D(lut, lut_linear), vec2(u1, v)).rgb; - - float b_ceil = min(b_floor + 1.0, 15.0); // Clamp to last slice - float u2 = (b_ceil * 16.0 + color_ldr_linear.r * 15.0 + 0.5) / 256.0; - vec3 sample2 = texture(sampler2D(lut, lut_linear), vec2(u2, v)).rgb; - - color_ldr_linear = mix(sample1, sample2, b_fract); - } - } - - vec3 color_srgb = pow(color_ldr_linear, vec3(1.0 / gamma)); - - float vignette = 1.0 - smoothstep(0.0, vignette_radius, length(texcoord - vec2(0.5))) * vignette_intensity; - color_srgb *= vignette; - - float scanline = 1.0 - (sin(gl_FragCoord.y * scanlines_density) * 0.5 + 0.5) * scanlines_intensity; - - color_srgb *= scanline; - - float grain = (rand(texcoord) - 0.5) * film_grain_intensity; - color_srgb += grain; - - frag_color = vec4(clamp(color_srgb, 0.0, 1.0), 1.0); -} -@end - -@program postprocess vs_pp fs_pp diff --git a/src/shaders/shader_sh_deferred.glsl b/src/shaders/shader_sh_deferred.glsl deleted file mode 100644 index 2bbd938..0000000 --- a/src/shaders/shader_sh_deferred.glsl +++ /dev/null @@ -1,102 +0,0 @@ -@vs vs_sh_deferred -in vec2 position; -in vec2 uv; -out vec2 quad_uv; -void main() { - gl_Position = vec4(position, 0.0, 1.0); - quad_uv = uv; -} -@end - -@fs fs_sh_deferred - -layout(binding=0) uniform texture2D gbuf_worldpos; -layout(binding=1) uniform texture2D gbuf_norm; -layout(binding=2) uniform texture2D sh_chunk; -layout(binding=0) uniform sampler sh_smp; - -layout(binding=0) uniform sh_deferred_params { - mat4 inv_view; - vec4 chunk_origin; - vec4 ambient; // rgb = ambient color, a = ambient intensity -}; - -in vec2 quad_uv; -out vec4 frag_color; - -const float PI = 3.14159265359; - -vec3 sh_eval(ivec3 probe, vec3 N) { - int base = probe.x * 3; - int row = probe.z * 32 + probe.y; - vec4 t0 = texelFetch(sampler2D(sh_chunk, sh_smp), ivec2(base, row), 0); - vec4 t1 = texelFetch(sampler2D(sh_chunk, sh_smp), ivec2(base+1, row), 0); - vec4 t2 = texelFetch(sampler2D(sh_chunk, sh_smp), ivec2(base+2, row), 0); - float x = N.x, y = N.y, z = N.z; - float r = 0.886227*t0.x + 1.023327*(t0.w*x + t0.y*y + t0.z*z); - float g = 0.886227*t1.x + 1.023327*(t1.w*x + t1.y*y + t1.z*z); - float b = 0.886227*t2.x + 1.023327*(t2.w*x + t2.y*y + t2.z*z); - return max(vec3(r, g, b) / PI, vec3(0.0)); -} - -float sh_probe_energy(ivec3 probe) { - int base = probe.x * 3; - int row = probe.z * 32 + probe.y; - vec4 t0 = texelFetch(sampler2D(sh_chunk, sh_smp), ivec2(base, row), 0); - vec4 t1 = texelFetch(sampler2D(sh_chunk, sh_smp), ivec2(base+1, row), 0); - vec4 t2 = texelFetch(sampler2D(sh_chunk, sh_smp), ivec2(base+2, row), 0); - return max(0.886227 * (t0.x + t1.x + t2.x), 0.0); -} - -vec3 sh_eval_trilinear(ivec3 p0, ivec3 p1, vec3 t, vec3 N) { - float wx[2] = float[2](1.0 - t.x, t.x); - float wy[2] = float[2](1.0 - t.y, t.y); - float wz[2] = float[2](1.0 - t.z, t.z); - vec3 result = vec3(0.0); - vec3 unweighted = vec3(0.0); - float total_w = 0.0; - for (int iz = 0; iz < 2; iz++) { - for (int iy = 0; iy < 2; iy++) { - for (int ix = 0; ix < 2; ix++) { - ivec3 probe = ivec3( - ix == 0 ? p0.x : p1.x, - iy == 0 ? p0.y : p1.y, - iz == 0 ? p0.z : p1.z - ); - vec3 sh = sh_eval(probe, N); - float triw = wx[ix] * wy[iy] * wz[iz]; - float w = triw * sh_probe_energy(probe); - result += sh * w; - unweighted += sh * triw; - total_w += w; - } - } - } - vec3 amb = ambient.rgb * ambient.a; - return total_w > 0.001 ? result / total_w : max(unweighted, amb); -} - -void main() { - vec4 wp_sample = texture(sampler2D(gbuf_worldpos, sh_smp), quad_uv); - if (wp_sample.a < 0.5) discard; - - vec3 world_pos = wp_sample.xyz; - - vec3 cmin = chunk_origin.xyz; - vec3 cmax = cmin + vec3(32.0); - if (any(lessThan(world_pos, cmin)) || any(greaterThanEqual(world_pos, cmax))) discard; - - vec3 view_norm = normalize(texture(sampler2D(gbuf_norm, sh_smp), quad_uv).xyz); - vec3 world_norm = normalize(mat3(inv_view) * view_norm); - - const float SH_PAD = 2.0; - const float SH_SPACING = (32.0 + 2.0 * SH_PAD) / 32.0; - vec3 probe_f = clamp((world_pos - (cmin - vec3(SH_PAD))) / SH_SPACING, vec3(0.0), vec3(31.0)); - ivec3 p0 = ivec3(floor(probe_f)); - ivec3 p1 = min(p0 + ivec3(1), ivec3(31)); - - frag_color = vec4(sh_eval_trilinear(p0, p1, fract(probe_f), world_norm), 1.0); -} -@end - -@program sh_deferred vs_sh_deferred fs_sh_deferred diff --git a/src/shaders/shader_sky.glsl b/src/shaders/shader_sky.glsl deleted file mode 100644 index 370c716..0000000 --- a/src/shaders/shader_sky.glsl +++ /dev/null @@ -1,114 +0,0 @@ -@vs vs_sky - -in vec4 position; - -layout(binding=0) uniform sky_vs_params { - mat4 mvp; -}; - - - -out vec4 pos; - -void main() { - gl_Position = mvp * (vec4(position.xyz * 1000.0, 1.0)); - pos = position; -} -@end - -@fs fs_sky - -layout(binding=1) uniform sky_world_config { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - - int hasClouds; - - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - - float time; -}; - -in vec4 pos; -out vec4 frag_color; - -const float cirrus = 0.5; -const float cumulus = 20.0; - -// ----- SKY SHADER ------- - -float hash(float n) -{ - return fract(sin(n) * 43758.5453123); -} - -float noise(vec3 x) -{ - vec3 f = fract(x); - float n = dot(floor(x), vec3(1.0, 157.0, 113.0)); - return mix(mix(mix(hash(n + 0.0), hash(n + 1.0), f.x), - mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y), - mix(mix(hash(n + 113.0), hash(n + 114.0), f.x), - mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z); -} - -vec3 sky(vec3 skypos, vec3 sunpos) { - - vec3 sunCol = sunDisk.xyz; - vec3 baseSky = skyBase.xyz; - vec3 topSky = skyTop.xyz; - - float sDist = dot(normalize(skypos), normalize(sunpos)); - - vec3 npos = normalize(skypos); - - - vec3 skyGradient = mix(baseSky, topSky, clamp(skypos.y * 2.0, 0.0, 0.7)); - - // Sun local frame — used for both halo and disk - vec3 sunDir = normalize(sunpos); - vec3 sunRight = normalize(cross(sunDir, vec3(0.0, 1.0, 0.0))); - vec3 sunUp = normalize(cross(sunRight, sunDir)); - vec3 sd = normalize(skypos) - sunDir * sDist; - float dx = dot(sd, sunRight); - float dy = dot(sd, sunUp); - float squareDist = max(abs(dx), abs(dy)); - - vec3 final = skyGradient; - - // Sun halo (square, smooth falloff) - float haloFactor = clamp((0.25 - squareDist) * 6.0, 0.0, 1.0); - final += sunHalo.xyz * haloFactor * haloFactor; - - // Sun square - if(squareDist < 0.032) { - final = sunDisk.xyz * 3.0; - } - - // Horizon halo - final += mix(horizonHalo.xyz, vec3(0.0,0.0,0.0), clamp(abs(npos.y) * 20.0, 0.0, 1.0)) * 0.8; - - final = vec3(final); - return final; -} - -// --- END SKY ---- - -void main() { - vec3 dir = normalize(pos.xyz); - vec3 color = skyIntensity * sky(dir, sunPosition); - frag_color = vec4(color, 1.0); -} -@end - -@program sky vs_sky fs_sky diff --git a/src/shaders/shader_ssao.glsl b/src/shaders/shader_ssao.glsl deleted file mode 100644 index ca045e8..0000000 --- a/src/shaders/shader_ssao.glsl +++ /dev/null @@ -1,69 +0,0 @@ -@vs vs_ssao -in vec2 position; -in vec2 uv; - -out vec2 quad_uv; - -void main() { - gl_Position = vec4(position, 0.0, 1.0); - quad_uv = uv; -} -@end - -@fs fs_ssao - -layout(binding=0) uniform texture2D g_position; -layout(binding=1) uniform texture2D g_normal; -layout(binding=2) uniform texture2D tex_noise; - -layout(binding=0) uniform sampler ssao_smp; - -layout(binding=1) uniform ssao_fs_params { - mat4 projection; - vec4 samples[64]; - float ssao_power; -}; - -in vec2 quad_uv; -out vec4 out_color; - -void main() { - vec3 frag_pos = texture(sampler2D(g_position, ssao_smp), quad_uv).xyz; - vec3 normal = normalize(texture(sampler2D(g_normal, ssao_smp), quad_uv).rgb); - vec2 noise_scale = vec2(1920.0/4.0, 1080.0/4.0); // @Incomplete: get screen size - vec3 random_vec = normalize(texture(sampler2D(tex_noise, ssao_smp), quad_uv * noise_scale).xyz); - - vec3 tangent = normalize(random_vec - normal * dot(random_vec, normal)); - vec3 bitangent = cross(normal, tangent); - mat3 tbn = mat3(tangent, bitangent, normal); - - float occlusion = 0.0; - for(int i = 0; i < 16; i++) { - vec3 sample_pos = tbn * samples[i].xyz; - sample_pos = frag_pos + sample_pos * 0.5; - - vec4 offset = vec4(sample_pos, 1.0); - offset = projection * offset; - offset.xyz /= offset.w; - offset.xyz = offset.xyz * 0.5 + 0.5; - - #if !SOKOL_GLSL - offset.y = 1.0 - offset.y; - #endif - - float bias = 0.01; - - vec3 psample = texture(sampler2D(g_position, ssao_smp), offset.xy).xyz; - float occluded = 0.0; - if(sample_pos.z + bias <= psample.z) { occluded = 1; } else { occluded = 0; } - // float intensity = smoothstep(0.0, 1.0, 0.5 / abs(frag_pos.z - offset.z)); - // occluded *= intensity; - occlusion += occluded; - - } - occlusion = 1.0 - (occlusion / 64.0); - out_color = vec4(vec3(pow(occlusion, ssao_power)), 1.0); -} -@end - -@program ssao vs_ssao fs_ssao diff --git a/src/shaders/shader_triangle.glsl b/src/shaders/shader_triangle.glsl deleted file mode 100644 index 9478c73..0000000 --- a/src/shaders/shader_triangle.glsl +++ /dev/null @@ -1,39 +0,0 @@ -@vs vs -in vec4 position; -in vec4 color0; -in vec4 uv; - -out vec4 color; -out vec4 texcoord; - -void main() { - gl_Position = position; - gl_Position.y += float(gl_InstanceIndex) * 0.1; - color = color0; - texcoord = uv; -} -@end - -@fs fs -in vec4 color; -in vec4 texcoord; -out vec4 frag_color; - -layout(binding = 0) uniform texture2D tex; -layout(binding = 0) uniform sampler smp; - -bool is_near(float a, float b) { - return abs(a-b) < 0.01; -} - -void main() { - if(is_near(texcoord.x, -4) && is_near(texcoord.y, -2)) { - frag_color = color; - } else { - vec4 sampled = texture(sampler2D(tex, smp), texcoord.xy) * color; - frag_color = sampled; - } -} -@end - -@program triangle vs fs diff --git a/src/shaders/shader_trile.glsl b/src/shaders/shader_trile.glsl deleted file mode 100644 index 5434873..0000000 --- a/src/shaders/shader_trile.glsl +++ /dev/null @@ -1,288 +0,0 @@ -@vs vs_trile - -in vec4 position; -in vec4 normal; -in vec4 centre; -in vec4 instance; - -layout(binding=0) uniform trile_vs_params { - mat4 mvp; - mat4 mvp_shadow; - vec3 camera; -}; - -out vec3 cam; -out vec3 to_center; -out vec3 vpos; -out vec3 ipos; -out vec4 fnormal; -out vec3 orig_normal; -out vec3 cv; - -mat3 rot_x(float a) { float c=cos(a),s=sin(a); return mat3(1,0,0, 0,c,-s, 0,s,c); } -mat3 rot_y(float a) { float c=cos(a),s=sin(a); return mat3(c,0,s, 0,1,0, -s,0,c); } -mat3 rot_z(float a) { float c=cos(a),s=sin(a); return mat3(c,-s,0, s,c,0, 0,0,1); } - -mat3 get_orientation_matrix(int ori) { - int face = ori / 4; - int twist = ori % 4; - float PI = 3.1415927; - mat3 base; - if (face == 0) base = mat3(1.0); - else if (face == 1) base = rot_x(PI); - else if (face == 2) base = rot_z(-PI*0.5); - else if (face == 3) base = rot_z( PI*0.5); - else if (face == 4) base = rot_x( PI*0.5); - else base = rot_x(-PI*0.5); - return base * rot_y(float(twist) * PI * 0.5); -} - -void main() { - int ori = int(round(instance.w)); - mat3 rot = get_orientation_matrix(ori); - vec3 local = position.xyz - 0.5; - vec3 rotated = rot * local + 0.5; - - gl_Position = mvp * vec4(rotated + instance.xyz, 1.0); - fnormal = vec4(rot * normal.xyz, 0.0); - orig_normal = normal.xyz; - to_center = centre.xyz - position.xyz; - vpos = rotated + instance.xyz; - ipos = position.xyz; - cam = camera; - cv = normalize(camera - vpos); -} -@end - -@fs fs_trile - -layout(binding=1) uniform trile_world_config { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - - int hasClouds; - - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - - float time; - int hsv_lighting; -}; - -in vec3 cam; -in vec3 to_center; -in vec3 vpos; -in vec3 ipos; -in vec4 fnormal; -in vec3 orig_normal; -in vec3 cv; -out vec4 frag_color; - -layout(binding=3) uniform trile_fs_params { - mat4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - float ambient_intensity; - float emissive_scale; - float indirect_diff_scale; - float indirect_spec_scale; - vec3 ambient_color; - int is_preview; - vec3 indirect_tint; - int sh_enabled; - float fog_start; - float fog_end; -}; - -layout(binding = 0) uniform texture2D triletex; -layout(binding = 0) uniform sampler trilesmp; -layout(binding = 1) uniform texture2D ssaotex; -layout(binding = 2) uniform texture2D shadowtex; -layout(binding = 2) uniform sampler shadowsmp; -layout(binding = 3) uniform texture2D brdf_lut; -layout(binding = 4) uniform texture2D sh_irradiance; -layout(binding = 3) uniform sampler linsmp; - -const float PI = 3.1415927; -const float ROUGHNESS_SPEC_CUTOFF = 0.7; - -const float cirrus = 0.5; - -float hash(float n) { - return fract(sin(n) * 43758.5453123); -} - -float noise(vec3 x) { - vec3 f = fract(x); - float n = dot(floor(x), vec3(1.0, 157.0, 113.0)); - return mix(mix(mix(hash(n + 0.0), hash(n + 1.0), f.x), - mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y), - mix(mix(hash(n + 113.0), hash(n + 114.0), f.x), - mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z); -} - -const mat3 fbm_m = mat3(0.0, 1.60, 1.20, -1.6, 0.72, -0.96, -1.2, -0.96, 1.28); - -vec3 sky(vec3 skypos, vec3 sunpos) { - vec3 npos = normalize(skypos); - float sDist = dot(npos, normalize(sunpos)); - - vec3 skyGradient = mix(skyBase, skyTop, clamp(npos.y * 2.0, 0.0, 0.7)); - vec3 result = skyGradient; - - result += sunHalo * clamp((sDist - 0.95) * 10.0, 0.0, 0.8) * 0.2; - - if (sDist > 0.9999) - result = sunDisk; - - result += mix(horizonHalo, vec3(0.0), clamp(abs(npos.y) * 80.0, 0.0, 1.0)) * 0.1; - return result; -} - -vec3 sky_reflect(vec3 R, vec3 sunpos) { - if (R.y < 0.0) R = reflect(R, vec3(0.0, 1.0, 0.0)); - return sky(R, sunpos); -} - -float DistributionGGX(vec3 N, vec3 H, float roughness) { - float a = roughness * roughness; - float a2 = a * a; - float NdotH = max(dot(N, H), 0.0); - float denom = NdotH * NdotH * (a2 - 1.0) + 1.0; - return a2 / (PI * denom * denom); -} - -float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { - float r = roughness + 1.0; - float k = (r * r) / 8.0; - float NdotV = max(dot(N, V), 0.0); - float NdotL = max(dot(N, L), 0.0); - float ggx1 = NdotL / (NdotL * (1.0 - k) + k); - float ggx2 = NdotV / (NdotV * (1.0 - k) + k); - return ggx1 * ggx2; -} - -vec3 fresnelSchlick(float cosTheta, vec3 F0) { - return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); -} - -vec3 FresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness) { - return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); -} - -void main() { - if (vpos.y < planeHeight - 0.01 && is_reflection == 1) discard; - - vec3 sample_pos = ipos - orig_normal * 0.02; - vec4 trixel_material; - int maxSteps = is_reflection == 1 ? 1 : 3; - for (int i = 0; i < maxSteps; i++) { - ivec2 texel = ivec2( - int(clamp(sample_pos.z, 0.0001, 0.99999) * 16.0), - int(clamp(sample_pos.y, 0.0001, 0.99999) * 16.0) + - int(clamp(sample_pos.x, 0.0001, 0.99999) * 16.0) * 16 - ); - trixel_material = texelFetch(sampler2D(triletex, trilesmp), texel, 0); - if (dot(trixel_material, trixel_material) > 0.0001) break; - sample_pos += to_center * 0.1; - } - - vec3 albedo = trixel_material.xyz; - - int packed = int(round(trixel_material.w * 255.0)); - float emittance = 0.0; - int roughnessInt = 0; - float roughness = 0.0; - float metallic = 0.0; - - if ((packed & 0x1) != 0) { - emittance = float((packed >> 1) & 0x7F) / 127.0; - } else { - roughnessInt = (packed >> 5) & 0x7; - roughness = max(float(roughnessInt) / 7.0, 0.05); - metallic = float((packed >> 3) & 0x3) / 3.0; - } - - vec3 absN = abs(fnormal.xyz); - vec3 N; - if (absN.x >= absN.y && absN.x >= absN.z) N = vec3(sign(fnormal.x), 0.0, 0.0); - else if (absN.y >= absN.x && absN.y >= absN.z) N = vec3(0.0, sign(fnormal.y), 0.0); - else N = vec3(0.0, 0.0, sign(fnormal.z)); - - if (is_reflection == 1) { - vec3 L = normalize(sunPosition); - float NdotL = max(dot(N, L), 0.0); - frag_color = vec4(albedo * (NdotL * sunLightColor * sunIntensity + 0.1), 1.0); - return; - } - - vec3 V = normalize(cam - vpos); - vec3 L = normalize(sunPosition); - vec3 H = normalize(V + L); - float NdotL = max(dot(N, L), 0.0); - float NdotV = max(dot(N, V), 0.0); - float HdotV = max(dot(H, V), 0.0); - - vec3 F0 = mix(vec3(0.04), albedo, metallic); - vec3 F = fresnelSchlick(HdotV, F0); - float NDF = DistributionGGX(N, H, roughness); - float G = GeometrySmith(N, V, L, roughness); - vec3 kD = (1.0 - F) * (1.0 - metallic); - - vec4 light_proj = mvp_shadow * vec4(floor(vpos * 16.0) / 16.0, 1.0); - vec3 light_ndc = light_proj.xyz / light_proj.w * 0.5 + 0.5; - light_ndc.z -= 0.001; - float shadow = texture(sampler2DShadow(shadowtex, shadowsmp), light_ndc); - - vec3 direct_specular = (NDF * G * F) / (4.0 * NdotV * NdotL + 0.0001); - vec3 light = shadow * (kD * albedo / PI + direct_specular) * NdotL * sunLightColor * sunIntensity; - - float ssao = texture(sampler2D(ssaotex, linsmp), - gl_FragCoord.xy / vec2(float(screen_w), float(screen_h))).r; - vec3 emissive = albedo * emittance * emissive_scale; - - vec3 Frough = FresnelSchlickRoughness(NdotV, F0, roughness); - - if (roughness < ROUGHNESS_SPEC_CUTOFF) { - vec3 R = reflect(-V, N); - vec2 envBRDF = texture(sampler2D(brdf_lut, linsmp), vec2(NdotV, roughness)).rg; - float specRoughFd = 1.0 - clamp((roughness - 0.5) / 0.3, 0.0, 1.0); - light += sky_reflect(R, sunPosition) * (Frough * envBRDF.x + envBRDF.y) - * indirect_spec_scale * specRoughFd; - } - - vec3 indirectDiff; - if (sh_enabled == 1) { - vec2 sh_uv = gl_FragCoord.xy / vec2(float(screen_w), float(screen_h)); - indirectDiff = texture(sampler2D(sh_irradiance, linsmp), sh_uv).rgb * indirect_tint; - } else { - indirectDiff = ambient_color * ambient_intensity; - } - - light += (1.0 - Frough) * (1.0 - metallic) * indirectDiff / PI * albedo * ssao * indirect_diff_scale; - - vec3 final_color = light + emissive; - final_color = mix(deepColor, final_color, smoothstep(0.0, planeHeight, vpos.y)); - - float fog_dist = length(vpos - cam); - float fog_factor = smoothstep(fog_start, fog_end, fog_dist); - final_color = mix(final_color, skyBase, fog_factor); - - frag_color = vec4(final_color, 1.0); - - if (is_preview == 1) frag_color.rgb = mix(frag_color.rgb, vec3(0.3, 0.7, 1.0), 0.5); - else if (is_preview == 2) frag_color.rgb = mix(frag_color.rgb, vec3(1.0, 0.3, 0.2), 0.5); -} -@end - -@program trile vs_trile fs_trile diff --git a/src/shaders/shader_trile_lod.glsl b/src/shaders/shader_trile_lod.glsl deleted file mode 100644 index b4ea10a..0000000 --- a/src/shaders/shader_trile_lod.glsl +++ /dev/null @@ -1,97 +0,0 @@ -@vs vs_trile_lod - -in vec4 position; -in vec4 normal; -in vec4 color; -in vec4 instance; - -layout(binding=0) uniform trile_lod_vs_params { - mat4 mvp; - vec3 camera; -}; - -out vec3 vpos; -out vec3 cam; -out vec3 vcolor; -out vec3 vnorm; - -mat3 rot_x(float a) { float c=cos(a),s=sin(a); return mat3(1,0,0, 0,c,-s, 0,s,c); } -mat3 rot_y(float a) { float c=cos(a),s=sin(a); return mat3(c,0,s, 0,1,0, -s,0,c); } -mat3 rot_z(float a) { float c=cos(a),s=sin(a); return mat3(c,-s,0, s,c,0, 0,0,1); } - -mat3 get_orientation_matrix(int ori) { - int face = ori / 4; - int twist = ori % 4; - float PI = 3.1415927; - mat3 base; - if (face == 0) base = mat3(1.0); - else if (face == 1) base = rot_x(PI); - else if (face == 2) base = rot_z(-PI*0.5); - else if (face == 3) base = rot_z( PI*0.5); - else if (face == 4) base = rot_x( PI*0.5); - else base = rot_x(-PI*0.5); - return base * rot_y(float(twist) * PI * 0.5); -} - -void main() { - int ori = int(round(instance.w)); - mat3 rot = get_orientation_matrix(ori); - vec3 local = position.xyz - 0.5; - vec3 rotated = rot * local + 0.5; - - gl_Position = mvp * vec4(rotated + instance.xyz, 1.0); - vpos = rotated + instance.xyz; - cam = camera; - vcolor = color.xyz; - vnorm = rot * normal.xyz; -} -@end - -@fs fs_trile_lod - -layout(binding=1) uniform trile_lod_fs_params { - vec3 skyBase; - vec3 sunPosition; - vec3 sunLightColor; - float sunIntensity; - vec3 ambient_color; - float ambient_intensity; - float planeHeight; - vec3 deepColor; - int is_reflection; - float fog_start; - float fog_end; -}; - -in vec3 vpos; -in vec3 cam; -in vec3 vcolor; -in vec3 vnorm; -out vec4 frag_color; - -void main() { - if (vpos.y < planeHeight - 0.01 && is_reflection == 1) discard; - - const float PI = 3.1415927; - vec3 N = normalize(vnorm); - vec3 L = normalize(sunPosition); - float NdotL = max(dot(N, L), 0.0); - - vec3 lit; - if (is_reflection == 1) { - lit = vcolor * (NdotL * sunLightColor * sunIntensity + 0.1) / PI; - } else { - lit = vcolor * (NdotL * sunLightColor * sunIntensity + ambient_color * ambient_intensity) / PI; - } - - vec3 final_color = mix(deepColor, lit, smoothstep(0.0, planeHeight, vpos.y)); - - float fog_dist = length(vpos - cam); - float fog_factor = smoothstep(fog_start, fog_end, fog_dist); - final_color = mix(final_color, skyBase, fog_factor); - - frag_color = vec4(final_color, 1.0); -} -@end - -@program trile_lod vs_trile_lod fs_trile_lod diff --git a/src/shaders/shader_trile_rdm.glsl b/src/shaders/shader_trile_rdm.glsl deleted file mode 100644 index 9c99f42..0000000 --- a/src/shaders/shader_trile_rdm.glsl +++ /dev/null @@ -1,346 +0,0 @@ -@vs vs_trile_rdm - -in vec4 position; -in vec4 normal; -in vec4 centre; -in vec4 instance; - -layout(binding=0) uniform trile_rdm_vs_params { - mat4 mvp; - mat4 mvp_shadow; - vec3 camera; -}; - -out vec3 cam; -out vec3 to_center; -out vec3 vpos; -out vec3 ipos; -out vec4 fnormal; -out vec3 orig_normal; -out vec3 trileCenter; -out vec3 cv; - -mat3 rot_x(float a) { float c=cos(a),s=sin(a); return mat3(1,0,0, 0,c,-s, 0,s,c); } -mat3 rot_y(float a) { float c=cos(a),s=sin(a); return mat3(c,0,s, 0,1,0, -s,0,c); } -mat3 rot_z(float a) { float c=cos(a),s=sin(a); return mat3(c,-s,0, s,c,0, 0,0,1); } - -mat3 get_orientation_matrix(int ori) { - int face = ori / 4; - int twist = ori % 4; - float PI = 3.1415927; - mat3 base; - if (face == 0) base = mat3(1.0); - else if (face == 1) base = rot_x(PI); - else if (face == 2) base = rot_z(-PI*0.5); - else if (face == 3) base = rot_z( PI*0.5); - else if (face == 4) base = rot_x( PI*0.5); - else base = rot_x(-PI*0.5); - return base * rot_y(float(twist) * PI * 0.5); -} - -void main() { - int ori = int(round(instance.w)); - mat3 rot = get_orientation_matrix(ori); - vec3 local = position.xyz - 0.5; - vec3 rotated = rot * local + 0.5; - - gl_Position = mvp * vec4(rotated + instance.xyz, 1.0); - fnormal = vec4(rot * normal.xyz, 0.0); - orig_normal = normal.xyz; - to_center = centre.xyz - position.xyz; - vpos = rotated + instance.xyz; - ipos = position.xyz; - cam = camera; - cv = normalize(camera - vpos); - trileCenter = instance.xyz + vec3(0.5); -} -@end - -@fs fs_trile_rdm - -layout(binding=1) uniform trile_rdm_world_config { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - - int hasClouds; - - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - - float time; - int hsv_lighting; -}; - -in vec3 cam; -in vec3 to_center; -in vec3 vpos; -in vec3 ipos; -in vec4 fnormal; -in vec3 orig_normal; -in vec3 trileCenter; -in vec3 cv; -out vec4 frag_color; - -layout(binding=3) uniform trile_rdm_fs_params { - mat4 mvp_shadow; - int is_reflection; - int screen_h; - int screen_w; - float ambient_intensity; - float emissive_scale; - float indirect_diff_scale; - float indirect_spec_scale; - vec3 ambient_color; - int is_preview; - vec3 indirect_tint; - int sh_enabled; - vec4 atlas_rect; -}; - -layout(binding = 0) uniform texture2D rdm_triletex; -layout(binding = 0) uniform sampler rdm_trilesmp; -layout(binding = 1) uniform texture2D rdm_ssaotex; -layout(binding = 2) uniform texture2D rdm_shadowtex; -layout(binding = 2) uniform sampler rdm_shadowsmp; -layout(binding = 3) uniform texture2D rdm_brdflut; -layout(binding = 4) uniform texture2D rdm_shirradiance; -layout(binding = 5) uniform texture2D rdm_atlas; -layout(binding = 3) uniform sampler rdm_linsmp; - -const float PI = 3.1415927; -const float ROUGHNESS_SPEC_CUTOFF = 0.7; -const float ROUGHNESS_RAYMARCH_MAX = 0.2; - -vec3 sky(vec3 skypos, vec3 sunpos) { - vec3 npos = normalize(skypos); - float sDist = dot(npos, normalize(sunpos)); - - vec3 skyGradient = mix(skyBase, skyTop, clamp(npos.y * 2.0, 0.0, 0.7)); - vec3 result = skyGradient; - - result += sunHalo * clamp((sDist - 0.95) * 10.0, 0.0, 0.8) * 0.2; - - if (sDist > 0.9999) - result = sunDisk; - - result += mix(horizonHalo, vec3(0.0), clamp(abs(npos.y) * 80.0, 0.0, 1.0)) * 0.1; - return result; -} - -vec3 sky_reflect(vec3 R, vec3 sunpos) { - if (R.y < 0.0) R = reflect(R, vec3(0.0, 1.0, 0.0)); - return sky(R, sunpos); -} - -float DistributionGGX(vec3 N, vec3 H, float roughness) { - float a = roughness * roughness; - float a2 = a * a; - float NdotH = max(dot(N, H), 0.0); - float denom = NdotH * NdotH * (a2 - 1.0) + 1.0; - return a2 / (PI * denom * denom); -} - -float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { - float r = roughness + 1.0; - float k = (r * r) / 8.0; - float NdotV = max(dot(N, V), 0.0); - float NdotL = max(dot(N, L), 0.0); - float ggx1 = NdotL / (NdotL * (1.0 - k) + k); - float ggx2 = NdotV / (NdotV * (1.0 - k) + k); - return ggx1 * ggx2; -} - -vec3 fresnelSchlick(float cosTheta, vec3 F0) { - return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); -} - -vec3 FresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness) { - return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); -} - -vec2 rdm_hemioct(vec3 v, int face) { - vec3 vc = v; - if (face / 2 == 0) { vc.z = v.y; vc.y = v.z; } - if (face / 2 == 2) { vc.z = v.x; vc.x = v.z; } - if (face % 2 == 1) { vc.z *= -1.0; } - - vec2 p = vc.xy * (1.0 / (abs(vc.x) + abs(vc.y) + vc.z)); - return vec2(p.x + p.y, p.x - p.y) * 0.5 + 0.5; -} - -int rdm_face_from_normal(vec3 N) { - vec3 a = abs(N); - if (a.y >= a.x && a.y >= a.z) return N.y >= 0.0 ? 0 : 1; - if (a.z >= a.x && a.z >= a.y) return N.z >= 0.0 ? 2 : 3; - return N.x >= 0.0 ? 4 : 5; -} - -ivec2 rdm_face_offset(vec4 rect, int face, int rdmSize, ivec2 atlasSize) { - int col = face % 2; - int row = face / 2; - return ivec2(int(rect.x * float(atlasSize.x)) + col * rdmSize, - int(rect.y * float(atlasSize.y)) + row * rdmSize); -} - -vec3 rdm_spec_raymarch(vec3 N, vec3 V, vec3 diff, int face, ivec2 faceOffset, int rdmSize, vec2 atlasInvSize) { - vec3 reflected = reflect(V, N); - float maxDist = 20.0; - int steps = 40; - float stepSize = maxDist / float(steps); - - for (int i = 0; i < steps; i++) { - float t = stepSize * float(i + 1); - vec3 samplePos = diff + t * reflected; - if (dot(samplePos, N) < 0.0) continue; - - vec3 dir = normalize(samplePos); - vec2 hemiUV = rdm_hemioct(dir, face); - vec2 texCoord = (vec2(faceOffset) + hemiUV * float(rdmSize)) * atlasInvSize; - vec4 s = texture(sampler2D(rdm_atlas, rdm_linsmp), texCoord, 0); - - float dist = length(samplePos); - if (s.a > 0.0 && s.a < dist && s.a + stepSize > dist) - return s.rgb; - } - - return sky_reflect(reflected, sunPosition); -} - -vec3 rdm_spec_single(vec3 N, vec3 V, vec3 diff, int face, ivec2 faceOffset, int rdmSize, vec2 atlasInvSize) { - vec3 reflected = reflect(V, N); - vec3 sampleDir = normalize(diff + 2.0 * reflected); - vec2 hemiUV = rdm_hemioct(sampleDir, face); - vec2 texCoord = (vec2(faceOffset) + hemiUV * float(rdmSize)) * atlasInvSize; - return texture(sampler2D(rdm_atlas, rdm_linsmp), texCoord).rgb; -} - -void main() { - if (vpos.y < planeHeight - 0.01 && is_reflection == 1) discard; - - vec3 sample_pos = ipos - orig_normal * 0.02; - vec4 trixel_material; - int maxSteps = is_reflection == 1 ? 1 : 3; - for (int i = 0; i < maxSteps; i++) { - ivec2 texel = ivec2( - int(clamp(sample_pos.z, 0.0001, 0.99999) * 16.0), - int(clamp(sample_pos.y, 0.0001, 0.99999) * 16.0) + - int(clamp(sample_pos.x, 0.0001, 0.99999) * 16.0) * 16 - ); - trixel_material = texelFetch(sampler2D(rdm_triletex, rdm_trilesmp), texel, 0); - if (dot(trixel_material, trixel_material) > 0.0001) break; - sample_pos += to_center * 0.1; - } - - vec3 albedo = trixel_material.xyz; - - int packed = int(round(trixel_material.w * 255.0)); - float emittance = 0.0; - int roughnessInt = 0; - float roughness = 0.0; - float metallic = 0.0; - - if ((packed & 0x1) != 0) { - emittance = float((packed >> 1) & 0x7F) / 127.0; - } else { - roughnessInt = (packed >> 5) & 0x7; - roughness = max(float(roughnessInt) / 7.0, 0.05); - metallic = float((packed >> 3) & 0x3) / 3.0; - } - - vec3 absN = abs(fnormal.xyz); - vec3 N; - if (absN.x >= absN.y && absN.x >= absN.z) N = vec3(sign(fnormal.x), 0.0, 0.0); - else if (absN.y >= absN.x && absN.y >= absN.z) N = vec3(0.0, sign(fnormal.y), 0.0); - else N = vec3(0.0, 0.0, sign(fnormal.z)); - - if (is_reflection == 1) { - vec3 L = normalize(sunPosition); - float NdotL = max(dot(N, L), 0.0); - frag_color = vec4(albedo * (NdotL * sunLightColor * sunIntensity + 0.1), 1.0); - return; - } - - vec3 V = normalize(cam - vpos); - vec3 L = normalize(sunPosition); - vec3 H = normalize(V + L); - float NdotL = max(dot(N, L), 0.0); - float NdotV = max(dot(N, V), 0.0); - float HdotV = max(dot(H, V), 0.0); - - vec3 F0 = mix(vec3(0.04), albedo, metallic); - vec3 F = fresnelSchlick(HdotV, F0); - float NDF = DistributionGGX(N, H, roughness); - float G = GeometrySmith(N, V, L, roughness); - vec3 kD = (1.0 - F) * (1.0 - metallic); - - vec4 light_proj = mvp_shadow * vec4(floor(vpos * 16.0) / 16.0, 1.0); - vec3 light_ndc = light_proj.xyz / light_proj.w * 0.5 + 0.5; - light_ndc.z -= 0.001; - float shadow = texture(sampler2DShadow(rdm_shadowtex, rdm_shadowsmp), light_ndc); - - vec3 direct_specular = (NDF * G * F) / (4.0 * NdotV * NdotL + 0.0001); - vec3 light = shadow * (kD * albedo / PI + direct_specular) * NdotL * sunLightColor * sunIntensity; - - float ssao = texture(sampler2D(rdm_ssaotex, rdm_linsmp), - gl_FragCoord.xy / vec2(float(screen_w), float(screen_h))).r; - vec3 emissive = albedo * emittance * emissive_scale; - - vec3 Frough = FresnelSchlickRoughness(NdotV, F0, roughness); - - vec3 hemispherePos = trileCenter + N * 0.49; - vec3 diff = vpos - hemispherePos; - - if (roughnessInt <= 1) { - int face = rdm_face_from_normal(N); - ivec2 atlasSize = textureSize(sampler2D(rdm_atlas, rdm_linsmp), 0); - vec2 atlasInvSz = 1.0 / vec2(atlasSize); - int rdmSize = int(atlas_rect.z * float(atlasSize.x)) / 2; - ivec2 fOff = rdm_face_offset(atlas_rect, face, rdmSize, atlasSize); - - vec3 indirectSpec = roughness < ROUGHNESS_RAYMARCH_MAX - ? rdm_spec_raymarch(N, -cv, diff, face, fOff, rdmSize, atlasInvSz) - : rdm_spec_single (N, -cv, diff, face, fOff, rdmSize, atlasInvSz); - - vec2 envBRDF = texture(sampler2D(rdm_brdflut, rdm_linsmp), vec2(NdotV, roughness)).rg; - float roughnessBell = 1.0 - 0.7 * sin(roughness * PI); - float grazingSuppr = 1.0 - 0.9 * roughness * sin(roughness * PI) * pow(1.0 - NdotV, 2.0); - float specRoughFade = 1.0 - clamp((roughness - 0.5) / 0.3, 0.0, 1.0); - - light += indirectSpec * (Frough * envBRDF.x + envBRDF.y) - * indirect_spec_scale * roughnessBell * grazingSuppr * specRoughFade; - } else if (roughness < ROUGHNESS_SPEC_CUTOFF) { - vec3 R = reflect(-V, N); - vec2 envBRDF = texture(sampler2D(rdm_brdflut, rdm_linsmp), vec2(NdotV, roughness)).rg; - float specRoughFd = 1.0 - clamp((roughness - 0.5) / 0.3, 0.0, 1.0); - light += sky_reflect(R, sunPosition) * (Frough * envBRDF.x + envBRDF.y) - * indirect_spec_scale * specRoughFd; - } - - vec3 indirectDiff; - if (sh_enabled == 1) { - vec2 sh_uv = gl_FragCoord.xy / vec2(float(screen_w), float(screen_h)); - indirectDiff = texture(sampler2D(rdm_shirradiance, rdm_linsmp), sh_uv).rgb * indirect_tint; - } else { - indirectDiff = ambient_color * ambient_intensity; - } - - light += (1.0 - Frough) * (1.0 - metallic) * indirectDiff / PI * albedo * ssao * indirect_diff_scale; - - vec3 final_color = light + emissive; - frag_color = vec4(mix(deepColor, final_color, smoothstep(0.0, planeHeight, vpos.y)), 1.0); - - if (is_preview == 1) frag_color.rgb = mix(frag_color.rgb, vec3(0.3, 0.7, 1.0), 0.5); - else if (is_preview == 2) frag_color.rgb = mix(frag_color.rgb, vec3(1.0, 0.3, 0.2), 0.5); -} -@end - -@program trile_rdm vs_trile_rdm fs_trile_rdm diff --git a/src/shaders/shader_trile_shadow.glsl b/src/shaders/shader_trile_shadow.glsl deleted file mode 100644 index b3612cd..0000000 --- a/src/shaders/shader_trile_shadow.glsl +++ /dev/null @@ -1,46 +0,0 @@ -@vs vs_trile_shadow - -layout(location=0) in vec4 position; -layout(location=1) in vec4 normal; // same slot as shader_trile; not used -layout(location=2) in vec4 centre; // same slot as shader_trile; not used -layout(location=3) in vec4 instance; // xyz=world_pos, w=orientation - -layout(binding=0) uniform trile_shadow_vs_params { - mat4 mvp; -}; - -mat3 rot_x(float a) { float c=cos(a),s=sin(a); return mat3(1,0,0, 0,c,-s, 0,s,c); } -mat3 rot_z(float a) { float c=cos(a),s=sin(a); return mat3(c,-s,0, s,c,0, 0,0,1); } -mat3 rot_y(float a) { float c=cos(a),s=sin(a); return mat3(c,0,s, 0,1,0, -s,0,c); } - -mat3 get_orientation_matrix(int ori) { - int face = ori / 4; - int twist = ori % 4; - float PI = 3.1415927; - mat3 base; - if (face == 0) base = mat3(1.0); - else if (face == 1) base = rot_x(PI); - else if (face == 2) base = rot_z(-PI*0.5); - else if (face == 3) base = rot_z( PI*0.5); - else if (face == 4) base = rot_x( PI*0.5); - else base = rot_x(-PI*0.5); - return base * rot_y(float(twist) * PI * 0.5); -} - -void main() { - int ori = int(round(instance.w)); - mat3 rot = get_orientation_matrix(ori); - vec3 local = position.xyz - 0.5; - vec3 rotated = rot * local + 0.5; - gl_Position = mvp * vec4(rotated + instance.xyz, 1.0); -} -@end - -@fs fs_trile_shadow -out vec4 frag_color; -void main() { - frag_color = vec4(0.0); -} -@end - -@program trile_shadow vs_trile_shadow fs_trile_shadow diff --git a/src/shaders/shader_trixel.glsl b/src/shaders/shader_trixel.glsl deleted file mode 100644 index 942e598..0000000 --- a/src/shaders/shader_trixel.glsl +++ /dev/null @@ -1,172 +0,0 @@ -@vs vs_trixel - -in vec4 position; -in vec4 normal; -in vec4 inst; -in vec4 inst_col; - -layout(binding=0) uniform vs_params { - mat4 mvp; - vec3 camera; - vec3 world_offset; - mat4 tile_rotation; -}; - -out vec4 color; -out vec4 fnormal; -out vec4 pos; -out vec3 cam; -out float vtrixel_state; - -void main() { - vec3 instancepos = inst.xyz; - vec3 local = position.xyz + instancepos; - vec3 rotated = (tile_rotation * vec4(local - 0.5, 0.0)).xyz + 0.5; - gl_Position = mvp * vec4(rotated + world_offset, 1.0); - fnormal = tile_rotation * vec4(normal.xyz, 0.0); - color = inst_col; - pos = gl_Position; - cam = camera; - vtrixel_state = inst.w; -} -@end - -@fs fs_trixel - -layout(binding=2) uniform trixel_fs_params { - int view_mode; - float brightness; -}; - -layout(binding=1) uniform trixel_world_config { - vec3 skyBase; - vec3 skyTop; - vec3 sunDisk; - vec3 horizonHalo; - vec3 sunHalo; - vec3 sunLightColor; - vec3 sunPosition; - float sunIntensity; - float skyIntensity; - - int hasClouds; - - float planeHeight; - int animatePlaneHeight; - vec3 waterColor; - vec3 deepColor; - - float time; -}; - -in vec4 color; -in vec4 fnormal; -in vec4 pos; -in vec3 cam; -in float vtrixel_state; -out vec4 frag_color; - -const float PI = 3.1412854; - - -float DistributionGGX(vec3 N, vec3 H, float roughness) { - float a = roughness*roughness; - float a2 = a*a; - float NdotH = max(dot(N, H), 0.0); - float NdotH2 = NdotH*NdotH; - float num = a2; - float denom = (NdotH2 * (a2 - 1.0) + 1.0); - denom = PI * denom * denom; - return num / denom; -} - -float GeometrySchlickGGX(float NdotV, float roughness) { - float r = (roughness + 1.0); - float k = (r*r) / 8.0; - float num = NdotV; - float denom = NdotV * (1.0 - k) + k; - return num / denom; -} - -float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { - float NdotV = max(dot(N, V), 0.0); - float NdotL = max(dot(N, L), 0.0); - float ggx2 = GeometrySchlickGGX(NdotV, roughness); - float ggx1 = GeometrySchlickGGX(NdotL, roughness); - return ggx1 * ggx2; -} - - -vec3 fresnelSchlick(float cosTheta, vec3 F0) { - return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); -} - -void main() { - // Get the material info. - vec3 albedo = color.xyz; - int packedMaterial = int(round(color.w*255.0)); - float emittance = 0.0; - int roughnessInt = 0; - float roughness = 0.05; - float metallic = 0.0; - if ((packedMaterial & 0x1) != 0) { - emittance = float((packedMaterial >> 1) & 0x7F) / 127.0; - } else { - roughnessInt = (packedMaterial >> 5) & 0x7; - roughness = max(float(roughnessInt) / 7.0, 0.05); - metallic = float((packedMaterial >> 3) & 0x3) / 3.0; - } - - // Ambient light. - vec3 light = 0.3 * albedo; - - // Emissive — applied after lighting so emissive surfaces glow. - vec3 emissive = albedo * emittance * 5.0; - - vec3 N = normalize(fnormal.xyz); - vec3 V = normalize(cam - pos.xyz); - vec3 L = normalize(sunPosition); - vec3 H = normalize(V + L); - - vec3 F0 = vec3(0.04); - F0 = mix(F0, albedo, metallic); - vec3 F = fresnelSchlick(max(dot(H,V), 0.0), F0); - float NDF = DistributionGGX(N, H, roughness); - float G = GeometrySmith(N, V, L, roughness); - vec3 numerator = NDF * G * F; - float denominator = 4.0 * max(dot(N, V), 0.0) * max(dot(N, L), 0.0) + 0.0001; - vec3 specular = numerator / denominator; - float NdotL = max(dot(N, L), 0.0); - vec3 kD = vec3(1.0) - F; - kD *= 1.0 - metallic; - - light += (kD * albedo / PI + specular) * NdotL * vec3(1.0, 1.0, 1.0); - - if (view_mode == 1) { - // Normals: map face normals to RGB so each axis gets a distinct color. - frag_color = vec4(N * 0.5 + 0.5, 1.0); - } else if (view_mode == 2) { - // Albedo: simple diffuse shading, no specular/roughness/metallic eval. - float diffuse = max(dot(N, L), 0.0) * 0.6 + 0.4; - frag_color = vec4(albedo * diffuse + emissive, 1.0); - } else if (view_mode == 3) { - // Normal+Albedo: normal color used as a per-face tint on the albedo. - // Shows paint color and face orientation simultaneously. - vec3 normal_tint = N * 0.5 + 0.5; - float diffuse = max(dot(N, L), 0.0) * 0.4 + 0.6; - frag_color = vec4(albedo * normal_tint * diffuse + emissive, 1.0); - } else { - frag_color = vec4(light + emissive, 1.0); - } - - frag_color.rgb *= brightness; - - // Overlay highlight for hovered / selected / brush-radius trixels in all view modes. - // State is encoded per-instance in inst.w: 0=normal, 1=hovered, 2=selected, 3=in-brush. - if (vtrixel_state > 0.5) { - frag_color.rgb = mix(frag_color.rgb, vec3(1.0, 1.0, 0.5), 0.5); - } -} -@end - -@program trixel vs_trixel fs_trixel diff --git a/src/shaders/sokol-shdc b/src/shaders/sokol-shdc deleted file mode 100755 index 13500ba..0000000 Binary files a/src/shaders/sokol-shdc and /dev/null differ diff --git a/src/shaders/sokol-shdc-mac b/src/shaders/sokol-shdc-mac deleted file mode 100755 index 17e99ca..0000000 Binary files a/src/shaders/sokol-shdc-mac and /dev/null differ diff --git a/src/tests/index.jai b/src/tests/index.jai index 279eaaa..9d50d50 100644 --- a/src/tests/index.jai +++ b/src/tests/index.jai @@ -2,6 +2,5 @@ // loaded separately so the game side gets it too. #load "world_test.jai"; -#load "../editor/rdm_disk_test.jai"; #load "engine_exe_tests/index.jai"; diff --git a/src/trile.jai b/src/trile.jai index 9669734..3d61e29 100644 --- a/src/trile.jai +++ b/src/trile.jai @@ -1,30 +1,13 @@ #scope_file -trile_gfx_table : Table(string, Trile_GFX); +trile_mesh_table : Table(string, Trile_Mesh); trile_table : Table(string, Trile); #scope_export editor_current_trile : *Trile = null; -Trile_GFX_LOD :: struct { - vertex_buffer : sg_buffer; - normal_buffer : sg_buffer; - color_buffer : sg_buffer; - vertex_count : s64; -} - -Trile_GFX :: struct { - trixel_colors : sg_image; - vertex_buffer : sg_buffer; - normal_buffer : sg_buffer; - centre_buffer : sg_buffer; - vertices : []float; - vertex_count : s64; - - lod_4 : Trile_GFX_LOD; // 4^3 cube grid - lod_2 : Trile_GFX_LOD; // 2^3 cube grid -}; +TRIXEL_SIZE :: 1.0 / 16.0; get_trile_table_ptr :: () -> *Table(string, Trile) { return *trile_table; @@ -35,7 +18,7 @@ trile_gen_heightmap :: (trile: *Trile) { for z: 0..15 { height : u8 = 16; for y: 0..15 { - if trile.trixels[x][15-y][z].empty == true { + if trile.trixels[x][15-y][z] == 0 { height -= 1; } else { break; @@ -46,61 +29,37 @@ trile_gen_heightmap :: (trile: *Trile) { } } -// @Note: Creates the gfx things if they are not yet created. -// Could be a bad idea to do this implicitly. Think about it -// once it's more clear how this whole trile storage thing -// will pan out. -ktjst -get_trile_gfx :: (name: string) -> (Trile_GFX, success: bool) { - success, value := table_find(*trile_gfx_table, name); - if !success { - // Check if such a trile exists. - trile, success_with_trile := get_trile(name); - if success_with_trile { - // Okay, so we have the trile, let's generate the GFX stuff for it. - gfx := generate_trile_gfx_matias(trile); - set_trile_gfx(name, gfx, true); - return gfx, true; - } else { - return .{}, false; - } - } - return value, success; +// Meshes are created the first time a trile is drawn. +get_trile_mesh :: (name: string) -> (Trile_Mesh, success: bool) { + found, mesh := table_find(*trile_mesh_table, name); + if found return mesh, true; + trile, ok := get_trile(name); + if !ok return .{}, false; + mesh = trile_mesh_create(trile); + table_set(*trile_mesh_table, name, mesh); + return mesh, true; } -set_trile_gfx :: (name: string, gfx: Trile_GFX, skip_preexist_check: bool = false) { - if !skip_preexist_check { - old_gfx, success := get_trile_gfx(name); - if success { - sg_destroy_buffer(old_gfx.vertex_buffer); - sg_destroy_buffer(old_gfx.normal_buffer); - sg_destroy_buffer(old_gfx.centre_buffer); - sg_destroy_image(old_gfx.trixel_colors); - destroy_trile_gfx_lod(*old_gfx.lod_4); - destroy_trile_gfx_lod(*old_gfx.lod_2); - array_reset(*old_gfx.vertices); - log_debug("Destroyed old GFX buffers for trile: %", name); - } - } - table_set(*trile_gfx_table, name, gfx); +// After editing a trile's trixels in place. +trile_changed :: (trile: *Trile) { + found, mesh := table_find(*trile_mesh_table, trile.name); + if found trile_mesh_update(mesh, trile); +} + +forget_trile_mesh :: (name: string) { + found, mesh := table_find(*trile_mesh_table, name); + if !found return; + trile_mesh_destroy(mesh); + table_remove(*trile_mesh_table, name); } set_trile :: (name: string, trile: Trile) { log_debug("Setting trile with name: %", name); - // Destroy and remove any cached GFX so it gets regenerated from new data. - gfx_exists, old_gfx := table_find(*trile_gfx_table, name); - if gfx_exists { - sg_destroy_buffer(old_gfx.vertex_buffer); - sg_destroy_buffer(old_gfx.normal_buffer); - sg_destroy_buffer(old_gfx.centre_buffer); - sg_destroy_image(old_gfx.trixel_colors); - destroy_trile_gfx_lod(*old_gfx.lod_4); - destroy_trile_gfx_lod(*old_gfx.lod_2); - array_reset(*old_gfx.vertices); - table_remove(*trile_gfx_table, name); - } saved_editor_name: string; if editor_current_trile then saved_editor_name = editor_current_trile.name; - table_set(*trile_table, name, trile); + stored := table_set(*trile_table, name, trile); + // Updated in place, so handles already uploaded with world chunks stay valid. + trile_changed(stored); if saved_editor_name.count > 0 { editor_current_trile = table_find_pointer(*trile_table, saved_editor_name); } @@ -128,17 +87,7 @@ rename_trile :: (old_name: string, new_name: string) { trile := get_trile(old_name); if !trile return; was_current := editor_current_trile != null && editor_current_trile.name == old_name; - gfx_exists, old_gfx := table_find(*trile_gfx_table, old_name); - if gfx_exists { - sg_destroy_buffer(old_gfx.vertex_buffer); - sg_destroy_buffer(old_gfx.normal_buffer); - sg_destroy_buffer(old_gfx.centre_buffer); - sg_destroy_image(old_gfx.trixel_colors); - destroy_trile_gfx_lod(*old_gfx.lod_4); - destroy_trile_gfx_lod(*old_gfx.lod_2); - array_reset(*old_gfx.vertices); - table_remove(*trile_gfx_table, old_name); - } + forget_trile_mesh(old_name); copy := trile.*; copy.name = sprint("%", new_name); set_trile(copy.name, copy); @@ -147,17 +96,7 @@ rename_trile :: (old_name: string, new_name: string) { } delete_trile :: (name: string) { - gfx_exists, old_gfx := table_find(*trile_gfx_table, name); - if gfx_exists { - sg_destroy_buffer(old_gfx.vertex_buffer); - sg_destroy_buffer(old_gfx.normal_buffer); - sg_destroy_buffer(old_gfx.centre_buffer); - sg_destroy_image(old_gfx.trixel_colors); - destroy_trile_gfx_lod(*old_gfx.lod_4); - destroy_trile_gfx_lod(*old_gfx.lod_2); - array_reset(*old_gfx.vertices); - table_remove(*trile_gfx_table, name); - } + forget_trile_mesh(name); table_remove(*trile_table, name); if editor_current_trile != null && editor_current_trile.name == name { editor_current_trile = null; @@ -175,6 +114,7 @@ lstrile :: () -> string { striles :: () { Jaison :: #import "Jaison"; + sswatches(); triles : [..]TrileSerialize; triles.allocator = temp; for v : trile_table { @@ -190,6 +130,7 @@ striles :: () { ltriles :: () { Jaison :: #import "Jaison"; + lswatches(); s := load_string_from_pack("game_core", "triles.json"); success, triles := Jaison.json_parse_string(s, [..]TrileSerialize,, temp); for triles { @@ -198,13 +139,81 @@ ltriles :: () { } } @Command -Material :: struct { +MAX_SWATCHES :: 256; + +// A colour and the material that goes with it. Trixels store the index into +// g_swatches; index 0 is never used and means empty. +Swatch :: struct { + used : bool; + name : string; + color : [3]u8; roughness : u8 = 4; - metallic : u8 = 0; - emittance : u8 = 0; // 0 = not emissive; 1-127 = emissive (replaces roughness/metallic in encoding) - color : Vector3 = .{1.0, 0.0, 1.0}; + metallic : u8; + emittance : u8; } +g_swatches : [MAX_SWATCHES]Swatch; + +swatch_add :: (name: string, color: [3]u8, roughness: u8 = 4, metallic: u8 = 0, emittance: u8 = 0) -> u8, success: bool { + for 1..MAX_SWATCHES-1 { + if g_swatches[it].used continue; + g_swatches[it] = .{used = true, name = copy_string(name), color = color, roughness = roughness, metallic = metallic, emittance = emittance}; + return cast(u8) it, true; + } + log_error("All % swatches are in use", MAX_SWATCHES - 1); + return 0, false; +} + +swatch_color :: (id: u8) -> Vector3 { + c := g_swatches[id].color; + return .{c[0] / 255.0, c[1] / 255.0, c[2] / 255.0}; +} + +swatch_in_use :: (id: u8) -> bool { + for trile: trile_table { + for x: 0..15 for y: 0..15 for z: 0..15 { + if trile.trixels[x][y][z] == id return true; + } + } + return false; +} + +Swatch_Serialize :: struct { + id : int; + name : string; + color : [3]u8; + roughness : u8; + metallic : u8; + emittance : u8; +} + +sswatches :: () { + Jaison :: #import "Jaison"; + list : [..]Swatch_Serialize; + list.allocator = temp; + for g_swatches { + if !it.used continue; + array_add(*list, .{it_index, it.name, it.color, it.roughness, it.metallic, it.emittance}); + } + #if OS != .WASM { + file :: #import "File"; + json := Jaison.json_write_string(list, " "); + file.write_entire_file(tprint("%/game_core/swatches.json", GAME_RESOURCES_DIR), json); + } +} @Command + +lswatches :: () { + Jaison :: #import "Jaison"; + for *g_swatches it.* = .{}; + data, found := get_raw_file_from_pack("game_core", "swatches.json"); + if !found return; + _, list := Jaison.json_parse_string(xx data, [..]Swatch_Serialize,, temp); + for list { + if it.id < 1 || it.id >= MAX_SWATCHES continue; + g_swatches[it.id] = .{used = true, name = sprint("%", it.name), color = it.color, roughness = it.roughness, metallic = it.metallic, emittance = it.emittance}; + } +} @Command + Palette_Entry :: struct { name : string; r : float = 1.0; @@ -222,15 +231,10 @@ Loaded_Palette :: struct { g_palettes : [..]Loaded_Palette; -Trixel :: struct { - material : Material; - empty : bool = false; -}; - Trile :: struct { name : string = "test"; is_opaque : bool = true; - trixels : [16][16][16] Trixel; + trixels : [16][16][16]u8; // swatch ids, 0 = empty skip_collision : bool; @@ -243,109 +247,39 @@ Trile :: struct { heightmap : [16][16]u8; }; -TrixelSerialize :: [5]u8; - TrileSerialize :: struct { name : string = "test"; - version : int = 0; is_opaque : u8 = 1; is_stairs : u8 = 0; skip_collision : u8 = 0; - trixels : [16][16][16] TrixelSerialize; + trixels : string; // base64 of the 16^3 swatch ids }; trile_to_serialize_form :: (t: Trile) -> TrileSerialize { - ts := TrileSerialize.{ + return .{ name = t.name, - version = 3, is_opaque = ifx t.is_opaque then cast(u8)1 else cast(u8)0, is_stairs = ifx t.is_stairs then cast(u8)1 else cast(u8)0, skip_collision = ifx t.skip_collision then cast(u8)1 else cast(u8)0, + trixels = base64_encode(.{size_of(type_of(t.trixels)), cast(*u8) *t.trixels},, temp), }; - - for i: 0..15 { - for j: 0..15 { - for k: 0..15 { - r,g,b,a := material_to_rgba(t.trixels[i][j][k].material); - ts.trixels[i][j][k] = .[ifx t.trixels[i][j][k].empty then cast(u8)0 else cast(u8)1, r,g,b,a]; - } - } - } - return ts; } trile_from_serialize_form :: (ts: TrileSerialize) -> Trile { t := Trile.{ name = sprint("%", ts.name) }; - if ts.version >= 2 t.is_opaque = ts.is_opaque != 0; - else t.is_opaque = true; - if ts.version >= 3 t.is_stairs = ts.is_stairs != 0; - else t.is_stairs = false; - if ts.version >= 3 t.skip_collision = ts.skip_collision != 0; - else t.skip_collision = false; - for i: 0..15 { - for j: 0..15 { - for k: 0..15 { - matinfo := ts.trixels[i][j][k]; - mat : Material; - if ts.version == 0 { - // Old format: bit 0=addRoughness(unused), bits 1-2=emittance(0-3), bits 3-4=metallic, bits 5-7=roughness - packed := matinfo[4]; - old_emittance := (packed >> 1) & 0x3; - mat.metallic = (packed >> 3) & 0x3; - mat.roughness = (packed >> 5) & 0x7; - mat.emittance = old_emittance * 42; // scale 0-3 → 0,42,84,126 - mat.color.x = cast(float) matinfo[1] / 255.0; - mat.color.y = cast(float) matinfo[2] / 255.0; - mat.color.z = cast(float) matinfo[3] / 255.0; - } else { - mat = material_from_rgba(matinfo[1], matinfo[2], matinfo[3], matinfo[4]); - } - t.trixels[i][j][k].material = mat; - t.trixels[i][j][k].empty = matinfo[0] == 0; - } - } + t.is_opaque = ts.is_opaque != 0; + t.is_stairs = ts.is_stairs != 0; + t.skip_collision = ts.skip_collision != 0; + ids, ok := base64_decode(ts.trixels,, temp); + if ok && ids.count == size_of(type_of(t.trixels)) { + memcpy(*t.trixels, ids.data, ids.count); + } else { + log_error("Trile % has broken trixel data", ts.name); } trile_gen_heightmap(*t); return t; } -material_encode_to_char :: (mat: Material) -> u8 { - if mat.emittance > 0 { - // Emissive mode: bit 0 = 1, bits 1-7 = emittance (0-127) - return 0x1 | ((mat.emittance & 0x7F) << 1); - } - // Material mode: bit 0 = 0, bits 3-4 = metallic, bits 5-7 = roughness - return ((mat.metallic & 0x3) << 3) | ((mat.roughness & 0x7) << 5); -} - -material_encode_to_float :: (mat: Material) -> float { - return cast(float)(material_encode_to_char(mat)) / 255.0; -} - -material_decode_from_char :: (packedMaterial: u8) -> Material { - mat : Material; - if packedMaterial & 0x1 { - mat.emittance = (packedMaterial >> 1) & 0x7F; - } else { - mat.roughness = (packedMaterial >> 5) & 7; - mat.metallic = (packedMaterial >> 3) & 3; - } - return mat; -} - -material_to_rgba :: (mat: Material) -> (r: u8, g: u8, b: u8, a: u8) { - r : u8 = cast(u8) (mat.color.x * 255.0); - g : u8 = cast(u8) (mat.color.y * 255.0); - b : u8 = cast(u8) (mat.color.z * 255.0); - a : u8 = material_encode_to_char(mat); - return r,g,b,a; -} - -material_from_rgba :: (r: u8, g: u8, b: u8, a: u8) -> Material { - mat := material_decode_from_char(a); - mat.color.x = (cast(float) r)/255.0; - mat.color.y = (cast(float) g)/255.0; - mat.color.z = (cast(float) b)/255.0; - return mat; -} +#scope_file +#import "Base64"; diff --git a/src/ui/demo.jai b/src/ui/demo.jai deleted file mode 100644 index 28f516e..0000000 --- a/src/ui/demo.jai +++ /dev/null @@ -1,59 +0,0 @@ -#if FLAG_DEMO_BUILD { - -demo_saved_ssao : float = -1.0; -demo_saved_tonemap : float = -1.0; -demo_saved_rdm_diff : float = -1.0; -demo_saved_rdm_spec : float = -1.0; - -demo_toggle_float :: (val: *float, saved: *float, default: float) { - if val.* > 0 { - saved.* = val.*; - val.* = 0.0; - } else { - val.* = ifx saved.* > 0 then saved.* else default; - } -} - -draw_demo_ui :: (theme: *GR.Overall_Theme) { - r := GR.get_rect(ui_w(86,0), ui_h(1,0), ui_w(13,0), ui_h(3,0)); - - diff_on := current_lighting_config.indirect_diff_scale > 0; - if GR.button(r, ifx diff_on then "Indirect Diffuse: ON" else "Indirect Diffuse: OFF") { - demo_toggle_float(*current_lighting_config.indirect_diff_scale, *demo_saved_rdm_diff, 1.0); - } - r.y += r.h * 1.3; - - spec_on := current_lighting_config.indirect_spec_scale > 0; - if GR.button(r, ifx spec_on then "Indirect Specular: ON" else "Indirect Specular: OFF") { - demo_toggle_float(*current_lighting_config.indirect_spec_scale, *demo_saved_rdm_spec, 1.0); - } - r.y += r.h * 1.3; - - if GR.button(r, ifx !bypass_shadows then "Shadows: ON" else "Shadows: OFF") { - bypass_shadows = !bypass_shadows; - } - r.y += r.h * 1.3; - - if GR.button(r, ifx !bypass_reflections then "Reflections: ON" else "Reflections: OFF") { - bypass_reflections = !bypass_reflections; - } - r.y += r.h * 1.3; - - ssao_on := current_post_process.ssao > 0; - if GR.button(r, ifx ssao_on then "SSAO: ON" else "SSAO: OFF") { - demo_toggle_float(*current_post_process.ssao, *demo_saved_ssao, 1.0); - } - r.y += r.h * 1.3; - - tonemap_on := current_post_process.tonemap > 0; - if GR.button(r, ifx tonemap_on then "Tonemapping: ON" else "Tonemapping: OFF") { - demo_toggle_float(*current_post_process.tonemap, *demo_saved_tonemap, 1.0); - } - r.y += r.h * 1.3; - - if GR.button(r, ifx !bypass_postprocess then "Post FX: ON" else "Post FX: OFF") { - bypass_postprocess = !bypass_postprocess; - } -} - -} // #if FLAG_DEMO_BUILD diff --git a/src/ui/ui.jai b/src/ui/ui.jai index f274ab2..8326bde 100644 --- a/src/ui/ui.jai +++ b/src/ui/ui.jai @@ -45,29 +45,21 @@ Ui_Font :: struct { character_height : int = 30; typical_descender : int = 1; typical_ascender : int = 1; - fons_font : s32 = 0; + face : Font_Face; temporary_glyphs : [..]Ui_Font_Glyph; temporary_glyphs_byte_offsets : [..]u32; temporary_glyphs_width_in_pixels : u32; }; ui_init_font_fields :: (font: *Ui_Font) { - m_str := "M"; - fonsSetFont(state.fons, xx font.fons_font); - fonsSetSize(state.fons, xx font.character_height); - - ascender, descender, line_h : float; - fonsVertMetrics(state.fons, *ascender, *descender, *line_h); - + ascender, descender := text_vertical_metrics(font.face, xx font.character_height); font.typical_descender = cast(int) descender; font.typical_ascender = cast(int) (ascender * 0.85); // @stupid fix to make the ascender not be so big. - - w := fonsTextBounds(state.fons, 0.0, 0.0, m_str.data, m_str.data + m_str.count, null); - font.em_width = xx w; + font.em_width = xx text_measure(font.face, xx font.character_height, "M"); } Ui_Texture :: struct { - tex: sg_image; + tex: Texture; } Ui_Rect :: struct { @@ -120,25 +112,8 @@ texture_load_from_memory :: (texture: *Ui_Texture, memory: []u8, srgb: bool, bui y : s32; channels : s32; data := stbi.stbi_load_from_memory(memory.data, xx memory.count, *x, *y, *channels, 4); - img := sg_alloc_image(); - - subimg : [6][16]sg_range; - subimg[0][0] = .{ - ptr = data, - size = xx (x * y * 4) - }; - - sg_init_image(img, *(sg_image_desc.{ - width = x, - height = y, - pixel_format = sg_pixel_format.RGBA8, - data = .{ - subimage = subimg - } - })); - + texture.tex = texture_create(x, y, .{x * y * 4, data}); stbi.stbi_image_free(data); - texture.tex = img; if !default_texture then default_texture = texture; return true; } @@ -147,31 +122,27 @@ gScissor : Ui_Rect; gScissorActive : bool = false; set_scissor :: (x0: s32, y0: s32, x1: s32, y1: s32) { - arb_tri_command_add(.{ type = .SET_SCISSOR, scissor = .{x0, y0, x1 - x0, y1 - y0}}); + immediate_flush(); + ui_scissor(x0, y0, x1 - x0, y1 - y0); } clear_scissor :: () { - arb_tri_command_add(.{type = .REMOVE_SCISSOR}); + immediate_flush(); + ui_scissor_clear(); } -gCurrentTexture : *Ui_Texture = null; -add_uvs : bool = false; +// Immediate-mode triangles are batched until the texture changes or something +// else has to go into the UI stream between them. +ui_batch : [..]Ui_Vertex; +ui_batch_texture : Texture; set_shader_for_color :: (enable_blend := false) { - arb_tri_command_add(.{ - type = .REMOVE_TEXTURE - }); - add_uvs = false; immediate_flush(); + ui_batch_texture = .{}; } - set_shader_for_images :: (texture: *Ui_Texture) { - arb_tri_command_add(.{ - type = .SET_TEXTURE, - texture = texture - }); - add_uvs = true; immediate_flush(); + ui_batch_texture = texture.tex; } gPreppedText: string; @@ -184,11 +155,7 @@ prepare_text :: (font: *Ui_Type_Indicator.Font, text: string, effects: Ui_Type_I return 0; } // print("Font: %\n", font); - fonsPushState(state.fons); - defer fonsPopState(state.fons); - fonsSetFont(state.fons, state.font_default.fons_font); - fonsSetSize(state.fons, xx font.character_height); - w := fonsTextBounds(state.fons, 0.0, 0.0, text.data, text.data + text.count, null); + w := text_measure(state.font_default.face, xx font.character_height, text); gPreppedText = text; gPreppedTextWidth = cast(s32) w; @@ -202,7 +169,7 @@ prepare_text :: (font: *Ui_Type_Indicator.Font, text: string, effects: Ui_Type_I for 0..(text.count-1) { glyph : Ui_Font_Glyph; - glyph.advance = cast(u32) fonsTextBounds(state.fons, 0.0, 0.0, text.data + it, text.data + it + 1, null); + glyph.advance = cast(u32) text_measure(state.font_default.face, xx font.character_height, .{1, text.data + it}); font.temporary_glyphs_width_in_pixels += glyph.advance; array_add(*font.temporary_glyphs, glyph); @@ -213,22 +180,8 @@ prepare_text :: (font: *Ui_Type_Indicator.Font, text: string, effects: Ui_Type_I } draw_prepared_text :: (font: *Ui_Type_Indicator.Font, x: s64, y: s64, text_color: Vector4, effects: Ui_Type_Indicator.Font_Effects = 0) { if gPreppedText.count < 1 then return; - fonsPushState(state.fons); - defer fonsPopState(state.fons); - fonsSetFont(state.fons, state.font_default.fons_font); - fonsSetSize(state.fons, xx font.character_height); - color := sfons_rgba(xx (255.0 * text_color.x), xx (255.0 * text_color.y), xx (255.0 * text_color.z), xx (255.0 * text_color.w)); - fonsSetColor(state.fons, color); - result := cast(*u8) temporary_alloc(gPreppedText.count + 1); // Add 1 for the zero. - memcpy(result, gPreppedText.data, gPreppedText.count); - result[gPreppedText.count] = 0; - sgl_layer(layer); - fonsDrawText(state.fons, xx x, xx y, result, null); - arb_tri_command_add(.{ - type = .DRAW_TEXT, - layer = layer - }); - layer += 1; + immediate_flush(); + ui_text(state.font_default.face, xx font.character_height, xx x, xx y, text_color, gPreppedText); } get_mouse_pointer_position :: (window: Ui_Type_Indicator.Window_Type, right_handed: bool) -> (x: int, y: int, success: bool) { return xx input_mouse_x, xx input_mouse_y, true; @@ -242,29 +195,9 @@ get_font_at_size :: (memory: [] u8, pixel_height: int) -> *Font { // TODO: Figure out what to do with the normal? immediate_triangle :: (p0: Vector3, p1: Vector3, p2: Vector3, c0 := Vector4.{1,1,1,1}, c1 := Vector4.{1,1,1,1}, c2 := Vector4.{1,1,1,1}, uv0 := Vector2.{}, uv1 := Vector2.{}, uv2 := Vector2.{}, normal := Vector3.{z=1}) { - tri: Arb_Tri; - tri.pos[0] = p0; - tri.pos[1] = p1; - tri.pos[2] = p2; - - tri.col[0] = c0; - tri.col[1] = c1; - tri.col[2] = c2; - - // This UV symbolizes that the sampler should not be used. - nullUV : Vector2 = .{-4, -2}; - - if !add_uvs { - tri.uv[0] = nullUV; - tri.uv[1] = nullUV; - tri.uv[2] = nullUV; - } else { - tri.uv[0] = flip_y_if_plat(uv0); - tri.uv[1] = flip_y_if_plat(uv1); - tri.uv[2] = flip_y_if_plat(uv2); - } - - arb_tri_add(tri); + array_add(*ui_batch, .{p0.xy, uv0, c0}); + array_add(*ui_batch, .{p1.xy, uv1, c1}); + array_add(*ui_batch, .{p2.xy, uv2, c2}); } immediate_rect :: (x: float, y: float, w: float, h: float, rotation: float = 0) { @@ -327,12 +260,9 @@ immediate_quad :: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2, color := } immediate_flush :: () { - arb_tri_command_add(.{ - type = .FLUSH_TRI, - tri_offset = arbTriState.latest_flush, - tri_count = arbTriState.trilist.count - arbTriState.latest_flush - }); - arbTriState.latest_flush = arbTriState.trilist.count; + if ui_batch.count == 0 return; + ui_triangles(ui_batch, ui_batch_texture); + array_reset_keeping_memory(*ui_batch); } init_ui :: () { @@ -412,20 +342,16 @@ draw_ui_rect_animation:: (r: GR.Rect, animationPlayer: *Animation_Player) { cast(float) frame.h / cast(float)animation.sheet_h, }; - uv0 := flip_y_if_plat(Vector2.{uv.x, uv.y}); - uv1 := flip_y_if_plat(Vector2.{uv.x + uv.z, uv.y}); - uv2 := flip_y_if_plat(Vector2.{uv.x + uv.z, uv.y + uv.w}); - uv3 := flip_y_if_plat(Vector2.{uv.x, uv.y + uv.w}); + uv0 := Vector2.{uv.x, uv.y}; + uv1 := Vector2.{uv.x + uv.z, uv.y}; + uv2 := Vector2.{uv.x + uv.z, uv.y + uv.w}; + uv3 := Vector2.{uv.x, uv.y + uv.w}; immediate_quad(.{r.x, r.y}, .{r.x + r.w, r.y}, .{r.x + r.w, r.y + r.h}, .{r.x, r.y + r.h}, .{0.9,0.9,0.9,1}, uv0, uv1, uv2, uv3); immediate_flush(); set_shader_for_color(); } -font_boundary :: () { - arb_tri_command_add(.{type = .FONT_BOUNDARY}); -} - render_ui :: () { voxel_theme := get_voxel_theme(); GR.set_default_theme(voxel_theme); @@ -437,10 +363,10 @@ render_ui :: () { } else { if !loading then game_ui(*voxel_theme); } - #if FLAG_DEMO_BUILD { if !in_editor_view && !loading then draw_demo_ui(*voxel_theme); } draw_settings_menu(); } ui_pass :: () { - render_ui(); // Generates commands that are handled in arb_tri_flush + render_ui(); + immediate_flush(); } diff --git a/src/world.jai b/src/world.jai index 34ca063..225628a 100644 --- a/src/world.jai +++ b/src/world.jai @@ -6,7 +6,7 @@ CHUNK_SIZE :: 32; Current_World :: struct { world : World; - pool : Pool.Pool; // A memory pool to allocate stuff for the lifetime of this level being active. For example RDMs. + pool : Pool.Pool; // A memory pool to allocate stuff for the lifetime of this level being active. valid : bool = false; }; @@ -44,46 +44,10 @@ Trile_Instance :: struct { } Chunk_Trile_Group :: struct { - trile_name : string; - - // Precalculated to save time when we are creating render tasks. - bounding_min : Vector3; - bounding_max : Vector3; - average_pos : Vector3; - - instances : [..]Trile_Instance; - is_buried : [..]bool; // Runtime-only, parallel to instances. Not serialized. + trile_name : string; + instances : [..]Trile_Instance; } -// Chunk-local, like the instances. Call after changing group.instances. -recompute_group_bounds :: (group: *Chunk_Trile_Group) { - if group.instances.count == 0 { - group.bounding_min = .{}; - group.bounding_max = .{}; - group.average_pos = .{}; - return; - } - - gmin := Vector3.{31,31,31}; - gmax := Vector3.{0,0,0}; - gavg := Vector3.{0,0,0}; - - for i : group.instances { - gmin.x = min(gmin.x, xx i.x); - gmin.y = min(gmin.y, xx i.y); - gmin.z = min(gmin.z, xx i.z); - gmax.x = max(gmax.x, xx i.x); - gmax.y = max(gmax.y, xx i.y); - gmax.z = max(gmax.z, xx i.z); - - gavg += Vector3.{xx i.x, xx i.y, xx i.z}; - } - gavg /= cast(float) group.instances.count; - - group.bounding_min = gmin; - group.bounding_max = gmax; - group.average_pos = gavg; -} Chunk :: struct { coord: Chunk_Key; @@ -95,10 +59,6 @@ Chunk :: struct { occupancy_mask : [32][32]u32; // We want to be easily able to identify stairs from the chunk. stairs_mask : [32][32]u32; - - sh_probe_grid: sg_image; // 192x4096 RGBA16F 2D texture (2 probes/trile/axis) - sh_valid: bool; - sh_dirty: bool; } Occupancy_State :: enum { @@ -146,32 +106,16 @@ Editor_Note :: struct { text : string; } -RDM_DEFAULT_SIZE :: 128; - -Rdm_Instance_Override :: struct { - x : s32; - y : s32; - z : s32; - rdm_enabled : bool; - rdm_size : s32; // side in px; 0 means legacy — treat as RDM_DEFAULT_SIZE. -} - -// Per-world entry of the global RDM atlas. atlas_rect is normalized UV (x, y, w, h). -Rdm_Atlas_Entry :: struct { - x, y, z : s32; - atlas_rect : Vector4; -} World :: struct { name : string; conf : World_Config; + environment : Environment; chunks : Table(Chunk_Key, Chunk, chunk_key_hash, chunk_key_compare); emitter_instances : [..]Particle_Emitter_Instance; notes : [..]Editor_Note; entities : [..]*Entity; next_entity_id : u32; - rdm_overrides : [..]Rdm_Instance_Override; - rdm_lookup : [..]Rdm_Atlas_Entry; // populated by bake (Step 5) and by loader (Step 6) } // The mask state a colliding trile instance contributes. Stairs only count as @@ -193,69 +137,6 @@ calculate_and_set_chunk_occupancy_mask :: (chunk: *Chunk) { } } -rdm_get_atlas_rect :: (world: *World, x: s32, y: s32, z: s32) -> (Vector4, bool) { - for world.rdm_lookup { - if it.x == x && it.y == y && it.z == z then return it.atlas_rect, true; - } - return .{}, false; -} - -is_rdm_instance_enabled :: (world: *World, x: s32, y: s32, z: s32) -> bool { - for world.rdm_overrides { - if it.x == x && it.y == y && it.z == z then return it.rdm_enabled; - } - return false; -} - -set_rdm_instance_enabled :: (world: *World, x: s32, y: s32, z: s32, enabled: bool) { - for *world.rdm_overrides { - if it.x == x && it.y == y && it.z == z { - if !enabled { - array_ordered_remove_by_index(*world.rdm_overrides, it_index); - } else { - it.rdm_enabled = true; - if it.rdm_size == 0 then it.rdm_size = RDM_DEFAULT_SIZE; - } - return; - } - } - if enabled { - array_add(*world.rdm_overrides, .{x=x, y=y, z=z, rdm_enabled=true, rdm_size=RDM_DEFAULT_SIZE}); - } -} - -get_rdm_instance_size :: (world: *World, x: s32, y: s32, z: s32) -> s32 { - for world.rdm_overrides { - if it.x == x && it.y == y && it.z == z { - if !it.rdm_enabled then return 0; - return ifx it.rdm_size > 0 then it.rdm_size else RDM_DEFAULT_SIZE; - } - } - return 0; -} - -set_rdm_instance_size :: (world: *World, x: s32, y: s32, z: s32, size: s32) { - for *world.rdm_overrides { - if it.x == x && it.y == y && it.z == z { - it.rdm_size = size; - return; - } - } -} - -RDM_SIZE_LADDER :: s32.[32, 64, 128, 256, 512, 1024, 2048, 4096]; - -rdm_cycle_size :: (cur: s32, dir: s32) -> s32 { - idx : s32 = 2; - for RDM_SIZE_LADDER { - if it == cur { idx = cast(s32) it_index; break; } - } - idx += dir; - if idx < 0 then idx = 0; - if idx >= cast(s32) RDM_SIZE_LADDER.count then idx = cast(s32) RDM_SIZE_LADDER.count - 1; - return RDM_SIZE_LADDER[idx]; -} - // Convert a world-space integer position to chunk coordinate. world_to_chunk_coord :: (wx: s32, wy: s32, wz: s32) -> Chunk_Key { return .{ @@ -338,11 +219,10 @@ init_world_system :: () { unload_current_world :: () { if !current_world.valid then return; - rdm_loader_cancel_all(); + world_clear(); for *chunk: current_world.world.chunks { for *group: chunk.groups { array_free(group.instances); - array_free(group.is_buried); } array_free(chunk.groups); } @@ -351,7 +231,6 @@ unload_current_world :: () { // Entity ids restart per world, so a stale editor selection would latch onto // an unrelated entity in the next one. #if OS != .WASM { level_editor_clear_entity_selection(); } - array_free(current_world.world.rdm_lookup); Pool.reset(*current_world.pool); current_world.valid = false; } @@ -361,101 +240,18 @@ set_loaded_world :: (world: World) { current_world.world = world; current_world.valid = true; resolve_emitter_definitions(*current_world.world); - for *chunk: current_world.world.chunks { - recompute_buried_for_chunk(*current_world.world, chunk); - } + for *chunk: current_world.world.chunks upload_chunk(chunk); } -is_cell_opaque :: (name: string) -> bool { - if name.count == 0 return false; - t, ok := get_trile(name); - if !ok return false; - return t.is_opaque; -} - -trile_at_world :: (world: *World, wx: s32, wy: s32, wz: s32) -> string { - key := world_to_chunk_coord(wx, wy, wz); - chunk := table_find_pointer(*world.chunks, key); - if !chunk return ""; - lx, ly, lz := world_to_local(wx, wy, wz); - for *group: chunk.groups { - for inst: group.instances { - if inst.x == lx && inst.y == ly && inst.z == lz { - return group.trile_name; - } - } - } - return ""; -} - -BURIED_DIRS :: s32.[ 1,0,0, -1,0,0, 0,1,0, 0,-1,0, 0,0,1, 0,0,-1 ]; - -compute_buried_at_world :: (world: *World, wx: s32, wy: s32, wz: s32) -> bool { - for axis: 0..5 { - nwx := wx + BURIED_DIRS[axis*3+0]; - nwy := wy + BURIED_DIRS[axis*3+1]; - nwz := wz + BURIED_DIRS[axis*3+2]; - if !is_cell_opaque(trile_at_world(world, nwx, nwy, nwz)) return false; - } - return true; -} - -recompute_buried_for_chunk :: (world: *World, chunk: *Chunk) { - // Build an O(1) local lookup grid (32^3 trile names) for this chunk so the - // common in-chunk neighbor case is a single index lookup. Cross-chunk - // neighbors fall back to trile_at_world. - GRID :: CHUNK_SIZE * CHUNK_SIZE * CHUNK_SIZE; - grid: [GRID] string; - grid_data := grid; - for *group: chunk.groups { - for inst: group.instances { - idx := cast(int)inst.x + CHUNK_SIZE * (cast(int)inst.y + CHUNK_SIZE * cast(int)inst.z); - grid_data[idx] = group.trile_name; - } - } - - for *group: chunk.groups { - array_resize(*group.is_buried, group.instances.count); - for inst, i: group.instances { - wx, wy, wz := chunk_local_to_world(chunk.coord, inst.x, inst.y, inst.z); - buried := true; - for axis: 0..5 { - nwx := wx + BURIED_DIRS[axis*3+0]; - nwy := wy + BURIED_DIRS[axis*3+1]; - nwz := wz + BURIED_DIRS[axis*3+2]; - neighbor_name: string; - nkey := world_to_chunk_coord(nwx, nwy, nwz); - if nkey == chunk.coord { - nlx, nly, nlz := world_to_local(nwx, nwy, nwz); - nidx := cast(int)nlx + CHUNK_SIZE * (cast(int)nly + CHUNK_SIZE * cast(int)nlz); - neighbor_name = grid_data[nidx]; - } else { - neighbor_name = trile_at_world(world, nwx, nwy, nwz); - } - if !is_cell_opaque(neighbor_name) { - buried = false; - break; - } - } - group.is_buried[i] = buried; - } - } -} - -recompute_buried_at_cell :: (world: *World, wx: s32, wy: s32, wz: s32) { - key := world_to_chunk_coord(wx, wy, wz); - chunk := table_find_pointer(*world.chunks, key); - if !chunk return; - lx, ly, lz := world_to_local(wx, wy, wz); - for *group: chunk.groups { - for inst, i: group.instances { - if inst.x == lx && inst.y == ly && inst.z == lz { - if group.is_buried.count != group.instances.count array_resize(*group.is_buried, group.instances.count); - group.is_buried[i] = compute_buried_at_world(world, wx, wy, wz); - return; - } - } +// Hands a chunk's triles to the renderer. Call after loading or editing it. +upload_chunk :: (chunk: *Chunk) { + groups: [..]World_Group; + groups.allocator = temp; + for chunk.groups { + mesh, ok := get_trile_mesh(it.trile_name); + if ok array_add(*groups, .{mesh, it.instances}); } + world_set_chunk(chunk.coord, groups); } get_note_locations :: (note : string) -> []Vector3 { @@ -487,13 +283,6 @@ trile_instance_at_chunk :: (chunk: *Chunk, lx: s32, ly: s32, lz: s32) -> (bool, return false, .{}, null; } -invalidate_buried_around :: (world: *World, wx: s32, wy: s32, wz: s32) { - recompute_buried_at_cell(world, wx, wy, wz); - for axis: 0..5 { - recompute_buried_at_cell(world, wx + BURIED_DIRS[axis*3+0], wy + BURIED_DIRS[axis*3+1], wz + BURIED_DIRS[axis*3+2]); - } -} - resolve_emitter_definitions :: (world: *World) { for *inst: world.emitter_instances { inst.definition = get_emitter_def(inst.definition_name); @@ -507,10 +296,10 @@ resolve_emitter_definitions :: (world: *World) { clear_world :: () { if !current_world.valid then return; + world_clear(); for *chunk: current_world.world.chunks { for *group: chunk.groups { array_free(group.instances); - array_free(group.is_buried); } array_free(chunk.groups); } @@ -535,7 +324,6 @@ World_Json :: struct { emitters : [..]World_Json_Emitter; notes : [..]World_Json_Note; entities : [..]World_Json_Entity; - rdm_overrides : [..]World_Json_Rdm_Override; } World_Json_Config :: struct { @@ -556,6 +344,7 @@ World_Json_Config :: struct { waterShininess : float; waterReflectivity : float = 0.0; waterDistortion : float = 0.007; + indoor : s32; } World_Json_Chunk :: struct { @@ -588,14 +377,6 @@ World_Json_Entity :: struct { fields : [..]Entity_Field; } -World_Json_Rdm_Override :: struct { - x : s32; - y : s32; - z : s32; - rdm_enabled : bool; - rdm_size : s32; -} - // World_Config serialized as a fixed-size binary blob. // We serialize it field-by-field to avoid padding issues. World_Config_Binary :: struct { @@ -719,6 +500,7 @@ world_config_to_json :: (conf: *World_Config) -> World_Json_Config { jc.waterShininess = conf.waterShininess; jc.waterReflectivity = conf.waterReflectivity; jc.waterDistortion = conf.waterDistortion; + jc.indoor = conf.indoor; return jc; } @@ -741,6 +523,7 @@ world_config_from_json :: (jc: *World_Json_Config) -> World_Config { conf.waterShininess = ifx jc.waterShininess > 0 then jc.waterShininess else 64.0; conf.waterReflectivity = jc.waterReflectivity; conf.waterDistortion = jc.waterDistortion; + conf.indoor = jc.indoor; return conf; } @@ -826,11 +609,6 @@ save_world :: (world: *World) -> (json: string, chunks_bin: string) { array_add(*wj.entities, je); } - for ov: world.rdm_overrides { - size := ifx ov.rdm_size > 0 then ov.rdm_size else RDM_DEFAULT_SIZE; - array_add(*wj.rdm_overrides, .{x=ov.x, y=ov.y, z=ov.z, rdm_enabled=ov.rdm_enabled, rdm_size=size}); - } - json_str := Jaison.json_write_string(wj, " "); return json_str, builder_to_string(*bin_builder); } @@ -873,7 +651,6 @@ load_world_from_json :: (json_str: string, chunk_bin: []u8) -> (World, bool) { inst := read_value(chunk_data, *chunk_cursor, Trile_Instance); array_add(*group.instances, inst); } - recompute_group_bounds(*group); array_add(*chunk.groups, group); } calculate_and_set_chunk_occupancy_mask(*chunk); @@ -906,11 +683,6 @@ load_world_from_json :: (json_str: string, chunk_bin: []u8) -> (World, bool) { } } - for jov: wj.rdm_overrides { - size := ifx jov.rdm_size > 0 then jov.rdm_size else RDM_DEFAULT_SIZE; - array_add(*world.rdm_overrides, .{x=jov.x, y=jov.y, z=jov.z, rdm_enabled=jov.rdm_enabled, rdm_size=size}); - } - return world, true; } @@ -936,35 +708,21 @@ World_Config :: struct { waterReflectivity : float = 0.0; @Slider,0,1,0.05 waterDistortion : float = 0.007; @Slider,0,0.05,0.001 hsv_lighting : s32 = 1; @Slider,0,1,1 + // Indoor levels: no sun shadows (faces toward the sun still light up), a + // flat skyBase instead of the sky, and no water. The reflection plane moves + // to the top of the floor layer (y = 1) for floor reflections. + indoor : s32 = 0; @Slider,0,1,1 // ambientColor : Vector3 = .{1.0, 1.0, 1.0}; @Color // ambientIntensity : float = 0.3; @Slider,0,3,0.1 } -// Copies over all the fields of our world config into a given shader type. -// Requires that the shader type has all of the fields the world config has. -world_config_to_shader_type :: (wc: *World_Config, data: *$T) { - generate_copy_code :: () -> string { - builder : String_Builder; - ti_src := type_info(World_Config); - ti_dst := type_info(T); - for src_member: ti_src.members { - has_field := false; - for dst_member: ti_dst.members { - if dst_member.name == src_member.name { has_field = true; break; } - } - if !has_field continue; - if src_member.type == type_info(Vector3) then print_to_builder(*builder, "data.% = wc.%.component;\n", src_member.name, src_member.name); - else print_to_builder(*builder, "data.% = wc.%;\n", src_member.name, src_member.name); - } - return builder_to_string(*builder); - } - data.time = xx get_time(); - #insert #run,stallable generate_copy_code(); -} +INDOOR_REFLECTION_PLANE :: 1.0; +// The planar reflection height: the water surface outdoors, the floor indoors. effective_plane_height :: (wc: *World_Config) -> float { + if wc.indoor return INDOOR_REFLECTION_PLANE; if wc.animatePlaneHeight { return wc.planeHeight * (1.0 + sin(cast(float)get_time() * 0.5) * 0.1); } @@ -1013,3 +771,4 @@ draw_world_picker :: (r_in: GR.Rect, theme: *GR.Overall_Theme) { } } } + diff --git a/test_game/resources/game_core/postprocess.json b/test_game/resources/game_core/postprocess.json index 12f9337..b965217 100644 --- a/test_game/resources/game_core/postprocess.json +++ b/test_game/resources/game_core/postprocess.json @@ -4,8 +4,6 @@ "saturation": 1.123811, "gamma": 1.739475, "tonemap": 1, - "ssao": 3.628121, - "ssao_size": 2, "dilate_separation": 1.56422, "dilate_size": 2, "dilate_min": 1, diff --git a/test_game/resources/game_core/swatches.json b/test_game/resources/game_core/swatches.json new file mode 100644 index 0000000..6c47922 --- /dev/null +++ b/test_game/resources/game_core/swatches.json @@ -0,0 +1,134 @@ +[ + { + "id": 1, + "name": "204,204,204", + "color": [ + 204, + 204, + 204 + ], + "roughness": 7, + "metallic": 0, + "emittance": 0 + }, + { + "id": 2, + "name": "227,202,149", + "color": [ + 227, + 202, + 149 + ], + "roughness": 5, + "metallic": 0, + "emittance": 0 + }, + { + "id": 3, + "name": "255,0,0", + "color": [ + 255, + 0, + 0 + ], + "roughness": 5, + "metallic": 0, + "emittance": 0 + }, + { + "id": 4, + "name": "255,254,255", + "color": [ + 255, + 254, + 255 + ], + "roughness": 5, + "metallic": 0, + "emittance": 0 + }, + { + "id": 5, + "name": "255,254,254", + "color": [ + 255, + 254, + 254 + ], + "roughness": 7, + "metallic": 0, + "emittance": 0 + }, + { + "id": 6, + "name": "0,0,0", + "color": [ + 0, + 0, + 0 + ], + "roughness": 7, + "metallic": 1, + "emittance": 0 + }, + { + "id": 7, + "name": "255,199,0", + "color": [ + 255, + 199, + 0 + ], + "roughness": 0, + "metallic": 3, + "emittance": 0 + }, + { + "id": 8, + "name": "169,74,14", + "color": [ + 169, + 74, + 14 + ], + "roughness": 6, + "metallic": 0, + "emittance": 0 + }, + { + "id": 9, + "name": "86,80,80", + "color": [ + 86, + 80, + 80 + ], + "roughness": 1, + "metallic": 3, + "emittance": 0 + }, + { + "id": 10, + "name": "33,112,12", + "color": [ + 33, + 112, + 12 + ], + "roughness": 0, + "metallic": 0, + "emittance": 0 + }, + { + "id": 11, + "name": "255,0,255", + "color": [ + 255, + 0, + 255 + ], + "roughness": 4, + "metallic": 0, + "emittance": 0 + } +] \ No newline at end of file diff --git a/test_game/resources/game_core/triles.json b/test_game/resources/game_core/triles.json index f41640a..9450827 100644 --- a/test_game/resources/game_core/triles.json +++ b/test_game/resources/game_core/triles.json @@ -1,113636 +1,93 @@ [ { "name": "aaa", - "trixels": [ - [ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 0,255,255,255,160 - ] - ] - ],[ - [ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ],[ - 1,255,0,0,160 - ] - ],[ - [ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ],[ - 0,255,255,255,160 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "sand", - "trixels": [ - [ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ],[ - 0,227,202,149,160 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "test", - "trixels": [ - [ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 1,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ],[ - [ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ],[ - [ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ],[ - 0,0,0,0,232 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAAGBgYGAAAAAAAAAAAAAAAABgYGBgAAAAAAAAAAAAAAAAYGBgYAAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAGAAAAAAYAAAAAAAAAAAAABgAAAAAGAAAAAAAAAAAAAAYAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "bowl", - "trixels": [ - [ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,24 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ],[ - 1,255,199,0,184 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ],[ - 0,255,199,0,24 - ] - ],[ - [ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ],[ - 1,255,199,0,24 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEHBwABAAEAAQABAAEAAQcHBwcHBwcHBwcHBwcHBwcHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHBwcHBwcHBwcHBwcHBwEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEABwcBAQEBAQEBAQEBAQEHBwcHAQEBAQEBAQEBAQEBBwcAAAAAAAAAAAAAAAAAAAAAAAcHBwcHBwcHBwcHBwcHAAcAAAAAAAAAAAAAAAAAAAcAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEHAQEBAQEBAQEBAQEBAQEHAAAHBwcHBwcHBwcHBwcAAAAHAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAHAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEABwEBAQEBAQEBAQEBAQEBBwAABwcHBwcHBwcHBwcHAAAABwAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAABwABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQcBAQEBAQEBAQEBAQEBAQcAAAcHBwcHBwcHBwcHBwAAAAcAAAAAAAAAAAAAAAAHAAcAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQAHAQEBAQEBAQEBAQEBAQEHAAAHBwcHBwcHBwcHBwcAAAAHAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAHAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBBwEBAQEBAQEBAQEBAQEBBwAABwcHBwcHBwcHBwcHAAAABwAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAABwEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAcBAQEBAQEBAQEBAQEBAQcAAAcHBwcHBwcHBwcHBwAAAAcAAAAAAAAAAAAAAAAHAAcAAAAAAAAAAAAAAAAAAAcAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEHAQEBAQEBAQEBAQEBAQEHAAAHBwcHBwcHBwcHBwcAAAAHAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAHAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEABwEBAQEBAQEBAQEBAQEBBwAABwcHBwcHBwcHBwcHAAAABwAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAABwABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQcBAQEBAQEBAQEBAQEBAQcAAAcHBwcHBwcHBwcHBwAAAAcAAAAAAAAAAAAAAAAHAAcAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQAHAQEBAQEBAQEBAQEBAQEHAAAHBwcHBwcHBwcHBwcAAAAHAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAHAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBBwEBAQEBAQEBAQEBAQEBBwAABwcHBwcHBwcHBwcHAAAABwAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAABwEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAcBAQEBAQEBAQEBAQEBAQcAAAcHBwcHBwcHBwcHBwAAAAcAAAAAAAAAAAAAAAAHAAcAAAAAAAAAAAAAAAAAAAcAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQcHAQEBAQEBAQEBAQEBBwcHBwEBAQEBAQEBAQEBAQcHAAAAAAAAAAAAAAAAAAAAAAAHBwcHBwcHBwcHBwcHBwAHAAAAAAAAAAAAAAAAAAAHAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHBwcAAQABAAEAAQABAAcHBwcHBwcHBwcHBwcHBwcHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHBwcHBwcHBwcHBwcHBw==" + }, + { "name": "line", - "trixels": [ - [ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ],[ - [ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ],[ - 1,227,202,149,160 - ] - ],[ - [ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFBQUFBQUFBQUFBQUFBQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFBQUFBQUFBQUFBQUFBQUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUFBQUFBQUFBQUFBQUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFBQUFBQUFBQUFBQUFBQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFBQUFBQUFBQUFBQUFBQUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUFBQUFBQUFBQUFBQUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFBQUFBQUFBQUFBQUFBQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFBQUFBQUFBQUFBQUFBQUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUFBQUFBQUFBQUFBQUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFBQUFBQUFBQUFBQUFBQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFBQUFBQUFBQUFBQUFBQUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUFBQUFBQUFBQUFBQUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFBQUFBQUFBQUFBQUFBQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFBQUFBQUFBQUFBQUFBQUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUFBQUFBQUFBQUFBQUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFBQUFBQUFBQUFBQUFBQ==" + }, + { "name": "deck", - "trixels": [ - [ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,96,58,53,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,96,58,53,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,96,58,53,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,96,58,53,192 - ],[ - 0,255,0,0,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,96,58,53,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,0,192 - ],[ - 0,255,0,0,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 1,169,74,14,192 - ],[ - 1,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ],[ - 0,169,74,14,192 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAAAAAAAAAAAAAAAAAAAAAgACAgACAgACAgACAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgIAAgIAAgIAAgIAAgIAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAICAAICAAICAAICAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAgACAgACAgACAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgIAAgIAAgIAAgIAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAICAAICAAICAAICAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAgACAgACAgACAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgIAAgIAAgIAAgIAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAICAAICAAICAAICAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAgACAgACAgACAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgIAAgIAAgIAAgIAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAICAAICAAICAAICAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAgACAgACAgACAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgIAAgIAAgIAAgIAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAAICAAICAAICAAICAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAgACAgACAgACAgACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "block", - "trixels": [ - [ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAEAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQABAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQABAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQABAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQABAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQABAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQ==" + }, + { "name": "pillar_top", - "trixels": [ - [ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAAABAAEAAQABAAEAAQAAAAAAAAABAAEAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAAEBAQEBAQEAAQEBAQEAAAAAAAEBAQEBAAEBAQEAAAAAAAAAAQEBAQABAQEBAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEAAAAAAAEBAQEBAQABAQEAAAAAAAAAAQEBAQEAAQEAAAAAAAAAAAABAQEBAAEBAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAAAAAAABAQEBAQABAQEBAAAAAAAAAAEBAQEAAQEBAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEAAQEBAQEBAQEAAQEBAAAAAAAAAAEBAQEBAAEBAAAAAAAAAAAAAQEBAQAAAQAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAAEBAQEBAQEBAQEBAQEAAAAAAAEAAAAAAAEBAQEBAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAAAAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAQEBAQEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAAAAAAEBAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAABAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQAAAAABAQEBAQEBAQEBAQEAAAAAAAEBAQEBAQEBAQEBAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEAAQEBAQEBAQEBAQEBAQAAAAAAAAEBAQABAQEBAQEAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQABAQEBAQEBAAAAAAEBAAAAAAABAQEBAQAAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAAAAAAABAQEBAAAAAAABAAAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQAAAAAAAQEBAQEAAAEBAQAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAAEBAQEBAQABAQEBAQAAAAAAAAABAQEAAQEBAQAAAAAAAAAAAAEBAAEAAQEAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAAAAAAABAQEBAQABAQEBAAAAAAAAAAEBAQEAAQEBAAAAAAAAAAAAAQEBAAEBAQAAAAAAAAAAAAEBAQABAQEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAEAAQABAAEAAQAAAAAAAAABAAEAAQABAAAAAAAAAAAAAAABAAEAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "pillar", - "trixels": [ - [ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ],[ - [ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ],[ - [ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 1,204,204,204,224 - ] - ] - ],[ - [ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ],[ - [ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ],[ - 1,204,204,204,224 - ],[ - 0,204,204,204,224 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQAAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAA==" + }, + { "name": "pole", - "trixels": [ - [ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,86,80,80,56 - ],[ - 1,86,80,80,56 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCwsLCwAAAAAAAAAAAAAACwsLCwsAAAAAAAAAAAAAAAALCwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAACwsJCQsAAAAAAAAAAAAAAAsLCQkLAAAAAAAAAAAAAAALCwkJCwAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkLAAAAAAAAAAAAAAAACwkJCwsAAAAAAAAAAAAAAAsJCQsLAAAAAAAAAAAACwsLCQkLCwAAAAAAAAAAAAALCwkJCwAAAAAAAAAAAAAACwsJCQsAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAACwkJCwsAAAAAAAAAAAAAAAsJCQsLAAAAAAAAAAAAAAALCQkLCwAAAAAAAAAAAAALCwkJCwAAAAAAAAAAAAAACwsJCQsAAAAAAAAAAAAAAAsLCQkLAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAsJCQsLAAAAAAAAAAAAAAALCQkLCwAAAAAAAAAAAAALCwkJCwsLAAAAAAAAAAAACwsJCQsAAAAAAAAAAAAAAAsLCQkLAAAAAAAAAAAAAAAACwkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAALCQkLCwAAAAAAAAAAAAAACwkJCwsAAAAAAAAAAAAAAAsJCQsLAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwAAAAAAAAAAAAAAAAsLCwsLAAAAAAAAAAAAAAALCwsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "plat", - "trixels": [ - [ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ],[ - 1,255,254,255,160 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "plants", - "trixels": [ - [ - [ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 1,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,33,112,12,0 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ] - ] - },{ + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "CgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + }, + { "name": "net", - "trixels": [ - [ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ],[ - [ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,0,0,224 - ],[ - 1,255,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,255,255,224 - ],[ - 0,255,255,255,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,254,254,224 - ],[ - 0,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,255,254,254,224 - ],[ - 1,255,254,254,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,255,255,224 - ],[ - 0,255,255,255,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ],[ - [ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 1,0,0,0,224 - ],[ - 1,0,0,0,224 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ],[ - 0,255,0,255,128 - ] - ] - ] - ] + "is_opaque": 1, + "is_stairs": 0, + "skip_collision": 0, + "trixels": "AAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAAAwMAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAAAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAAAwMAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAAAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAAAwMAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAGBgAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAYGAAAAAAAAAA==" } ] \ No newline at end of file diff --git a/test_game/resources/postprocess.json b/test_game/resources/postprocess.json index b6a95f5..d7d0014 100644 --- a/test_game/resources/postprocess.json +++ b/test_game/resources/postprocess.json @@ -4,7 +4,6 @@ "saturation": 0.988528, "gamma": 1.892629, "tonemap": 1, - "ssao": 0.823773, "dilate_separation": 3.636807, "dilate_size": 2, "dilate_min": 0.136279, diff --git a/test_packs/game_core.pack b/test_packs/game_core.pack index 187235a..86cf655 100644 Binary files a/test_packs/game_core.pack and b/test_packs/game_core.pack differ diff --git a/test_packs/postprocess.json.pack b/test_packs/postprocess.json.pack index 861923f..4466594 100644 Binary files a/test_packs/postprocess.json.pack and b/test_packs/postprocess.json.pack differ