graphics

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit fb6c743684ceab7002abe6786101685df0704b52
parent f2548cb6dc67927282c09380e9e9711864f0268e
Author: Brian Swetland <swetland@frotz.net>
Date:   Mon,  4 Feb 2013 18:21:36 -0800

textgrid: shuffle into common, support compiled-in shaders

Diffstat:
Acommon/TextPS.h | 522+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rhello/TextPS.hlsl -> common/TextPS.hlsl | 0
Acommon/TextVS.h | 2584+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rhello/TextVS.hlsl -> common/TextVS.hlsl | 0
Acommon/textgrid.cc | 148+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rhello/textgrid.h -> common/textgrid.h | 0
Mhello/hello.vcxproj | 16++++++++++------
Dhello/textgrid.cc | 131-------------------------------------------------------------------------------
8 files changed, 3264 insertions(+), 137 deletions(-)

diff --git a/common/TextPS.h b/common/TextPS.h @@ -0,0 +1,522 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /nologo /Emain /T ps_4_0 /Fh C:\Work\graphics\Debug\TextPS.h /Fo +// C:\Work\graphics\Debug\TextPS.cso /Vn codeTextPS /Od /Zi TextPS.hlsl +// +// +// Resource Bindings: +// +// Name Type Format Dim Slot Elements +// ------------------------------ ---------- ------- ----------- ---- -------- +// samLinear sampler NA NA 0 1 +// Texture0 texture float4 2d 0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_4_0 +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xyzw + +#line 12 "C:\Work\graphics\hello\TextPS.hlsl" +sample o0.xyzw, v1.xyxx, t0.xyzw, s0 // main<0:Inf,1:Inf,2:Inf,3:Inf> +ret +// Approximately 2 instruction slots used +#endif + +const BYTE codeTextPS[] = +{ + 68, 88, 66, 67, 165, 232, + 12, 180, 38, 190, 186, 16, + 30, 167, 61, 163, 138, 28, + 180, 41, 1, 0, 0, 0, + 33, 11, 0, 0, 6, 0, + 0, 0, 56, 0, 0, 0, + 224, 0, 0, 0, 56, 1, + 0, 0, 108, 1, 0, 0, + 216, 1, 0, 0, 84, 2, + 0, 0, 82, 68, 69, 70, + 160, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 28, 0, + 0, 0, 0, 4, 255, 255, + 5, 1, 0, 0, 111, 0, + 0, 0, 92, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 102, 0, + 0, 0, 2, 0, 0, 0, + 5, 0, 0, 0, 4, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 115, 97, 109, 76, 105, 110, + 101, 97, 114, 0, 84, 101, + 120, 116, 117, 114, 101, 48, + 0, 77, 105, 99, 114, 111, + 115, 111, 102, 116, 32, 40, + 82, 41, 32, 72, 76, 83, + 76, 32, 83, 104, 97, 100, + 101, 114, 32, 67, 111, 109, + 112, 105, 108, 101, 114, 32, + 57, 46, 50, 57, 46, 57, + 53, 50, 46, 51, 49, 49, + 49, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 79, 83, + 73, 84, 73, 79, 78, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 97, 114, 103, 101, + 116, 0, 171, 171, 83, 72, + 68, 82, 100, 0, 0, 0, + 64, 0, 0, 0, 25, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 98, 16, 0, 3, 50, 16, + 16, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 9, 242, 32, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 83, 68, 66, 71, + 197, 8, 0, 0, 84, 0, + 0, 0, 64, 1, 0, 0, + 113, 1, 0, 0, 118, 1, + 0, 0, 5, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 16, 0, 0, 0, 12, 0, + 0, 0, 40, 3, 0, 0, + 4, 0, 0, 0, 72, 4, + 0, 0, 11, 0, 0, 0, + 168, 4, 0, 0, 3, 0, + 0, 0, 132, 5, 0, 0, + 6, 0, 0, 0, 192, 5, + 0, 0, 200, 6, 0, 0, + 244, 6, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, + 34, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 0, 0, + 69, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 128, 255, 255, + 255, 127, 0, 0, 128, 255, + 0, 0, 128, 127, 0, 0, + 0, 0, 1, 0, 0, 0, + 9, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 128, 255, 255, + 255, 127, 0, 0, 128, 255, + 0, 0, 128, 127, 0, 0, + 0, 0, 1, 0, 0, 0, + 10, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 128, 255, 255, + 255, 127, 0, 0, 128, 255, + 0, 0, 128, 127, 0, 0, + 0, 0, 1, 0, 0, 0, + 11, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 128, 255, 255, + 255, 127, 0, 0, 128, 255, + 0, 0, 128, 127, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 36, 0, 0, 0, + 3, 0, 0, 0, 24, 0, + 0, 0, 1, 0, 0, 0, + 62, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 7, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 1, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 5, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 5, 0, 0, 0, 1, 0, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 5, 0, 0, 0, 2, 0, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 5, 0, 0, 0, 3, 0, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 5, 0, 0, 0, 4, 0, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 5, 0, 0, 0, 5, 0, + 0, 0, 7, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 4, 0, 0, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 4, 0, 0, 0, 1, 0, + 0, 0, 7, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 4, 0, 0, 0, 2, 0, + 0, 0, 7, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 4, 0, 0, 0, 3, 0, + 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 1, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 7, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 1, 0, 0, 0, + 1, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 6, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 1, 0, 0, 0, + 7, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 7, 0, 0, 0, 8, 0, + 0, 0, 19, 0, 0, 0, + 26, 1, 0, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 19, 0, + 0, 0, 45, 1, 0, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 22, 0, 0, 0, + 5, 0, 0, 0, 197, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 10, 0, + 0, 0, 8, 0, 0, 0, + 46, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 13, 0, 0, 0, 9, 0, + 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 7, 0, 0, 0, + 4, 0, 0, 0, 182, 0, + 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 22, 0, + 0, 0, 5, 0, 0, 0, + 197, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 7, 0, 0, 0, 4, 0, + 0, 0, 182, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 10, 0, 0, 0, + 8, 0, 0, 0, 46, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 13, 0, + 0, 0, 9, 0, 0, 0, + 72, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 93, 0, + 0, 0, 9, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 182, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, + 0, 0, 19, 1, 0, 0, + 7, 0, 0, 0, 3, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 4, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 255, 255, 255, 255, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 255, 255, + 255, 255, 5, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 8, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 3, 0, + 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 67, 58, 92, 87, + 111, 114, 107, 92, 103, 114, + 97, 112, 104, 105, 99, 115, + 92, 104, 101, 108, 108, 111, + 92, 84, 101, 120, 116, 80, + 83, 46, 104, 108, 115, 108, + 13, 10, 84, 101, 120, 116, + 117, 114, 101, 50, 68, 32, + 84, 101, 120, 116, 117, 114, + 101, 48, 59, 13, 10, 13, + 10, 83, 97, 109, 112, 108, + 101, 114, 83, 116, 97, 116, + 101, 32, 115, 97, 109, 76, + 105, 110, 101, 97, 114, 59, + 13, 10, 13, 10, 115, 116, + 114, 117, 99, 116, 32, 86, + 83, 95, 79, 85, 84, 80, + 85, 84, 32, 123, 13, 10, + 9, 102, 108, 111, 97, 116, + 52, 32, 80, 111, 115, 105, + 116, 105, 111, 110, 32, 58, + 32, 83, 86, 95, 80, 79, + 83, 73, 84, 73, 79, 78, + 59, 13, 10, 9, 102, 108, + 111, 97, 116, 50, 32, 84, + 101, 120, 67, 111, 111, 114, + 100, 32, 58, 32, 84, 69, + 88, 67, 79, 79, 82, 68, + 59, 13, 10, 125, 59, 13, + 10, 13, 10, 102, 108, 111, + 97, 116, 52, 32, 109, 97, + 105, 110, 40, 86, 83, 95, + 79, 85, 84, 80, 85, 84, + 32, 105, 110, 112, 117, 116, + 41, 32, 58, 32, 83, 86, + 95, 84, 97, 114, 103, 101, + 116, 32, 123, 13, 10, 9, + 114, 101, 116, 117, 114, 110, + 32, 84, 101, 120, 116, 117, + 114, 101, 48, 46, 83, 97, + 109, 112, 108, 101, 40, 115, + 97, 109, 76, 105, 110, 101, + 97, 114, 44, 32, 105, 110, + 112, 117, 116, 46, 84, 101, + 120, 67, 111, 111, 114, 100, + 41, 59, 13, 10, 125, 13, + 10, 71, 108, 111, 98, 97, + 108, 115, 86, 83, 95, 79, + 85, 84, 80, 85, 84, 58, + 58, 80, 111, 115, 105, 116, + 105, 111, 110, 86, 83, 95, + 79, 85, 84, 80, 85, 84, + 58, 58, 84, 101, 120, 67, + 111, 111, 114, 100, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 109, + 97, 105, 110, 0, 112, 115, + 95, 52, 95, 48, 0 +}; diff --git a/hello/TextPS.hlsl b/common/TextPS.hlsl diff --git a/common/TextVS.h b/common/TextVS.h @@ -0,0 +1,2584 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 +// +// +// fxc /nologo /Emain /T vs_4_0 /Fh C:\Work\graphics\Debug\TextVS.h /Fo +// C:\Work\graphics\Debug\TextVS.cso /Vn codeTextVS /Zi TextVS.hlsl +// +// +// Buffer Definitions: +// +// cbuffer cb0 +// { +// +// float4x4 MVP; // Offset: 0 Size: 64 +// uint cw; // Offset: 64 Size: 4 +// uint ch; // Offset: 68 Size: 4 +// +// } +// +// +// Resource Bindings: +// +// Name Type Format Dim Slot Elements +// ------------------------------ ---------- ------- ----------- ---- -------- +// cb0 cbuffer NA NA 0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// POSITION 0 xyzw 0 NONE float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// CHARACTER 0 x 2 NONE uint x +// SV_INSTANCEID 0 x 3 INSTID uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------ ------ +// SV_POSITION 0 xyzw 0 POS float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// +vs_4_0 +dcl_constantbuffer cb0[5], immediateIndexed +dcl_input v0.xyzw +dcl_input v1.xy +dcl_input v2.x +dcl_input_sgv v3.x, instance_id +dcl_output_siv o0.xyzw, position +dcl_output o1.xy +dcl_temps 2 + +#line 22 "C:\Work\graphics\hello\TextVS.hlsl" +iadd r0.x, cb0[4].y, l(-1) +udiv r0.y, null, v3.x, cb0[4].y +iadd r0.x, r0.x, -r0.y +utof r0.y, r0.x +udiv null, r0.z, v3.x, cb0[4].x +utof r0.x, r0.z +add r0.xy, r0.xyxx, v0.xyxx // pos<0,1> + +#line 28 +mul r1.xyzw, r0.yyyy, cb0[1].xyzw +mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw +mad r0.xyzw, cb0[2].xyzw, v0.zzzz, r0.xyzw +mad r0.xyzw, cb0[3].xyzw, v0.wwww, r0.xyzw // output<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf> + +#line 38 +movc o0.z, v2.x, r0.z, l(-1.100000) // main<2:NaN:Inf> +mov o0.xyw, r0.xyxw // main<0:NaN:Inf,1:NaN:Inf,3:NaN:Inf> + +#line 26 +ushr r0.x, v2.x, l(4) +iadd r0.x, l(15), -r0.x +utof r0.x, r0.x // ty<0:[0f,4.29497e+009f]> + +#line 35 +mul r0.y, r0.x, l(0.062500) + +#line 25 +and r0.z, v2.x, l(15) +utof r0.z, r0.z // tx<0:[0f,15f]> + +#line 35 +mul r0.x, r0.z, l(0.062500) +mad r0.xy, v1.xyxx, l(0.062500, 0.062500, 0.000000, 0.000000), r0.xyxx +add o1.xy, r0.xyxx, l(0.003906, -0.003906, 0.000000, 0.000000) // main<4:[-2.12676e+037f,2.12676e+037f],5:[-2.12676e+037f,2.12676e+037f]> + +#line 40 +ret +// Approximately 23 instruction slots used +#endif + +const BYTE codeTextVS[] = +{ + 68, 88, 66, 67, 10, 14, + 84, 123, 102, 6, 139, 73, + 125, 68, 255, 78, 150, 29, + 198, 147, 1, 0, 0, 0, + 54, 58, 0, 0, 6, 0, + 0, 0, 56, 0, 0, 0, + 60, 1, 0, 0, 216, 1, + 0, 0, 48, 2, 0, 0, + 88, 5, 0, 0, 212, 5, + 0, 0, 82, 68, 69, 70, + 252, 0, 0, 0, 1, 0, + 0, 0, 64, 0, 0, 0, + 1, 0, 0, 0, 28, 0, + 0, 0, 0, 4, 254, 255, + 1, 1, 0, 0, 203, 0, + 0, 0, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 99, 98, + 48, 0, 60, 0, 0, 0, + 3, 0, 0, 0, 88, 0, + 0, 0, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 160, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 0, 2, 0, 0, 0, + 164, 0, 0, 0, 0, 0, + 0, 0, 180, 0, 0, 0, + 64, 0, 0, 0, 4, 0, + 0, 0, 2, 0, 0, 0, + 184, 0, 0, 0, 0, 0, + 0, 0, 200, 0, 0, 0, + 68, 0, 0, 0, 4, 0, + 0, 0, 2, 0, 0, 0, + 184, 0, 0, 0, 0, 0, + 0, 0, 77, 86, 80, 0, + 3, 0, 3, 0, 4, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 99, 119, + 0, 171, 0, 0, 19, 0, + 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 99, 104, 0, 77, 105, 99, + 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, + 111, 109, 112, 105, 108, 101, + 114, 32, 57, 46, 50, 57, + 46, 57, 53, 50, 46, 51, + 49, 49, 49, 0, 73, 83, + 71, 78, 148, 0, 0, 0, + 4, 0, 0, 0, 8, 0, + 0, 0, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 15, + 0, 0, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 3, + 0, 0, 122, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 1, + 0, 0, 132, 0, 0, 0, + 0, 0, 0, 0, 8, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 1, + 0, 0, 80, 79, 83, 73, + 84, 73, 79, 78, 0, 84, + 69, 88, 67, 79, 79, 82, + 68, 0, 67, 72, 65, 82, + 65, 67, 84, 69, 82, 0, + 83, 86, 95, 73, 78, 83, + 84, 65, 78, 67, 69, 73, + 68, 0, 171, 171, 79, 83, + 71, 78, 80, 0, 0, 0, + 2, 0, 0, 0, 8, 0, + 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 12, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 84, 69, 88, 67, + 79, 79, 82, 68, 0, 171, + 171, 171, 83, 72, 68, 82, + 32, 3, 0, 0, 64, 0, + 1, 0, 200, 0, 0, 0, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 95, 0, + 0, 3, 242, 16, 16, 0, + 0, 0, 0, 0, 95, 0, + 0, 3, 50, 16, 16, 0, + 1, 0, 0, 0, 95, 0, + 0, 3, 18, 16, 16, 0, + 2, 0, 0, 0, 96, 0, + 0, 4, 18, 16, 16, 0, + 3, 0, 0, 0, 8, 0, + 0, 0, 103, 0, 0, 4, + 242, 32, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 50, 32, + 16, 0, 1, 0, 0, 0, + 104, 0, 0, 2, 2, 0, + 0, 0, 30, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 255, 255, 255, 255, 78, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 0, 208, + 0, 0, 10, 16, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 30, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 86, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 78, 0, 0, 9, + 0, 208, 0, 0, 66, 0, + 16, 0, 0, 0, 0, 0, + 10, 16, 16, 0, 3, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 86, 0, 0, 5, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 242, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 142, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 242, 0, 16, 0, + 0, 0, 0, 0, 70, 142, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 70, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 242, 0, 16, 0, 0, 0, + 0, 0, 70, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 26, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 242, 0, + 16, 0, 0, 0, 0, 0, + 70, 142, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 246, 31, 16, 0, 0, 0, + 0, 0, 70, 14, 16, 0, + 0, 0, 0, 0, 55, 0, + 0, 9, 66, 32, 16, 0, + 0, 0, 0, 0, 10, 16, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 140, 191, 54, 0, + 0, 5, 178, 32, 16, 0, + 0, 0, 0, 0, 70, 12, + 16, 0, 0, 0, 0, 0, + 85, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 16, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 4, 0, 0, 0, 30, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 15, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 86, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 61, + 1, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 10, 16, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 15, 0, 0, 0, 86, 0, + 0, 5, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 50, 0, + 0, 12, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 61, 0, 0, 128, 61, + 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 10, 50, 32, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 59, 0, 0, 128, 187, + 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 23, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 5, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 1, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 68, + 66, 71, 90, 52, 0, 0, + 84, 0, 0, 0, 217, 3, + 0, 0, 10, 4, 0, 0, + 15, 4, 0, 0, 1, 1, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 23, 0, + 0, 0, 16, 0, 0, 0, + 38, 0, 0, 0, 164, 35, + 0, 0, 26, 0, 0, 0, + 52, 39, 0, 0, 33, 0, + 0, 0, 164, 41, 0, 0, + 9, 0, 0, 0, 56, 44, + 0, 0, 13, 0, 0, 0, + 236, 44, 0, 0, 40, 47, + 0, 0, 240, 47, 0, 0, + 0, 0, 0, 0, 34, 0, + 0, 0, 34, 0, 0, 0, + 132, 3, 0, 0, 0, 0, + 0, 0, 30, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 78, 0, 0, 0, + 2, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 2, 0, 0, 0, + 132, 0, 0, 0, 2, 0, + 0, 0, 30, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 86, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 0, 0, 0, 0, 128, 79, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 78, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 2, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 2, 0, 0, 0, + 140, 0, 0, 0, 5, 0, + 0, 0, 86, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 0, 0, 0, 0, 128, 79, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 18, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 255, 255, + 127, 255, 255, 255, 127, 127, + 0, 0, 0, 0, 0, 0, + 0, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 255, 255, + 127, 255, 255, 255, 127, 127, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 56, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 3, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 0, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 0, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 0, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 0, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 2, 0, 0, 0, + 148, 0, 0, 0, 8, 0, + 0, 0, 50, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 3, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 2, 0, 0, 0, + 148, 0, 0, 0, 9, 0, + 0, 0, 50, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 3, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 2, 0, 0, 0, + 148, 0, 0, 0, 10, 0, + 0, 0, 50, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 3, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 3, 0, 0, 0, + 168, 0, 0, 0, 11, 0, + 0, 0, 55, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 2, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 2, 0, 0, 0, + 180, 0, 0, 0, 12, 0, + 0, 0, 54, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 3, 0, + 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 27, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 85, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 15, 0, 0, 0, 0, + 255, 255, 255, 15, 0, 0, + 0, 0, 255, 255, 255, 15, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 188, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 0, 30, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 16, 0, 0, 240, + 15, 0, 0, 0, 0, 0, + 128, 255, 0, 0, 128, 127, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 188, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 86, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 37, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 0, 0, 0, 0, 128, 79, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 188, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 56, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 0, 0, 0, 0, 128, 77, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 2, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, + 0, 0, 86, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 2, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 0, 0, 0, 0, 112, 65, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 0, + 0, 0, 56, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 0, 0, + 0, 0, 0, 0, 112, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0, + 0, 0, 50, 0, 0, 0, + 1, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 255, 255, + 127, 253, 255, 255, 127, 125, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 255, 255, + 127, 253, 255, 255, 127, 125, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 30, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 255, 255, + 127, 253, 255, 255, 127, 125, + 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 128, + 255, 255, 255, 127, 255, 255, + 127, 253, 255, 255, 127, 125, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 0, + 0, 0, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 2, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 3, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 4, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 5, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 6, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 7, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 8, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 9, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 10, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 11, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 12, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 13, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 14, 0, 0, 0, 21, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, + 15, 0, 0, 0, 22, 0, + 0, 0, 19, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 1, 0, 0, 0, + 0, 0, 0, 0, 23, 0, + 0, 0, 19, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 2, 0, 0, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 6, 0, 0, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 6, 0, 0, 0, + 1, 0, 0, 0, 13, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 6, 0, 0, 0, + 2, 0, 0, 0, 13, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 6, 0, 0, 0, + 3, 0, 0, 0, 14, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 7, 0, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 7, 0, 0, 0, + 1, 0, 0, 0, 15, 0, + 0, 0, 19, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 8, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 19, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 9, 0, 0, 0, + 0, 0, 0, 0, 17, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 5, 0, 0, 0, + 0, 0, 0, 0, 17, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 5, 0, 0, 0, + 1, 0, 0, 0, 17, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 5, 0, 0, 0, + 2, 0, 0, 0, 17, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 5, 0, 0, 0, + 3, 0, 0, 0, 17, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 5, 0, 0, 0, + 4, 0, 0, 0, 17, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 5, 0, 0, 0, + 5, 0, 0, 0, 20, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 10, 0, 0, 0, + 0, 0, 0, 0, 20, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 10, 0, 0, 0, + 1, 0, 0, 0, 20, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 10, 0, 0, 0, + 2, 0, 0, 0, 20, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 10, 0, 0, 0, + 3, 0, 0, 0, 18, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 11, 0, 0, 0, + 0, 0, 0, 0, 19, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 255, 255, + 255, 255, 12, 0, 0, 0, + 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 19, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 20, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 2, 0, 0, 0, + 255, 255, 255, 255, 21, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 22, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 1, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 23, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 1, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 24, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 2, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 25, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 3, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 4, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 8, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 255, 255, 255, 255, 12, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 1, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 5, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 9, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 255, 255, 255, 255, 13, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 2, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 6, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 10, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 2, 0, 0, 0, + 255, 255, 255, 255, 14, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 3, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 7, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 11, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 2, 0, 0, 0, + 255, 255, 255, 255, 15, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 16, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 17, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 3, 0, + 0, 0, 59, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 14, 0, + 0, 0, 2, 0, 0, 0, + 98, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, + 10, 0, 0, 0, 4, 0, + 0, 0, 206, 0, 0, 0, + 0, 0, 0, 0, 8, 0, + 0, 0, 8, 0, 0, 0, + 19, 0, 0, 0, 179, 3, + 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 8, 0, + 0, 0, 19, 0, 0, 0, + 198, 3, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 8, 0, 0, 0, 3, 0, + 0, 0, 221, 0, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 246, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 14, 0, + 0, 0, 1, 0, 0, 0, + 14, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, + 14, 0, 0, 0, 2, 0, + 0, 0, 50, 1, 0, 0, + 0, 0, 0, 0, 19, 0, + 0, 0, 11, 0, 0, 0, + 6, 0, 0, 0, 89, 1, + 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 7, 0, + 0, 0, 2, 0, 0, 0, + 24, 2, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, + 7, 0, 0, 0, 2, 0, + 0, 0, 47, 2, 0, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 8, 0, 0, 0, + 3, 0, 0, 0, 221, 0, + 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 8, 0, + 0, 0, 2, 0, 0, 0, + 246, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 14, 0, 0, 0, 1, 0, + 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 50, 1, + 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 10, 0, + 0, 0, 4, 0, 0, 0, + 206, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, + 7, 0, 0, 0, 2, 0, + 0, 0, 24, 2, 0, 0, + 0, 0, 0, 0, 26, 0, + 0, 0, 7, 0, 0, 0, + 2, 0, 0, 0, 47, 2, + 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 11, 0, + 0, 0, 6, 0, 0, 0, + 89, 1, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 3, 0, + 0, 0, 59, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 14, 0, + 0, 0, 2, 0, 0, 0, + 98, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, + 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, + 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 40, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, + 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 114, 0, 0, 0, + 9, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 166, 3, + 0, 0, 7, 0, 0, 0, + 4, 0, 0, 0, 8, 0, + 0, 0, 3, 0, 0, 0, + 114, 0, 0, 0, 9, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 173, 3, 0, 0, + 6, 0, 0, 0, 1, 0, + 0, 0, 24, 0, 0, 0, + 4, 0, 0, 0, 206, 0, + 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 28, 0, + 0, 0, 1, 0, 0, 0, + 173, 3, 0, 0, 6, 0, + 0, 0, 2, 0, 0, 0, + 48, 0, 0, 0, 4, 0, + 0, 0, 206, 0, 0, 0, + 4, 0, 0, 0, 6, 0, + 0, 0, 56, 0, 0, 0, + 1, 0, 0, 0, 173, 3, + 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 80, 0, + 0, 0, 4, 0, 0, 0, + 206, 0, 0, 0, 4, 0, + 0, 0, 7, 0, 0, 0, + 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 4, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 17, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 4, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 255, 255, 255, 255, + 5, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 255, 255, + 255, 255, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 26, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 4, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 18, 0, 0, 0, + 7, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 22, 0, + 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 24, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 25, 0, 0, 0, + 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 32, 0, + 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 36, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 37, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 10, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 11, 0, + 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 0, + 0, 0, 10, 0, 0, 0, + 11, 0, 0, 0, 12, 0, + 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 9, 0, + 0, 0, 1, 0, 0, 0, + 9, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 10, 0, 0, 0, + 8, 0, 0, 0, 10, 0, + 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 1, 0, + 0, 0, 67, 58, 92, 87, + 111, 114, 107, 92, 103, 114, + 97, 112, 104, 105, 99, 115, + 92, 104, 101, 108, 108, 111, + 92, 84, 101, 120, 116, 86, + 83, 46, 104, 108, 115, 108, + 13, 10, 99, 98, 117, 102, + 102, 101, 114, 32, 99, 98, + 48, 32, 123, 13, 10, 9, + 109, 97, 116, 114, 105, 120, + 32, 77, 86, 80, 59, 13, + 10, 9, 117, 110, 115, 105, + 103, 110, 101, 100, 32, 105, + 110, 116, 32, 99, 119, 59, + 13, 10, 9, 117, 110, 115, + 105, 103, 110, 101, 100, 32, + 105, 110, 116, 32, 99, 104, + 59, 13, 10, 125, 59, 13, + 10, 115, 116, 114, 117, 99, + 116, 32, 86, 83, 95, 79, + 85, 84, 80, 85, 84, 32, + 123, 13, 10, 9, 102, 108, + 111, 97, 116, 52, 32, 80, + 111, 115, 105, 116, 105, 111, + 110, 32, 58, 32, 83, 86, + 95, 80, 79, 83, 73, 84, + 73, 79, 78, 59, 13, 10, + 9, 102, 108, 111, 97, 116, + 50, 32, 84, 101, 120, 67, + 111, 111, 114, 100, 32, 58, + 32, 84, 69, 88, 67, 79, + 79, 82, 68, 59, 13, 10, + 125, 59, 13, 10, 13, 10, + 86, 83, 95, 79, 85, 84, + 80, 85, 84, 32, 109, 97, + 105, 110, 40, 13, 10, 9, + 102, 108, 111, 97, 116, 52, + 32, 112, 111, 115, 32, 58, + 32, 80, 79, 83, 73, 84, + 73, 79, 78, 44, 13, 10, + 9, 102, 108, 111, 97, 116, + 50, 32, 117, 118, 32, 58, + 32, 84, 69, 88, 67, 79, + 79, 82, 68, 44, 13, 10, + 9, 117, 110, 115, 105, 103, + 110, 101, 100, 32, 105, 110, + 116, 32, 99, 32, 58, 32, + 67, 72, 65, 82, 65, 67, + 84, 69, 82, 44, 13, 10, + 9, 117, 110, 115, 105, 103, + 110, 101, 100, 32, 105, 110, + 116, 32, 105, 100, 32, 58, + 32, 83, 86, 95, 73, 78, + 83, 84, 65, 78, 67, 69, + 73, 68, 13, 10, 9, 41, + 32, 123, 13, 10, 13, 10, + 9, 86, 83, 95, 79, 85, + 84, 80, 85, 84, 32, 111, + 117, 116, 112, 117, 116, 32, + 61, 32, 40, 86, 83, 95, + 79, 85, 84, 80, 85, 84, + 41, 32, 48, 59, 13, 10, + 13, 10, 9, 47, 47, 32, + 115, 104, 105, 102, 116, 32, + 117, 110, 105, 116, 32, 114, + 101, 99, 116, 97, 110, 103, + 108, 101, 32, 116, 111, 32, + 99, 104, 97, 114, 97, 99, + 116, 101, 114, 32, 99, 101, + 108, 108, 32, 114, 101, 99, + 116, 97, 110, 103, 108, 101, + 13, 10, 9, 112, 111, 115, + 46, 120, 121, 32, 43, 61, + 32, 102, 108, 111, 97, 116, + 50, 40, 105, 100, 32, 37, + 32, 99, 119, 44, 32, 40, + 99, 104, 45, 49, 41, 32, + 45, 32, 105, 100, 32, 47, + 32, 99, 104, 41, 59, 13, + 10, 13, 10, 9, 47, 47, + 32, 97, 100, 106, 117, 115, + 116, 32, 117, 110, 105, 116, + 32, 116, 101, 120, 116, 117, + 114, 101, 32, 99, 111, 111, + 114, 100, 32, 116, 111, 32, + 102, 111, 110, 116, 32, 99, + 101, 108, 108, 32, 114, 101, + 99, 116, 97, 110, 103, 108, + 101, 13, 10, 9, 102, 108, + 111, 97, 116, 32, 116, 120, + 32, 61, 32, 40, 99, 32, + 37, 32, 49, 54, 41, 59, + 13, 10, 9, 102, 108, 111, + 97, 116, 32, 116, 121, 32, + 61, 32, 40, 49, 53, 32, + 45, 32, 99, 32, 47, 32, + 49, 54, 41, 59, 13, 10, + 13, 10, 9, 111, 117, 116, + 112, 117, 116, 46, 80, 111, + 115, 105, 116, 105, 111, 110, + 32, 61, 32, 109, 117, 108, + 40, 77, 86, 80, 44, 32, + 112, 111, 115, 41, 59, 32, + 13, 10, 9, 111, 117, 116, + 112, 117, 116, 46, 84, 101, + 120, 67, 111, 111, 114, 100, + 32, 61, 13, 10, 9, 9, + 47, 47, 32, 115, 99, 97, + 108, 101, 32, 116, 111, 32, + 115, 105, 122, 101, 32, 111, + 102, 32, 99, 104, 97, 114, + 97, 99, 116, 101, 114, 32, + 105, 110, 32, 102, 111, 110, + 116, 116, 101, 120, 116, 117, + 114, 101, 13, 10, 9, 9, + 117, 118, 32, 42, 32, 102, + 108, 111, 97, 116, 50, 40, + 49, 46, 48, 47, 49, 54, + 46, 48, 44, 49, 46, 48, + 47, 49, 54, 46, 48, 41, + 13, 10, 9, 9, 47, 47, + 32, 109, 111, 118, 101, 32, + 116, 111, 32, 99, 111, 114, + 114, 101, 99, 116, 32, 99, + 104, 97, 114, 97, 99, 116, + 101, 114, 13, 10, 9, 9, + 43, 32, 102, 108, 111, 97, + 116, 50, 40, 116, 120, 47, + 49, 54, 46, 48, 44, 116, + 121, 47, 49, 54, 46, 48, + 41, 13, 10, 9, 9, 47, + 47, 32, 111, 102, 102, 115, + 101, 116, 32, 116, 111, 32, + 97, 118, 111, 105, 100, 32, + 99, 114, 117, 102, 116, 13, + 10, 9, 9, 43, 32, 102, + 108, 111, 97, 116, 50, 40, + 49, 46, 48, 47, 50, 53, + 54, 46, 48, 44, 45, 49, + 46, 48, 47, 50, 53, 54, + 46, 48, 41, 59, 13, 10, + 13, 10, 9, 47, 47, 32, + 100, 105, 115, 99, 97, 114, + 100, 32, 118, 105, 97, 32, + 99, 108, 105, 112, 112, 105, + 110, 103, 13, 10, 9, 105, + 102, 32, 40, 99, 32, 61, + 61, 32, 48, 41, 32, 111, + 117, 116, 112, 117, 116, 46, + 80, 111, 115, 105, 116, 105, + 111, 110, 46, 122, 32, 61, + 32, 45, 49, 46, 49, 59, + 13, 10, 13, 10, 9, 114, + 101, 116, 117, 114, 110, 32, + 111, 117, 116, 112, 117, 116, + 59, 13, 10, 125, 13, 10, + 71, 108, 111, 98, 97, 108, + 115, 76, 111, 99, 97, 108, + 115, 86, 83, 95, 79, 85, + 84, 80, 85, 84, 58, 58, + 80, 111, 115, 105, 116, 105, + 111, 110, 86, 83, 95, 79, + 85, 84, 80, 85, 84, 58, + 58, 84, 101, 120, 67, 111, + 111, 114, 100, 77, 105, 99, + 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, + 111, 109, 112, 105, 108, 101, + 114, 32, 57, 46, 50, 57, + 46, 57, 53, 50, 46, 51, + 49, 49, 49, 0, 109, 97, + 105, 110, 0, 118, 115, 95, + 52, 95, 48, 0 +}; diff --git a/hello/TextVS.hlsl b/common/TextVS.hlsl diff --git a/common/textgrid.cc b/common/textgrid.cc @@ -0,0 +1,147 @@ +/* Copyright 2013 Brian Swetland <swetland@frotz.net> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> + +#include "app.h" +#include "util.h" +#include "matrix.h" +#include "textgrid.h" + +#define BUILTIN 1 + +#if BUILTIN +#include "TextVS.h" +#include "TextPS.h" +#endif + +static D3D10_INPUT_ELEMENT_DESC text_layout_desc[] = { + { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, + { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, + { "CHARACTER", 0, DXGI_FORMAT_R8_UINT, 1, 0, D3D10_INPUT_PER_INSTANCE_DATA, 1 }, +}; + +static float unit_box_2d[] = { + 0, 1, 0, 1, + 0, 0, 0, 0, + 1, 0, 1, 0, + 1, 0, 1, 0, + 1, 1, 1, 1, + 0, 1, 0, 1, +}; + +int TextGrid::init(App *a, ID3D10Device *device, int w, int h) { + void *data; + unsigned int dw, dh; + HRESULT hr; + + struct { + mat4 proj; + unsigned cw; + unsigned ch; + unsigned pad0; + unsigned pad1; + } cb; + + width = w; + height = h; + dirty = 0; + + grid = (unsigned char*) malloc(w * h); + if (!grid) + return -1; + clear(); + + ID3D10Blob *blob; + if (!(data = load_png_rgba("font-vincent-8x8.png", &dw, &dh, 1))) + return error("cannot load texture"); + if (a->createTextureRGBA(data, dw, dh, 0, &texture)) + return -1; + free(data); + + if (a->createVtxBuffer(unit_box_2d, sizeof(unit_box_2d), &vtxbuf)) + return -1; + if (a->createVtxBuffer(grid, width * height, &charbuf)) + return -1; + if (a->createConstantBuffer(sizeof(cb), &cbuf)) + return -1; +#if BUILTIN + if (FAILED(device->CreatePixelShader(codeTextPS, sizeof(codeTextPS), &PS))) + return -1; + if (FAILED(device->CreateVertexShader(codeTextVS, sizeof(codeTextVS), &VS))) + return -1; + hr = device->CreateInputLayout(text_layout_desc, + sizeof(text_layout_desc) / sizeof(text_layout_desc[0]), + codeTextVS, sizeof(codeTextVS), &layout); +#else + if (a->compilePixelShader("TextPS.hlsl", &PS, NULL)) + return -1; + if (a->compileVertexShader("TextVS.hlsl", &VS, &blob)) + return -1; + hr = device->CreateInputLayout(text_layout_desc, + sizeof(text_layout_desc) / sizeof(text_layout_desc[0]), + blob->GetBufferPointer(), blob->GetBufferSize(), &layout); + blob->Release(); +#endif + if (FAILED(hr)) + return -1; + + cb.proj.setOrtho(0, w, 0, h, -1, 1); + cb.cw = width; + cb.ch = height; + a->updateBuffer(cbuf, &cb); + + stride[0] = 16; + stride[1] = 1; + offset[0] = 0; + offset[1] = 0; + buffer[0] = vtxbuf; + buffer[1] = charbuf; + return 0; +} + +void TextGrid::render(App *a, ID3D10Device *device) { + if (dirty) { + dirty = 0; + a->updateBuffer(charbuf, grid); + } + device->VSSetShader(VS); + device->PSSetShader(PS); + device->VSSetConstantBuffers(0, 1, &cbuf); + device->PSSetShaderResources(0, 1, &texture); + device->IASetInputLayout(layout); + device->IASetVertexBuffers(0, 2, buffer, stride, offset); + device->DrawInstanced(6, width * height, 0, 0); +} + +void TextGrid::clear(void) { + memset(grid, 0, width * height); +} + +void TextGrid::printf(int x, int y, const char *fmt, ...) { + char buf[128]; + int len; + va_list ap; + va_start(ap, fmt); + len = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + buf[127] = 0; + if (len > 127) len = 127; + if (y < 0) y = height + y; + memcpy(grid + y * width + x, buf, len); // TODO rangecheck + dirty = 1; +} +\ No newline at end of file diff --git a/hello/textgrid.h b/common/textgrid.h diff --git a/hello/hello.vcxproj b/hello/hello.vcxproj @@ -88,14 +88,14 @@ <ClCompile Include="..\common\matrix.cc" /> <ClCompile Include="..\common\savepng.cc" /> <ClCompile Include="..\common\simplexnoise.cc" /> + <ClCompile Include="..\common\textgrid.cc" /> <ClCompile Include="hello.cc" /> - <ClCompile Include="textgrid.cc" /> </ItemGroup> <ItemGroup> <ClInclude Include="..\common\app.h" /> <ClInclude Include="..\common\matrix.h" /> <ClInclude Include="..\common\util.h" /> - <ClInclude Include="textgrid.h" /> + <ClInclude Include="..\common\textgrid.h" /> </ItemGroup> <ItemGroup> <FxCompile Include="SimplePS.hlsl"> @@ -104,13 +104,18 @@ <ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType> </FxCompile> - <FxCompile Include="TextPS.hlsl"> + <FxCompile Include="..\common\TextPS.hlsl"> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType> <ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel> + <HeaderFileOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)%(Filename).h</HeaderFileOutput> + <VariableName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">codeTextPS</VariableName> </FxCompile> - <FxCompile Include="TextVS.hlsl"> + <FxCompile Include="..\common\TextVS.hlsl"> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType> <ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel> + <HeaderFileOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)%(Filename).h</HeaderFileOutput> + <VariableName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">codeTextVS</VariableName> + <DisableOptimizations Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableOptimizations> </FxCompile> </ItemGroup> <ItemGroup> @@ -123,4 +128,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> -\ No newline at end of file +</Project> diff --git a/hello/textgrid.cc b/hello/textgrid.cc @@ -1,130 +0,0 @@ -/* Copyright 2013 Brian Swetland <swetland@frotz.net> - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> - -#include "app.h" -#include "util.h" -#include "matrix.h" -#include "textgrid.h" - -static D3D10_INPUT_ELEMENT_DESC text_layout_desc[] = { - { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, - { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, - { "CHARACTER", 0, DXGI_FORMAT_R8_UINT, 1, 0, D3D10_INPUT_PER_INSTANCE_DATA, 1 }, -}; - -static float unit_box_2d[] = { - 0, 1, 0, 1, - 0, 0, 0, 0, - 1, 0, 1, 0, - 1, 0, 1, 0, - 1, 1, 1, 1, - 0, 1, 0, 1, -}; - -int TextGrid::init(App *a, ID3D10Device *device, int w, int h) { - void *data; - unsigned int dw, dh; - HRESULT hr; - - struct { - mat4 proj; - unsigned cw; - unsigned ch; - unsigned pad0; - unsigned pad1; - } cb; - - width = w; - height = h; - dirty = 0; - - grid = (unsigned char*) malloc(w * h); - if (!grid) - return -1; - clear(); - - ID3D10Blob *blob; - if (!(data = load_png_rgba("font-vincent-8x8.png", &dw, &dh, 1))) - return error("cannot load texture"); - if (a->createTextureRGBA(data, dw, dh, 0, &texture)) - return -1; - free(data); - - if (a->createVtxBuffer(unit_box_2d, sizeof(unit_box_2d), &vtxbuf)) - return -1; - if (a->createVtxBuffer(grid, width * height, &charbuf)) - return -1; - if (a->compilePixelShader("TextPS.hlsl", &PS, NULL)) - return -1; - if (a->compileVertexShader("TextVS.hlsl", &VS, &blob)) - return -1; - if (a->createConstantBuffer(sizeof(cb), &cbuf)) - return -1; - - cb.proj.setOrtho(0, w, 0, h, -1, 1); - cb.cw = width; - cb.ch = height; - a->updateBuffer(cbuf, &cb); - - hr = device->CreateInputLayout(text_layout_desc, - sizeof(text_layout_desc) / sizeof(text_layout_desc[0]), - blob->GetBufferPointer(), blob->GetBufferSize(), &layout); - blob->Release(); - if (FAILED(hr)) - return -1; - stride[0] = 16; - stride[1] = 1; - offset[0] = 0; - offset[1] = 0; - buffer[0] = vtxbuf; - buffer[1] = charbuf; - return 0; -} - -void TextGrid::render(App *a, ID3D10Device *device) { - if (dirty) { - dirty = 0; - a->updateBuffer(charbuf, grid); - } - device->VSSetShader(VS); - device->PSSetShader(PS); - device->VSSetConstantBuffers(0, 1, &cbuf); - device->PSSetShaderResources(0, 1, &texture); - device->IASetInputLayout(layout); - device->IASetVertexBuffers(0, 2, buffer, stride, offset); - device->DrawInstanced(6, width * height, 0, 0); -} - -void TextGrid::clear(void) { - memset(grid, 0, width * height); -} - -void TextGrid::printf(int x, int y, const char *fmt, ...) { - char buf[128]; - int len; - va_list ap; - va_start(ap, fmt); - len = vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - buf[127] = 0; - if (len > 127) len = 127; - if (y < 0) y = height + y; - memcpy(grid + y * width + x, buf, len); // TODO rangecheck - dirty = 1; -} -\ No newline at end of file