summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/Graphics/shaders
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/VBox/Devices/Graphics/shaders/Makefile.kmk50
-rw-r--r--src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl75
-rw-r--r--src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h169
-rw-r--r--src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h249
4 files changed, 543 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaders/Makefile.kmk b/src/VBox/Devices/Graphics/shaders/Makefile.kmk
new file mode 100644
index 00000000..286dc873
--- /dev/null
+++ b/src/VBox/Devices/Graphics/shaders/Makefile.kmk
@@ -0,0 +1,50 @@
+# $Id: Makefile.kmk $
+## @file
+# Makefile for D3D11 shader compilation.
+#
+
+#
+# Copyright (C) 2022-2023 Oracle and/or its affiliates.
+#
+# This file is part of VirtualBox base platform packages, as
+# available from https://www.virtualbox.org.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, in version 3 of the
+# License.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses>.
+#
+# SPDX-License-Identifier: GPL-3.0-only
+#
+
+SUB_DEPTH = ../../../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+OTHERS += \
+ $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.vs.h \
+ $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.ps.h
+OTHERS_CLEAN += \
+ $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.vs.h \
+ $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.ps.h
+
+VBOX_FXC ?= $(PATH_SDK_$(VBOX_WINPSDK)_BIN)/fxc.exe
+
+$(PATH_SUB_CURRENT)/d3d11blitter.hlsl.vs.h: \
+ $(PATH_SUB_CURRENT)/Makefile.kmk \
+ $(PATH_SUB_CURRENT)/d3d11blitter.hlsl
+ $(VBOX_FXC) /nologo /Fhd3d11blitter.hlsl.vs.h /Evs_blitter /Tvs_5_0 d3d11blitter.hlsl
+
+$(PATH_SUB_CURRENT)/d3d11blitter.hlsl.ps.h: \
+ $(PATH_SUB_CURRENT)/Makefile.kmk \
+ $(PATH_SUB_CURRENT)/d3d11blitter.hlsl
+ $(VBOX_FXC) /nologo /Fhd3d11blitter.hlsl.ps.h /Eps_blitter /Tps_5_0 d3d11blitter.hlsl
+
+include $(FILE_KBUILD_SUB_FOOTER)
diff --git a/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl
new file mode 100644
index 00000000..b892752f
--- /dev/null
+++ b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl
@@ -0,0 +1,75 @@
+/* $Id: d3d11blitter.hlsl $ */
+/*
+ * Blitter for dxgiBlt/SVGA_3D_CMD_DX_PRESENTBLT.
+ *
+ * fxc /nologo /Fhd3d11blitter.hlsl.vs.h /Evs_blitter /Tvs_5_0 d3d11blitter.hlsl
+ * fxc /nologo /Fhd3d11blitter.hlsl.ps.h /Eps_blitter /Tps_5_0 d3d11blitter.hlsl
+ */
+
+/*
+ * Copyright (C) 2022-2023 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+Texture2D t;
+sampler s;
+
+cbuffer VSParameters
+{
+ float scaleX;
+ float scaleY;
+ float shiftX;
+ float shiftY;
+};
+
+struct VSInput
+{
+ uint VertexID : SV_VertexID;
+};
+
+struct VSOutput
+{
+ float4 position : SV_POSITION;
+ float2 texcoord : TEXCOORD0;
+ float2 alpha : TEXCOORD1;
+};
+
+VSOutput vs_blitter(VSInput input)
+{
+ VSOutput output;
+
+ float x = (input.VertexID & 1) ? 1.0f : -1.0f;
+ float y = (input.VertexID & 2) ? -1.0f : 1.0f;
+ x = x * scaleX + shiftX;
+ y = y * scaleY + shiftY;
+ output.position = float4(x, y, 0.0f, 1.0f);
+
+ output.texcoord.x = (input.VertexID & 1) ? 1.0f : 0.0f;
+ output.texcoord.y = (input.VertexID & 2) ? 1.0f : 0.0f;
+
+ output.alpha = float2(1.0f, 0.0f);
+
+ return output;
+}
+
+float4 ps_blitter(VSOutput input) : SV_TARGET
+{
+ return float4(t.Sample(s, input.texcoord).rgb, input.alpha.x);
+}
diff --git a/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h
new file mode 100644
index 00000000..dba5f159
--- /dev/null
+++ b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h
@@ -0,0 +1,169 @@
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 10.1
+//
+//
+// Resource Bindings:
+//
+// Name Type Format Dim HLSL Bind Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// s sampler NA NA s0 1
+// t texture float4 2d t0 1
+//
+//
+//
+// Input signature:
+//
+// Name Index Mask Register SysValue Format Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION 0 xyzw 0 POS float
+// TEXCOORD 0 xy 1 NONE float xy
+// TEXCOORD 1 zw 1 NONE float z
+//
+//
+// Output signature:
+//
+// Name Index Mask Register SysValue Format Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_TARGET 0 xyzw 0 TARGET float xyzw
+//
+ps_5_0
+dcl_globalFlags refactoringAllowed
+dcl_sampler s0, mode_default
+dcl_resource_texture2d (float,float,float,float) t0
+dcl_input_ps linear v1.xy
+dcl_input_ps linear v1.z
+dcl_output o0.xyzw
+dcl_temps 1
+sample_indexable(texture2d)(float,float,float,float) r0.xyz, v1.xyxx, t0.xyzw, s0
+mov o0.xyz, r0.xyzx
+mov o0.w, v1.z
+ret
+// Approximately 4 instruction slots used
+#endif
+
+const BYTE g_ps_blitter[] =
+{
+ 68, 88, 66, 67, 63, 252,
+ 141, 106, 55, 56, 211, 92,
+ 55, 135, 46, 227, 111, 177,
+ 216, 163, 1, 0, 0, 0,
+ 216, 2, 0, 0, 5, 0,
+ 0, 0, 52, 0, 0, 0,
+ 228, 0, 0, 0, 84, 1,
+ 0, 0, 136, 1, 0, 0,
+ 60, 2, 0, 0, 82, 68,
+ 69, 70, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0,
+ 60, 0, 0, 0, 0, 5,
+ 255, 255, 0, 1, 0, 0,
+ 128, 0, 0, 0, 82, 68,
+ 49, 49, 60, 0, 0, 0,
+ 24, 0, 0, 0, 32, 0,
+ 0, 0, 40, 0, 0, 0,
+ 36, 0, 0, 0, 12, 0,
+ 0, 0, 0, 0, 0, 0,
+ 124, 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, 126, 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, 0,
+ 116, 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, 49, 48, 46, 49, 0,
+ 73, 83, 71, 78, 104, 0,
+ 0, 0, 3, 0, 0, 0,
+ 8, 0, 0, 0, 80, 0,
+ 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 0, 92, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0,
+ 0, 0, 1, 0, 0, 0,
+ 3, 3, 0, 0, 92, 0,
+ 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0,
+ 0, 0, 1, 0, 0, 0,
+ 12, 4, 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,
+ 65, 82, 71, 69, 84, 0,
+ 171, 171, 83, 72, 69, 88,
+ 172, 0, 0, 0, 80, 0,
+ 0, 0, 43, 0, 0, 0,
+ 106, 8, 0, 1, 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, 98, 16, 0, 3,
+ 66, 16, 16, 0, 1, 0,
+ 0, 0, 101, 0, 0, 3,
+ 242, 32, 16, 0, 0, 0,
+ 0, 0, 104, 0, 0, 2,
+ 1, 0, 0, 0, 69, 0,
+ 0, 139, 194, 0, 0, 128,
+ 67, 85, 21, 0, 114, 0,
+ 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,
+ 54, 0, 0, 5, 114, 32,
+ 16, 0, 0, 0, 0, 0,
+ 70, 2, 16, 0, 0, 0,
+ 0, 0, 54, 0, 0, 5,
+ 130, 32, 16, 0, 0, 0,
+ 0, 0, 42, 16, 16, 0,
+ 1, 0, 0, 0, 62, 0,
+ 0, 1, 83, 84, 65, 84,
+ 148, 0, 0, 0, 4, 0,
+ 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 3, 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, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0
+};
diff --git a/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h
new file mode 100644
index 00000000..a6592b1f
--- /dev/null
+++ b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h
@@ -0,0 +1,249 @@
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 10.1
+//
+//
+// Buffer Definitions:
+//
+// cbuffer VSParameters
+// {
+//
+// float scaleX; // Offset: 0 Size: 4
+// float scaleY; // Offset: 4 Size: 4
+// float shiftX; // Offset: 8 Size: 4
+// float shiftY; // Offset: 12 Size: 4
+//
+// }
+//
+//
+// Resource Bindings:
+//
+// Name Type Format Dim HLSL Bind Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// VSParameters cbuffer NA NA cb0 1
+//
+//
+//
+// Input signature:
+//
+// Name Index Mask Register SysValue Format Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_VertexID 0 x 0 VERTID 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
+// TEXCOORD 1 zw 1 NONE float zw
+//
+vs_5_0
+dcl_globalFlags refactoringAllowed
+dcl_constantbuffer CB0[1], immediateIndexed
+dcl_input_sgv v0.x, vertex_id
+dcl_output_siv o0.xyzw, position
+dcl_output o1.xy
+dcl_output o1.zw
+dcl_temps 1
+and r0.xyzw, v0.xxxx, l(1, 2, 1, 2)
+movc r0.xyzw, r0.xyzw, l(1.000000,-1.000000,1.000000,1.000000), l(-1.000000,1.000000,0,0)
+mad o0.xy, r0.xyxx, cb0[0].xyxx, cb0[0].zwzz
+mov o1.xy, r0.zwzz
+mov o0.zw, l(0,0,0,1.000000)
+mov o1.zw, l(0,0,1.000000,0)
+ret
+// Approximately 7 instruction slots used
+#endif
+
+const BYTE g_vs_blitter[] =
+{
+ 68, 88, 66, 67, 225, 37,
+ 228, 7, 29, 113, 112, 121,
+ 16, 192, 133, 165, 100, 74,
+ 183, 80, 1, 0, 0, 0,
+ 96, 4, 0, 0, 5, 0,
+ 0, 0, 52, 0, 0, 0,
+ 212, 1, 0, 0, 8, 2,
+ 0, 0, 120, 2, 0, 0,
+ 196, 3, 0, 0, 82, 68,
+ 69, 70, 152, 1, 0, 0,
+ 1, 0, 0, 0, 108, 0,
+ 0, 0, 1, 0, 0, 0,
+ 60, 0, 0, 0, 0, 5,
+ 254, 255, 0, 1, 0, 0,
+ 109, 1, 0, 0, 82, 68,
+ 49, 49, 60, 0, 0, 0,
+ 24, 0, 0, 0, 32, 0,
+ 0, 0, 40, 0, 0, 0,
+ 36, 0, 0, 0, 12, 0,
+ 0, 0, 0, 0, 0, 0,
+ 92, 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, 86, 83, 80, 97,
+ 114, 97, 109, 101, 116, 101,
+ 114, 115, 0, 171, 171, 171,
+ 92, 0, 0, 0, 4, 0,
+ 0, 0, 132, 0, 0, 0,
+ 16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 36, 1, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0,
+ 2, 0, 0, 0, 52, 1,
+ 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 0,
+ 0, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 88, 1,
+ 0, 0, 4, 0, 0, 0,
+ 4, 0, 0, 0, 2, 0,
+ 0, 0, 52, 1, 0, 0,
+ 0, 0, 0, 0, 255, 255,
+ 255, 255, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 0,
+ 0, 0, 95, 1, 0, 0,
+ 8, 0, 0, 0, 4, 0,
+ 0, 0, 2, 0, 0, 0,
+ 52, 1, 0, 0, 0, 0,
+ 0, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 255, 255,
+ 255, 255, 0, 0, 0, 0,
+ 102, 1, 0, 0, 12, 0,
+ 0, 0, 4, 0, 0, 0,
+ 2, 0, 0, 0, 52, 1,
+ 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 0, 0,
+ 0, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 115, 99,
+ 97, 108, 101, 88, 0, 102,
+ 108, 111, 97, 116, 0, 171,
+ 171, 171, 0, 0, 3, 0,
+ 1, 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, 43, 1,
+ 0, 0, 115, 99, 97, 108,
+ 101, 89, 0, 115, 104, 105,
+ 102, 116, 88, 0, 115, 104,
+ 105, 102, 116, 89, 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, 49, 48,
+ 46, 49, 0, 171, 171, 171,
+ 73, 83, 71, 78, 44, 0,
+ 0, 0, 1, 0, 0, 0,
+ 8, 0, 0, 0, 32, 0,
+ 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0,
+ 1, 1, 0, 0, 83, 86,
+ 95, 86, 101, 114, 116, 101,
+ 120, 73, 68, 0, 79, 83,
+ 71, 78, 104, 0, 0, 0,
+ 3, 0, 0, 0, 8, 0,
+ 0, 0, 80, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0,
+ 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 15, 0,
+ 0, 0, 92, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0,
+ 1, 0, 0, 0, 3, 12,
+ 0, 0, 92, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0,
+ 1, 0, 0, 0, 12, 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, 83, 72, 69, 88,
+ 68, 1, 0, 0, 80, 0,
+ 1, 0, 81, 0, 0, 0,
+ 106, 8, 0, 1, 89, 0,
+ 0, 4, 70, 142, 32, 0,
+ 0, 0, 0, 0, 1, 0,
+ 0, 0, 96, 0, 0, 4,
+ 18, 16, 16, 0, 0, 0,
+ 0, 0, 6, 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, 101, 0,
+ 0, 3, 194, 32, 16, 0,
+ 1, 0, 0, 0, 104, 0,
+ 0, 2, 1, 0, 0, 0,
+ 1, 0, 0, 10, 242, 0,
+ 16, 0, 0, 0, 0, 0,
+ 6, 16, 16, 0, 0, 0,
+ 0, 0, 2, 64, 0, 0,
+ 1, 0, 0, 0, 2, 0,
+ 0, 0, 1, 0, 0, 0,
+ 2, 0, 0, 0, 55, 0,
+ 0, 15, 242, 0, 16, 0,
+ 0, 0, 0, 0, 70, 14,
+ 16, 0, 0, 0, 0, 0,
+ 2, 64, 0, 0, 0, 0,
+ 128, 63, 0, 0, 128, 191,
+ 0, 0, 128, 63, 0, 0,
+ 128, 63, 2, 64, 0, 0,
+ 0, 0, 128, 191, 0, 0,
+ 128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 0,
+ 0, 11, 50, 32, 16, 0,
+ 0, 0, 0, 0, 70, 0,
+ 16, 0, 0, 0, 0, 0,
+ 70, 128, 32, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 230, 138, 32, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 54, 0, 0, 5, 50, 32,
+ 16, 0, 1, 0, 0, 0,
+ 230, 10, 16, 0, 0, 0,
+ 0, 0, 54, 0, 0, 8,
+ 194, 32, 16, 0, 0, 0,
+ 0, 0, 2, 64, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 128, 63, 54, 0,
+ 0, 8, 194, 32, 16, 0,
+ 1, 0, 0, 0, 2, 64,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 128, 63, 0, 0, 0, 0,
+ 62, 0, 0, 1, 83, 84,
+ 65, 84, 148, 0, 0, 0,
+ 7, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0,
+ 1, 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, 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, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0
+};