Initial Commit

This commit is contained in:
2026-02-12 11:46:06 +03:00
commit b044c8d1a5
3973 changed files with 1599881 additions and 0 deletions

View File

@@ -0,0 +1,180 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D) || \
defined(SDL_VIDEO_RENDER_D3D11) || \
defined(SDL_VIDEO_RENDER_D3D12) || \
defined(SDL_VIDEO_RENDER_GPU) || \
defined(SDL_VIDEO_RENDER_VULKAN)
// Set up for C function definitions, even when using C++
#ifdef __cplusplus
extern "C" {
#endif
// Direct3D matrix math functions
typedef struct
{
float x;
float y;
} Float2;
typedef struct
{
float x;
float y;
float z;
} Float3;
typedef struct
{
float x;
float y;
float z;
float w;
} Float4;
typedef struct
{
union
{
struct
{
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
} v;
float m[4][4];
};
} Float4X4;
static inline Float4X4 MatrixIdentity(void)
{
Float4X4 m;
SDL_zero(m);
m.v._11 = 1.0f;
m.v._22 = 1.0f;
m.v._33 = 1.0f;
m.v._44 = 1.0f;
return m;
}
static inline Float4X4 MatrixMultiply(Float4X4 M1, Float4X4 M2)
{
Float4X4 m;
m.v._11 = M1.v._11 * M2.v._11 + M1.v._12 * M2.v._21 + M1.v._13 * M2.v._31 + M1.v._14 * M2.v._41;
m.v._12 = M1.v._11 * M2.v._12 + M1.v._12 * M2.v._22 + M1.v._13 * M2.v._32 + M1.v._14 * M2.v._42;
m.v._13 = M1.v._11 * M2.v._13 + M1.v._12 * M2.v._23 + M1.v._13 * M2.v._33 + M1.v._14 * M2.v._43;
m.v._14 = M1.v._11 * M2.v._14 + M1.v._12 * M2.v._24 + M1.v._13 * M2.v._34 + M1.v._14 * M2.v._44;
m.v._21 = M1.v._21 * M2.v._11 + M1.v._22 * M2.v._21 + M1.v._23 * M2.v._31 + M1.v._24 * M2.v._41;
m.v._22 = M1.v._21 * M2.v._12 + M1.v._22 * M2.v._22 + M1.v._23 * M2.v._32 + M1.v._24 * M2.v._42;
m.v._23 = M1.v._21 * M2.v._13 + M1.v._22 * M2.v._23 + M1.v._23 * M2.v._33 + M1.v._24 * M2.v._43;
m.v._24 = M1.v._21 * M2.v._14 + M1.v._22 * M2.v._24 + M1.v._23 * M2.v._34 + M1.v._24 * M2.v._44;
m.v._31 = M1.v._31 * M2.v._11 + M1.v._32 * M2.v._21 + M1.v._33 * M2.v._31 + M1.v._34 * M2.v._41;
m.v._32 = M1.v._31 * M2.v._12 + M1.v._32 * M2.v._22 + M1.v._33 * M2.v._32 + M1.v._34 * M2.v._42;
m.v._33 = M1.v._31 * M2.v._13 + M1.v._32 * M2.v._23 + M1.v._33 * M2.v._33 + M1.v._34 * M2.v._43;
m.v._34 = M1.v._31 * M2.v._14 + M1.v._32 * M2.v._24 + M1.v._33 * M2.v._34 + M1.v._34 * M2.v._44;
m.v._41 = M1.v._41 * M2.v._11 + M1.v._42 * M2.v._21 + M1.v._43 * M2.v._31 + M1.v._44 * M2.v._41;
m.v._42 = M1.v._41 * M2.v._12 + M1.v._42 * M2.v._22 + M1.v._43 * M2.v._32 + M1.v._44 * M2.v._42;
m.v._43 = M1.v._41 * M2.v._13 + M1.v._42 * M2.v._23 + M1.v._43 * M2.v._33 + M1.v._44 * M2.v._43;
m.v._44 = M1.v._41 * M2.v._14 + M1.v._42 * M2.v._24 + M1.v._43 * M2.v._34 + M1.v._44 * M2.v._44;
return m;
}
static inline Float4X4 MatrixScaling(float x, float y, float z)
{
Float4X4 m;
SDL_zero(m);
m.v._11 = x;
m.v._22 = y;
m.v._33 = z;
m.v._44 = 1.0f;
return m;
}
static inline Float4X4 MatrixTranslation(float x, float y, float z)
{
Float4X4 m;
SDL_zero(m);
m.v._11 = 1.0f;
m.v._22 = 1.0f;
m.v._33 = 1.0f;
m.v._44 = 1.0f;
m.v._41 = x;
m.v._42 = y;
m.v._43 = z;
return m;
}
static inline Float4X4 MatrixRotationX(float r)
{
float sinR = SDL_sinf(r);
float cosR = SDL_cosf(r);
Float4X4 m;
SDL_zero(m);
m.v._11 = 1.0f;
m.v._22 = cosR;
m.v._23 = sinR;
m.v._32 = -sinR;
m.v._33 = cosR;
m.v._44 = 1.0f;
return m;
}
static inline Float4X4 MatrixRotationY(float r)
{
float sinR = SDL_sinf(r);
float cosR = SDL_cosf(r);
Float4X4 m;
SDL_zero(m);
m.v._11 = cosR;
m.v._13 = -sinR;
m.v._22 = 1.0f;
m.v._31 = sinR;
m.v._33 = cosR;
m.v._44 = 1.0f;
return m;
}
static inline Float4X4 MatrixRotationZ(float r)
{
float sinR = SDL_sinf(r);
float cosR = SDL_cosf(r);
Float4X4 m;
SDL_zero(m);
m.v._11 = cosR;
m.v._12 = sinR;
m.v._21 = -sinR;
m.v._22 = cosR;
m.v._33 = 1.0f;
m.v._44 = 1.0f;
return m;
}
// Ends C function definitions when using C++
#ifdef __cplusplus
}
#endif
#endif // SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12 || SDL_VIDEO_RENDER_VULKAN

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"

View File

@@ -0,0 +1,429 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#ifndef SDL_sysrender_h_
#define SDL_sysrender_h_
#include "../video/SDL_surface_c.h"
#include "SDL_yuv_sw_c.h"
// Set up for C function definitions, even when using C++
#ifdef __cplusplus
extern "C" {
#endif
/**
* A rectangle, with the origin at the upper left (double precision).
*/
typedef struct SDL_DRect
{
double x;
double y;
double w;
double h;
} SDL_DRect;
// The SDL 2D rendering system
typedef struct SDL_RenderDriver SDL_RenderDriver;
// Rendering view state
typedef struct SDL_RenderViewState
{
int pixel_w;
int pixel_h;
SDL_Rect viewport;
SDL_Rect pixel_viewport;
SDL_Rect clip_rect;
SDL_Rect pixel_clip_rect;
bool clipping_enabled;
SDL_FPoint scale;
// Support for logical output coordinates
SDL_RendererLogicalPresentation logical_presentation_mode;
int logical_w, logical_h;
SDL_FRect logical_src_rect;
SDL_FRect logical_dst_rect;
SDL_FPoint logical_scale;
SDL_FPoint logical_offset;
SDL_FPoint current_scale; // this is just `scale * logical_scale`, precalculated, since we use it a lot.
} SDL_RenderViewState;
// Define the SDL texture palette structure
typedef struct SDL_TexturePalette
{
int refcount;
Uint32 version;
Uint32 last_command_generation; // last command queue generation this palette was in.
void *internal; // Driver specific palette representation
} SDL_TexturePalette;
// Define the SDL texture structure
struct SDL_Texture
{
// Public API definition
SDL_PixelFormat format; /**< The format of the texture, read-only */
int w; /**< The width of the texture, read-only. */
int h; /**< The height of the texture, read-only. */
int refcount; /**< Application reference count, used when freeing texture */
// Private API definition
SDL_Renderer *renderer;
SDL_Colorspace colorspace; // The colorspace of the texture
float SDR_white_point; // The SDR white point for this content
float HDR_headroom; // The HDR headroom needed by this content
SDL_TextureAccess access; // The texture access mode
SDL_BlendMode blendMode; // The texture blend mode
SDL_ScaleMode scaleMode; // The texture scale mode
SDL_FColor color; // Texture modulation values
SDL_RenderViewState view; // Target texture view state
SDL_Palette *public_palette;
SDL_TexturePalette *palette;
Uint32 palette_version;
SDL_Surface *palette_surface;
// Support for formats not supported directly by the renderer
SDL_Texture *native;
SDL_SW_YUVTexture *yuv;
void *pixels;
int pitch;
SDL_Rect locked_rect;
SDL_Surface *locked_surface; // Locked region exposed as a SDL surface
Uint32 last_command_generation; // last command queue generation this texture was in.
SDL_PropertiesID props;
void *internal; // Driver specific texture representation
SDL_Texture *prev;
SDL_Texture *next;
};
// Define the GPU render state structure
typedef struct SDL_GPURenderStateUniformBuffer
{
Uint32 slot_index;
void *data;
Uint32 length;
} SDL_GPURenderStateUniformBuffer;
// Define the GPU render state structure
struct SDL_GPURenderState
{
SDL_Renderer *renderer;
Uint32 last_command_generation; // last command queue generation this state was in.
SDL_GPUShader *fragment_shader;
int num_sampler_bindings;
SDL_GPUTextureSamplerBinding *sampler_bindings;
int num_storage_textures;
SDL_GPUTexture **storage_textures;
int num_storage_buffers;
SDL_GPUBuffer **storage_buffers;
int num_uniform_buffers;
SDL_GPURenderStateUniformBuffer *uniform_buffers;
};
typedef enum
{
SDL_RENDERCMD_NO_OP,
SDL_RENDERCMD_SETVIEWPORT,
SDL_RENDERCMD_SETCLIPRECT,
SDL_RENDERCMD_SETDRAWCOLOR,
SDL_RENDERCMD_CLEAR,
SDL_RENDERCMD_DRAW_POINTS,
SDL_RENDERCMD_DRAW_LINES,
SDL_RENDERCMD_FILL_RECTS,
SDL_RENDERCMD_COPY,
SDL_RENDERCMD_COPY_EX,
SDL_RENDERCMD_GEOMETRY
} SDL_RenderCommandType;
typedef struct SDL_RenderCommand
{
SDL_RenderCommandType command;
union
{
struct
{
size_t first;
SDL_Rect rect;
} viewport;
struct
{
bool enabled;
SDL_Rect rect;
} cliprect;
struct
{
size_t first;
size_t count;
float color_scale;
SDL_FColor color;
SDL_BlendMode blend;
SDL_Texture *texture;
SDL_ScaleMode texture_scale_mode;
SDL_TextureAddressMode texture_address_mode_u;
SDL_TextureAddressMode texture_address_mode_v;
SDL_GPURenderState *gpu_render_state;
} draw;
struct
{
size_t first;
float color_scale;
SDL_FColor color;
} color;
} data;
struct SDL_RenderCommand *next;
} SDL_RenderCommand;
typedef struct SDL_VertexSolid
{
SDL_FPoint position;
SDL_FColor color;
} SDL_VertexSolid;
typedef enum
{
SDL_RENDERLINEMETHOD_POINTS,
SDL_RENDERLINEMETHOD_LINES,
SDL_RENDERLINEMETHOD_GEOMETRY,
} SDL_RenderLineMethod;
// Define the SDL renderer structure
struct SDL_Renderer
{
void (*WindowEvent)(SDL_Renderer *renderer, const SDL_WindowEvent *event);
bool (*GetOutputSize)(SDL_Renderer *renderer, int *w, int *h);
bool (*SupportsBlendMode)(SDL_Renderer *renderer, SDL_BlendMode blendMode);
bool (*CreateTexture)(SDL_Renderer *renderer, SDL_Texture *texture, SDL_PropertiesID create_props);
bool (*QueueSetViewport)(SDL_Renderer *renderer, SDL_RenderCommand *cmd);
bool (*QueueSetDrawColor)(SDL_Renderer *renderer, SDL_RenderCommand *cmd);
bool (*QueueDrawPoints)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points,
int count);
bool (*QueueDrawLines)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points,
int count);
bool (*QueueFillRects)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FRect *rects,
int count);
bool (*QueueCopy)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture,
const SDL_FRect *srcrect, const SDL_FRect *dstrect);
bool (*QueueCopyEx)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture,
const SDL_FRect *srcquad, const SDL_FRect *dstrect,
const double angle, const SDL_FPoint *center, const SDL_FlipMode flip, float scale_x, float scale_y);
bool (*QueueGeometry)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture,
const float *xy, int xy_stride, const SDL_FColor *color, int color_stride, const float *uv, int uv_stride,
int num_vertices, const void *indices, int num_indices, int size_indices,
float scale_x, float scale_y);
void (*InvalidateCachedState)(SDL_Renderer *renderer);
bool (*RunCommandQueue)(SDL_Renderer *renderer, SDL_RenderCommand *cmd, void *vertices, size_t vertsize);
bool (*CreatePalette)(SDL_Renderer *renderer, SDL_TexturePalette *palette);
bool (*UpdatePalette)(SDL_Renderer *renderer, SDL_TexturePalette *palette, int ncolors, SDL_Color *colors);
void (*DestroyPalette)(SDL_Renderer *renderer, SDL_TexturePalette *palette);
bool (*ChangeTexturePalette)(SDL_Renderer *renderer, SDL_Texture *texture);
bool (*UpdateTexture)(SDL_Renderer *renderer, SDL_Texture *texture,
const SDL_Rect *rect, const void *pixels,
int pitch);
#ifdef SDL_HAVE_YUV
bool (*UpdateTextureYUV)(SDL_Renderer *renderer, SDL_Texture *texture,
const SDL_Rect *rect,
const Uint8 *Yplane, int Ypitch,
const Uint8 *Uplane, int Upitch,
const Uint8 *Vplane, int Vpitch);
bool (*UpdateTextureNV)(SDL_Renderer *renderer, SDL_Texture *texture,
const SDL_Rect *rect,
const Uint8 *Yplane, int Ypitch,
const Uint8 *UVplane, int UVpitch);
#endif
bool (*LockTexture)(SDL_Renderer *renderer, SDL_Texture *texture,
const SDL_Rect *rect, void **pixels, int *pitch);
void (*UnlockTexture)(SDL_Renderer *renderer, SDL_Texture *texture);
bool (*SetRenderTarget)(SDL_Renderer *renderer, SDL_Texture *texture);
SDL_Surface *(*RenderReadPixels)(SDL_Renderer *renderer, const SDL_Rect *rect);
bool (*RenderPresent)(SDL_Renderer *renderer);
void (*DestroyTexture)(SDL_Renderer *renderer, SDL_Texture *texture);
void (*DestroyRenderer)(SDL_Renderer *renderer);
bool (*SetVSync)(SDL_Renderer *renderer, int vsync);
void *(*GetMetalLayer)(SDL_Renderer *renderer);
void *(*GetMetalCommandEncoder)(SDL_Renderer *renderer);
bool (*AddVulkanRenderSemaphores)(SDL_Renderer *renderer, Uint32 wait_stage_mask, Sint64 wait_semaphore, Sint64 signal_semaphore);
// The current renderer info
const char *name;
SDL_PixelFormat *texture_formats;
int num_texture_formats;
bool software;
bool npot_texture_wrap_unsupported;
// The window associated with the renderer
SDL_Window *window;
bool hidden;
// Whether we should simulate vsync
bool wanted_vsync;
bool simulate_vsync;
Uint64 simulate_vsync_interval_ns;
Uint64 last_present;
SDL_RenderViewState *view;
SDL_RenderViewState main_view;
// The window pixel to point coordinate scale
SDL_FPoint dpi_scale;
// The method of drawing lines
SDL_RenderLineMethod line_method;
// Default scale mode for textures created with this renderer
SDL_ScaleMode scale_mode;
// The list of textures
SDL_Texture *textures;
SDL_Texture *target;
SDL_Mutex *target_mutex;
// The list of palettes
SDL_HashTable *palettes;
SDL_Colorspace output_colorspace;
float SDR_white_point;
float HDR_headroom;
float desired_color_scale;
float color_scale;
SDL_FColor color; /**< Color for drawing operations values */
SDL_BlendMode blendMode; /**< The drawing blend mode */
SDL_TextureAddressMode texture_address_mode_u;
SDL_TextureAddressMode texture_address_mode_v;
SDL_GPURenderState *gpu_render_state;
SDL_RenderCommand *render_commands;
SDL_RenderCommand *render_commands_tail;
SDL_RenderCommand *render_commands_pool;
Uint32 render_command_generation;
SDL_FColor last_queued_color;
float last_queued_color_scale;
SDL_Rect last_queued_viewport;
SDL_Rect last_queued_cliprect;
bool last_queued_cliprect_enabled;
bool color_queued;
bool viewport_queued;
bool cliprect_queued;
void *vertex_data;
size_t vertex_data_used;
size_t vertex_data_allocation;
// Shaped window support
bool transparent_window;
SDL_Surface *shape_surface;
SDL_Texture *shape_texture;
SDL_PropertiesID props;
SDL_Texture *debug_char_texture_atlas;
bool destroyed; // already destroyed by SDL_DestroyWindow; just free this struct in SDL_DestroyRenderer.
void *internal;
SDL_Renderer *next;
};
// Define the SDL render driver structure
struct SDL_RenderDriver
{
bool (*CreateRenderer)(SDL_Renderer *renderer, SDL_Window *window, SDL_PropertiesID props);
const char *name;
};
// Not all of these are available in a given build. Use #ifdefs, etc.
extern SDL_RenderDriver D3D_RenderDriver;
extern SDL_RenderDriver D3D11_RenderDriver;
extern SDL_RenderDriver D3D12_RenderDriver;
extern SDL_RenderDriver GL_RenderDriver;
extern SDL_RenderDriver GLES2_RenderDriver;
extern SDL_RenderDriver METAL_RenderDriver;
extern SDL_RenderDriver NGAGE_RenderDriver;
extern SDL_RenderDriver VULKAN_RenderDriver;
extern SDL_RenderDriver PS2_RenderDriver;
extern SDL_RenderDriver PSP_RenderDriver;
extern SDL_RenderDriver SW_RenderDriver;
extern SDL_RenderDriver VITA_GXM_RenderDriver;
extern SDL_RenderDriver GPU_RenderDriver;
// Clean up any renderers at shutdown
extern void SDL_QuitRender(void);
#define RENDER_SAMPLER_HASHKEY(scale_mode, address_u, address_v) \
(((scale_mode == SDL_SCALEMODE_NEAREST) << 0) | \
((address_u == SDL_TEXTURE_ADDRESS_WRAP) << 1) | \
((address_v == SDL_TEXTURE_ADDRESS_WRAP) << 2))
#define RENDER_SAMPLER_COUNT (((1 << 0) | (1 << 1) | (1 << 2)) + 1)
// Add a supported texture format to a renderer
extern bool SDL_AddSupportedTextureFormat(SDL_Renderer *renderer, SDL_PixelFormat format);
// Setup colorspace conversion
extern void SDL_SetupRendererColorspace(SDL_Renderer *renderer, SDL_PropertiesID props);
// Colorspace conversion functions
extern bool SDL_RenderingLinearSpace(SDL_Renderer *renderer);
extern void SDL_ConvertToLinear(SDL_FColor *color);
extern void SDL_ConvertFromLinear(SDL_FColor *color);
// Blend mode functions
extern SDL_BlendFactor SDL_GetBlendModeSrcColorFactor(SDL_BlendMode blendMode);
extern SDL_BlendFactor SDL_GetBlendModeDstColorFactor(SDL_BlendMode blendMode);
extern SDL_BlendOperation SDL_GetBlendModeColorOperation(SDL_BlendMode blendMode);
extern SDL_BlendFactor SDL_GetBlendModeSrcAlphaFactor(SDL_BlendMode blendMode);
extern SDL_BlendFactor SDL_GetBlendModeDstAlphaFactor(SDL_BlendMode blendMode);
extern SDL_BlendOperation SDL_GetBlendModeAlphaOperation(SDL_BlendMode blendMode);
/* drivers call this during their Queue*() methods to make space in a array that are used
for a vertex buffer during RunCommandQueue(). Pointers returned here are only valid until
the next call, because it might be in an array that gets realloc()'d. */
extern void *SDL_AllocateRenderVertices(SDL_Renderer *renderer, size_t numbytes, size_t alignment, size_t *offset);
// Let the video subsystem destroy a renderer without making its pointer invalid.
extern void SDL_DestroyRendererWithoutFreeing(SDL_Renderer *renderer);
// Ends C function definitions when using C++
#ifdef __cplusplus
}
#endif
#endif // SDL_sysrender_h_

View File

@@ -0,0 +1,404 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
// This is the software implementation of the YUV texture support
#ifdef SDL_HAVE_YUV
#include "SDL_yuv_sw_c.h"
#include "../video/SDL_surface_c.h"
#include "../video/SDL_yuv_c.h"
SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(SDL_PixelFormat format, SDL_Colorspace colorspace, int w, int h)
{
SDL_SW_YUVTexture *swdata;
switch (format) {
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
case SDL_PIXELFORMAT_YUY2:
case SDL_PIXELFORMAT_UYVY:
case SDL_PIXELFORMAT_YVYU:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
break;
default:
SDL_SetError("Unsupported YUV format");
return NULL;
}
swdata = (SDL_SW_YUVTexture *)SDL_calloc(1, sizeof(*swdata));
if (!swdata) {
return NULL;
}
swdata->format = format;
swdata->colorspace = colorspace;
swdata->target_format = SDL_PIXELFORMAT_UNKNOWN;
swdata->w = w;
swdata->h = h;
{
size_t dst_size;
if (!SDL_CalculateYUVSize(format, w, h, &dst_size, NULL)) {
SDL_SW_DestroyYUVTexture(swdata);
return NULL;
}
swdata->pixels = (Uint8 *)SDL_aligned_alloc(SDL_GetSIMDAlignment(), dst_size);
if (!swdata->pixels) {
SDL_SW_DestroyYUVTexture(swdata);
return NULL;
}
}
// Find the pitch and offset values for the texture
switch (format) {
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
swdata->pitches[0] = w;
swdata->pitches[1] = (swdata->pitches[0] + 1) / 2;
swdata->pitches[2] = (swdata->pitches[0] + 1) / 2;
swdata->planes[0] = swdata->pixels;
swdata->planes[1] = swdata->planes[0] + swdata->pitches[0] * h;
swdata->planes[2] = swdata->planes[1] + swdata->pitches[1] * ((h + 1) / 2);
break;
case SDL_PIXELFORMAT_YUY2:
case SDL_PIXELFORMAT_UYVY:
case SDL_PIXELFORMAT_YVYU:
swdata->pitches[0] = ((w + 1) / 2) * 4;
swdata->planes[0] = swdata->pixels;
break;
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
swdata->pitches[0] = w;
swdata->pitches[1] = 2 * ((swdata->pitches[0] + 1) / 2);
swdata->planes[0] = swdata->pixels;
swdata->planes[1] = swdata->planes[0] + swdata->pitches[0] * h;
break;
default:
SDL_assert(!"We should never get here (caught above)");
break;
}
// We're all done..
return swdata;
}
bool SDL_SW_QueryYUVTexturePixels(SDL_SW_YUVTexture *swdata, void **pixels,
int *pitch)
{
*pixels = swdata->planes[0];
*pitch = swdata->pitches[0];
return true;
}
bool SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
const void *pixels, int pitch)
{
switch (swdata->format) {
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
if (rect->x == 0 && rect->y == 0 &&
rect->w == swdata->w && rect->h == swdata->h) {
SDL_memcpy(swdata->pixels, pixels,
(size_t)(swdata->h * swdata->w) + 2 * ((swdata->h + 1) / 2) * ((swdata->w + 1) / 2));
} else {
Uint8 *src, *dst;
int row;
size_t length;
// Copy the Y plane
src = (Uint8 *)pixels;
dst = swdata->pixels + rect->y * swdata->w + rect->x;
length = rect->w;
for (row = 0; row < rect->h; ++row) {
SDL_memcpy(dst, src, length);
src += pitch;
dst += swdata->w;
}
// Copy the next plane
src = (Uint8 *)pixels + rect->h * pitch;
dst = swdata->pixels + swdata->h * swdata->w;
dst += rect->y / 2 * ((swdata->w + 1) / 2) + rect->x / 2;
length = (rect->w + 1) / 2;
for (row = 0; row < (rect->h + 1) / 2; ++row) {
SDL_memcpy(dst, src, length);
src += (pitch + 1) / 2;
dst += (swdata->w + 1) / 2;
}
// Copy the next plane
src = (Uint8 *)pixels + rect->h * pitch + ((rect->h + 1) / 2) * ((pitch + 1) / 2);
dst = swdata->pixels + swdata->h * swdata->w +
((swdata->h + 1) / 2) * ((swdata->w + 1) / 2);
dst += rect->y / 2 * ((swdata->w + 1) / 2) + rect->x / 2;
length = (rect->w + 1) / 2;
for (row = 0; row < (rect->h + 1) / 2; ++row) {
SDL_memcpy(dst, src, length);
src += (pitch + 1) / 2;
dst += (swdata->w + 1) / 2;
}
}
break;
case SDL_PIXELFORMAT_YUY2:
case SDL_PIXELFORMAT_UYVY:
case SDL_PIXELFORMAT_YVYU:
{
Uint8 *src, *dst;
int row;
size_t length;
src = (Uint8 *)pixels;
dst =
swdata->planes[0] + rect->y * swdata->pitches[0] +
rect->x * 2;
length = 4 * (((size_t)rect->w + 1) / 2);
for (row = 0; row < rect->h; ++row) {
SDL_memcpy(dst, src, length);
src += pitch;
dst += swdata->pitches[0];
}
} break;
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
{
if (rect->x == 0 && rect->y == 0 && rect->w == swdata->w && rect->h == swdata->h) {
SDL_memcpy(swdata->pixels, pixels,
(size_t)(swdata->h * swdata->w) + 2 * ((swdata->h + 1) / 2) * ((swdata->w + 1) / 2));
} else {
Uint8 *src, *dst;
int row;
size_t length;
// Copy the Y plane
src = (Uint8 *)pixels;
dst = swdata->pixels + rect->y * swdata->w + rect->x;
length = rect->w;
for (row = 0; row < rect->h; ++row) {
SDL_memcpy(dst, src, length);
src += pitch;
dst += swdata->w;
}
// Copy the next plane
src = (Uint8 *)pixels + rect->h * pitch;
dst = swdata->pixels + swdata->h * swdata->w;
dst += 2 * ((rect->y + 1) / 2) * ((swdata->w + 1) / 2) + 2 * (rect->x / 2);
length = 2 * (((size_t)rect->w + 1) / 2);
for (row = 0; row < (rect->h + 1) / 2; ++row) {
SDL_memcpy(dst, src, length);
src += 2 * ((pitch + 1) / 2);
dst += 2 * ((swdata->w + 1) / 2);
}
}
} break;
default:
return SDL_SetError("Unsupported YUV format");
}
return true;
}
bool SDL_SW_UpdateYUVTexturePlanar(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
const Uint8 *Yplane, int Ypitch,
const Uint8 *Uplane, int Upitch,
const Uint8 *Vplane, int Vpitch)
{
const Uint8 *src;
Uint8 *dst;
int row;
size_t length;
// Copy the Y plane
src = Yplane;
dst = swdata->pixels + rect->y * swdata->w + rect->x;
length = rect->w;
for (row = 0; row < rect->h; ++row) {
SDL_memcpy(dst, src, length);
src += Ypitch;
dst += swdata->w;
}
// Copy the U plane
src = Uplane;
if (swdata->format == SDL_PIXELFORMAT_IYUV) {
dst = swdata->pixels + swdata->h * swdata->w;
} else {
dst = swdata->pixels + swdata->h * swdata->w +
((swdata->h + 1) / 2) * ((swdata->w + 1) / 2);
}
dst += rect->y / 2 * ((swdata->w + 1) / 2) + rect->x / 2;
length = (rect->w + 1) / 2;
for (row = 0; row < (rect->h + 1) / 2; ++row) {
SDL_memcpy(dst, src, length);
src += Upitch;
dst += (swdata->w + 1) / 2;
}
// Copy the V plane
src = Vplane;
if (swdata->format == SDL_PIXELFORMAT_YV12) {
dst = swdata->pixels + swdata->h * swdata->w;
} else {
dst = swdata->pixels + swdata->h * swdata->w +
((swdata->h + 1) / 2) * ((swdata->w + 1) / 2);
}
dst += rect->y / 2 * ((swdata->w + 1) / 2) + rect->x / 2;
length = (rect->w + 1) / 2;
for (row = 0; row < (rect->h + 1) / 2; ++row) {
SDL_memcpy(dst, src, length);
src += Vpitch;
dst += (swdata->w + 1) / 2;
}
return true;
}
bool SDL_SW_UpdateNVTexturePlanar(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
const Uint8 *Yplane, int Ypitch,
const Uint8 *UVplane, int UVpitch)
{
const Uint8 *src;
Uint8 *dst;
int row;
size_t length;
// Copy the Y plane
src = Yplane;
dst = swdata->pixels + rect->y * swdata->w + rect->x;
length = rect->w;
for (row = 0; row < rect->h; ++row) {
SDL_memcpy(dst, src, length);
src += Ypitch;
dst += swdata->w;
}
// Copy the UV or VU plane
src = UVplane;
dst = swdata->pixels + swdata->h * swdata->w;
dst += rect->y * ((swdata->w + 1) / 2) + rect->x;
length = (rect->w + 1) / 2;
length *= 2;
for (row = 0; row < (rect->h + 1) / 2; ++row) {
SDL_memcpy(dst, src, length);
src += UVpitch;
dst += 2 * ((swdata->w + 1) / 2);
}
return true;
}
bool SDL_SW_LockYUVTexture(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
void **pixels, int *pitch)
{
switch (swdata->format) {
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
if (rect && (rect->x != 0 || rect->y != 0 || rect->w != swdata->w || rect->h != swdata->h)) {
return SDL_SetError("YV12, IYUV, NV12, NV21 textures only support full surface locks");
}
break;
default:
return SDL_SetError("Unsupported YUV format");
}
if (rect) {
*pixels = swdata->planes[0] + rect->y * swdata->pitches[0] + rect->x * 2;
} else {
*pixels = swdata->planes[0];
}
*pitch = swdata->pitches[0];
return true;
}
void SDL_SW_UnlockYUVTexture(SDL_SW_YUVTexture *swdata)
{
}
bool SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture *swdata, const SDL_Rect *srcrect, SDL_PixelFormat target_format, int w, int h, void *pixels, int pitch)
{
int stretch;
// Make sure we're set up to display in the desired format
if (target_format != swdata->target_format && swdata->display) {
SDL_DestroySurface(swdata->display);
swdata->display = NULL;
}
stretch = 0;
if (srcrect->x || srcrect->y || srcrect->w < swdata->w || srcrect->h < swdata->h) {
/* The source rectangle has been clipped.
Using a scratch surface is easier than adding clipped
source support to all the blitters, plus that would
slow them down in the general unclipped case.
*/
stretch = 1;
} else if ((srcrect->w != w) || (srcrect->h != h)) {
stretch = 1;
}
if (stretch) {
if (swdata->display) {
swdata->display->w = w;
swdata->display->h = h;
swdata->display->pixels = pixels;
swdata->display->pitch = pitch;
} else {
swdata->display = SDL_CreateSurfaceFrom(w, h, target_format, pixels, pitch);
if (!swdata->display) {
return false;
}
swdata->target_format = target_format;
}
if (!swdata->stretch) {
swdata->stretch = SDL_CreateSurface(swdata->w, swdata->h, target_format);
if (!swdata->stretch) {
return false;
}
}
pixels = swdata->stretch->pixels;
pitch = swdata->stretch->pitch;
}
if (!SDL_ConvertPixelsAndColorspace(swdata->w, swdata->h, swdata->format, swdata->colorspace, 0, swdata->planes[0], swdata->pitches[0], target_format, SDL_COLORSPACE_SRGB, 0, pixels, pitch)) {
return false;
}
if (stretch) {
SDL_Rect rect = *srcrect;
return SDL_StretchSurface(swdata->stretch, &rect, swdata->display, NULL, SDL_SCALEMODE_NEAREST);
} else {
return true;
}
}
void SDL_SW_DestroyYUVTexture(SDL_SW_YUVTexture *swdata)
{
if (swdata) {
SDL_aligned_free(swdata->pixels);
SDL_DestroySurface(swdata->stretch);
SDL_DestroySurface(swdata->display);
SDL_free(swdata);
}
}
#endif // SDL_HAVE_YUV

View File

@@ -0,0 +1,63 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifndef SDL_yuv_sw_c_h_
#define SDL_yuv_sw_c_h_
#include "SDL_internal.h"
// This is the software implementation of the YUV texture support
struct SDL_SW_YUVTexture
{
SDL_PixelFormat format;
SDL_Colorspace colorspace;
SDL_PixelFormat target_format;
int w, h;
Uint8 *pixels;
// These are just so we don't have to allocate them separately
int pitches[3];
Uint8 *planes[3];
// This is a temporary surface in case we have to stretch copy
SDL_Surface *stretch;
SDL_Surface *display;
};
typedef struct SDL_SW_YUVTexture SDL_SW_YUVTexture;
extern SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(SDL_PixelFormat format, SDL_Colorspace colorspace, int w, int h);
extern bool SDL_SW_QueryYUVTexturePixels(SDL_SW_YUVTexture *swdata, void **pixels, int *pitch);
extern bool SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect, const void *pixels, int pitch);
extern bool SDL_SW_UpdateYUVTexturePlanar(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
const Uint8 *Yplane, int Ypitch,
const Uint8 *Uplane, int Upitch,
const Uint8 *Vplane, int Vpitch);
extern bool SDL_SW_UpdateNVTexturePlanar(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
const Uint8 *Yplane, int Ypitch,
const Uint8 *UVplane, int UVpitch);
extern bool SDL_SW_LockYUVTexture(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect, void **pixels, int *pitch);
extern void SDL_SW_UnlockYUVTexture(SDL_SW_YUVTexture *swdata);
extern bool SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture *swdata, const SDL_Rect *srcrect, SDL_PixelFormat target_format, int w, int h, void *pixels, int pitch);
extern void SDL_SW_DestroyYUVTexture(SDL_SW_YUVTexture *swdata);
#endif // SDL_yuv_sw_c_h_

View File

@@ -0,0 +1,272 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
// Parameters:
//
// sampler2D image;
// sampler1D palette;
// float4 texel_size;
// float texture_type;
//
//
// Registers:
//
// Name Reg Size
// ------------ ----- ----
// texture_type c0 1
// texel_size c1 1
// image s0 1
// palette s1 1
//
ps_2_0
def c2, -1, 255, 0.5, 0.00390625
def c3, -2, 0, 0, 0
def c4, 1, 0, 0, 1
dcl v0
dcl t0.xy
dcl_2d s0
dcl_2d s1
mov r0.xz, c2
mad r1.x, t0.x, c1.z, r0.z
mad r1.y, t0.y, c1.w, r0.z
frc r0.yz, r1.zxyw
add r1.xy, -r0.yzxw, r1
add r1.zw, r1.wzyx, -c2.z
add r1.xy, r1, c2.z
mul r1.xy, r1, c1
mul r2.xy, r1.wzyx, c1
mov r3.x, r2.x
mov r3.y, r1.y
mov r4.y, r2.y
mov r4.x, r1.x
texld r3, r3, s0
texld r2, r2, s0
texld r1, r1, s0
texld r4, r4, s0
texld r5, t0, s0
mad r0.w, r3.x, c2.y, c2.z
mul r3.xy, r0.w, c2.w
mad r0.w, r2.x, c2.y, c2.z
mul r2.xy, r0.w, c2.w
mad r0.w, r1.x, c2.y, c2.z
mul r1.xy, r0.w, c2.w
mad r0.w, r4.x, c2.y, c2.z
mul r4.xy, r0.w, c2.w
mad r0.w, r5.x, c2.y, c2.z
mul r5.xy, r0.w, c2.w
texld r3, r3, s1
texld r2, r2, s1
texld r1, r1, s1
texld r4, r4, s1
texld r5, r5, s1
lrp r6, r0.z, r3, r2
lrp r2, r0.z, r1, r4
lrp r1, r0.y, r2, r6
mov r2.x, c0.x
add r0.y, r2.x, c3.x
mul r0.y, r0.y, r0.y
cmp r1, -r0.y, r1, c4
add r0.x, r0.x, c0.x
mul r0.x, r0.x, r0.x
cmp r0, -r0.x, r5, r1
mul r0, r0, v0
mov oC0, r0
// approximately 45 instruction slots used (10 texture, 35 arithmetic)
#endif
const BYTE g_ps20_main[] =
{
0, 2, 255, 255, 254, 255,
67, 0, 67, 84, 65, 66,
28, 0, 0, 0, 223, 0,
0, 0, 0, 2, 255, 255,
4, 0, 0, 0, 28, 0,
0, 0, 0, 1, 0, 0,
216, 0, 0, 0, 108, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 116, 0,
0, 0, 0, 0, 0, 0,
132, 0, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0,
140, 0, 0, 0, 0, 0,
0, 0, 156, 0, 0, 0,
2, 0, 1, 0, 1, 0,
0, 0, 168, 0, 0, 0,
0, 0, 0, 0, 184, 0,
0, 0, 2, 0, 0, 0,
1, 0, 0, 0, 200, 0,
0, 0, 0, 0, 0, 0,
105, 109, 97, 103, 101, 0,
171, 171, 4, 0, 12, 0,
1, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
112, 97, 108, 101, 116, 116,
101, 0, 4, 0, 11, 0,
1, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
116, 101, 120, 101, 108, 95,
115, 105, 122, 101, 0, 171,
1, 0, 3, 0, 1, 0,
4, 0, 1, 0, 0, 0,
0, 0, 0, 0, 116, 101,
120, 116, 117, 114, 101, 95,
116, 121, 112, 101, 0, 171,
171, 171, 0, 0, 3, 0,
1, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
112, 115, 95, 50, 95, 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,
49, 48, 46, 49, 0, 171,
81, 0, 0, 5, 2, 0,
15, 160, 0, 0, 128, 191,
0, 0, 127, 67, 0, 0,
0, 63, 0, 0, 128, 59,
81, 0, 0, 5, 3, 0,
15, 160, 0, 0, 0, 192,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
81, 0, 0, 5, 4, 0,
15, 160, 0, 0, 128, 63,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 128, 63,
31, 0, 0, 2, 0, 0,
0, 128, 0, 0, 15, 144,
31, 0, 0, 2, 0, 0,
0, 128, 0, 0, 3, 176,
31, 0, 0, 2, 0, 0,
0, 144, 0, 8, 15, 160,
31, 0, 0, 2, 0, 0,
0, 144, 1, 8, 15, 160,
1, 0, 0, 2, 0, 0,
5, 128, 2, 0, 228, 160,
4, 0, 0, 4, 1, 0,
1, 128, 0, 0, 0, 176,
1, 0, 170, 160, 0, 0,
170, 128, 4, 0, 0, 4,
1, 0, 2, 128, 0, 0,
85, 176, 1, 0, 255, 160,
0, 0, 170, 128, 19, 0,
0, 2, 0, 0, 6, 128,
1, 0, 210, 128, 2, 0,
0, 3, 1, 0, 3, 128,
0, 0, 201, 129, 1, 0,
228, 128, 2, 0, 0, 3,
1, 0, 12, 128, 1, 0,
27, 128, 2, 0, 170, 161,
2, 0, 0, 3, 1, 0,
3, 128, 1, 0, 228, 128,
2, 0, 170, 160, 5, 0,
0, 3, 1, 0, 3, 128,
1, 0, 228, 128, 1, 0,
228, 160, 5, 0, 0, 3,
2, 0, 3, 128, 1, 0,
27, 128, 1, 0, 228, 160,
1, 0, 0, 2, 3, 0,
1, 128, 2, 0, 0, 128,
1, 0, 0, 2, 3, 0,
2, 128, 1, 0, 85, 128,
1, 0, 0, 2, 4, 0,
2, 128, 2, 0, 85, 128,
1, 0, 0, 2, 4, 0,
1, 128, 1, 0, 0, 128,
66, 0, 0, 3, 3, 0,
15, 128, 3, 0, 228, 128,
0, 8, 228, 160, 66, 0,
0, 3, 2, 0, 15, 128,
2, 0, 228, 128, 0, 8,
228, 160, 66, 0, 0, 3,
1, 0, 15, 128, 1, 0,
228, 128, 0, 8, 228, 160,
66, 0, 0, 3, 4, 0,
15, 128, 4, 0, 228, 128,
0, 8, 228, 160, 66, 0,
0, 3, 5, 0, 15, 128,
0, 0, 228, 176, 0, 8,
228, 160, 4, 0, 0, 4,
0, 0, 8, 128, 3, 0,
0, 128, 2, 0, 85, 160,
2, 0, 170, 160, 5, 0,
0, 3, 3, 0, 3, 128,
0, 0, 255, 128, 2, 0,
255, 160, 4, 0, 0, 4,
0, 0, 8, 128, 2, 0,
0, 128, 2, 0, 85, 160,
2, 0, 170, 160, 5, 0,
0, 3, 2, 0, 3, 128,
0, 0, 255, 128, 2, 0,
255, 160, 4, 0, 0, 4,
0, 0, 8, 128, 1, 0,
0, 128, 2, 0, 85, 160,
2, 0, 170, 160, 5, 0,
0, 3, 1, 0, 3, 128,
0, 0, 255, 128, 2, 0,
255, 160, 4, 0, 0, 4,
0, 0, 8, 128, 4, 0,
0, 128, 2, 0, 85, 160,
2, 0, 170, 160, 5, 0,
0, 3, 4, 0, 3, 128,
0, 0, 255, 128, 2, 0,
255, 160, 4, 0, 0, 4,
0, 0, 8, 128, 5, 0,
0, 128, 2, 0, 85, 160,
2, 0, 170, 160, 5, 0,
0, 3, 5, 0, 3, 128,
0, 0, 255, 128, 2, 0,
255, 160, 66, 0, 0, 3,
3, 0, 15, 128, 3, 0,
228, 128, 1, 8, 228, 160,
66, 0, 0, 3, 2, 0,
15, 128, 2, 0, 228, 128,
1, 8, 228, 160, 66, 0,
0, 3, 1, 0, 15, 128,
1, 0, 228, 128, 1, 8,
228, 160, 66, 0, 0, 3,
4, 0, 15, 128, 4, 0,
228, 128, 1, 8, 228, 160,
66, 0, 0, 3, 5, 0,
15, 128, 5, 0, 228, 128,
1, 8, 228, 160, 18, 0,
0, 4, 6, 0, 15, 128,
0, 0, 170, 128, 3, 0,
228, 128, 2, 0, 228, 128,
18, 0, 0, 4, 2, 0,
15, 128, 0, 0, 170, 128,
1, 0, 228, 128, 4, 0,
228, 128, 18, 0, 0, 4,
1, 0, 15, 128, 0, 0,
85, 128, 2, 0, 228, 128,
6, 0, 228, 128, 1, 0,
0, 2, 2, 0, 1, 128,
0, 0, 0, 160, 2, 0,
0, 3, 0, 0, 2, 128,
2, 0, 0, 128, 3, 0,
0, 160, 5, 0, 0, 3,
0, 0, 2, 128, 0, 0,
85, 128, 0, 0, 85, 128,
88, 0, 0, 4, 1, 0,
15, 128, 0, 0, 85, 129,
1, 0, 228, 128, 4, 0,
228, 160, 2, 0, 0, 3,
0, 0, 1, 128, 0, 0,
0, 128, 0, 0, 0, 160,
5, 0, 0, 3, 0, 0,
1, 128, 0, 0, 0, 128,
0, 0, 0, 128, 88, 0,
0, 4, 0, 0, 15, 128,
0, 0, 0, 129, 5, 0,
228, 128, 1, 0, 228, 128,
5, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 128,
0, 0, 228, 144, 1, 0,
0, 2, 0, 8, 15, 128,
0, 0, 228, 128, 255, 255,
0, 0
};

View File

@@ -0,0 +1,49 @@
cbuffer Constants
{
float4 texel_size;
};
uniform sampler2D image;
uniform sampler1D palette;
struct PixelShaderInput
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
static const float TEXTURETYPE_NONE = 0;
static const float TEXTURETYPE_PALETTE_NEAREST = 1;
static const float TEXTURETYPE_PALETTE_LINEAR = 2;
float4 SamplePaletteNearest(float2 uv)
{
float index = tex2D(image, uv).r * 255;
return tex1D(palette, (index + 0.5) / 256);
}
// Implementation with thanks from bgolus:
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
float4 SamplePaletteLinear(float2 uv)
{
// scale & offset uvs to integer values at texel centers
float2 uv_texels = uv * texel_size.zw + 0.5;
// get uvs for the center of the 4 surrounding texels by flooring
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
// blend factor
float2 uv_frac = frac(uv_texels);
// sample all 4 texels
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
// bilinear interpolation
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
}

View File

@@ -0,0 +1,209 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
// Parameters:
//
// sampler2D image;
// sampler1D palette;
// float4 texel_size;
//
//
// Registers:
//
// Name Reg Size
// ------------ ----- ----
// texel_size c0 1
// image s0 1
// palette s1 1
//
ps_2_0
def c1, 0.5, -0.5, 255, 0.00390625
dcl t0.xy
dcl v0
dcl_2d s0
dcl_2d s1
mov r0.w, c1.x
mad r0.x, t0.x, c0.z, r0.w
mad r0.y, t0.y, c0.w, r0.w
frc r0.zw, r0.wzyx
add r0.xy, -r0.wzyx, r0
add r1.xy, r0, c1.y
add r0.xy, r0, c1.x
mul r0.xy, r0, c0
mul r1.xy, r1, c0
mov r2.x, r1.x
mov r2.y, r0.y
mov r3.y, r1.y
mov r3.x, r0.x
texld r2, r2, s0
texld r1, r1, s0
texld r4, r0, s0
texld r3, r3, s0
mad r0.x, r2.x, c1.z, c1.x
mul r0.xy, r0.x, c1.w
mad r1.x, r1.x, c1.z, c1.x
mul r1.xy, r1.x, c1.w
mad r1.z, r4.x, c1.z, c1.x
mul r2.xy, r1.z, c1.w
mad r1.z, r3.x, c1.z, c1.x
mul r3.xy, r1.z, c1.w
texld r4, r0, s1
texld r1, r1, s1
texld r2, r2, s1
texld r3, r3, s1
lrp r5, r0.z, r4, r1
lrp r1, r0.z, r2, r3
lrp r2, r0.w, r1, r5
mul r0, r2, v0
mov oC0, r0
// approximately 34 instruction slots used (8 texture, 26 arithmetic)
#endif
const BYTE g_ps20_main[] =
{
0, 2, 255, 255, 254, 255,
54, 0, 67, 84, 65, 66,
28, 0, 0, 0, 171, 0,
0, 0, 0, 2, 255, 255,
3, 0, 0, 0, 28, 0,
0, 0, 0, 1, 0, 0,
164, 0, 0, 0, 88, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 96, 0,
0, 0, 0, 0, 0, 0,
112, 0, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0,
120, 0, 0, 0, 0, 0,
0, 0, 136, 0, 0, 0,
2, 0, 0, 0, 1, 0,
0, 0, 148, 0, 0, 0,
0, 0, 0, 0, 105, 109,
97, 103, 101, 0, 171, 171,
4, 0, 12, 0, 1, 0,
1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 112, 97,
108, 101, 116, 116, 101, 0,
4, 0, 11, 0, 1, 0,
1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 116, 101,
120, 101, 108, 95, 115, 105,
122, 101, 0, 171, 1, 0,
3, 0, 1, 0, 4, 0,
1, 0, 0, 0, 0, 0,
0, 0, 112, 115, 95, 50,
95, 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, 49, 48, 46, 49,
0, 171, 81, 0, 0, 5,
1, 0, 15, 160, 0, 0,
0, 63, 0, 0, 0, 191,
0, 0, 127, 67, 0, 0,
128, 59, 31, 0, 0, 2,
0, 0, 0, 128, 0, 0,
3, 176, 31, 0, 0, 2,
0, 0, 0, 128, 0, 0,
15, 144, 31, 0, 0, 2,
0, 0, 0, 144, 0, 8,
15, 160, 31, 0, 0, 2,
0, 0, 0, 144, 1, 8,
15, 160, 1, 0, 0, 2,
0, 0, 8, 128, 1, 0,
0, 160, 4, 0, 0, 4,
0, 0, 1, 128, 0, 0,
0, 176, 0, 0, 170, 160,
0, 0, 255, 128, 4, 0,
0, 4, 0, 0, 2, 128,
0, 0, 85, 176, 0, 0,
255, 160, 0, 0, 255, 128,
19, 0, 0, 2, 0, 0,
12, 128, 0, 0, 27, 128,
2, 0, 0, 3, 0, 0,
3, 128, 0, 0, 27, 129,
0, 0, 228, 128, 2, 0,
0, 3, 1, 0, 3, 128,
0, 0, 228, 128, 1, 0,
85, 160, 2, 0, 0, 3,
0, 0, 3, 128, 0, 0,
228, 128, 1, 0, 0, 160,
5, 0, 0, 3, 0, 0,
3, 128, 0, 0, 228, 128,
0, 0, 228, 160, 5, 0,
0, 3, 1, 0, 3, 128,
1, 0, 228, 128, 0, 0,
228, 160, 1, 0, 0, 2,
2, 0, 1, 128, 1, 0,
0, 128, 1, 0, 0, 2,
2, 0, 2, 128, 0, 0,
85, 128, 1, 0, 0, 2,
3, 0, 2, 128, 1, 0,
85, 128, 1, 0, 0, 2,
3, 0, 1, 128, 0, 0,
0, 128, 66, 0, 0, 3,
2, 0, 15, 128, 2, 0,
228, 128, 0, 8, 228, 160,
66, 0, 0, 3, 1, 0,
15, 128, 1, 0, 228, 128,
0, 8, 228, 160, 66, 0,
0, 3, 4, 0, 15, 128,
0, 0, 228, 128, 0, 8,
228, 160, 66, 0, 0, 3,
3, 0, 15, 128, 3, 0,
228, 128, 0, 8, 228, 160,
4, 0, 0, 4, 0, 0,
1, 128, 2, 0, 0, 128,
1, 0, 170, 160, 1, 0,
0, 160, 5, 0, 0, 3,
0, 0, 3, 128, 0, 0,
0, 128, 1, 0, 255, 160,
4, 0, 0, 4, 1, 0,
1, 128, 1, 0, 0, 128,
1, 0, 170, 160, 1, 0,
0, 160, 5, 0, 0, 3,
1, 0, 3, 128, 1, 0,
0, 128, 1, 0, 255, 160,
4, 0, 0, 4, 1, 0,
4, 128, 4, 0, 0, 128,
1, 0, 170, 160, 1, 0,
0, 160, 5, 0, 0, 3,
2, 0, 3, 128, 1, 0,
170, 128, 1, 0, 255, 160,
4, 0, 0, 4, 1, 0,
4, 128, 3, 0, 0, 128,
1, 0, 170, 160, 1, 0,
0, 160, 5, 0, 0, 3,
3, 0, 3, 128, 1, 0,
170, 128, 1, 0, 255, 160,
66, 0, 0, 3, 4, 0,
15, 128, 0, 0, 228, 128,
1, 8, 228, 160, 66, 0,
0, 3, 1, 0, 15, 128,
1, 0, 228, 128, 1, 8,
228, 160, 66, 0, 0, 3,
2, 0, 15, 128, 2, 0,
228, 128, 1, 8, 228, 160,
66, 0, 0, 3, 3, 0,
15, 128, 3, 0, 228, 128,
1, 8, 228, 160, 18, 0,
0, 4, 5, 0, 15, 128,
0, 0, 170, 128, 4, 0,
228, 128, 1, 0, 228, 128,
18, 0, 0, 4, 1, 0,
15, 128, 0, 0, 170, 128,
2, 0, 228, 128, 3, 0,
228, 128, 18, 0, 0, 4,
2, 0, 15, 128, 0, 0,
255, 128, 1, 0, 228, 128,
5, 0, 228, 128, 5, 0,
0, 3, 0, 0, 15, 128,
2, 0, 228, 128, 0, 0,
228, 144, 1, 0, 0, 2,
0, 8, 15, 128, 0, 0,
228, 128, 255, 255, 0, 0
};

View File

@@ -0,0 +1,7 @@
#include "D3D9_PixelShader_Palette.hlsli"
float4 main(PixelShaderInput input) : SV_TARGET
{
return SamplePaletteLinear(input.tex) * input.color;
}

View File

@@ -0,0 +1,95 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
// Parameters:
//
// sampler2D image;
// sampler1D palette;
//
//
// Registers:
//
// Name Reg Size
// ------------ ----- ----
// image s0 1
// palette s1 1
//
ps_2_0
def c0, 255, 0.5, 0.00390625, 0
dcl t0.xy
dcl v0
dcl_2d s0
dcl_2d s1
texld r0, t0, s0
mad r0.x, r0.x, c0.x, c0.y
mul r0.xy, r0.x, c0.z
texld r0, r0, s1
mul r0, r0, v0
mov oC0, r0
// approximately 6 instruction slots used (2 texture, 4 arithmetic)
#endif
const BYTE g_ps20_main[] =
{
0, 2, 255, 255, 254, 255,
42, 0, 67, 84, 65, 66,
28, 0, 0, 0, 123, 0,
0, 0, 0, 2, 255, 255,
2, 0, 0, 0, 28, 0,
0, 0, 0, 1, 0, 0,
116, 0, 0, 0, 68, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 76, 0,
0, 0, 0, 0, 0, 0,
92, 0, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0,
100, 0, 0, 0, 0, 0,
0, 0, 105, 109, 97, 103,
101, 0, 171, 171, 4, 0,
12, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0,
0, 0, 112, 97, 108, 101,
116, 116, 101, 0, 4, 0,
11, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0,
0, 0, 112, 115, 95, 50,
95, 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, 49, 48, 46, 49,
0, 171, 81, 0, 0, 5,
0, 0, 15, 160, 0, 0,
127, 67, 0, 0, 0, 63,
0, 0, 128, 59, 0, 0,
0, 0, 31, 0, 0, 2,
0, 0, 0, 128, 0, 0,
3, 176, 31, 0, 0, 2,
0, 0, 0, 128, 0, 0,
15, 144, 31, 0, 0, 2,
0, 0, 0, 144, 0, 8,
15, 160, 31, 0, 0, 2,
0, 0, 0, 144, 1, 8,
15, 160, 66, 0, 0, 3,
0, 0, 15, 128, 0, 0,
228, 176, 0, 8, 228, 160,
4, 0, 0, 4, 0, 0,
1, 128, 0, 0, 0, 128,
0, 0, 0, 160, 0, 0,
85, 160, 5, 0, 0, 3,
0, 0, 3, 128, 0, 0,
0, 128, 0, 0, 170, 160,
66, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 128,
1, 8, 228, 160, 5, 0,
0, 3, 0, 0, 15, 128,
0, 0, 228, 128, 0, 0,
228, 144, 1, 0, 0, 2,
0, 8, 15, 128, 0, 0,
228, 128, 255, 255, 0, 0
};

View File

@@ -0,0 +1,7 @@
#include "D3D9_PixelShader_Palette.hlsli"
float4 main(PixelShaderInput input) : SV_TARGET
{
return SamplePaletteNearest(input.tex) * input.color;
}

View File

@@ -0,0 +1,164 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
// Parameters:
//
// float4 Bcoeff;
// float4 Gcoeff;
// float4 Rcoeff;
// float4 Yoffset;
// Texture2D theSampler+theTextureU;
// Texture2D theSampler+theTextureV;
// Texture2D theSampler+theTextureY;
//
//
// Registers:
//
// Name Reg Size
// ---------------------- ----- ----
// Yoffset c0 1
// Rcoeff c1 1
// Gcoeff c2 1
// Bcoeff c3 1
// theSampler+theTextureY s0 1
// theSampler+theTextureU s1 1
// theSampler+theTextureV s2 1
//
ps_2_0
def c4, 1, 0, 0, 0
dcl t0.xy
dcl v0
dcl_2d s0
dcl_2d s1
dcl_2d s2
texld r0, t0, s0
texld r1, t0, s1
texld r2, t0, s2
mov r0.y, r1.x
mov r0.z, r2.x
add r0.xyz, r0, c0
dp3 r1.x, r0, c1
dp3 r1.y, r0, c2
dp3 r1.z, r0, c3
mov r1.w, c4.x
mul r0, r1, v0
mov oC0, r0
// approximately 12 instruction slots used (3 texture, 9 arithmetic)
#endif
const BYTE g_ps20_main[] =
{
0, 2, 255, 255, 254, 255,
97, 0, 67, 84, 65, 66,
28, 0, 0, 0, 87, 1,
0, 0, 0, 2, 255, 255,
7, 0, 0, 0, 28, 0,
0, 0, 0, 1, 0, 0,
80, 1, 0, 0, 168, 0,
0, 0, 2, 0, 3, 0,
1, 0, 0, 0, 176, 0,
0, 0, 0, 0, 0, 0,
192, 0, 0, 0, 2, 0,
2, 0, 1, 0, 0, 0,
176, 0, 0, 0, 0, 0,
0, 0, 199, 0, 0, 0,
2, 0, 1, 0, 1, 0,
0, 0, 176, 0, 0, 0,
0, 0, 0, 0, 206, 0,
0, 0, 2, 0, 0, 0,
1, 0, 0, 0, 176, 0,
0, 0, 0, 0, 0, 0,
214, 0, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0,
240, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0,
3, 0, 2, 0, 1, 0,
0, 0, 24, 1, 0, 0,
0, 0, 0, 0, 40, 1,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 64, 1,
0, 0, 0, 0, 0, 0,
66, 99, 111, 101, 102, 102,
0, 171, 1, 0, 3, 0,
1, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0,
71, 99, 111, 101, 102, 102,
0, 82, 99, 111, 101, 102,
102, 0, 89, 111, 102, 102,
115, 101, 116, 0, 116, 104,
101, 83, 97, 109, 112, 108,
101, 114, 43, 116, 104, 101,
84, 101, 120, 116, 117, 114,
101, 85, 0, 171, 171, 171,
4, 0, 7, 0, 1, 0,
4, 0, 1, 0, 0, 0,
0, 0, 0, 0, 116, 104,
101, 83, 97, 109, 112, 108,
101, 114, 43, 116, 104, 101,
84, 101, 120, 116, 117, 114,
101, 86, 0, 171, 4, 0,
7, 0, 1, 0, 4, 0,
1, 0, 0, 0, 0, 0,
0, 0, 116, 104, 101, 83,
97, 109, 112, 108, 101, 114,
43, 116, 104, 101, 84, 101,
120, 116, 117, 114, 101, 89,
0, 171, 4, 0, 7, 0,
1, 0, 4, 0, 1, 0,
0, 0, 0, 0, 0, 0,
112, 115, 95, 50, 95, 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,
49, 48, 46, 49, 0, 171,
81, 0, 0, 5, 4, 0,
15, 160, 0, 0, 128, 63,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
31, 0, 0, 2, 0, 0,
0, 128, 0, 0, 3, 176,
31, 0, 0, 2, 0, 0,
0, 128, 0, 0, 15, 144,
31, 0, 0, 2, 0, 0,
0, 144, 0, 8, 15, 160,
31, 0, 0, 2, 0, 0,
0, 144, 1, 8, 15, 160,
31, 0, 0, 2, 0, 0,
0, 144, 2, 8, 15, 160,
66, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 176,
0, 8, 228, 160, 66, 0,
0, 3, 1, 0, 15, 128,
0, 0, 228, 176, 1, 8,
228, 160, 66, 0, 0, 3,
2, 0, 15, 128, 0, 0,
228, 176, 2, 8, 228, 160,
1, 0, 0, 2, 0, 0,
2, 128, 1, 0, 0, 128,
1, 0, 0, 2, 0, 0,
4, 128, 2, 0, 0, 128,
2, 0, 0, 3, 0, 0,
7, 128, 0, 0, 228, 128,
0, 0, 228, 160, 8, 0,
0, 3, 1, 0, 1, 128,
0, 0, 228, 128, 1, 0,
228, 160, 8, 0, 0, 3,
1, 0, 2, 128, 0, 0,
228, 128, 2, 0, 228, 160,
8, 0, 0, 3, 1, 0,
4, 128, 0, 0, 228, 128,
3, 0, 228, 160, 1, 0,
0, 2, 1, 0, 8, 128,
4, 0, 0, 160, 5, 0,
0, 3, 0, 0, 15, 128,
1, 0, 228, 128, 0, 0,
228, 144, 1, 0, 0, 2,
0, 8, 15, 128, 0, 0,
228, 128, 255, 255, 0, 0
};

View File

@@ -0,0 +1,47 @@
Texture2D theTextureY : register(t0);
Texture2D theTextureU : register(t1);
Texture2D theTextureV : register(t2);
SamplerState theSampler = sampler_state
{
addressU = Clamp;
addressV = Clamp;
mipfilter = NONE;
minfilter = LINEAR;
magfilter = LINEAR;
};
struct PixelShaderInput
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
cbuffer Constants : register(b0)
{
float4 Yoffset;
float4 Rcoeff;
float4 Gcoeff;
float4 Bcoeff;
};
float4 main(PixelShaderInput input) : SV_TARGET
{
float4 Output;
float3 yuv;
yuv.x = theTextureY.Sample(theSampler, input.tex).r;
yuv.y = theTextureU.Sample(theSampler, input.tex).r;
yuv.z = theTextureV.Sample(theSampler, input.tex).r;
yuv += Yoffset.xyz;
Output.r = dot(yuv, Rcoeff.xyz);
Output.g = dot(yuv, Gcoeff.xyz);
Output.b = dot(yuv, Bcoeff.xyz);
Output.a = 1.0f;
return Output * input.color;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,58 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_D3D
#include "../../core/windows/SDL_windows.h"
#include <d3d9.h>
#include "SDL_shaders_d3d.h"
// The shaders here were compiled with compile_shaders.bat
#define g_ps20_main D3D9_PixelShader_Palette_Nearest
#include "D3D9_PixelShader_Palette_Nearest.h"
#undef g_ps20_main
#define g_ps20_main D3D9_PixelShader_Palette_Linear
#include "D3D9_PixelShader_Palette_Linear.h"
#undef g_ps20_main
#define g_ps20_main D3D9_PixelShader_YUV
#include "D3D9_PixelShader_YUV.h"
#undef g_ps20_main
static const BYTE *D3D9_shaders[] = {
NULL,
D3D9_PixelShader_Palette_Nearest,
D3D9_PixelShader_Palette_Linear,
D3D9_PixelShader_YUV
};
SDL_COMPILE_TIME_ASSERT(D3D9_shaders, SDL_arraysize(D3D9_shaders) == NUM_SHADERS);
HRESULT D3D9_CreatePixelShader(IDirect3DDevice9 *d3dDevice, D3D9_Shader shader, IDirect3DPixelShader9 **pixelShader)
{
return IDirect3DDevice9_CreatePixelShader(d3dDevice, (const DWORD *)D3D9_shaders[shader], pixelShader);
}
#endif // SDL_VIDEO_RENDER_D3D

View File

@@ -0,0 +1,34 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
// D3D9 shader implementation
typedef enum
{
SHADER_NONE,
SHADER_PALETTE_NEAREST,
SHADER_PALETTE_LINEAR,
SHADER_YUV,
NUM_SHADERS
} D3D9_Shader;
extern HRESULT D3D9_CreatePixelShader(IDirect3DDevice9 *d3dDevice, D3D9_Shader shader, IDirect3DPixelShader9 **pixelShader);

View File

@@ -0,0 +1,3 @@
fxc /T ps_2_0 /Fh D3D9_PixelShader_Palette_Nearest.h D3D9_PixelShader_Palette_Nearest.hlsl
fxc /T ps_2_0 /Fh D3D9_PixelShader_Palette_Linear.h D3D9_PixelShader_Palette_Linear.hlsl
fxc /T ps_2_0 /Fh D3D9_PixelShader_YUV.h D3D9_PixelShader_YUV.hlsl

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
#include "D3D11_PixelShader_Common.hlsli"
float4 main(PixelShaderInput input) : SV_TARGET
{
return AdvancedPixelShader(input);
}

View File

@@ -0,0 +1,290 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//
// Buffer Definitions:
//
// cbuffer Constants
// {
//
// float scRGB_output; // Offset: 0 Size: 4 [unused]
// float texture_type; // Offset: 4 Size: 4 [unused]
// float input_type; // Offset: 8 Size: 4 [unused]
// float color_scale; // Offset: 12 Size: 4
// float4 texel_size; // Offset: 16 Size: 16 [unused]
// float tonemap_method; // Offset: 32 Size: 4 [unused]
// float tonemap_factor1; // Offset: 36 Size: 4 [unused]
// float tonemap_factor2; // Offset: 40 Size: 4 [unused]
// float sdr_white_point; // Offset: 44 Size: 4 [unused]
// float4 Yoffset; // Offset: 48 Size: 16 [unused]
// float4 Rcoeff; // Offset: 64 Size: 16 [unused]
// float4 Gcoeff; // Offset: 80 Size: 16 [unused]
// float4 Bcoeff; // Offset: 96 Size: 16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// Constants cbuffer NA NA cb0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xy 1 NONE float
// COLOR 0 xyzw 2 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET 0 xyzw 0 TARGET float xyzw
//
//
// Constant buffer to DX9 shader constant mappings:
//
// Target Reg Buffer Start Reg # of Regs Data Conversion
// ---------- ------- --------- --------- ----------------------
// c0 cb0 0 1 ( FLT, FLT, FLT, FLT)
//
//
// Level9 shader bytecode:
//
ps_2_0
dcl t1
mul r0.xyz, t1, c0.w
mov r0.w, t1.w
mov oC0, r0
// approximately 3 instruction slots used
ps_4_0
dcl_constantbuffer CB0[1], immediateIndexed
dcl_input_ps linear v2.xyzw
dcl_output o0.xyzw
dcl_temps 1
mov r0.x, cb0[0].w
mov r0.w, l(1.000000)
mul o0.xyzw, r0.xxxw, v2.xyzw
ret
// Approximately 4 instruction slots used
#endif
const BYTE g_main[] =
{
68, 88, 66, 67, 131, 2,
46, 215, 253, 13, 129, 98,
132, 106, 250, 166, 217, 206,
9, 154, 1, 0, 0, 0,
224, 4, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
172, 0, 0, 0, 56, 1,
0, 0, 180, 1, 0, 0,
56, 4, 0, 0, 172, 4,
0, 0, 65, 111, 110, 57,
108, 0, 0, 0, 108, 0,
0, 0, 0, 2, 255, 255,
60, 0, 0, 0, 48, 0,
0, 0, 1, 0, 36, 0,
0, 0, 48, 0, 0, 0,
48, 0, 0, 0, 36, 0,
0, 0, 48, 0, 0, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 2,
255, 255, 31, 0, 0, 2,
0, 0, 0, 128, 1, 0,
15, 176, 5, 0, 0, 3,
0, 0, 7, 128, 1, 0,
228, 176, 0, 0, 255, 160,
1, 0, 0, 2, 0, 0,
8, 128, 1, 0, 255, 176,
1, 0, 0, 2, 0, 8,
15, 128, 0, 0, 228, 128,
255, 255, 0, 0, 83, 72,
68, 82, 132, 0, 0, 0,
64, 0, 0, 0, 33, 0,
0, 0, 89, 0, 0, 4,
70, 142, 32, 0, 0, 0,
0, 0, 1, 0, 0, 0,
98, 16, 0, 3, 242, 16,
16, 0, 2, 0, 0, 0,
101, 0, 0, 3, 242, 32,
16, 0, 0, 0, 0, 0,
104, 0, 0, 2, 1, 0,
0, 0, 54, 0, 0, 6,
18, 0, 16, 0, 0, 0,
0, 0, 58, 128, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
130, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 56, 0,
0, 7, 242, 32, 16, 0,
0, 0, 0, 0, 6, 12,
16, 0, 0, 0, 0, 0,
70, 30, 16, 0, 2, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 116, 0,
0, 0, 4, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
1, 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,
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, 82, 68,
69, 70, 124, 2, 0, 0,
1, 0, 0, 0, 72, 0,
0, 0, 1, 0, 0, 0,
28, 0, 0, 0, 0, 4,
255, 255, 0, 1, 0, 0,
84, 2, 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, 1, 0, 0, 0,
67, 111, 110, 115, 116, 97,
110, 116, 115, 0, 171, 171,
60, 0, 0, 0, 13, 0,
0, 0, 96, 0, 0, 0,
112, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
152, 1, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
184, 1, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
197, 1, 0, 0, 8, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
208, 1, 0, 0, 12, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
220, 1, 0, 0, 16, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0,
248, 1, 0, 0, 32, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
7, 2, 0, 0, 36, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
23, 2, 0, 0, 40, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
39, 2, 0, 0, 44, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 0, 0, 0, 0,
55, 2, 0, 0, 48, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0,
63, 2, 0, 0, 64, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0,
70, 2, 0, 0, 80, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0,
77, 2, 0, 0, 96, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0,
115, 99, 82, 71, 66, 95,
111, 117, 116, 112, 117, 116,
0, 171, 171, 171, 0, 0,
3, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 116, 101, 120, 116,
117, 114, 101, 95, 116, 121,
112, 101, 0, 105, 110, 112,
117, 116, 95, 116, 121, 112,
101, 0, 99, 111, 108, 111,
114, 95, 115, 99, 97, 108,
101, 0, 116, 101, 120, 101,
108, 95, 115, 105, 122, 101,
0, 171, 1, 0, 3, 0,
1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0,
116, 111, 110, 101, 109, 97,
112, 95, 109, 101, 116, 104,
111, 100, 0, 116, 111, 110,
101, 109, 97, 112, 95, 102,
97, 99, 116, 111, 114, 49,
0, 116, 111, 110, 101, 109,
97, 112, 95, 102, 97, 99,
116, 111, 114, 50, 0, 115,
100, 114, 95, 119, 104, 105,
116, 101, 95, 112, 111, 105,
110, 116, 0, 89, 111, 102,
102, 115, 101, 116, 0, 82,
99, 111, 101, 102, 102, 0,
71, 99, 111, 101, 102, 102,
0, 66, 99, 111, 101, 102,
102, 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, 108, 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, 0, 0, 0, 101, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0,
15, 15, 0, 0, 83, 86,
95, 80, 79, 83, 73, 84,
73, 79, 78, 0, 84, 69,
88, 67, 79, 79, 82, 68,
0, 67, 79, 76, 79, 82,
0, 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
};

View File

@@ -0,0 +1,7 @@
#include "D3D11_PixelShader_Common.hlsli"
float4 main(PixelShaderInput input) : SV_TARGET
{
return GetOutputColor(1.0) * input.color;
}

View File

@@ -0,0 +1,295 @@
Texture2D texture0 : register(t0);
Texture2D texture1 : register(t1);
Texture2D texture2 : register(t2);
SamplerState sampler0 : register(s0);
SamplerState sampler1 : register(s1);
struct PixelShaderInput
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
// These should mirror the definitions in SDL_render_d3d11.c
static const float TONEMAP_NONE = 0;
static const float TONEMAP_LINEAR = 1;
static const float TONEMAP_CHROME = 2;
static const float TEXTURETYPE_NONE = 0;
static const float TEXTURETYPE_RGB = 1;
static const float TEXTURETYPE_RGB_PIXELART = 2;
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
static const float TEXTURETYPE_NV12 = 6;
static const float TEXTURETYPE_NV21 = 7;
static const float TEXTURETYPE_YUV = 8;
static const float INPUTTYPE_UNSPECIFIED = 0;
static const float INPUTTYPE_SRGB = 1;
static const float INPUTTYPE_SCRGB = 2;
static const float INPUTTYPE_HDR10 = 3;
cbuffer Constants : register(b0)
{
float scRGB_output;
float texture_type;
float input_type;
float color_scale;
float4 texel_size;
float tonemap_method;
float tonemap_factor1;
float tonemap_factor2;
float sdr_white_point;
float4 Yoffset;
float4 Rcoeff;
float4 Gcoeff;
float4 Bcoeff;
};
static const float3x3 mat709to2020 = {
{ 0.627404, 0.329283, 0.043313 },
{ 0.069097, 0.919541, 0.011362 },
{ 0.016391, 0.088013, 0.895595 }
};
static const float3x3 mat2020to709 = {
{ 1.660496, -0.587656, -0.072840 },
{ -0.124547, 1.132895, -0.008348 },
{ -0.018154, -0.100597, 1.118751 }
};
float sRGBtoLinear(float v)
{
if (v <= 0.04045) {
v = (v / 12.92);
} else {
v = pow(abs(v + 0.055) / 1.055, 2.4);
}
return v;
}
float sRGBfromLinear(float v)
{
if (v <= 0.0031308) {
v = (v * 12.92);
} else {
v = (pow(abs(v), 1.0 / 2.4) * 1.055 - 0.055);
}
return v;
}
float3 PQtoLinear(float3 v)
{
const float c1 = 0.8359375;
const float c2 = 18.8515625;
const float c3 = 18.6875;
const float oo_m1 = 1.0 / 0.1593017578125;
const float oo_m2 = 1.0 / 78.84375;
float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
float3 den = c2 - c3 * pow(abs(v), oo_m2);
return (10000.0 * pow(abs(num / den), oo_m1) / sdr_white_point);
}
float3 ApplyTonemap(float3 v)
{
if (tonemap_method == TONEMAP_LINEAR) {
v *= tonemap_factor1;
} else if (tonemap_method == TONEMAP_CHROME) {
if (input_type == INPUTTYPE_SCRGB) {
// Convert to BT.2020 colorspace for tone mapping
v = mul(mat709to2020, v);
}
float vmax = max(v.r, max(v.g, v.b));
if (vmax > 0.0) {
float scale = (1.0 + tonemap_factor1 * vmax) / (1.0 + tonemap_factor2 * vmax);
v *= scale;
}
if (input_type == INPUTTYPE_SCRGB) {
// Convert to BT.709 colorspace after tone mapping
v = mul(mat2020to709, v);
}
}
return v;
}
float4 SamplePaletteNearest(float2 uv)
{
float index = texture0.Sample(sampler0, uv).r * 255;
return texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
}
// Implementation with thanks from bgolus:
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
float4 SamplePaletteLinear(float2 uv)
{
// scale & offset uvs to integer values at texel centers
float2 uv_texels = uv * texel_size.zw + 0.5;
// get uvs for the center of the 4 surrounding texels by flooring
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
// blend factor
float2 uv_frac = frac(uv_texels);
// sample all 4 texels
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
// bilinear interpolation
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
}
float2 GetPixelArtUV(float2 uv)
{
// box filter size in texel units
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
// scale uv by texture size to get texel coordinate
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
// compute offset for pixel-sized box filter
float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx));
// compute bilinear sample uv coordinates
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
}
float4 GetInputColor(PixelShaderInput input)
{
float4 rgba;
if (texture_type == TEXTURETYPE_NONE) {
rgba = 1.0;
} else if (texture_type == TEXTURETYPE_RGB) {
rgba = texture0.Sample(sampler0, input.tex);
} else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
float2 uv = GetPixelArtUV(input.tex);
rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
} else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
rgba = SamplePaletteNearest(input.tex);
} else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
rgba = SamplePaletteLinear(input.tex);
} else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
float2 uv = GetPixelArtUV(input.tex);
rgba = SamplePaletteLinear(uv);
} else if (texture_type == TEXTURETYPE_NV12) {
float3 yuv;
yuv.x = texture0.Sample(sampler0, input.tex).r;
yuv.yz = texture1.Sample(sampler0, input.tex).rg;
yuv += Yoffset.xyz;
rgba.r = dot(yuv, Rcoeff.xyz);
rgba.g = dot(yuv, Gcoeff.xyz);
rgba.b = dot(yuv, Bcoeff.xyz);
rgba.a = 1.0;
} else if (texture_type == TEXTURETYPE_NV21) {
float3 yuv;
yuv.x = texture0.Sample(sampler0, input.tex).r;
yuv.yz = texture1.Sample(sampler0, input.tex).gr;
yuv += Yoffset.xyz;
rgba.r = dot(yuv, Rcoeff.xyz);
rgba.g = dot(yuv, Gcoeff.xyz);
rgba.b = dot(yuv, Bcoeff.xyz);
rgba.a = 1.0;
} else if (texture_type == TEXTURETYPE_YUV) {
float3 yuv;
yuv.x = texture0.Sample(sampler0, input.tex).r;
yuv.y = texture1.Sample(sampler0, input.tex).r;
yuv.z = texture2.Sample(sampler0, input.tex).r;
yuv += Yoffset.xyz;
rgba.r = dot(yuv, Rcoeff.xyz);
rgba.g = dot(yuv, Gcoeff.xyz);
rgba.b = dot(yuv, Bcoeff.xyz);
rgba.a = 1.0;
} else {
// Error!
rgba.r = 1.0;
rgba.g = 0.0;
rgba.b = 1.0;
rgba.a = 1.0;
}
return rgba;
}
float4 GetOutputColor(float4 rgba)
{
float4 output;
output.rgb = rgba.rgb * color_scale;
output.a = rgba.a;
return output;
}
float3 GetOutputColorFromSRGB(float3 rgb)
{
float3 output;
if (scRGB_output) {
rgb.r = sRGBtoLinear(rgb.r);
rgb.g = sRGBtoLinear(rgb.g);
rgb.b = sRGBtoLinear(rgb.b);
}
output.rgb = rgb * color_scale;
return output;
}
float3 GetOutputColorFromLinear(float3 rgb)
{
float3 output;
output.rgb = rgb * color_scale;
if (!scRGB_output) {
output.r = sRGBfromLinear(output.r);
output.g = sRGBfromLinear(output.g);
output.b = sRGBfromLinear(output.b);
output.rgb = saturate(output.rgb);
}
return output;
}
float4 AdvancedPixelShader(PixelShaderInput input)
{
float4 rgba = GetInputColor(input);
float4 output;
if (input_type == INPUTTYPE_HDR10) {
rgba.rgb = PQtoLinear(rgba.rgb);
}
if (tonemap_method != TONEMAP_NONE) {
rgba.rgb = ApplyTonemap(rgba.rgb);
}
if (input_type == INPUTTYPE_SRGB) {
output.rgb = GetOutputColorFromSRGB(rgba.rgb);
output.a = rgba.a;
} else if (input_type == INPUTTYPE_SCRGB) {
output.rgb = GetOutputColorFromLinear(rgba.rgb);
output.a = rgba.a;
} else if (input_type == INPUTTYPE_HDR10) {
rgba.rgb = mul(mat2020to709, rgba.rgb);
output.rgb = GetOutputColorFromLinear(rgba.rgb);
output.a = rgba.a;
} else {
output = GetOutputColor(rgba);
}
return output * input.color;
}

View File

@@ -0,0 +1,337 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//
// Buffer Definitions:
//
// cbuffer Constants
// {
//
// float scRGB_output; // Offset: 0 Size: 4 [unused]
// float texture_type; // Offset: 4 Size: 4 [unused]
// float input_type; // Offset: 8 Size: 4 [unused]
// float color_scale; // Offset: 12 Size: 4
// float4 texel_size; // Offset: 16 Size: 16 [unused]
// float tonemap_method; // Offset: 32 Size: 4 [unused]
// float tonemap_factor1; // Offset: 36 Size: 4 [unused]
// float tonemap_factor2; // Offset: 40 Size: 4 [unused]
// float sdr_white_point; // Offset: 44 Size: 4 [unused]
// float4 Yoffset; // Offset: 48 Size: 16 [unused]
// float4 Rcoeff; // Offset: 64 Size: 16 [unused]
// float4 Gcoeff; // Offset: 80 Size: 16 [unused]
// float4 Bcoeff; // Offset: 96 Size: 16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// sampler0 sampler NA NA s0 1
// texture0 texture float4 2d t0 1
// Constants cbuffer NA NA cb0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xy 1 NONE float xy
// COLOR 0 xyzw 2 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET 0 xyzw 0 TARGET float xyzw
//
//
// Constant buffer to DX9 shader constant mappings:
//
// Target Reg Buffer Start Reg # of Regs Data Conversion
// ---------- ------- --------- --------- ----------------------
// c0 cb0 0 1 ( FLT, FLT, FLT, FLT)
//
//
// Sampler/Resource to DX9 shader sampler mappings:
//
// Target Sampler Source Sampler Source Resource
// -------------- --------------- ----------------
// s0 s0 t0
//
//
// Level9 shader bytecode:
//
ps_2_0
dcl t0.xy
dcl t1
dcl_2d s0
texld r0, t0, s0
mul r0.xyz, r0, c0.w
mul r0, r0, t1
mov oC0, r0
// approximately 4 instruction slots used (1 texture, 3 arithmetic)
ps_4_0
dcl_constantbuffer CB0[1], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyzw
dcl_output o0.xyzw
dcl_temps 1
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
mul r0.xyz, r0.xyzx, cb0[0].wwww
mul o0.xyzw, r0.xyzw, v2.xyzw
ret
// Approximately 4 instruction slots used
#endif
const BYTE g_main[] =
{
68, 88, 66, 67, 98, 171,
127, 123, 23, 170, 245, 47,
35, 199, 24, 186, 200, 109,
190, 201, 1, 0, 0, 0,
160, 5, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
220, 0, 0, 0, 168, 1,
0, 0, 36, 2, 0, 0,
248, 4, 0, 0, 108, 5,
0, 0, 65, 111, 110, 57,
156, 0, 0, 0, 156, 0,
0, 0, 0, 2, 255, 255,
104, 0, 0, 0, 52, 0,
0, 0, 1, 0, 40, 0,
0, 0, 52, 0, 0, 0,
52, 0, 1, 0, 36, 0,
0, 0, 52, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 2, 255, 255,
31, 0, 0, 2, 0, 0,
0, 128, 0, 0, 3, 176,
31, 0, 0, 2, 0, 0,
0, 128, 1, 0, 15, 176,
31, 0, 0, 2, 0, 0,
0, 144, 0, 8, 15, 160,
66, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 176,
0, 8, 228, 160, 5, 0,
0, 3, 0, 0, 7, 128,
0, 0, 228, 128, 0, 0,
255, 160, 5, 0, 0, 3,
0, 0, 15, 128, 0, 0,
228, 128, 1, 0, 228, 176,
1, 0, 0, 2, 0, 8,
15, 128, 0, 0, 228, 128,
255, 255, 0, 0, 83, 72,
68, 82, 196, 0, 0, 0,
64, 0, 0, 0, 49, 0,
0, 0, 89, 0, 0, 4,
70, 142, 32, 0, 0, 0,
0, 0, 1, 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, 98, 16,
0, 3, 242, 16, 16, 0,
2, 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, 9, 242, 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,
56, 0, 0, 8, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 246, 143, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 7,
242, 32, 16, 0, 0, 0,
0, 0, 70, 14, 16, 0,
0, 0, 0, 0, 70, 30,
16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 116, 0, 0, 0,
4, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 2, 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, 82, 68, 69, 70,
204, 2, 0, 0, 1, 0,
0, 0, 152, 0, 0, 0,
3, 0, 0, 0, 28, 0,
0, 0, 0, 4, 255, 255,
0, 1, 0, 0, 164, 2,
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,
1, 0, 0, 0, 133, 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, 13, 0, 0, 0,
142, 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, 115, 97, 109, 112,
108, 101, 114, 48, 0, 116,
101, 120, 116, 117, 114, 101,
48, 0, 67, 111, 110, 115,
116, 97, 110, 116, 115, 0,
142, 0, 0, 0, 13, 0,
0, 0, 176, 0, 0, 0,
112, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
232, 1, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
8, 2, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
21, 2, 0, 0, 8, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
32, 2, 0, 0, 12, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
44, 2, 0, 0, 16, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 56, 2,
0, 0, 0, 0, 0, 0,
72, 2, 0, 0, 32, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
87, 2, 0, 0, 36, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
103, 2, 0, 0, 40, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
119, 2, 0, 0, 44, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 248, 1,
0, 0, 0, 0, 0, 0,
135, 2, 0, 0, 48, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 56, 2,
0, 0, 0, 0, 0, 0,
143, 2, 0, 0, 64, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 56, 2,
0, 0, 0, 0, 0, 0,
150, 2, 0, 0, 80, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 56, 2,
0, 0, 0, 0, 0, 0,
157, 2, 0, 0, 96, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 56, 2,
0, 0, 0, 0, 0, 0,
115, 99, 82, 71, 66, 95,
111, 117, 116, 112, 117, 116,
0, 171, 171, 171, 0, 0,
3, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 116, 101, 120, 116,
117, 114, 101, 95, 116, 121,
112, 101, 0, 105, 110, 112,
117, 116, 95, 116, 121, 112,
101, 0, 99, 111, 108, 111,
114, 95, 115, 99, 97, 108,
101, 0, 116, 101, 120, 101,
108, 95, 115, 105, 122, 101,
0, 171, 1, 0, 3, 0,
1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0,
116, 111, 110, 101, 109, 97,
112, 95, 109, 101, 116, 104,
111, 100, 0, 116, 111, 110,
101, 109, 97, 112, 95, 102,
97, 99, 116, 111, 114, 49,
0, 116, 111, 110, 101, 109,
97, 112, 95, 102, 97, 99,
116, 111, 114, 50, 0, 115,
100, 114, 95, 119, 104, 105,
116, 101, 95, 112, 111, 105,
110, 116, 0, 89, 111, 102,
102, 115, 101, 116, 0, 82,
99, 111, 101, 102, 102, 0,
71, 99, 111, 101, 102, 102,
0, 66, 99, 111, 101, 102,
102, 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, 108, 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, 101, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0,
15, 15, 0, 0, 83, 86,
95, 80, 79, 83, 73, 84,
73, 79, 78, 0, 84, 69,
88, 67, 79, 79, 82, 68,
0, 67, 79, 76, 79, 82,
0, 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
};

View File

@@ -0,0 +1,7 @@
#include "D3D11_PixelShader_Common.hlsli"
float4 main(PixelShaderInput input) : SV_TARGET
{
return GetOutputColor(texture0.Sample(sampler0, input.tex)) * input.color;
}

View File

@@ -0,0 +1,339 @@
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//
// Buffer Definitions:
//
// cbuffer VertexShaderConstants
// {
//
// row_major float4x4 model; // Offset: 0 Size: 64
// row_major float4x4 projectionAndView;// Offset: 64 Size: 64
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// VertexShaderConstants cbuffer NA NA cb0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyz 0 NONE float xyz
// TEXCOORD 0 xy 1 NONE float xy
// COLOR 0 xyzw 2 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xy 1 NONE float xy
// COLOR 0 xyzw 2 NONE float xyzw
//
//
// Constant buffer to DX9 shader constant mappings:
//
// Target Reg Buffer Start Reg # of Regs Data Conversion
// ---------- ------- --------- --------- ----------------------
// c1 cb0 0 8 ( FLT, FLT, FLT, FLT)
//
//
// Runtime generated constant mappings:
//
// Target Reg Constant Description
// ---------- --------------------------------------------------
// c0 Vertex Shader position offset
//
//
// Level9 shader bytecode:
//
vs_2_0
dcl_texcoord v0
dcl_texcoord1 v1
dcl_texcoord2 v2
mul r0, v0.y, c2
mad r0, v0.x, c1, r0
mad r0, v0.z, c3, r0
add r0, r0, c4
mul r1, r0.y, c6
mad r1, r0.x, c5, r1
mad r1, r0.z, c7, r1
mad r0, r0.w, c8, r1
mad oPos.xy, r0.w, c0, r0
mov oPos.zw, r0
mov oT0.xy, v1
mov oT1, v2
// approximately 12 instruction slots used
vs_4_0
dcl_constantbuffer CB0[8], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xy
dcl_input v2.xyzw
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_output o2.xyzw
dcl_temps 2
mul r0.xyzw, v0.yyyy, cb0[1].xyzw
mad r0.xyzw, v0.xxxx, cb0[0].xyzw, r0.xyzw
mad r0.xyzw, v0.zzzz, cb0[2].xyzw, r0.xyzw
add r0.xyzw, r0.xyzw, cb0[3].xyzw
mul r1.xyzw, r0.yyyy, cb0[5].xyzw
mad r1.xyzw, r0.xxxx, cb0[4].xyzw, r1.xyzw
mad r1.xyzw, r0.zzzz, cb0[6].xyzw, r1.xyzw
mad o0.xyzw, r0.wwww, cb0[7].xyzw, r1.xyzw
mov o1.xy, v1.xyxx
mov o2.xyzw, v2.xyzw
ret
// Approximately 11 instruction slots used
#endif
const BYTE g_main[] =
{
68, 88, 66, 67, 152, 172,
81, 45, 198, 200, 12, 38,
143, 4, 178, 228, 158, 175,
169, 64, 1, 0, 0, 0,
140, 5, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 1, 0, 0, 52, 3,
0, 0, 176, 3, 0, 0,
168, 4, 0, 0, 24, 5,
0, 0, 65, 111, 110, 57,
44, 1, 0, 0, 44, 1,
0, 0, 0, 2, 254, 255,
248, 0, 0, 0, 52, 0,
0, 0, 1, 0, 36, 0,
0, 0, 48, 0, 0, 0,
48, 0, 0, 0, 36, 0,
1, 0, 48, 0, 0, 0,
0, 0, 8, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 2, 254, 255,
31, 0, 0, 2, 5, 0,
0, 128, 0, 0, 15, 144,
31, 0, 0, 2, 5, 0,
1, 128, 1, 0, 15, 144,
31, 0, 0, 2, 5, 0,
2, 128, 2, 0, 15, 144,
5, 0, 0, 3, 0, 0,
15, 128, 0, 0, 85, 144,
2, 0, 228, 160, 4, 0,
0, 4, 0, 0, 15, 128,
0, 0, 0, 144, 1, 0,
228, 160, 0, 0, 228, 128,
4, 0, 0, 4, 0, 0,
15, 128, 0, 0, 170, 144,
3, 0, 228, 160, 0, 0,
228, 128, 2, 0, 0, 3,
0, 0, 15, 128, 0, 0,
228, 128, 4, 0, 228, 160,
5, 0, 0, 3, 1, 0,
15, 128, 0, 0, 85, 128,
6, 0, 228, 160, 4, 0,
0, 4, 1, 0, 15, 128,
0, 0, 0, 128, 5, 0,
228, 160, 1, 0, 228, 128,
4, 0, 0, 4, 1, 0,
15, 128, 0, 0, 170, 128,
7, 0, 228, 160, 1, 0,
228, 128, 4, 0, 0, 4,
0, 0, 15, 128, 0, 0,
255, 128, 8, 0, 228, 160,
1, 0, 228, 128, 4, 0,
0, 4, 0, 0, 3, 192,
0, 0, 255, 128, 0, 0,
228, 160, 0, 0, 228, 128,
1, 0, 0, 2, 0, 0,
12, 192, 0, 0, 228, 128,
1, 0, 0, 2, 0, 0,
3, 224, 1, 0, 228, 144,
1, 0, 0, 2, 1, 0,
15, 224, 2, 0, 228, 144,
255, 255, 0, 0, 83, 72,
68, 82, 192, 1, 0, 0,
64, 0, 1, 0, 112, 0,
0, 0, 89, 0, 0, 4,
70, 142, 32, 0, 0, 0,
0, 0, 8, 0, 0, 0,
95, 0, 0, 3, 114, 16,
16, 0, 0, 0, 0, 0,
95, 0, 0, 3, 50, 16,
16, 0, 1, 0, 0, 0,
95, 0, 0, 3, 242, 16,
16, 0, 2, 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, 242, 32, 16, 0,
2, 0, 0, 0, 104, 0,
0, 2, 2, 0, 0, 0,
56, 0, 0, 8, 242, 0,
16, 0, 0, 0, 0, 0,
86, 21, 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, 6, 16, 16, 0,
0, 0, 0, 0, 70, 142,
32, 0, 0, 0, 0, 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,
166, 26, 16, 0, 0, 0,
0, 0, 70, 142, 32, 0,
0, 0, 0, 0, 2, 0,
0, 0, 70, 14, 16, 0,
0, 0, 0, 0, 0, 0,
0, 8, 242, 0, 16, 0,
0, 0, 0, 0, 70, 14,
16, 0, 0, 0, 0, 0,
70, 142, 32, 0, 0, 0,
0, 0, 3, 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, 5, 0,
0, 0, 50, 0, 0, 10,
242, 0, 16, 0, 1, 0,
0, 0, 6, 0, 16, 0,
0, 0, 0, 0, 70, 142,
32, 0, 0, 0, 0, 0,
4, 0, 0, 0, 70, 14,
16, 0, 1, 0, 0, 0,
50, 0, 0, 10, 242, 0,
16, 0, 1, 0, 0, 0,
166, 10, 16, 0, 0, 0,
0, 0, 70, 142, 32, 0,
0, 0, 0, 0, 6, 0,
0, 0, 70, 14, 16, 0,
1, 0, 0, 0, 50, 0,
0, 10, 242, 32, 16, 0,
0, 0, 0, 0, 246, 15,
16, 0, 0, 0, 0, 0,
70, 142, 32, 0, 0, 0,
0, 0, 7, 0, 0, 0,
70, 14, 16, 0, 1, 0,
0, 0, 54, 0, 0, 5,
50, 32, 16, 0, 1, 0,
0, 0, 70, 16, 16, 0,
1, 0, 0, 0, 54, 0,
0, 5, 242, 32, 16, 0,
2, 0, 0, 0, 70, 30,
16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 116, 0, 0, 0,
11, 0, 0, 0, 2, 0,
0, 0, 0, 0, 0, 0,
6, 0, 0, 0, 8, 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, 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, 82, 68, 69, 70,
240, 0, 0, 0, 1, 0,
0, 0, 84, 0, 0, 0,
1, 0, 0, 0, 28, 0,
0, 0, 0, 4, 254, 255,
0, 1, 0, 0, 198, 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,
1, 0, 0, 0, 86, 101,
114, 116, 101, 120, 83, 104,
97, 100, 101, 114, 67, 111,
110, 115, 116, 97, 110, 116,
115, 0, 171, 171, 60, 0,
0, 0, 2, 0, 0, 0,
108, 0, 0, 0, 128, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 156, 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,
64, 0, 0, 0, 2, 0,
0, 0, 164, 0, 0, 0,
0, 0, 0, 0, 109, 111,
100, 101, 108, 0, 171, 171,
2, 0, 3, 0, 4, 0,
4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 112, 114,
111, 106, 101, 99, 116, 105,
111, 110, 65, 110, 100, 86,
105, 101, 119, 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, 73, 83,
71, 78, 104, 0, 0, 0,
3, 0, 0, 0, 8, 0,
0, 0, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 7, 7,
0, 0, 89, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 3, 3,
0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
2, 0, 0, 0, 15, 15,
0, 0, 80, 79, 83, 73,
84, 73, 79, 78, 0, 84,
69, 88, 67, 79, 79, 82,
68, 0, 67, 79, 76, 79,
82, 0, 79, 83, 71, 78,
108, 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,
101, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 2, 0,
0, 0, 15, 0, 0, 0,
83, 86, 95, 80, 79, 83,
73, 84, 73, 79, 78, 0,
84, 69, 88, 67, 79, 79,
82, 68, 0, 67, 79, 76,
79, 82, 0, 171
};

View File

@@ -0,0 +1,38 @@
#pragma pack_matrix( row_major )
cbuffer VertexShaderConstants : register(b0)
{
matrix model;
matrix projectionAndView;
};
struct VertexShaderInput
{
float3 pos : POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
struct VertexShaderOutput
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
VertexShaderOutput main(VertexShaderInput input)
{
VertexShaderOutput output;
float4 pos = float4(input.pos, 1.0f);
// Transform the vertex position into projected space.
pos = mul(pos, model);
pos = mul(pos, projectionAndView);
output.pos = pos;
// Pass through texture coordinates and color values without transformation
output.tex = input.tex;
output.color = input.color;
return output;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,116 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_D3D11
#define COBJMACROS
#include "../../core/windows/SDL_windows.h"
#include <d3d11_1.h>
#include "SDL_shaders_d3d11.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
#if SDL_WINAPI_FAMILY_PHONE
#error Need to build shaders with level_9_3
#endif
// The shaders here were compiled with compile_shaders.bat
#define g_main D3D11_PixelShader_Colors
#include "D3D11_PixelShader_Colors.h"
#undef g_main
#define g_main D3D11_PixelShader_Textures
#include "D3D11_PixelShader_Textures.h"
#undef g_main
#define g_main D3D11_PixelShader_Advanced
#include "D3D11_PixelShader_Advanced.h"
#undef g_main
#define g_main D3D11_VertexShader
#include "D3D11_VertexShader.h"
#undef g_main
static struct
{
const void *shader_data;
SIZE_T shader_size;
} D3D11_shaders[] = {
{ NULL, 0 },
{ D3D11_PixelShader_Colors, sizeof(D3D11_PixelShader_Colors) },
{ D3D11_PixelShader_Textures, sizeof(D3D11_PixelShader_Textures) },
{ D3D11_PixelShader_Advanced, sizeof(D3D11_PixelShader_Advanced) },
};
SDL_COMPILE_TIME_ASSERT(D3D11_shaders, SDL_arraysize(D3D11_shaders) == NUM_SHADERS);
bool D3D11_CreateVertexShader(ID3D11Device1 *d3dDevice, ID3D11VertexShader **vertexShader, ID3D11InputLayout **inputLayout)
{
// Declare how the input layout for SDL's vertex shader will be setup:
const D3D11_INPUT_ELEMENT_DESC vertexDesc[] = {
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
HRESULT result;
// Load in SDL's one and only vertex shader:
result = ID3D11Device_CreateVertexShader(d3dDevice,
D3D11_VertexShader,
sizeof(D3D11_VertexShader),
NULL,
vertexShader);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateVertexShader"), result);
}
// Create an input layout for SDL's vertex shader:
result = ID3D11Device_CreateInputLayout(d3dDevice,
vertexDesc,
ARRAYSIZE(vertexDesc),
D3D11_VertexShader,
sizeof(D3D11_VertexShader),
inputLayout);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateInputLayout"), result);
}
return true;
}
bool D3D11_CreatePixelShader(ID3D11Device1 *d3dDevice, D3D11_Shader shader, ID3D11PixelShader **pixelShader)
{
HRESULT result;
result = ID3D11Device_CreatePixelShader(d3dDevice,
D3D11_shaders[shader].shader_data,
D3D11_shaders[shader].shader_size,
NULL,
pixelShader);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreatePixelShader"), result);
}
return true;
}
#endif // SDL_VIDEO_RENDER_D3D11

View File

@@ -0,0 +1,35 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
// D3D11 shader implementation
typedef enum
{
SHADER_NONE,
SHADER_SOLID,
SHADER_RGB,
SHADER_ADVANCED,
NUM_SHADERS
} D3D11_Shader;
extern bool D3D11_CreateVertexShader(ID3D11Device1 *d3dDevice, ID3D11VertexShader **vertexShader, ID3D11InputLayout **inputLayout);
extern bool D3D11_CreatePixelShader(ID3D11Device1 *d3dDevice, D3D11_Shader shader, ID3D11PixelShader **pixelShader);

View File

@@ -0,0 +1,4 @@
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_Colors.h D3D11_PixelShader_Colors.hlsl
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_Textures.h D3D11_PixelShader_Textures.hlsl
fxc /T ps_5_0 /Fh D3D11_PixelShader_Advanced.h D3D11_PixelShader_Advanced.hlsl
fxc /T vs_4_0_level_9_1 /Fh D3D11_VertexShader.h D3D11_VertexShader.hlsl

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
#include "D3D12_PixelShader_Common.hlsli"
[RootSignature(AdvancedRS)]
float4 main(PixelShaderInput input) : SV_TARGET
{
return AdvancedPixelShader(input);
}

View File

@@ -0,0 +1,493 @@
#if 0
;
; Input signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float
; TEXCOORD 0 xy 1 NONE float
; COLOR 0 xyzw 2 NONE float xyzw
;
;
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw
;
; shader hash: 8ae1603dec7cda8e7dc3dd934e8ac75b
;
; Pipeline Runtime Information:
;
; Pixel Shader
; DepthOutput=0
; SampleFrequency=0
;
;
; Input signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Position 0 noperspective
; TEXCOORD 0 linear
; COLOR 0 linear
;
; Output signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Target 0
;
; Buffer Definitions:
;
; cbuffer Constants
; {
;
; struct Constants
; {
;
; float scRGB_output; ; Offset: 0
; float texture_type; ; Offset: 4
; float input_type; ; Offset: 8
; float color_scale; ; Offset: 12
; float4 texel_size; ; Offset: 16
; float tonemap_method; ; Offset: 32
; float tonemap_factor1; ; Offset: 36
; float tonemap_factor2; ; Offset: 40
; float sdr_white_point; ; Offset: 44
; float4 Yoffset; ; Offset: 48
; float4 Rcoeff; ; Offset: 64
; float4 Gcoeff; ; Offset: 80
; float4 Bcoeff; ; Offset: 96
;
; } Constants; ; Offset: 0 Size: 112
;
; }
;
;
; Resource Bindings:
;
; Name Type Format Dim ID HLSL Bind Count
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
; Constants cbuffer NA NA CB0 cb1 1
;
;
; ViewId state:
;
; Number of inputs: 12, outputs: 4
; Outputs dependent on ViewId: { }
; Inputs contributing to computation of Outputs:
; output 0 depends on inputs: { 8 }
; output 1 depends on inputs: { 9 }
; output 2 depends on inputs: { 10 }
; output 3 depends on inputs: { 11 }
;
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%dx.types.Handle = type { i8* }
%dx.types.CBufRet.f32 = type { float, float, float, float }
%Constants = type { float, float, float, float, <4 x float>, float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
define void @main() {
%1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%6 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%7 = extractvalue %dx.types.CBufRet.f32 %6, 3
%8 = fmul fast float %7, %2
%9 = fmul fast float %7, %3
%10 = fmul fast float %7, %4
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %9) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %10) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %5) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void
}
; Function Attrs: nounwind readnone
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
; Function Attrs: nounwind
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
; Function Attrs: nounwind readonly
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
; Function Attrs: nounwind readonly
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
attributes #2 = { nounwind readonly }
!llvm.ident = !{!0}
!dx.version = !{!1}
!dx.valver = !{!2}
!dx.shaderModel = !{!3}
!dx.resources = !{!4}
!dx.viewIdState = !{!7}
!dx.entryPoints = !{!8}
!0 = !{!"dxcoob 1.7.2308.16 (52da17e29)"}
!1 = !{i32 1, i32 0}
!2 = !{i32 1, i32 7}
!3 = !{!"ps", i32 6, i32 0}
!4 = !{null, null, !5, null}
!5 = !{!6}
!6 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 112, null}
!7 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
!8 = !{void ()* @main, !"main", !9, !4, null}
!9 = !{!10, !16, null}
!10 = !{!11, !13, !14}
!11 = !{i32 0, !"SV_Position", i8 9, i8 3, !12, i8 4, i32 1, i8 4, i32 0, i8 0, null}
!12 = !{i32 0}
!13 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 2, i32 1, i8 2, i32 1, i8 0, null}
!14 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 2, i32 1, i8 4, i32 2, i8 0, !15}
!15 = !{i32 3, i32 15}
!16 = !{!17}
!17 = !{i32 0, !"SV_Target", i8 9, i8 16, !12, i8 0, i32 1, i8 4, i32 0, i8 0, !15}
#endif
const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0x2f, 0xc1, 0x95, 0xba, 0xb3, 0x28, 0xb3, 0x57,
0x1c, 0xb0, 0x48, 0x8a, 0x8b, 0xf0, 0x9c, 0x51, 0x01, 0x00, 0x00, 0x00,
0xcc, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
0x04, 0x02, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x9c, 0x09, 0x00, 0x00,
0xb8, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c,
0x4f, 0x52, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x00, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30, 0xe4, 0x00, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00,
0x03, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x02, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54,
0x40, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00,
0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x28, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
0xc7, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88,
0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42,
0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c,
0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07,
0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20,
0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00,
0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42,
0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04,
0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14,
0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x5c, 0x23, 0x00,
0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29,
0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1,
0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95,
0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e,
0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab,
0x10, 0x8a, 0x30, 0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x90,
0x47, 0x70, 0x20, 0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46, 0x9a,
0x80, 0x66, 0x92, 0x50, 0x33, 0xc6, 0x18, 0x73, 0x8c, 0x31, 0xe6, 0x9c,
0x93, 0x68, 0x3a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00,
0x16, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0c, 0x05, 0x1e, 0x50, 0x06, 0xe5, 0x50, 0x12, 0x85, 0x50, 0x10, 0x85,
0x51, 0x20, 0x05, 0x54, 0x48, 0x05, 0x55, 0x58, 0x05, 0x56, 0x80, 0x01,
0x05, 0x1a, 0x50, 0xc0, 0x01, 0x45, 0x50, 0x1e, 0x54, 0x4a, 0xa2, 0x0c,
0x0a, 0x61, 0x04, 0xa0, 0x08, 0x0a, 0x84, 0x5e, 0x0d, 0x10, 0x9d, 0x01,
0xa0, 0x3a, 0x03, 0x40, 0x76, 0x2c, 0x87, 0x21, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x81, 0x40, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0xcc, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x88,
0x62, 0x82, 0x40, 0x18, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
0xb8, 0xb9, 0x09, 0x02, 0x71, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x54,
0x62, 0xc0, 0x64, 0xe8, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0x6e,
0x82, 0x40, 0x20, 0x1b, 0x10, 0x42, 0x59, 0x88, 0x61, 0x60, 0x80, 0x0d,
0x41, 0xb3, 0x81, 0x00, 0x00, 0x07, 0x98, 0x20, 0x50, 0x61, 0x40, 0x66,
0x6e, 0x4c, 0xea, 0x48, 0xe8, 0xeb, 0xad, 0x8e, 0x0e, 0xae, 0x8e, 0x6e,
0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0x99, 0x20, 0x10, 0xcb, 0x06, 0x03,
0x89, 0x24, 0x62, 0xa2, 0xc8, 0xd0, 0x95, 0xe1, 0xd1, 0xd5, 0xc9, 0x95,
0x7d, 0xd1, 0xe5, 0xc1, 0x95, 0x4d, 0x10, 0x08, 0x66, 0x83, 0x81, 0x58,
0xd2, 0x35, 0x51, 0x54, 0xd2, 0xdc, 0xe0, 0xea, 0xe8, 0xbe, 0xe8, 0xf2,
0xe0, 0xca, 0x26, 0x08, 0x44, 0xb3, 0xc1, 0x40, 0x32, 0x49, 0x9b, 0x28,
0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65,
0x13, 0x04, 0xc2, 0x99, 0x20, 0x3c, 0x60, 0xb0, 0x01, 0x41, 0x38, 0xa9,
0x9b, 0x28, 0xca, 0xa3, 0x42, 0x57, 0x86, 0x57, 0xc6, 0xf6, 0x35, 0x97,
0xa6, 0x57, 0x36, 0x41, 0x20, 0x9e, 0x0d, 0x06, 0x02, 0x06, 0x52, 0x18,
0x4c, 0x14, 0x1d, 0xba, 0x37, 0xb7, 0xb2, 0xb6, 0x30, 0xb8, 0xaf, 0xb6,
0x32, 0x3a, 0xb4, 0x37, 0xb2, 0x09, 0x02, 0x01, 0x6d, 0x30, 0x90, 0x31,
0x90, 0xc8, 0x60, 0xa2, 0xf8, 0xd0, 0xbd, 0xb9, 0x95, 0xb5, 0x85, 0xc1,
0x7d, 0x99, 0x85, 0x8d, 0xd1, 0xbd, 0xc9, 0xc5, 0x4c, 0x10, 0x88, 0x68,
0x83, 0x81, 0x98, 0x81, 0x74, 0x06, 0x13, 0xc5, 0x87, 0xee, 0xcd, 0xad,
0xac, 0x2d, 0x0c, 0xee, 0xcb, 0x2c, 0x6c, 0x8c, 0xee, 0x4d, 0x4e, 0x66,
0x82, 0x40, 0x48, 0x1b, 0x0c, 0x24, 0x0d, 0x24, 0x35, 0x98, 0x28, 0x3e,
0x73, 0x64, 0x72, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x6f,
0x69, 0x6e, 0x74, 0x13, 0x04, 0x62, 0xda, 0x60, 0x20, 0x6c, 0x20, 0xb5,
0xc1, 0x44, 0xf1, 0xc8, 0x7a, 0x33, 0x33, 0x9b, 0x2b, 0xa3, 0x9b, 0x20,
0x10, 0xd4, 0x06, 0x03, 0x79, 0x03, 0x09, 0x0e, 0x26, 0x8a, 0x86, 0xd4,
0xd8, 0x5b, 0x99, 0x99, 0xd9, 0x04, 0x81, 0xa8, 0x36, 0x18, 0x88, 0x1c,
0x48, 0x73, 0x30, 0x51, 0x34, 0x8e, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26,
0x08, 0x84, 0xb5, 0xc1, 0x40, 0xea, 0x40, 0xb2, 0x83, 0x89, 0xa2, 0x21,
0x34, 0xf6, 0x56, 0x66, 0x66, 0x36, 0x41, 0x20, 0xae, 0x0d, 0x06, 0x82,
0x07, 0x52, 0x1e, 0x4c, 0xd4, 0x06, 0x87, 0xa9, 0xb0, 0xed, 0x13, 0x83,
0x32, 0x40, 0x83, 0x35, 0x70, 0x83, 0x38, 0xa0, 0x83, 0x3b, 0xd0, 0x83,
0x0d, 0x03, 0x01, 0xed, 0xc1, 0x04, 0x41, 0x00, 0x36, 0x00, 0x1b, 0x06,
0xc2, 0x0f, 0xfc, 0x60, 0x43, 0xf0, 0x07, 0x1b, 0x86, 0xa1, 0x0f, 0x40,
0x61, 0x82, 0x60, 0x8d, 0xc1, 0x86, 0x40, 0x14, 0x48, 0xb4, 0x85, 0xa5,
0xb9, 0x71, 0x99, 0xb2, 0xfa, 0x82, 0x7a, 0x9b, 0x4b, 0xa3, 0x4b, 0x7b,
0x73, 0x9b, 0x20, 0x14, 0xda, 0x04, 0xa1, 0xd8, 0x36, 0x04, 0xc4, 0x04,
0xa1, 0xe0, 0x26, 0x08, 0x45, 0xb7, 0x61, 0x21, 0x4a, 0xc1, 0x14, 0x4e,
0x01, 0x15, 0x52, 0x61, 0x48, 0x05, 0x42, 0x15, 0x00, 0x22, 0x54, 0x45,
0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0xc2, 0xdb, 0xb0, 0x0c,
0xac, 0x60, 0x0a, 0xaa, 0x80, 0x0a, 0xad, 0x30, 0xb4, 0xc2, 0xa0, 0x0a,
0xc0, 0x04, 0x81, 0xc0, 0x58, 0x0c, 0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10,
0x88, 0x6c, 0x83, 0x20, 0xc5, 0xc2, 0x86, 0xe5, 0x15, 0x60, 0xc1, 0x14,
0x54, 0x01, 0x15, 0x5a, 0x61, 0x48, 0x85, 0x57, 0x50, 0x05, 0x59, 0xd8,
0x30, 0xac, 0x82, 0x2b, 0xcc, 0x02, 0x93, 0x29, 0xab, 0x2f, 0xaa, 0x30,
0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0xf1, 0x6d, 0x58, 0x88, 0x5a, 0x30,
0x05, 0x5b, 0x40, 0x05, 0x55, 0x18, 0x52, 0x81, 0x50, 0x05, 0x59, 0xd8,
0x10, 0xdc, 0xc2, 0x86, 0x81, 0x16, 0x70, 0x01, 0xd8, 0x50, 0xf4, 0x01,
0x29, 0xe4, 0xc2, 0x03, 0xd0, 0x30, 0x63, 0x7b, 0x0b, 0xa3, 0x9b, 0x63,
0x91, 0xe6, 0x36, 0x47, 0x37, 0x47, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d,
0x8c, 0xc6, 0x5c, 0xda, 0xd9, 0xd7, 0x1c, 0xdd, 0x06, 0x64, 0x17, 0x24,
0x5e, 0x88, 0x85, 0x5e, 0xb8, 0x7c, 0xe1, 0xaa, 0xc2, 0xc6, 0x66, 0xd7,
0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1,
0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26,
0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x82, 0xa2,
0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b,
0x59, 0x19, 0xdb, 0x94, 0x00, 0x29, 0x43, 0x86, 0xe7, 0x22, 0x57, 0x36,
0xf7, 0x56, 0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0x70, 0x2a, 0x91, 0xe1,
0xb9, 0xd0, 0xe5, 0xc1, 0x95, 0x05, 0xb9, 0xb9, 0xbd, 0xd1, 0x85, 0xd1,
0xa5, 0xbd, 0xb9, 0xcd, 0x4d, 0x11, 0xf6, 0x00, 0x14, 0xea, 0x90, 0xe1,
0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95,
0x4d, 0x09, 0x44, 0xa1, 0x0e, 0x19, 0x9e, 0x4b, 0x99, 0x1b, 0x9d, 0x5c,
0x1e, 0xd4, 0x5b, 0x9a, 0x1b, 0xdd, 0xdc, 0x94, 0x20, 0x17, 0xba, 0x90,
0xe1, 0xb9, 0x8c, 0xbd, 0xd5, 0xb9, 0xd1, 0x95, 0xc9, 0xcd, 0x4d, 0x09,
0x7c, 0x01, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19,
0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06,
0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f,
0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x04,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x8a, 0xe1, 0x60, 0x3d, 0xec, 0x7c, 0xda, 0x8e, 0x7d, 0xc3, 0xdd, 0x93,
0x4e, 0x8a, 0xc7, 0x5b, 0x44, 0x58, 0x49, 0x4c, 0x0c, 0x06, 0x00, 0x00,
0x60, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf4, 0x05, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x5c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20, 0x60,
0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92, 0x50,
0x33, 0xc6, 0x18, 0x73, 0x8c, 0x31, 0xe6, 0x9c, 0x93, 0x68, 0x3a, 0x10,
0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0xe0,
0x01, 0x45, 0x50, 0x06, 0xe5, 0x41, 0xa5, 0x24, 0xca, 0xa0, 0x10, 0x46,
0x00, 0x8a, 0xa0, 0x40, 0xa8, 0xce, 0x00, 0x90, 0x1d, 0xcb, 0x61, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x88, 0x62, 0x82, 0x40, 0x18, 0x1b, 0x84, 0x81, 0x98,
0x20, 0x10, 0xc7, 0x06, 0x61, 0x30, 0x28, 0xc0, 0xcd, 0x4d, 0x10, 0x08,
0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0xa1, 0x9a, 0x08, 0x4c, 0x10, 0x88,
0x64, 0x03, 0x42, 0x2c, 0x0c, 0x31, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36,
0x10, 0x00, 0xf0, 0x00, 0x13, 0x04, 0x8b, 0xda, 0x10, 0x44, 0x13, 0x04,
0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0xc6, 0x65, 0xca, 0xea, 0x0b, 0xea,
0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x6d, 0x82, 0x50, 0x34, 0x13, 0x84,
0xc2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0xe2, 0x99, 0x20, 0x14, 0xd0, 0x86,
0x85, 0xa8, 0xac, 0x0b, 0xcb, 0x86, 0x8c, 0xd0, 0x00, 0x22, 0x54, 0x45,
0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0x22, 0xda, 0xb0, 0x0c,
0x9c, 0xa5, 0x61, 0xdd, 0xd0, 0x0d, 0x1a, 0x30, 0x41, 0x20, 0x14, 0x16,
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x13, 0x04, 0x62, 0x99, 0x20, 0x10, 0xcc,
0x06, 0x21, 0x0c, 0xc4, 0x60, 0xc3, 0xf2, 0x81, 0x81, 0xa5, 0x61, 0xdd,
0x90, 0x7d, 0xda, 0x18, 0x6c, 0x18, 0x36, 0x8f, 0x0c, 0x98, 0x4c, 0x59,
0x7d, 0x51, 0x85, 0xc9, 0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x0a, 0x69, 0xc3,
0x42, 0x98, 0x81, 0x75, 0x06, 0x98, 0x36, 0x64, 0x84, 0x36, 0x06, 0x1b,
0x02, 0x34, 0xd8, 0x30, 0x94, 0x41, 0x1a, 0x00, 0x1b, 0x8a, 0x89, 0x52,
0x03, 0x08, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6,
0x46, 0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd,
0xa5, 0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61,
0x6c, 0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19, 0x9e, 0xcb, 0x1c,
0x5a, 0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x20,
0x29, 0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56,
0x36, 0x37, 0x25, 0x78, 0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd,
0x25, 0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09, 0xa2, 0x3a, 0x64,
0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74,
0x73, 0x53, 0x02, 0x35, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87,
0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20,
0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90,
0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x14, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
0x17, 0xb7, 0x6d, 0x04, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09,
0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00, 0x00,
0x61, 0x20, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c,
0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x44, 0x0a, 0x61, 0x06,
0xa0, 0x14, 0x4a, 0xae, 0xec, 0xa8, 0x94, 0x00, 0xbd, 0x11, 0x00, 0x00,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x00, 0x61, 0xc4, 0x62, 0x5d, 0xc1,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x1c, 0x32, 0x5d, 0xcd, 0x31,
0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x97, 0x50, 0x18, 0x81, 0x8c,
0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xe1, 0x29, 0x55, 0xe6, 0x24, 0x23,
0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x7c, 0x8b, 0xa5, 0x49, 0xca, 0x88,
0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x1e, 0x52, 0x6c, 0xa3, 0x09, 0xc1,
0x60, 0x81, 0x21, 0x1f, 0x13, 0x0c, 0xf9, 0xd8, 0x60, 0xc8, 0x67, 0xc4,
0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x32, 0x78, 0xc0, 0x00, 0x0c, 0xac,
0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x32, 0x78, 0xc0, 0x00,
0x0c, 0x18, 0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x32, 0x78,
0xc0, 0x00, 0x0c, 0xaa, 0x60, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10,
0x32, 0x78, 0xc0, 0x00, 0x0c, 0x30, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
};

View File

@@ -0,0 +1,8 @@
#include "D3D12_PixelShader_Common.hlsli"
[RootSignature(ColorRS)]
float4 main(PixelShaderInput input) : SV_TARGET0
{
return GetOutputColor(1.0) * input.color;
}

View File

@@ -0,0 +1,296 @@
#include "D3D12_Shader_Common.hlsli"
Texture2D texture0 : register(t0);
Texture2D texture1 : register(t1);
Texture2D texture2 : register(t2);
SamplerState sampler0 : register(s0);
SamplerState sampler1 : register(s1);
struct PixelShaderInput
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
// These should mirror the definitions in SDL_render_d3d12.c
static const float TONEMAP_NONE = 0;
static const float TONEMAP_LINEAR = 1;
static const float TONEMAP_CHROME = 2;
static const float TEXTURETYPE_NONE = 0;
static const float TEXTURETYPE_RGB = 1;
static const float TEXTURETYPE_RGB_PIXELART = 2;
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
static const float TEXTURETYPE_NV12 = 6;
static const float TEXTURETYPE_NV21 = 7;
static const float TEXTURETYPE_YUV = 8;
static const float INPUTTYPE_UNSPECIFIED = 0;
static const float INPUTTYPE_SRGB = 1;
static const float INPUTTYPE_SCRGB = 2;
static const float INPUTTYPE_HDR10 = 3;
cbuffer Constants : register(b1)
{
float scRGB_output;
float texture_type;
float input_type;
float color_scale;
float4 texel_size;
float tonemap_method;
float tonemap_factor1;
float tonemap_factor2;
float sdr_white_point;
float4 Yoffset;
float4 Rcoeff;
float4 Gcoeff;
float4 Bcoeff;
};
static const float3x3 mat709to2020 = {
{ 0.627404, 0.329283, 0.043313 },
{ 0.069097, 0.919541, 0.011362 },
{ 0.016391, 0.088013, 0.895595 }
};
static const float3x3 mat2020to709 = {
{ 1.660496, -0.587656, -0.072840 },
{ -0.124547, 1.132895, -0.008348 },
{ -0.018154, -0.100597, 1.118751 }
};
float sRGBtoLinear(float v)
{
if (v <= 0.04045) {
v = (v / 12.92);
} else {
v = pow(abs(v + 0.055) / 1.055, 2.4);
}
return v;
}
float sRGBfromLinear(float v)
{
if (v <= 0.0031308) {
v = (v * 12.92);
} else {
v = (pow(abs(v), 1.0 / 2.4) * 1.055 - 0.055);
}
return v;
}
float3 PQtoLinear(float3 v)
{
const float c1 = 0.8359375;
const float c2 = 18.8515625;
const float c3 = 18.6875;
const float oo_m1 = 1.0 / 0.1593017578125;
const float oo_m2 = 1.0 / 78.84375;
float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
float3 den = c2 - c3 * pow(abs(v), oo_m2);
return (10000.0 * pow(abs(num / den), oo_m1) / sdr_white_point);
}
float3 ApplyTonemap(float3 v)
{
if (tonemap_method == TONEMAP_LINEAR) {
v *= tonemap_factor1;
} else if (tonemap_method == TONEMAP_CHROME) {
if (input_type == INPUTTYPE_SCRGB) {
// Convert to BT.2020 colorspace for tone mapping
v = mul(mat709to2020, v);
}
float vmax = max(v.r, max(v.g, v.b));
if (vmax > 0.0) {
float scale = (1.0 + tonemap_factor1 * vmax) / (1.0 + tonemap_factor2 * vmax);
v *= scale;
}
if (input_type == INPUTTYPE_SCRGB) {
// Convert to BT.709 colorspace after tone mapping
v = mul(mat2020to709, v);
}
}
return v;
}
float4 SamplePaletteNearest(float2 uv)
{
float index = texture0.Sample(sampler0, uv).r * 255;
return texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
}
// Implementation with thanks from bgolus:
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
float4 SamplePaletteLinear(float2 uv)
{
// scale & offset uvs to integer values at texel centers
float2 uv_texels = uv * texel_size.zw + 0.5;
// get uvs for the center of the 4 surrounding texels by flooring
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
// blend factor
float2 uv_frac = frac(uv_texels);
// sample all 4 texels
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
// bilinear interpolation
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
}
float2 GetPixelArtUV(float2 uv)
{
// box filter size in texel units
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
// scale uv by texture size to get texel coordinate
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
// compute offset for pixel-sized box filter
float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx));
// compute bilinear sample uv coordinates
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
}
float4 GetInputColor(PixelShaderInput input)
{
float4 rgba;
if (texture_type == TEXTURETYPE_NONE) {
rgba = 1.0;
} else if (texture_type == TEXTURETYPE_RGB) {
rgba = texture0.Sample(sampler0, input.tex);
} else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
float2 uv = GetPixelArtUV(input.tex);
rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
} else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
rgba = SamplePaletteNearest(input.tex);
} else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
rgba = SamplePaletteLinear(input.tex);
} else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
float2 uv = GetPixelArtUV(input.tex);
rgba = SamplePaletteLinear(uv);
} else if (texture_type == TEXTURETYPE_NV12) {
float3 yuv;
yuv.x = texture0.Sample(sampler0, input.tex).r;
yuv.yz = texture1.Sample(sampler0, input.tex).rg;
yuv += Yoffset.xyz;
rgba.r = dot(yuv, Rcoeff.xyz);
rgba.g = dot(yuv, Gcoeff.xyz);
rgba.b = dot(yuv, Bcoeff.xyz);
rgba.a = 1.0;
} else if (texture_type == TEXTURETYPE_NV21) {
float3 yuv;
yuv.x = texture0.Sample(sampler0, input.tex).r;
yuv.yz = texture1.Sample(sampler0, input.tex).gr;
yuv += Yoffset.xyz;
rgba.r = dot(yuv, Rcoeff.xyz);
rgba.g = dot(yuv, Gcoeff.xyz);
rgba.b = dot(yuv, Bcoeff.xyz);
rgba.a = 1.0;
} else if (texture_type == TEXTURETYPE_YUV) {
float3 yuv;
yuv.x = texture0.Sample(sampler0, input.tex).r;
yuv.y = texture1.Sample(sampler0, input.tex).r;
yuv.z = texture2.Sample(sampler0, input.tex).r;
yuv += Yoffset.xyz;
rgba.r = dot(yuv, Rcoeff.xyz);
rgba.g = dot(yuv, Gcoeff.xyz);
rgba.b = dot(yuv, Bcoeff.xyz);
rgba.a = 1.0;
} else {
// Error!
rgba.r = 1.0;
rgba.g = 0.0;
rgba.b = 1.0;
rgba.a = 1.0;
}
return rgba;
}
float4 GetOutputColor(float4 rgba)
{
float4 output;
output.rgb = rgba.rgb * color_scale;
output.a = rgba.a;
return output;
}
float3 GetOutputColorFromSRGB(float3 rgb)
{
float3 output;
if (scRGB_output) {
rgb.r = sRGBtoLinear(rgb.r);
rgb.g = sRGBtoLinear(rgb.g);
rgb.b = sRGBtoLinear(rgb.b);
}
output.rgb = rgb * color_scale;
return output;
}
float3 GetOutputColorFromLinear(float3 rgb)
{
float3 output;
output.rgb = rgb * color_scale;
if (!scRGB_output) {
output.r = sRGBfromLinear(output.r);
output.g = sRGBfromLinear(output.g);
output.b = sRGBfromLinear(output.b);
output.rgb = saturate(output.rgb);
}
return output;
}
float4 AdvancedPixelShader(PixelShaderInput input)
{
float4 rgba = GetInputColor(input);
float4 output;
if (input_type == INPUTTYPE_HDR10) {
rgba.rgb = PQtoLinear(rgba.rgb);
}
if (tonemap_method != TONEMAP_NONE) {
rgba.rgb = ApplyTonemap(rgba.rgb);
}
if (input_type == INPUTTYPE_SRGB) {
output.rgb = GetOutputColorFromSRGB(rgba.rgb);
output.a = rgba.a;
} else if (input_type == INPUTTYPE_SCRGB) {
output.rgb = GetOutputColorFromLinear(rgba.rgb);
output.a = rgba.a;
} else if (input_type == INPUTTYPE_HDR10) {
rgba.rgb = mul(mat2020to709, rgba.rgb);
output.rgb = GetOutputColorFromLinear(rgba.rgb);
output.a = rgba.a;
} else {
output = GetOutputColor(rgba);
}
return output * input.color;
}

View File

@@ -0,0 +1,589 @@
#if 0
;
; Input signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
;
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw
;
; shader hash: 659264befb13335624a11d2c002170a6
;
; Pipeline Runtime Information:
;
; Pixel Shader
; DepthOutput=0
; SampleFrequency=0
;
;
; Input signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Position 0 noperspective
; TEXCOORD 0 linear
; COLOR 0 linear
;
; Output signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Target 0
;
; Buffer Definitions:
;
; cbuffer Constants
; {
;
; struct Constants
; {
;
; float scRGB_output; ; Offset: 0
; float texture_type; ; Offset: 4
; float input_type; ; Offset: 8
; float color_scale; ; Offset: 12
; float4 texel_size; ; Offset: 16
; float tonemap_method; ; Offset: 32
; float tonemap_factor1; ; Offset: 36
; float tonemap_factor2; ; Offset: 40
; float sdr_white_point; ; Offset: 44
; float4 Yoffset; ; Offset: 48
; float4 Rcoeff; ; Offset: 64
; float4 Gcoeff; ; Offset: 80
; float4 Bcoeff; ; Offset: 96
;
; } Constants; ; Offset: 0 Size: 112
;
; }
;
;
; Resource Bindings:
;
; Name Type Format Dim ID HLSL Bind Count
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
; Constants cbuffer NA NA CB0 cb1 1
; sampler0 sampler NA NA S0 s0 1
; texture0 texture f32 2d T0 t0 1
;
;
; ViewId state:
;
; Number of inputs: 12, outputs: 4
; Outputs dependent on ViewId: { }
; Inputs contributing to computation of Outputs:
; output 0 depends on inputs: { 4, 5, 8 }
; output 1 depends on inputs: { 4, 5, 9 }
; output 2 depends on inputs: { 4, 5, 10 }
; output 3 depends on inputs: { 4, 5, 11 }
;
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%dx.types.Handle = type { i8* }
%dx.types.ResRet.f32 = type { float, float, float, float, i32 }
%dx.types.CBufRet.f32 = type { float, float, float, float }
%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
%Constants = type { float, float, float, float, <4 x float>, float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
%struct.SamplerState = type { i32 }
define void @main() {
%1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 3, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%6 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%7 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%8 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%9 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%10 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %1, %dx.types.Handle %2, float %8, float %9, float undef, float undef, i32 0, i32 0, i32 undef, float undef) ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
%11 = extractvalue %dx.types.ResRet.f32 %10, 0
%12 = extractvalue %dx.types.ResRet.f32 %10, 1
%13 = extractvalue %dx.types.ResRet.f32 %10, 2
%14 = extractvalue %dx.types.ResRet.f32 %10, 3
%15 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %3, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%16 = extractvalue %dx.types.CBufRet.f32 %15, 3
%17 = fmul fast float %11, %4
%18 = fmul fast float %17, %16
%19 = fmul fast float %12, %5
%20 = fmul fast float %19, %16
%21 = fmul fast float %13, %6
%22 = fmul fast float %21, %16
%23 = fmul fast float %14, %7
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %18) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %20) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %22) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %23) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void
}
; Function Attrs: nounwind readnone
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
; Function Attrs: nounwind
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
; Function Attrs: nounwind readonly
declare %dx.types.ResRet.f32 @dx.op.sample.f32(i32, %dx.types.Handle, %dx.types.Handle, float, float, float, float, i32, i32, i32, float) #2
; Function Attrs: nounwind readonly
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
; Function Attrs: nounwind readonly
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
attributes #2 = { nounwind readonly }
!llvm.ident = !{!0}
!dx.version = !{!1}
!dx.valver = !{!2}
!dx.shaderModel = !{!3}
!dx.resources = !{!4}
!dx.viewIdState = !{!12}
!dx.entryPoints = !{!13}
!0 = !{!"dxcoob 1.7.2308.16 (52da17e29)"}
!1 = !{i32 1, i32 0}
!2 = !{i32 1, i32 7}
!3 = !{!"ps", i32 6, i32 0}
!4 = !{!5, null, !8, !10}
!5 = !{!6}
!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
!7 = !{i32 0, i32 9}
!8 = !{!9}
!9 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 112, null}
!10 = !{!11}
!11 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
!12 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 15, i32 15, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
!13 = !{void ()* @main, !"main", !14, !4, null}
!14 = !{!15, !22, null}
!15 = !{!16, !18, !20}
!16 = !{i32 0, !"SV_Position", i8 9, i8 3, !17, i8 4, i32 1, i8 4, i32 0, i8 0, null}
!17 = !{i32 0}
!18 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !17, i8 2, i32 1, i8 2, i32 1, i8 0, !19}
!19 = !{i32 3, i32 3}
!20 = !{i32 2, !"COLOR", i8 9, i8 0, !17, i8 2, i32 1, i8 4, i32 2, i8 0, !21}
!21 = !{i32 3, i32 15}
!22 = !{!23}
!23 = !{i32 0, !"SV_Target", i8 9, i8 16, !17, i8 0, i32 1, i8 4, i32 0, i8 0, !21}
#endif
const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0xb3, 0x69, 0x88, 0xa8, 0x1b, 0xbd, 0xf8, 0x6c,
0x94, 0xe3, 0xf8, 0x24, 0xa1, 0xa0, 0x04, 0x23, 0x01, 0x00, 0x00, 0x00,
0xf4, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
0x34, 0x02, 0x00, 0x00, 0xdc, 0x02, 0x00, 0x00, 0x48, 0x0b, 0x00, 0x00,
0x64, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c,
0x4f, 0x52, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x00, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30, 0x14, 0x01, 0x00, 0x00,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00,
0x03, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x02, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa0, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x53, 0x54, 0x41, 0x54, 0x64, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0x19, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x4c, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0xfc,
0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46, 0xc5, 0x18, 0x63, 0x10,
0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x21, 0xd0, 0x0c,
0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b, 0x63, 0x0c, 0x42, 0xc8,
0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d, 0x54,
0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6, 0x18, 0xa3, 0x10, 0x8f,
0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x10, 0x49, 0x73,
0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87, 0x70,
0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87, 0x7a,
0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87, 0x71,
0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87, 0x70,
0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03, 0x3d,
0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87, 0x7c,
0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c, 0xc6, 0x81, 0x1d, 0xc2,
0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, 0xea,
0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6,
0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2,
0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0x90,
0x60, 0x2f, 0xe1, 0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0xd4,
0x8c, 0x31, 0x86, 0x1d, 0x63, 0x0c, 0x6b, 0xad, 0x25, 0x7d, 0x93, 0x34,
0x45, 0x94, 0x30, 0xf9, 0x2c, 0xc0, 0x3c, 0x0b, 0x11, 0xb1, 0x13, 0x30,
0x11, 0x28, 0x20, 0xc4, 0xd3, 0x81, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
0x18, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0c, 0x45, 0x50, 0x12, 0x05, 0x1e, 0x50, 0x06, 0xe5, 0x50, 0x08, 0x05,
0x51, 0x18, 0x05, 0x52, 0x40, 0x85, 0x54, 0x50, 0x85, 0x55, 0x60, 0x05,
0x18, 0x50, 0xa0, 0x01, 0x05, 0x1c, 0x50, 0x1e, 0x85, 0x43, 0xa5, 0x24,
0xca, 0xa0, 0x10, 0x46, 0x00, 0x8a, 0xa0, 0x40, 0x48, 0xd6, 0x00, 0xe5,
0x19, 0x00, 0xd2, 0x33, 0x00, 0xb4, 0x67, 0x00, 0xa8, 0xcf, 0x00, 0x90,
0x1f, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe7, 0x01, 0x80, 0x40, 0x20,
0x10, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7,
0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c,
0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05, 0xb8, 0xb9, 0x09, 0x02,
0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x64, 0x63, 0x40, 0x84, 0xae,
0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x0c, 0x66, 0x82, 0x40, 0x24, 0x13, 0x04,
0x42, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18,
0xc2, 0xd9, 0x10, 0x3c, 0x13, 0x84, 0xad, 0x0c, 0x98, 0x0c, 0xbd, 0xb9,
0xcd, 0xd1, 0x85, 0xb9, 0xd1, 0xcd, 0x4d, 0x10, 0x88, 0x65, 0x03, 0x42,
0x44, 0x12, 0x31, 0x0c, 0x13, 0xb0, 0x21, 0xa0, 0x26, 0x08, 0x9d, 0x19,
0x10, 0x99, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0x83, 0xd9, 0x80, 0x10,
0xd6, 0x45, 0x10, 0x03, 0x01, 0x6c, 0x08, 0xb0, 0x0d, 0x04, 0x04, 0x54,
0xd9, 0x04, 0x41, 0x23, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47, 0x42, 0x5f,
0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10,
0xcd, 0x06, 0x03, 0xe1, 0x3a, 0xc2, 0x6b, 0xc8, 0xd0, 0x95, 0xe1, 0xd1,
0xd5, 0xc9, 0x95, 0x7d, 0xd1, 0xe5, 0xc1, 0x95, 0x4d, 0x10, 0x08, 0x67,
0x83, 0x81, 0x80, 0x41, 0x17, 0x06, 0x5e, 0x43, 0x25, 0xcd, 0x0d, 0xae,
0x8e, 0xee, 0x8b, 0x2e, 0x0f, 0xae, 0x6c, 0x82, 0x40, 0x3c, 0x1b, 0x0c,
0x64, 0x0c, 0x3a, 0x32, 0xf0, 0x1a, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x13, 0x04, 0x02, 0x9a, 0x20, 0x48,
0x62, 0xb0, 0x01, 0x41, 0xcc, 0xa0, 0x3b, 0x03, 0xaf, 0x69, 0xd0, 0x80,
0x0a, 0x5d, 0x19, 0x5e, 0x19, 0xdb, 0xd7, 0x5c, 0x9a, 0x5e, 0xd9, 0x04,
0x81, 0x88, 0x36, 0x18, 0x88, 0x1a, 0x74, 0x6b, 0xe0, 0x35, 0x74, 0xe8,
0xde, 0xdc, 0xca, 0xda, 0xc2, 0xe0, 0xbe, 0xda, 0xca, 0xe8, 0xd0, 0xde,
0xc8, 0x26, 0x08, 0x84, 0xb4, 0xc1, 0x40, 0xda, 0xa0, 0x73, 0x03, 0xaf,
0xe1, 0x43, 0xf7, 0xe6, 0x56, 0xd6, 0x16, 0x06, 0xf7, 0x65, 0x16, 0x36,
0x46, 0xf7, 0x26, 0x17, 0x33, 0x41, 0x20, 0xa6, 0x0d, 0x06, 0x02, 0x07,
0x5d, 0x1c, 0x78, 0x0d, 0x1f, 0xba, 0x37, 0xb7, 0xb2, 0xb6, 0x30, 0xb8,
0x2f, 0xb3, 0xb0, 0x31, 0xba, 0x37, 0x39, 0x99, 0x09, 0x02, 0x41, 0x6d,
0x30, 0x90, 0x39, 0xe8, 0xe8, 0xc0, 0x6b, 0xf8, 0xcc, 0x91, 0xc9, 0x7d,
0xdd, 0xa1, 0xa5, 0xd1, 0x95, 0x7d, 0xc1, 0xbd, 0xa5, 0xb9, 0xd1, 0x4d,
0x10, 0x88, 0x6a, 0x83, 0x81, 0xd8, 0x41, 0x77, 0x07, 0x5e, 0xc3, 0x23,
0xeb, 0xcd, 0xcc, 0x6c, 0xae, 0x8c, 0x6e, 0x82, 0x40, 0x58, 0x1b, 0x0c,
0x24, 0x0f, 0x3a, 0x3d, 0xf0, 0x1a, 0x1a, 0x52, 0x63, 0x6f, 0x65, 0x66,
0x66, 0x13, 0x04, 0xe2, 0xda, 0x60, 0x20, 0x7c, 0xd0, 0xf5, 0x81, 0xd7,
0xd0, 0x38, 0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd8, 0x06,
0x03, 0xf9, 0x83, 0x0e, 0x14, 0xbc, 0x86, 0x86, 0xd0, 0xd8, 0x5b, 0x99,
0x99, 0xd9, 0x04, 0x81, 0xc8, 0x36, 0x18, 0x88, 0x28, 0x74, 0xa3, 0xe0,
0x35, 0x1b, 0x9c, 0xe9, 0x13, 0x83, 0x32, 0x48, 0x03, 0x36, 0x78, 0x03,
0x39, 0xa8, 0x03, 0x3c, 0xd8, 0x03, 0x3f, 0x08, 0x05, 0x52, 0xd8, 0x30,
0x10, 0x5b, 0x29, 0x4c, 0x10, 0x04, 0x60, 0x03, 0xb0, 0x61, 0x20, 0x50,
0x01, 0x15, 0x36, 0x04, 0xa9, 0xb0, 0x61, 0x18, 0x4e, 0x41, 0x15, 0x26,
0x08, 0xde, 0x19, 0x6c, 0x08, 0x58, 0x81, 0x44, 0x5b, 0x58, 0x9a, 0x1b,
0x97, 0x29, 0xab, 0x2f, 0xa8, 0xb7, 0xb9, 0x34, 0xba, 0xb4, 0x37, 0xb7,
0x09, 0x42, 0xc1, 0x4d, 0x10, 0x8a, 0x6e, 0x43, 0x40, 0x4c, 0x10, 0x0a,
0x6f, 0x82, 0x50, 0x7c, 0x1b, 0x16, 0xe2, 0x15, 0x60, 0x21, 0x16, 0x64,
0x61, 0x16, 0x86, 0x59, 0x20, 0x68, 0x01, 0x20, 0x42, 0x55, 0x84, 0x35,
0xf4, 0xf4, 0x24, 0x45, 0x34, 0x41, 0x28, 0xc0, 0x60, 0x83, 0xd0, 0x75,
0x1b, 0x96, 0xc1, 0x16, 0x60, 0x81, 0x16, 0x64, 0xe1, 0x16, 0x86, 0x5b,
0x18, 0x68, 0x01, 0x17, 0x58, 0x0c, 0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10,
0x08, 0x6d, 0x83, 0xd0, 0xed, 0xc2, 0x86, 0x85, 0xd1, 0x05, 0x58, 0xa0,
0x05, 0x59, 0xb8, 0x85, 0x61, 0x16, 0x18, 0x5a, 0xe0, 0x85, 0x0d, 0x43,
0x2d, 0xe4, 0x42, 0x2f, 0x30, 0x99, 0xb2, 0xfa, 0xa2, 0x0a, 0x93, 0x3b,
0x2b, 0xa3, 0x9b, 0x20, 0x14, 0x61, 0xb0, 0x61, 0x21, 0x7e, 0x01, 0x16,
0xc0, 0x41, 0x16, 0x68, 0x61, 0x98, 0x05, 0x82, 0x16, 0x78, 0x61, 0x43,
0x10, 0x0e, 0x1b, 0x06, 0x5f, 0x10, 0x07, 0x60, 0x43, 0x71, 0x0a, 0xae,
0x30, 0x0e, 0x1a, 0x40, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e, 0x8e, 0x45,
0x9a, 0xdb, 0x1c, 0xdd, 0xdc, 0x04, 0x81, 0xd8, 0x68, 0xcc, 0xa5, 0x9d,
0x7d, 0xb1, 0x91, 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x9a, 0xa3, 0x23, 0x42,
0x57, 0x86, 0xf7, 0xe5, 0xf6, 0x26, 0xd7, 0xb6, 0x41, 0x29, 0x07, 0xcf,
0x1c, 0xce, 0x01, 0x1d, 0x90, 0x74, 0x08, 0x03, 0x75, 0x18, 0xaa, 0xb0,
0xb1, 0xd9, 0xb5, 0xb9, 0xa4, 0x91, 0x95, 0xb9, 0xd1, 0x4d, 0x09, 0x82,
0x2a, 0x64, 0x78, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53,
0x02, 0xa2, 0x09, 0x19, 0x9e, 0x8b, 0x5d, 0x18, 0x9b, 0x5d, 0x99, 0xdc,
0x94, 0xa0, 0xa8, 0x43, 0x86, 0xe7, 0x32, 0x87, 0x16, 0x46, 0x56, 0x26,
0xd7, 0xf4, 0x46, 0x56, 0xc6, 0x36, 0x25, 0x40, 0xca, 0x90, 0xe1, 0xb9,
0xc8, 0x95, 0xcd, 0xbd, 0xd5, 0xc9, 0x8d, 0x95, 0xcd, 0x4d, 0x09, 0xb2,
0x4a, 0x64, 0x78, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x6e, 0x6f,
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x84, 0x52, 0x50, 0x85,
0x3a, 0x64, 0x78, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x49, 0x64, 0x53, 0x74,
0x61, 0x74, 0x65, 0x53, 0x02, 0x56, 0xa8, 0x43, 0x86, 0xe7, 0x52, 0xe6,
0x46, 0x27, 0x97, 0x07, 0xf5, 0x96, 0xe6, 0x46, 0x37, 0x37, 0x25, 0x18,
0x87, 0x2e, 0x64, 0x78, 0x2e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72,
0x73, 0x53, 0x02, 0x75, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87,
0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20,
0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90,
0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d,
0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71,
0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81,
0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00, 0xd2,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x92, 0x64, 0xbe,
0xfb, 0x13, 0x33, 0x56, 0x24, 0xa1, 0x1d, 0x2c, 0x00, 0x21, 0x70, 0xa6,
0x44, 0x58, 0x49, 0x4c, 0x88, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0xe2, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0xfc,
0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46, 0xc5, 0x18, 0x63, 0x10,
0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x21, 0xd0, 0x0c,
0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b, 0x63, 0x0c, 0x42, 0xc8,
0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d, 0x54,
0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6, 0x18, 0xa3, 0x10, 0x8f,
0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x10, 0x49, 0x73,
0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87, 0x70,
0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87, 0x7a,
0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87, 0x71,
0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87, 0x70,
0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03, 0x3d,
0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87, 0x7c,
0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c, 0xc6, 0x81, 0x1d, 0xc2,
0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, 0xea,
0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6,
0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2,
0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0x90,
0x60, 0x2f, 0xe1, 0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0xd4,
0x8c, 0x31, 0x86, 0x1d, 0x63, 0x0c, 0x6b, 0xad, 0x25, 0x7d, 0x93, 0x34,
0x45, 0x94, 0x30, 0xf9, 0x2c, 0xc0, 0x3c, 0x0b, 0x11, 0xb1, 0x13, 0x30,
0x11, 0x28, 0x20, 0xc4, 0xd3, 0x81, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0e, 0xc5, 0x50, 0x04, 0x25, 0x51, 0xe0, 0x01, 0x65, 0x50, 0x1e, 0x54,
0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04, 0xa0, 0x08, 0x0a, 0x84, 0xf2, 0x0c,
0x00, 0xed, 0x19, 0x00, 0xea, 0x33, 0x00, 0xe4, 0xc7, 0x72, 0x18, 0x02,
0x00, 0x00, 0xe0, 0x79, 0x00, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98,
0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xc0, 0xcd, 0x4d, 0x10, 0x88,
0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x21, 0xab, 0x08, 0x4c, 0x10, 0x08,
0x65, 0x82, 0x40, 0x2c, 0x1b, 0x04, 0xc2, 0xd9, 0x90, 0x10, 0x0b, 0x43,
0x10, 0x43, 0x43, 0x3c, 0x1b, 0x02, 0x68, 0x82, 0xb0, 0x59, 0x13, 0x04,
0x82, 0xd9, 0x80, 0x10, 0x12, 0x43, 0x0c, 0xc3, 0x04, 0x6c, 0x08, 0xa8,
0x09, 0x42, 0x77, 0x6d, 0x40, 0x08, 0x8b, 0x21, 0x88, 0x81, 0x00, 0x36,
0x04, 0xd7, 0x06, 0x22, 0x02, 0x2a, 0x6c, 0x82, 0xe0, 0x61, 0x1b, 0x02,
0x6d, 0x82, 0x20, 0x00, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0xb8, 0x4c, 0x59,
0x7d, 0x41, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x4d, 0x10, 0x8a,
0x67, 0x82, 0x50, 0x40, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x44, 0x13, 0x84,
0x42, 0xda, 0xb0, 0x10, 0xde, 0x07, 0x06, 0x61, 0x20, 0x06, 0x83, 0x18,
0x10, 0x63, 0x00, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22,
0x9a, 0x20, 0x14, 0xd3, 0x04, 0x81, 0x68, 0x36, 0x08, 0x67, 0x70, 0x06,
0x1b, 0x96, 0xa1, 0x0c, 0xbe, 0x31, 0x08, 0x03, 0x33, 0x18, 0xcc, 0x60,
0x18, 0x03, 0x34, 0x60, 0x31, 0xf4, 0xc4, 0xf4, 0x24, 0x35, 0x41, 0x20,
0x9c, 0x0d, 0xc2, 0x19, 0xac, 0xc1, 0x86, 0xa5, 0x51, 0x83, 0x6f, 0x0c,
0xc2, 0xc0, 0x0c, 0x06, 0x31, 0x68, 0xc6, 0x80, 0x0d, 0x36, 0x0c, 0x64,
0x90, 0x06, 0x6d, 0xc0, 0x64, 0xca, 0xea, 0x8b, 0x2a, 0x4c, 0xee, 0xac,
0x8c, 0x6e, 0x82, 0x50, 0x50, 0x1b, 0x16, 0xe2, 0x0d, 0x3e, 0x38, 0x08,
0x83, 0x31, 0x18, 0xc4, 0x80, 0x18, 0x03, 0x36, 0xd8, 0x10, 0xc4, 0xc1,
0x86, 0xc1, 0x0d, 0xe4, 0x00, 0xd8, 0x50, 0x70, 0xdd, 0x1c, 0x64, 0x40,
0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29,
0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd,
0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b,
0x93, 0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8,
0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32,
0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29,
0x01, 0x56, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c,
0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0xa0, 0xd5, 0x21, 0xc3, 0x73, 0x29,
0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12,
0xcc, 0x01, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19,
0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06,
0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f,
0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d,
0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d,
0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00,
0x61, 0x20, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c,
0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x24, 0x47, 0x00, 0x88,
0xcc, 0x00, 0x14, 0x42, 0x29, 0x94, 0x5c, 0xe1, 0x95, 0x1d, 0x95, 0x12,
0xa0, 0x31, 0x03, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x30, 0x75,
0x05, 0xb4, 0x6d, 0xc9, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x4c, 0x9e,
0x31, 0x71, 0x9c, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xd3, 0x77,
0x44, 0x9d, 0xb7, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x41, 0x06,
0xca, 0xe6, 0x4d, 0xcb, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x65,
0xb0, 0x70, 0x9f, 0xc1, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x61,
0x06, 0x4c, 0x07, 0x06, 0x54, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06,
0xc6, 0x19, 0x34, 0x5e, 0x18, 0x60, 0xce, 0x88, 0x41, 0x02, 0x80, 0x20,
0x18, 0x18, 0x68, 0xe0, 0x8c, 0x81, 0x18, 0x5c, 0xcf, 0x88, 0x41, 0x02,
0x80, 0x20, 0x18, 0x18, 0x69, 0xf0, 0x90, 0xc1, 0x18, 0x28, 0xd0, 0x88,
0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0x68, 0xd0, 0x24, 0x88, 0x10, 0x28,
0x0a, 0x19, 0x90, 0x41, 0xa4, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10,
0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08,
0x82, 0x01, 0xc4, 0x06, 0x11, 0x93, 0x06, 0xa3, 0x09, 0xc1, 0x60, 0x46,
0x23, 0x1f, 0x0b, 0x04, 0xf9, 0xd8, 0xe1, 0xc8, 0xc7, 0x02, 0x42, 0x3e,
0x86, 0x3c, 0xf2, 0xb1, 0xc0, 0x90, 0x8f, 0x25, 0x90, 0x7c, 0x46, 0x0c,
0x12, 0x00, 0x04, 0xc1, 0x00, 0xb9, 0x83, 0x4e, 0x0e, 0xe4, 0xe0, 0x0c,
0x8c, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xee, 0xa0, 0x93, 0x03,
0x39, 0xc8, 0x88, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xee, 0xa0,
0x93, 0x03, 0x39, 0x30, 0x03, 0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c,
0x90, 0x3b, 0xe8, 0xe4, 0x40, 0x0e, 0xd2, 0x20, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};

View File

@@ -0,0 +1,8 @@
#include "D3D12_PixelShader_Common.hlsli"
[RootSignature(TextureRS)]
float4 main(PixelShaderInput input) : SV_TARGET
{
return GetOutputColor(texture0.Sample(sampler0, input.tex)) * input.color;
}

View File

@@ -0,0 +1,34 @@
#if 0
Disassembly failed
#endif
const unsigned char g_AdvancedRS[] = {
0x44, 0x58, 0x42, 0x43, 0x7e, 0x10, 0xf2, 0x34, 0x1f, 0x5f, 0x2b, 0x22,
0xbb, 0xe0, 0xa0, 0x5c, 0x42, 0x31, 0x4c, 0x01, 0x01, 0x00, 0x00, 0x00,
0x50, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0x24, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x24, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0xec, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
};

View File

@@ -0,0 +1,16 @@
#if 0
Disassembly failed
#endif
const unsigned char g_ColorRS[] = {
0x44, 0x58, 0x42, 0x43, 0x0c, 0xbe, 0x22, 0x40, 0x4f, 0xd2, 0x56, 0x49,
0x31, 0xaa, 0x69, 0x8d, 0x8d, 0xaf, 0x83, 0x2a, 0x01, 0x00, 0x00, 0x00,
0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00
};

View File

@@ -0,0 +1,23 @@
#if 0
Disassembly failed
#endif
const unsigned char g_TextureRS[] = {
0x44, 0x58, 0x42, 0x43, 0xf1, 0x21, 0x00, 0x8f, 0xd4, 0x37, 0xfc, 0xfe,
0x90, 0xa2, 0xbe, 0x02, 0x82, 0xec, 0xc4, 0xf2, 0x01, 0x00, 0x00, 0x00,
0xcc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa0, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
};

View File

@@ -0,0 +1,37 @@
#pragma pack_matrix( row_major )
cbuffer VertexShaderConstants : register(b0)
{
matrix mpv;
};
#define ColorRS \
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
"DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
"DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
"DENY_HULL_SHADER_ROOT_ACCESS )," \
"RootConstants(num32BitConstants=16, b0)," \
"RootConstants(num32BitConstants=28, b1)"\
#define TextureRS \
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
" DENY_HULL_SHADER_ROOT_ACCESS )," \
"RootConstants(num32BitConstants=16, b0),"\
"RootConstants(num32BitConstants=28, b1),"\
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
#define AdvancedRS \
"RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
" DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
" DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
" DENY_HULL_SHADER_ROOT_ACCESS )," \
"RootConstants(num32BitConstants=16, b0),"\
"RootConstants(num32BitConstants=28, b1),"\
"DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
"DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
"DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
"DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )," \
"DescriptorTable ( Sampler(s1), visibility = SHADER_VISIBILITY_PIXEL )"

View File

@@ -0,0 +1,43 @@
#include "D3D12_Shader_Common.hlsli"
struct VertexShaderInput
{
float3 pos : POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
struct VertexShaderOutput
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
float4 color : COLOR0;
};
[RootSignature(ColorRS)]
VertexShaderOutput mainColor(VertexShaderInput input)
{
VertexShaderOutput output;
float4 pos = float4(input.pos, 1.0f);
// Transform the vertex position into projected space.
output.pos = mul(pos, mpv);
// Pass through texture coordinates and color values without transformation
output.tex = input.tex;
output.color = input.color;
return output;
}
[RootSignature(TextureRS)]
VertexShaderOutput mainTexture(VertexShaderInput input)
{
return mainColor(input);
}
[RootSignature(AdvancedRS)]
VertexShaderOutput mainAdvanced(VertexShaderInput input)
{
return mainColor(input);
}

View File

@@ -0,0 +1,592 @@
#if 0
;
; Input signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; POSITION 0 xyz 0 NONE float xyz
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
;
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float xyzw
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
; shader hash: d7bcf20f2a5db21d5ba810d89983d7fd
;
; Pipeline Runtime Information:
;
; Vertex Shader
; OutputPositionPresent=1
;
;
; Input signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; POSITION 0
; TEXCOORD 0
; COLOR 0
;
; Output signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Position 0 noperspective
; TEXCOORD 0 linear
; COLOR 0 linear
;
; Buffer Definitions:
;
; cbuffer VertexShaderConstants
; {
;
; struct hostlayout.VertexShaderConstants
; {
;
; row_major float4x4 mpv; ; Offset: 0
;
; } VertexShaderConstants; ; Offset: 0 Size: 64
;
; }
;
;
; Resource Bindings:
;
; Name Type Format Dim ID HLSL Bind Count
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
; VertexShaderConstants cbuffer NA NA CB0 cb0 1
;
;
; ViewId state:
;
; Number of inputs: 12, outputs: 12
; Outputs dependent on ViewId: { }
; Inputs contributing to computation of Outputs:
; output 0 depends on inputs: { 0, 1, 2 }
; output 1 depends on inputs: { 0, 1, 2 }
; output 2 depends on inputs: { 0, 1, 2 }
; output 3 depends on inputs: { 0, 1, 2 }
; output 4 depends on inputs: { 4 }
; output 5 depends on inputs: { 5 }
; output 8 depends on inputs: { 8 }
; output 9 depends on inputs: { 9 }
; output 10 depends on inputs: { 10 }
; output 11 depends on inputs: { 11 }
;
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%dx.types.Handle = type { i8* }
%dx.types.CBufRet.f32 = type { float, float, float, float }
%hostlayout.VertexShaderConstants = type { [4 x <4 x float>] }
define void @mainAdvanced() {
%1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%6 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%7 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%8 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%9 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%10 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%11 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%12 = extractvalue %dx.types.CBufRet.f32 %11, 0
%13 = extractvalue %dx.types.CBufRet.f32 %11, 1
%14 = extractvalue %dx.types.CBufRet.f32 %11, 2
%15 = extractvalue %dx.types.CBufRet.f32 %11, 3
%16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 1) ; CBufferLoadLegacy(handle,regIndex)
%17 = extractvalue %dx.types.CBufRet.f32 %16, 0
%18 = extractvalue %dx.types.CBufRet.f32 %16, 1
%19 = extractvalue %dx.types.CBufRet.f32 %16, 2
%20 = extractvalue %dx.types.CBufRet.f32 %16, 3
%21 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 2) ; CBufferLoadLegacy(handle,regIndex)
%22 = extractvalue %dx.types.CBufRet.f32 %21, 0
%23 = extractvalue %dx.types.CBufRet.f32 %21, 1
%24 = extractvalue %dx.types.CBufRet.f32 %21, 2
%25 = extractvalue %dx.types.CBufRet.f32 %21, 3
%26 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 3) ; CBufferLoadLegacy(handle,regIndex)
%27 = extractvalue %dx.types.CBufRet.f32 %26, 0
%28 = extractvalue %dx.types.CBufRet.f32 %26, 1
%29 = extractvalue %dx.types.CBufRet.f32 %26, 2
%30 = extractvalue %dx.types.CBufRet.f32 %26, 3
%31 = fmul fast float %12, %8
%32 = call float @dx.op.tertiary.f32(i32 46, float %9, float %17, float %31) ; FMad(a,b,c)
%33 = call float @dx.op.tertiary.f32(i32 46, float %10, float %22, float %32) ; FMad(a,b,c)
%34 = fadd fast float %33, %27
%35 = fmul fast float %13, %8
%36 = call float @dx.op.tertiary.f32(i32 46, float %9, float %18, float %35) ; FMad(a,b,c)
%37 = call float @dx.op.tertiary.f32(i32 46, float %10, float %23, float %36) ; FMad(a,b,c)
%38 = fadd fast float %37, %28
%39 = fmul fast float %14, %8
%40 = call float @dx.op.tertiary.f32(i32 46, float %9, float %19, float %39) ; FMad(a,b,c)
%41 = call float @dx.op.tertiary.f32(i32 46, float %10, float %24, float %40) ; FMad(a,b,c)
%42 = fadd fast float %41, %29
%43 = fmul fast float %15, %8
%44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43) ; FMad(a,b,c)
%45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44) ; FMad(a,b,c)
%46 = fadd fast float %45, %30
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %34) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %38) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %42) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %46) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 1, float %3) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 2, float %4) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 3, float %5) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void
}
; Function Attrs: nounwind readnone
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
; Function Attrs: nounwind
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
; Function Attrs: nounwind readonly
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
; Function Attrs: nounwind readnone
declare float @dx.op.tertiary.f32(i32, float, float, float) #0
; Function Attrs: nounwind readonly
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
attributes #2 = { nounwind readonly }
!llvm.ident = !{!0}
!dx.version = !{!1}
!dx.valver = !{!2}
!dx.shaderModel = !{!3}
!dx.resources = !{!4}
!dx.viewIdState = !{!7}
!dx.entryPoints = !{!8}
!0 = !{!"dxcoob 1.7.2308.16 (52da17e29)"}
!1 = !{i32 1, i32 0}
!2 = !{i32 1, i32 7}
!3 = !{!"vs", i32 6, i32 0}
!4 = !{null, null, !5, null}
!5 = !{!6}
!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 64, null}
!7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
!8 = !{void ()* @mainAdvanced, !"mainAdvanced", !9, !4, null}
!9 = !{!10, !18, null}
!10 = !{!11, !14, !16}
!11 = !{i32 0, !"POSITION", i8 9, i8 0, !12, i8 0, i32 1, i8 3, i32 0, i8 0, !13}
!12 = !{i32 0}
!13 = !{i32 3, i32 7}
!14 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 0, i32 1, i8 2, i32 1, i8 0, !15}
!15 = !{i32 3, i32 3}
!16 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 0, i32 1, i8 4, i32 2, i8 0, !17}
!17 = !{i32 3, i32 15}
!18 = !{!19, !20, !21}
!19 = !{i32 0, !"SV_Position", i8 9, i8 3, !12, i8 4, i32 1, i8 4, i32 0, i8 0, !17}
!20 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 2, i32 1, i8 2, i32 1, i8 0, !15}
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 2, i32 1, i8 4, i32 2, i8 0, !17}
#endif
const unsigned char g_mainAdvanced[] = {
0x44, 0x58, 0x42, 0x43, 0x1f, 0xd8, 0x69, 0x8c, 0xf9, 0x3f, 0xcb, 0x59,
0x93, 0xbb, 0x79, 0x04, 0x43, 0x1d, 0xeb, 0xe3, 0x01, 0x00, 0x00, 0x00,
0x44, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
0x88, 0x02, 0x00, 0x00, 0xb4, 0x03, 0x00, 0x00, 0x38, 0x0a, 0x00, 0x00,
0x54, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30,
0x1c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x53,
0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x43, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x03,
0x03, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0x24, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x24, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0xec, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x53, 0x54, 0x41, 0x54, 0x7c, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
0x9f, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x64, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c,
0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18,
0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19,
0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c,
0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba,
0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x12, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50,
0x04, 0x85, 0x50, 0x06, 0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x25, 0x57,
0x14, 0x54, 0x4a, 0x62, 0x04, 0xa0, 0x0c, 0x8a, 0xa0, 0x10, 0xe8, 0xce,
0x00, 0x10, 0x9e, 0x01, 0xa0, 0x3c, 0x96, 0xc3, 0x30, 0xcf, 0xf3, 0x00,
0x10, 0x18, 0x00, 0x00, 0x88, 0x80, 0x10, 0x08, 0x06, 0x20, 0x28, 0x00,
0x79, 0x18, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8,
0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e,
0x84, 0x98, 0x20, 0x60, 0x19, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc,
0x29, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30,
0x37, 0xba, 0xb9, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88,
0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70,
0x61, 0x1c, 0xda, 0xe0, 0xec, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96,
0x0d, 0xc3, 0x34, 0x0d, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04,
0x81, 0x70, 0x36, 0x20, 0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04,
0x06, 0xdb, 0x30, 0x10, 0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86,
0x81, 0xe0, 0xb8, 0x0d, 0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90,
0x69, 0x1b, 0x02, 0x30, 0x20, 0xd3, 0x16, 0x96, 0xe6, 0x16, 0x44, 0x66,
0x17, 0xe6, 0x36, 0x56, 0x46, 0x46, 0x04, 0xea, 0x69, 0x2a, 0x89, 0x2a,
0xe9, 0xc9, 0x69, 0x82, 0x50, 0x4c, 0x13, 0x84, 0x82, 0xda, 0x10, 0x10,
0x13, 0x84, 0xa2, 0xda, 0x20, 0x54, 0xd6, 0x86, 0x85, 0x18, 0x03, 0x32,
0x28, 0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88, 0x32, 0x40, 0x03, 0x22,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0xc2, 0xda,
0x20, 0x54, 0xd5, 0x86, 0x65, 0x50, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28,
0x83, 0x61, 0x0d, 0x86, 0x32, 0x60, 0x03, 0x16, 0x43, 0x4f, 0x4c, 0x4f,
0x52, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x10, 0xcf, 0x06, 0xa1, 0x82, 0x83,
0x0d, 0x8b, 0xe4, 0x06, 0x64, 0x50, 0x06, 0x66, 0x50, 0x06, 0xc3, 0x1b,
0x48, 0x65, 0x10, 0x07, 0x1b, 0x86, 0x34, 0x68, 0x03, 0x39, 0xe0, 0x32,
0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0x61,
0x21, 0xe8, 0x80, 0x0c, 0xce, 0xc0, 0x0c, 0xde, 0x60, 0x78, 0x03, 0xa2,
0x0c, 0xe2, 0x60, 0xc3, 0x32, 0xa8, 0x01, 0x19, 0x94, 0x81, 0x19, 0xac,
0xc1, 0xb0, 0x06, 0x43, 0x19, 0xb0, 0xc1, 0x86, 0x45, 0x72, 0x03, 0x32,
0x28, 0x03, 0x33, 0x58, 0x83, 0xe1, 0x0d, 0xa4, 0x32, 0x88, 0x83, 0x0d,
0x43, 0x1d, 0xd8, 0xc1, 0x1d, 0x6c, 0x18, 0xe6, 0x00, 0x0f, 0x80, 0x0d,
0xc5, 0x26, 0x06, 0x79, 0xf0, 0x00, 0x34, 0xcc, 0xd8, 0xde, 0xc2, 0xe8,
0xe6, 0x26, 0x08, 0x04, 0xc4, 0x22, 0xcd, 0x6d, 0x8e, 0x6e, 0x6e, 0x82,
0x40, 0x44, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xd8, 0xc8, 0x68, 0xcc, 0xa5,
0x9d, 0x7d, 0xcd, 0xd1, 0x4d, 0x10, 0x08, 0x69, 0x03, 0xb2, 0x07, 0x7c,
0xd0, 0x07, 0x7e, 0xf0, 0x07, 0x17, 0x28, 0x84, 0x42, 0x15, 0x36, 0x36,
0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85,
0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40,
0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12,
0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a,
0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19, 0x32, 0x3c, 0x17, 0xb9,
0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0x81, 0x53, 0x89,
0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0xc8, 0xcd, 0xed, 0x8d, 0x2e,
0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0x90, 0x79, 0x75, 0xc8, 0xf0,
0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca,
0xa6, 0x04, 0x60, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x07, 0x5d, 0xc8,
0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04,
0xa1, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0c, 0x03, 0x20, 0x8d, 0x36, 0x54,
0x40, 0x23, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xd7, 0xbc, 0xf2, 0x0f, 0x2a, 0x5d, 0xb2, 0x1d, 0x5b, 0xa8, 0x10, 0xd8,
0x99, 0x83, 0xd7, 0xfd, 0x44, 0x58, 0x49, 0x4c, 0xe8, 0x07, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0xfa, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03,
0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a,
0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99,
0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0e, 0xc5, 0x50, 0x80, 0x01, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24,
0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1,
0x1c, 0x86, 0x79, 0x9e, 0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84,
0x40, 0x30, 0x00, 0x41, 0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x64, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06,
0x61, 0x30, 0x28, 0xd8, 0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24,
0xc4, 0x04, 0x01, 0x9b, 0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c,
0x0c, 0x41, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00,
0x13, 0x84, 0x8c, 0xda, 0x10, 0x44, 0x13, 0x04, 0x01, 0x20, 0xd3, 0x16,
0x96, 0xe6, 0x16, 0x44, 0x66, 0x17, 0xe6, 0x36, 0x56, 0x46, 0x46, 0x04,
0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x38, 0x13,
0x84, 0xe2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x10, 0xcb,
0x06, 0x41, 0x33, 0x36, 0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4,
0xb5, 0x11, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20,
0x14, 0xd1, 0x06, 0x41, 0xd3, 0x36, 0x2c, 0x43, 0x67, 0x5d, 0xd8, 0x35,
0x78, 0xc3, 0xf5, 0x4d, 0x10, 0x08, 0x86, 0xc5, 0xd0, 0x13, 0xd3, 0x93,
0xd4, 0x04, 0xa1, 0x90, 0x26, 0x08, 0x44, 0xb3, 0x41, 0xd0, 0xc8, 0x60,
0xc3, 0x12, 0x06, 0x62, 0x60, 0x5d, 0xd8, 0x35, 0x8c, 0x41, 0x18, 0x5c,
0x65, 0xb0, 0x61, 0xe0, 0xc0, 0xc0, 0x0c, 0xb8, 0x4c, 0x59, 0x7d, 0x41,
0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x6d, 0x58, 0x08, 0x34, 0xb0,
0x32, 0x6c, 0x0c, 0x86, 0x31, 0x20, 0xae, 0x32, 0xd8, 0xb0, 0x0c, 0x9d,
0x75, 0x61, 0xde, 0xe0, 0x0d, 0xd7, 0xb7, 0x61, 0x09, 0x03, 0x31, 0xb0,
0x2e, 0xcc, 0x1b, 0xc6, 0x20, 0x0c, 0xae, 0x32, 0xd8, 0x30, 0xa4, 0x81,
0x1a, 0xac, 0xc1, 0x86, 0xe1, 0x0c, 0xd8, 0x00, 0xd8, 0x50, 0x4c, 0x54,
0x1b, 0x40, 0x40, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32,
0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e,
0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b,
0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6,
0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04,
0x49, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1,
0xb2, 0xb9, 0x29, 0xc1, 0x53, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec,
0x2e, 0x89, 0x6c, 0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x10, 0xd5, 0x21,
0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3,
0x9b, 0x9b, 0x12, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87,
0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87,
0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40,
0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x1a, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09,
0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f,
0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0c, 0x03,
0x20, 0x8d, 0x36, 0x54, 0x40, 0x23, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00,
0x61, 0x20, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c,
0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x44, 0x4a, 0xa1, 0x10,
0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01,
0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x61,
0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x1d,
0x22, 0x5d, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x97,
0x4c, 0x18, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xf1, 0x29,
0x54, 0xf6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x80, 0xc1,
0x52, 0x69, 0x91, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x18,
0x30, 0xdc, 0x36, 0x2d, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x88,
0x41, 0xd3, 0x71, 0x08, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6,
0x18, 0x38, 0x5d, 0x57, 0x35, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60,
0x90, 0xc1, 0xe3, 0x79, 0x8a, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06,
0x46, 0x19, 0x40, 0xdf, 0x57, 0x3d, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60,
0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08,
0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80,
0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30, 0x9a, 0x10, 0x00, 0xa3,
0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70,
0x00, 0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54, 0x19, 0x8c, 0x26, 0x04,
0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x8c,
0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07, 0x5d, 0xb6, 0x06, 0xa3,
0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40,
0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x07,
0x0f, 0xc8, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78,
0xf2, 0xa0, 0x0c, 0xae, 0x25, 0xb0, 0xe0, 0x80, 0x8e, 0x59, 0x9b, 0x7c,
0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1, 0x03, 0x34, 0xd8, 0xa4,
0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x3e, 0x48, 0x83, 0xcd,
0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f, 0x11, 0x03, 0x04, 0x00,
0x41, 0x30, 0x78, 0x40, 0x81, 0x0d, 0xbe, 0x2a, 0x18, 0x31, 0x40, 0x00,
0x10, 0x04, 0x83, 0x27, 0x14, 0xda, 0xe0, 0x8b, 0x02, 0x0b, 0x1a, 0xe8,
0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87,
0x14, 0xe0, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c,
0x9e, 0x52, 0x88, 0x83, 0x31, 0xa0, 0x02, 0x0b, 0x20, 0xe8, 0x8c, 0x18,
0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xc0,
0x07, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07,
0xa4, 0x40, 0x0a, 0x70, 0x90, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xa0, 0x07, 0xc5, 0x88, 0x41, 0x02,
0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0xa4, 0x40, 0x0a, 0x7b, 0x10,
0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x50, 0x0a,
0xa4, 0xc0, 0x07, 0x69, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48,
0x2a, 0xd8, 0x41, 0x29, 0x90, 0x02, 0x1c, 0xa0, 0xc1, 0x88, 0x41, 0x02,
0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0x7f, 0x40, 0x0a, 0x7c, 0xd0,
0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xa4, 0x82, 0x1d, 0xfc,
0x01, 0x29, 0xc0, 0x01, 0x1b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
0x92, 0x0a, 0x76, 0xf0, 0x07, 0xa4, 0xa0, 0x07, 0x6b, 0x30, 0x62, 0x90,
0x00, 0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0xc1, 0x1f, 0x90, 0xc2, 0x1e,
0xa8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
};

View File

@@ -0,0 +1,572 @@
#if 0
;
; Input signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; POSITION 0 xyz 0 NONE float xyz
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
;
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float xyzw
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
; shader hash: 6855ad6b0e7d04a14cff9d3ae06dc84d
;
; Pipeline Runtime Information:
;
; Vertex Shader
; OutputPositionPresent=1
;
;
; Input signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; POSITION 0
; TEXCOORD 0
; COLOR 0
;
; Output signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Position 0 noperspective
; TEXCOORD 0 linear
; COLOR 0 linear
;
; Buffer Definitions:
;
; cbuffer VertexShaderConstants
; {
;
; struct hostlayout.VertexShaderConstants
; {
;
; row_major float4x4 mpv; ; Offset: 0
;
; } VertexShaderConstants; ; Offset: 0 Size: 64
;
; }
;
;
; Resource Bindings:
;
; Name Type Format Dim ID HLSL Bind Count
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
; VertexShaderConstants cbuffer NA NA CB0 cb0 1
;
;
; ViewId state:
;
; Number of inputs: 12, outputs: 12
; Outputs dependent on ViewId: { }
; Inputs contributing to computation of Outputs:
; output 0 depends on inputs: { 0, 1, 2 }
; output 1 depends on inputs: { 0, 1, 2 }
; output 2 depends on inputs: { 0, 1, 2 }
; output 3 depends on inputs: { 0, 1, 2 }
; output 4 depends on inputs: { 4 }
; output 5 depends on inputs: { 5 }
; output 8 depends on inputs: { 8 }
; output 9 depends on inputs: { 9 }
; output 10 depends on inputs: { 10 }
; output 11 depends on inputs: { 11 }
;
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%dx.types.Handle = type { i8* }
%dx.types.CBufRet.f32 = type { float, float, float, float }
%hostlayout.VertexShaderConstants = type { [4 x <4 x float>] }
define void @mainColor() {
%1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%6 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%7 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%8 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%9 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%10 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%11 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%12 = extractvalue %dx.types.CBufRet.f32 %11, 0
%13 = extractvalue %dx.types.CBufRet.f32 %11, 1
%14 = extractvalue %dx.types.CBufRet.f32 %11, 2
%15 = extractvalue %dx.types.CBufRet.f32 %11, 3
%16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 1) ; CBufferLoadLegacy(handle,regIndex)
%17 = extractvalue %dx.types.CBufRet.f32 %16, 0
%18 = extractvalue %dx.types.CBufRet.f32 %16, 1
%19 = extractvalue %dx.types.CBufRet.f32 %16, 2
%20 = extractvalue %dx.types.CBufRet.f32 %16, 3
%21 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 2) ; CBufferLoadLegacy(handle,regIndex)
%22 = extractvalue %dx.types.CBufRet.f32 %21, 0
%23 = extractvalue %dx.types.CBufRet.f32 %21, 1
%24 = extractvalue %dx.types.CBufRet.f32 %21, 2
%25 = extractvalue %dx.types.CBufRet.f32 %21, 3
%26 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 3) ; CBufferLoadLegacy(handle,regIndex)
%27 = extractvalue %dx.types.CBufRet.f32 %26, 0
%28 = extractvalue %dx.types.CBufRet.f32 %26, 1
%29 = extractvalue %dx.types.CBufRet.f32 %26, 2
%30 = extractvalue %dx.types.CBufRet.f32 %26, 3
%31 = fmul fast float %12, %8
%32 = call float @dx.op.tertiary.f32(i32 46, float %9, float %17, float %31) ; FMad(a,b,c)
%33 = call float @dx.op.tertiary.f32(i32 46, float %10, float %22, float %32) ; FMad(a,b,c)
%34 = fadd fast float %33, %27
%35 = fmul fast float %13, %8
%36 = call float @dx.op.tertiary.f32(i32 46, float %9, float %18, float %35) ; FMad(a,b,c)
%37 = call float @dx.op.tertiary.f32(i32 46, float %10, float %23, float %36) ; FMad(a,b,c)
%38 = fadd fast float %37, %28
%39 = fmul fast float %14, %8
%40 = call float @dx.op.tertiary.f32(i32 46, float %9, float %19, float %39) ; FMad(a,b,c)
%41 = call float @dx.op.tertiary.f32(i32 46, float %10, float %24, float %40) ; FMad(a,b,c)
%42 = fadd fast float %41, %29
%43 = fmul fast float %15, %8
%44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43) ; FMad(a,b,c)
%45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44) ; FMad(a,b,c)
%46 = fadd fast float %45, %30
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %34) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %38) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %42) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %46) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 1, float %3) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 2, float %4) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 3, float %5) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void
}
; Function Attrs: nounwind readnone
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
; Function Attrs: nounwind
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
; Function Attrs: nounwind readonly
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
; Function Attrs: nounwind readnone
declare float @dx.op.tertiary.f32(i32, float, float, float) #0
; Function Attrs: nounwind readonly
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
attributes #2 = { nounwind readonly }
!llvm.ident = !{!0}
!dx.version = !{!1}
!dx.valver = !{!2}
!dx.shaderModel = !{!3}
!dx.resources = !{!4}
!dx.viewIdState = !{!7}
!dx.entryPoints = !{!8}
!0 = !{!"dxcoob 1.7.2308.16 (52da17e29)"}
!1 = !{i32 1, i32 0}
!2 = !{i32 1, i32 7}
!3 = !{!"vs", i32 6, i32 0}
!4 = !{null, null, !5, null}
!5 = !{!6}
!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 64, null}
!7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
!8 = !{void ()* @mainColor, !"mainColor", !9, !4, null}
!9 = !{!10, !18, null}
!10 = !{!11, !14, !16}
!11 = !{i32 0, !"POSITION", i8 9, i8 0, !12, i8 0, i32 1, i8 3, i32 0, i8 0, !13}
!12 = !{i32 0}
!13 = !{i32 3, i32 7}
!14 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 0, i32 1, i8 2, i32 1, i8 0, !15}
!15 = !{i32 3, i32 3}
!16 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 0, i32 1, i8 4, i32 2, i8 0, !17}
!17 = !{i32 3, i32 15}
!18 = !{!19, !20, !21}
!19 = !{i32 0, !"SV_Position", i8 9, i8 3, !12, i8 4, i32 1, i8 4, i32 0, i8 0, !17}
!20 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 2, i32 1, i8 2, i32 1, i8 0, !15}
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 2, i32 1, i8 4, i32 2, i8 0, !17}
#endif
const unsigned char g_mainColor[] = {
0x44, 0x58, 0x42, 0x43, 0x6f, 0x4d, 0x80, 0xc9, 0x37, 0xa3, 0xc4, 0xa6,
0x8c, 0x16, 0xdc, 0xdb, 0x15, 0x5f, 0x4e, 0x30, 0x01, 0x00, 0x00, 0x00,
0x58, 0x11, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
0x88, 0x02, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x54, 0x09, 0x00, 0x00,
0x70, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30,
0x1c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x53,
0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x43, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x03,
0x03, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54,
0x74, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x9d, 0x01, 0x00, 0x00,
0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x5c, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
0x94, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88,
0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42,
0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c,
0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07,
0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20,
0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00,
0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42,
0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00,
0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04,
0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14,
0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00,
0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29,
0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1,
0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95,
0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e,
0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab,
0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11,
0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10,
0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a,
0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7,
0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00,
0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x16, 0x08, 0x00, 0x12, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50, 0x04, 0x85, 0x50, 0x06,
0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x25, 0x57, 0x14, 0x54, 0x4a, 0x62,
0x04, 0xa0, 0x0c, 0x8a, 0xa0, 0x10, 0xe8, 0xce, 0x00, 0x10, 0x9e, 0x01,
0xa0, 0x3c, 0x96, 0xc3, 0x30, 0xcf, 0xf3, 0x00, 0x10, 0x18, 0x00, 0x00,
0x88, 0x80, 0x10, 0x08, 0x06, 0x20, 0x28, 0x00, 0x79, 0x18, 0x00, 0x00,
0x91, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x60,
0x19, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc, 0x29, 0xb4, 0x30, 0xb2,
0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9, 0x09,
0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88, 0x81, 0x01, 0x36, 0x04,
0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70, 0x61, 0x1c, 0xda, 0xe0,
0xec, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d, 0xc3, 0x34, 0x0d,
0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81, 0x70, 0x36, 0x20,
0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04, 0x06, 0xdb, 0x30, 0x10,
0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86, 0x81, 0xe0, 0xb8, 0x0d,
0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90, 0x69, 0x1b, 0x02, 0x30,
0x60, 0xd2, 0x16, 0x96, 0xe6, 0x36, 0xf4, 0xc6, 0xf6, 0x26, 0x47, 0x04,
0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x4c, 0x13,
0x84, 0x82, 0xda, 0x10, 0x10, 0x13, 0x84, 0xa2, 0xda, 0x20, 0x54, 0xd6,
0x86, 0x85, 0x18, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c,
0x88, 0x32, 0x40, 0x03, 0x22, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x13, 0x84, 0xc2, 0xda, 0x20, 0x54, 0xd5, 0x86, 0x65, 0x50, 0x03,
0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0x61, 0x0d, 0x86, 0x32, 0x60, 0x03,
0x16, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x10,
0xcf, 0x06, 0xa1, 0x82, 0x83, 0x0d, 0x8b, 0xe4, 0x06, 0x64, 0x50, 0x06,
0x66, 0x50, 0x06, 0xc3, 0x1b, 0x48, 0x65, 0x10, 0x07, 0x1b, 0x86, 0x34,
0x68, 0x03, 0x39, 0xe0, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46,
0x97, 0xf6, 0xe6, 0xb6, 0x61, 0x21, 0xe8, 0x80, 0x0c, 0xce, 0xc0, 0x0c,
0xde, 0x60, 0x78, 0x03, 0xa2, 0x0c, 0xe2, 0x60, 0xc3, 0x32, 0xa8, 0x01,
0x19, 0x94, 0x81, 0x19, 0xac, 0xc1, 0xb0, 0x06, 0x43, 0x19, 0xb0, 0xc1,
0x86, 0x45, 0x72, 0x03, 0x32, 0x28, 0x03, 0x33, 0x58, 0x83, 0xe1, 0x0d,
0xa4, 0x32, 0x88, 0x83, 0x0d, 0x43, 0x1d, 0xd8, 0xc1, 0x1d, 0x6c, 0x18,
0xe6, 0x00, 0x0f, 0x80, 0x0d, 0xc5, 0x26, 0x06, 0x79, 0xf0, 0x00, 0x34,
0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0xe6, 0x26, 0x08, 0x04, 0xc4, 0x22, 0xcd,
0x6d, 0x8e, 0x6e, 0x6e, 0x82, 0x40, 0x44, 0x34, 0xe6, 0xd2, 0xce, 0xbe,
0xd8, 0xc8, 0x68, 0xcc, 0xa5, 0x9d, 0x7d, 0xcd, 0xd1, 0x4d, 0x10, 0x08,
0x69, 0x03, 0xb2, 0x07, 0x7c, 0xd0, 0x07, 0x7e, 0xf0, 0x07, 0x17, 0x28,
0x84, 0x42, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37,
0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e,
0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63,
0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0,
0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48,
0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2,
0xb9, 0x29, 0x81, 0x53, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c,
0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a,
0x90, 0x79, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8,
0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x60, 0x50, 0x87, 0x0c, 0xcf,
0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e,
0x4a, 0x90, 0x07, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8,
0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xa1, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87,
0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87,
0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40,
0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09,
0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f,
0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x09, 0x03,
0x20, 0x0d, 0xe7, 0x2c, 0x4e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x68, 0x55, 0xad, 0x6b, 0x0e, 0x7d, 0x04, 0xa1, 0x4c, 0xff, 0x9d, 0x3a,
0xe0, 0x6d, 0xc8, 0x4d, 0x44, 0x58, 0x49, 0x4c, 0xe0, 0x07, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03,
0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a,
0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99,
0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0e, 0xc5, 0x50, 0x80, 0x01, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24,
0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1,
0x1c, 0x86, 0x79, 0x9e, 0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84,
0x40, 0x30, 0x00, 0x41, 0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x63, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06,
0x61, 0x30, 0x28, 0xd8, 0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24,
0xc4, 0x04, 0x01, 0x9b, 0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c,
0x0c, 0x41, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00,
0x13, 0x84, 0x8c, 0xda, 0x10, 0x44, 0x13, 0x04, 0x01, 0x60, 0xd2, 0x16,
0x96, 0xe6, 0x36, 0xf4, 0xc6, 0xf6, 0x26, 0x47, 0x04, 0xea, 0x69, 0x2a,
0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9,
0x10, 0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x10, 0xcb, 0x06, 0x41, 0x33,
0x36, 0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4, 0xb5, 0x11, 0xa1,
0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0xd1, 0x06,
0x41, 0xd3, 0x36, 0x2c, 0x43, 0x67, 0x5d, 0xd8, 0x35, 0x78, 0xc3, 0xf5,
0x4d, 0x10, 0x08, 0x86, 0xc5, 0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0xa1,
0x90, 0x26, 0x08, 0x44, 0xb3, 0x41, 0xd0, 0xc8, 0x60, 0xc3, 0x12, 0x06,
0x62, 0x60, 0x5d, 0xd8, 0x35, 0x8c, 0x41, 0x18, 0x5c, 0x65, 0xb0, 0x61,
0xe0, 0xc0, 0xc0, 0x0c, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd, 0xcd, 0xa5,
0xd1, 0xa5, 0xbd, 0xb9, 0x6d, 0x58, 0x08, 0x34, 0xb0, 0x32, 0x6c, 0x0c,
0x86, 0x31, 0x20, 0xae, 0x32, 0xd8, 0xb0, 0x0c, 0x9d, 0x75, 0x61, 0xde,
0xe0, 0x0d, 0xd7, 0xb7, 0x61, 0x09, 0x03, 0x31, 0xb0, 0x2e, 0xcc, 0x1b,
0xc6, 0x20, 0x0c, 0xae, 0x32, 0xd8, 0x30, 0xa4, 0x81, 0x1a, 0xac, 0xc1,
0x86, 0xe1, 0x0c, 0xd8, 0x00, 0xd8, 0x50, 0x4c, 0x54, 0x1b, 0x40, 0x40,
0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29,
0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd,
0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b,
0x93, 0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8,
0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32,
0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29,
0xc1, 0x53, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c,
0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x10, 0xd5, 0x21, 0xc3, 0x73, 0x29,
0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12,
0xb4, 0x01, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x09, 0x03, 0x20, 0x0d, 0xe7, 0x2c,
0x4e, 0x04, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x44, 0x4a, 0xa1, 0x10, 0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a,
0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80,
0x20, 0x18, 0x18, 0x1d, 0x22, 0x5d, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20,
0x08, 0x06, 0x86, 0x97, 0x4c, 0x18, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08,
0x82, 0x81, 0xf1, 0x29, 0x54, 0xf6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x60, 0x80, 0xc1, 0x52, 0x69, 0x91, 0x32, 0x62, 0x90, 0x00, 0x20,
0x08, 0x06, 0x46, 0x18, 0x30, 0xdc, 0x36, 0x2d, 0x23, 0x06, 0x09, 0x00,
0x82, 0x60, 0x60, 0x88, 0x41, 0xd3, 0x71, 0x08, 0x33, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0xc6, 0x18, 0x38, 0x5d, 0x57, 0x35, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x60, 0x90, 0xc1, 0xe3, 0x79, 0x8a, 0x33, 0x62, 0x90,
0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x40, 0xdf, 0x57, 0x3d, 0x23, 0x06,
0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42,
0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30,
0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09,
0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54,
0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2,
0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07,
0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00,
0x10, 0x04, 0x83, 0x07, 0x0f, 0xc8, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04,
0x00, 0x41, 0x30, 0x78, 0xf2, 0xa0, 0x0c, 0xae, 0x25, 0xb0, 0xe0, 0x80,
0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1,
0x03, 0x34, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
0x3e, 0x48, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f,
0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0x81, 0x0d, 0xbe, 0x2a,
0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xda, 0xe0, 0x8b,
0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00,
0x10, 0x04, 0x83, 0x87, 0x14, 0xe0, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00,
0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0x88, 0x83, 0x31, 0xa0, 0x02, 0x0b,
0x20, 0xe8, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76,
0x40, 0x0a, 0xa4, 0xc0, 0x07, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0x20, 0xa9, 0x60, 0x07, 0xa4, 0x40, 0x0a, 0x70, 0x90, 0x8c, 0x18, 0x24,
0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xa0, 0x07,
0xc5, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0xa4,
0x40, 0x0a, 0x7b, 0x10, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92,
0x0a, 0x76, 0x50, 0x0a, 0xa4, 0xc0, 0x07, 0x69, 0x30, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0x41, 0x29, 0x90, 0x02, 0x1c, 0xa0,
0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0x7f,
0x40, 0x0a, 0x7c, 0xd0, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
0xa4, 0x82, 0x1d, 0xfc, 0x01, 0x29, 0xc0, 0x01, 0x1b, 0x8c, 0x18, 0x24,
0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0xf0, 0x07, 0xa4, 0xa0, 0x07,
0x6b, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0xc1,
0x1f, 0x90, 0xc2, 0x1e, 0xa8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
};

View File

@@ -0,0 +1,580 @@
#if 0
;
; Input signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; POSITION 0 xyz 0 NONE float xyz
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
;
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float xyzw
; TEXCOORD 0 xy 1 NONE float xy
; COLOR 0 xyzw 2 NONE float xyzw
;
; shader hash: c6001978fd780410844d97ce5efb7d9e
;
; Pipeline Runtime Information:
;
; Vertex Shader
; OutputPositionPresent=1
;
;
; Input signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; POSITION 0
; TEXCOORD 0
; COLOR 0
;
; Output signature:
;
; Name Index InterpMode DynIdx
; -------------------- ----- ---------------------- ------
; SV_Position 0 noperspective
; TEXCOORD 0 linear
; COLOR 0 linear
;
; Buffer Definitions:
;
; cbuffer VertexShaderConstants
; {
;
; struct hostlayout.VertexShaderConstants
; {
;
; row_major float4x4 mpv; ; Offset: 0
;
; } VertexShaderConstants; ; Offset: 0 Size: 64
;
; }
;
;
; Resource Bindings:
;
; Name Type Format Dim ID HLSL Bind Count
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
; VertexShaderConstants cbuffer NA NA CB0 cb0 1
;
;
; ViewId state:
;
; Number of inputs: 12, outputs: 12
; Outputs dependent on ViewId: { }
; Inputs contributing to computation of Outputs:
; output 0 depends on inputs: { 0, 1, 2 }
; output 1 depends on inputs: { 0, 1, 2 }
; output 2 depends on inputs: { 0, 1, 2 }
; output 3 depends on inputs: { 0, 1, 2 }
; output 4 depends on inputs: { 4 }
; output 5 depends on inputs: { 5 }
; output 8 depends on inputs: { 8 }
; output 9 depends on inputs: { 9 }
; output 10 depends on inputs: { 10 }
; output 11 depends on inputs: { 11 }
;
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%dx.types.Handle = type { i8* }
%dx.types.CBufRet.f32 = type { float, float, float, float }
%hostlayout.VertexShaderConstants = type { [4 x <4 x float>] }
define void @mainTexture() {
%1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
%2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%6 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%7 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%8 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%9 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%10 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%11 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%12 = extractvalue %dx.types.CBufRet.f32 %11, 0
%13 = extractvalue %dx.types.CBufRet.f32 %11, 1
%14 = extractvalue %dx.types.CBufRet.f32 %11, 2
%15 = extractvalue %dx.types.CBufRet.f32 %11, 3
%16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 1) ; CBufferLoadLegacy(handle,regIndex)
%17 = extractvalue %dx.types.CBufRet.f32 %16, 0
%18 = extractvalue %dx.types.CBufRet.f32 %16, 1
%19 = extractvalue %dx.types.CBufRet.f32 %16, 2
%20 = extractvalue %dx.types.CBufRet.f32 %16, 3
%21 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 2) ; CBufferLoadLegacy(handle,regIndex)
%22 = extractvalue %dx.types.CBufRet.f32 %21, 0
%23 = extractvalue %dx.types.CBufRet.f32 %21, 1
%24 = extractvalue %dx.types.CBufRet.f32 %21, 2
%25 = extractvalue %dx.types.CBufRet.f32 %21, 3
%26 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 3) ; CBufferLoadLegacy(handle,regIndex)
%27 = extractvalue %dx.types.CBufRet.f32 %26, 0
%28 = extractvalue %dx.types.CBufRet.f32 %26, 1
%29 = extractvalue %dx.types.CBufRet.f32 %26, 2
%30 = extractvalue %dx.types.CBufRet.f32 %26, 3
%31 = fmul fast float %12, %8
%32 = call float @dx.op.tertiary.f32(i32 46, float %9, float %17, float %31) ; FMad(a,b,c)
%33 = call float @dx.op.tertiary.f32(i32 46, float %10, float %22, float %32) ; FMad(a,b,c)
%34 = fadd fast float %33, %27
%35 = fmul fast float %13, %8
%36 = call float @dx.op.tertiary.f32(i32 46, float %9, float %18, float %35) ; FMad(a,b,c)
%37 = call float @dx.op.tertiary.f32(i32 46, float %10, float %23, float %36) ; FMad(a,b,c)
%38 = fadd fast float %37, %28
%39 = fmul fast float %14, %8
%40 = call float @dx.op.tertiary.f32(i32 46, float %9, float %19, float %39) ; FMad(a,b,c)
%41 = call float @dx.op.tertiary.f32(i32 46, float %10, float %24, float %40) ; FMad(a,b,c)
%42 = fadd fast float %41, %29
%43 = fmul fast float %15, %8
%44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43) ; FMad(a,b,c)
%45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44) ; FMad(a,b,c)
%46 = fadd fast float %45, %30
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %34) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %38) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %42) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %46) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 1, float %3) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 2, float %4) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 3, float %5) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void
}
; Function Attrs: nounwind readnone
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
; Function Attrs: nounwind
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
; Function Attrs: nounwind readonly
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
; Function Attrs: nounwind readnone
declare float @dx.op.tertiary.f32(i32, float, float, float) #0
; Function Attrs: nounwind readonly
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
attributes #2 = { nounwind readonly }
!llvm.ident = !{!0}
!dx.version = !{!1}
!dx.valver = !{!2}
!dx.shaderModel = !{!3}
!dx.resources = !{!4}
!dx.viewIdState = !{!7}
!dx.entryPoints = !{!8}
!0 = !{!"dxcoob 1.7.2308.16 (52da17e29)"}
!1 = !{i32 1, i32 0}
!2 = !{i32 1, i32 7}
!3 = !{!"vs", i32 6, i32 0}
!4 = !{null, null, !5, null}
!5 = !{!6}
!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 64, null}
!7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
!8 = !{void ()* @mainTexture, !"mainTexture", !9, !4, null}
!9 = !{!10, !18, null}
!10 = !{!11, !14, !16}
!11 = !{i32 0, !"POSITION", i8 9, i8 0, !12, i8 0, i32 1, i8 3, i32 0, i8 0, !13}
!12 = !{i32 0}
!13 = !{i32 3, i32 7}
!14 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 0, i32 1, i8 2, i32 1, i8 0, !15}
!15 = !{i32 3, i32 3}
!16 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 0, i32 1, i8 4, i32 2, i8 0, !17}
!17 = !{i32 3, i32 15}
!18 = !{!19, !20, !21}
!19 = !{i32 0, !"SV_Position", i8 9, i8 3, !12, i8 4, i32 1, i8 4, i32 0, i8 0, !17}
!20 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 2, i32 1, i8 2, i32 1, i8 0, !15}
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 2, i32 1, i8 4, i32 2, i8 0, !17}
#endif
const unsigned char g_mainTexture[] = {
0x44, 0x58, 0x42, 0x43, 0x9d, 0xf0, 0x72, 0x12, 0x6c, 0x2b, 0x04, 0x9d,
0x85, 0xd2, 0xd2, 0x4a, 0x39, 0x19, 0x03, 0x4d, 0x01, 0x00, 0x00, 0x00,
0xb8, 0x11, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
0x88, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0xb0, 0x09, 0x00, 0x00,
0xcc, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30,
0x1c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x53,
0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x43, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x03,
0x03, 0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
0x52, 0x54, 0x53, 0x30, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa0, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x53, 0x54, 0x41, 0x54, 0x78, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
0x9e, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c,
0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18,
0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19,
0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c,
0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba,
0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x12, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50,
0x04, 0x85, 0x50, 0x06, 0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x25, 0x57,
0x14, 0x54, 0x4a, 0x62, 0x04, 0xa0, 0x0c, 0x8a, 0xa0, 0x10, 0xe8, 0xce,
0x00, 0x10, 0x9e, 0x01, 0xa0, 0x3c, 0x96, 0xc3, 0x30, 0xcf, 0xf3, 0x00,
0x10, 0x18, 0x00, 0x00, 0x88, 0x80, 0x10, 0x08, 0x06, 0x20, 0x28, 0x00,
0x79, 0x18, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8,
0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e,
0x84, 0x98, 0x20, 0x60, 0x19, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc,
0x29, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30,
0x37, 0xba, 0xb9, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88,
0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70,
0x61, 0x1c, 0xda, 0xe0, 0xec, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96,
0x0d, 0xc3, 0x34, 0x0d, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04,
0x81, 0x70, 0x36, 0x20, 0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04,
0x06, 0xdb, 0x30, 0x10, 0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86,
0x81, 0xe0, 0xb8, 0x0d, 0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90,
0x69, 0x1b, 0x02, 0x30, 0xe0, 0xd2, 0x16, 0x96, 0xe6, 0x46, 0x55, 0x86,
0x47, 0x57, 0x27, 0x57, 0x46, 0x04, 0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9,
0xc9, 0x69, 0x82, 0x50, 0x4c, 0x13, 0x84, 0x82, 0xda, 0x10, 0x10, 0x13,
0x84, 0xa2, 0xda, 0x20, 0x54, 0xd6, 0x86, 0x85, 0x18, 0x03, 0x32, 0x28,
0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88, 0x32, 0x40, 0x03, 0x22, 0x54,
0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0xc2, 0xda, 0x20,
0x54, 0xd5, 0x86, 0x65, 0x50, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83,
0x61, 0x0d, 0x86, 0x32, 0x60, 0x03, 0x16, 0x43, 0x4f, 0x4c, 0x4f, 0x52,
0x13, 0x84, 0xe2, 0x9a, 0x20, 0x10, 0xcf, 0x06, 0xa1, 0x82, 0x83, 0x0d,
0x8b, 0xe4, 0x06, 0x64, 0x50, 0x06, 0x66, 0x50, 0x06, 0xc3, 0x1b, 0x48,
0x65, 0x10, 0x07, 0x1b, 0x86, 0x34, 0x68, 0x03, 0x39, 0xe0, 0x32, 0x65,
0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0x61, 0x21,
0xe8, 0x80, 0x0c, 0xce, 0xc0, 0x0c, 0xde, 0x60, 0x78, 0x03, 0xa2, 0x0c,
0xe2, 0x60, 0xc3, 0x32, 0xa8, 0x01, 0x19, 0x94, 0x81, 0x19, 0xac, 0xc1,
0xb0, 0x06, 0x43, 0x19, 0xb0, 0xc1, 0x86, 0x45, 0x72, 0x03, 0x32, 0x28,
0x03, 0x33, 0x58, 0x83, 0xe1, 0x0d, 0xa4, 0x32, 0x88, 0x83, 0x0d, 0x43,
0x1d, 0xd8, 0xc1, 0x1d, 0x6c, 0x18, 0xe6, 0x00, 0x0f, 0x80, 0x0d, 0xc5,
0x26, 0x06, 0x79, 0xf0, 0x00, 0x34, 0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0xe6,
0x26, 0x08, 0x04, 0xc4, 0x22, 0xcd, 0x6d, 0x8e, 0x6e, 0x6e, 0x82, 0x40,
0x44, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xd8, 0xc8, 0x68, 0xcc, 0xa5, 0x9d,
0x7d, 0xcd, 0xd1, 0x4d, 0x10, 0x08, 0x69, 0x03, 0xb2, 0x07, 0x7c, 0xd0,
0x07, 0x7e, 0xf0, 0x07, 0x17, 0x28, 0x84, 0x42, 0x15, 0x36, 0x36, 0xbb,
0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c,
0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34,
0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14,
0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde,
0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2,
0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0x81, 0x53, 0x89, 0x0c,
0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c,
0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0x90, 0x79, 0x75, 0xc8, 0xf0, 0x5c,
0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6,
0x04, 0x60, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f,
0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x07, 0x5d, 0xc8, 0xf0,
0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xa1,
0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0b, 0x03, 0x20, 0x4d, 0x4b, 0x5c,
0x13, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x19, 0x78,
0xfd, 0x78, 0x04, 0x10, 0x84, 0x4d, 0x97, 0xce, 0x5e, 0xfb, 0x7d, 0x9e,
0x44, 0x58, 0x49, 0x4c, 0xe4, 0x07, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
0xf9, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0xcc, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c,
0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18,
0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19,
0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c,
0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba,
0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0x80,
0x01, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0,
0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e,
0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41,
0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7,
0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c,
0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8,
0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x9b,
0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c, 0x0c, 0x41, 0x0c, 0x0d,
0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x8c, 0xda,
0x10, 0x44, 0x13, 0x04, 0x01, 0xe0, 0xd2, 0x16, 0x96, 0xe6, 0x46, 0x55,
0x86, 0x47, 0x57, 0x27, 0x57, 0x46, 0x04, 0xea, 0x69, 0x2a, 0x89, 0x2a,
0xe9, 0xc9, 0x69, 0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10, 0x10,
0x13, 0x84, 0x02, 0x9a, 0x20, 0x10, 0xcb, 0x06, 0x41, 0x33, 0x36, 0x2c,
0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4, 0xb5, 0x11, 0xa1, 0x2a, 0xc2,
0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0xd1, 0x06, 0x41, 0xd3,
0x36, 0x2c, 0x43, 0x67, 0x5d, 0xd8, 0x35, 0x78, 0xc3, 0xf5, 0x4d, 0x10,
0x08, 0x86, 0xc5, 0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0xa1, 0x90, 0x26,
0x08, 0x44, 0xb3, 0x41, 0xd0, 0xc8, 0x60, 0xc3, 0x12, 0x06, 0x62, 0x60,
0x5d, 0xd8, 0x35, 0x8c, 0x41, 0x18, 0x5c, 0x65, 0xb0, 0x61, 0xe0, 0xc0,
0xc0, 0x0c, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5,
0xbd, 0xb9, 0x6d, 0x58, 0x08, 0x34, 0xb0, 0x32, 0x6c, 0x0c, 0x86, 0x31,
0x20, 0xae, 0x32, 0xd8, 0xb0, 0x0c, 0x9d, 0x75, 0x61, 0xde, 0xe0, 0x0d,
0xd7, 0xb7, 0x61, 0x09, 0x03, 0x31, 0xb0, 0x2e, 0xcc, 0x1b, 0xc6, 0x20,
0x0c, 0xae, 0x32, 0xd8, 0x30, 0xa4, 0x81, 0x1a, 0xac, 0xc1, 0x86, 0xe1,
0x0c, 0xd8, 0x00, 0xd8, 0x50, 0x4c, 0x54, 0x1b, 0x40, 0x40, 0x15, 0x36,
0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50,
0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a,
0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b,
0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4,
0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32, 0x3c, 0x17,
0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0xc1, 0x53,
0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c, 0x8a, 0x2e,
0x8c, 0xae, 0x6c, 0x4a, 0x10, 0xd5, 0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3,
0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12, 0xb4, 0x01,
0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0b, 0x03, 0x20, 0x4d, 0x4b, 0x5c,
0x13, 0x15, 0x11, 0x00, 0x61, 0x20, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x44, 0x4a, 0xa1, 0x10, 0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a,
0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80,
0x20, 0x18, 0x18, 0x1d, 0x22, 0x5d, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20,
0x08, 0x06, 0x86, 0x97, 0x4c, 0x18, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08,
0x82, 0x81, 0xf1, 0x29, 0x54, 0xf6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x60, 0x80, 0xc1, 0x52, 0x69, 0x91, 0x32, 0x62, 0x90, 0x00, 0x20,
0x08, 0x06, 0x46, 0x18, 0x30, 0xdc, 0x36, 0x2d, 0x23, 0x06, 0x09, 0x00,
0x82, 0x60, 0x60, 0x88, 0x41, 0xd3, 0x71, 0x08, 0x33, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0xc6, 0x18, 0x38, 0x5d, 0x57, 0x35, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x60, 0x90, 0xc1, 0xe3, 0x79, 0x8a, 0x33, 0x62, 0x90,
0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x40, 0xdf, 0x57, 0x3d, 0x23, 0x06,
0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42,
0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30,
0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09,
0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54,
0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2,
0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07,
0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00,
0x10, 0x04, 0x83, 0x07, 0x0f, 0xc8, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04,
0x00, 0x41, 0x30, 0x78, 0xf2, 0xa0, 0x0c, 0xae, 0x25, 0xb0, 0xe0, 0x80,
0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1,
0x03, 0x34, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
0x3e, 0x48, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f,
0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0x81, 0x0d, 0xbe, 0x2a,
0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xda, 0xe0, 0x8b,
0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00,
0x10, 0x04, 0x83, 0x87, 0x14, 0xe0, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00,
0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0x88, 0x83, 0x31, 0xa0, 0x02, 0x0b,
0x20, 0xe8, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76,
0x40, 0x0a, 0xa4, 0xc0, 0x07, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0x20, 0xa9, 0x60, 0x07, 0xa4, 0x40, 0x0a, 0x70, 0x90, 0x8c, 0x18, 0x24,
0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xa0, 0x07,
0xc5, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0xa4,
0x40, 0x0a, 0x7b, 0x10, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92,
0x0a, 0x76, 0x50, 0x0a, 0xa4, 0xc0, 0x07, 0x69, 0x30, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0x41, 0x29, 0x90, 0x02, 0x1c, 0xa0,
0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0x7f,
0x40, 0x0a, 0x7c, 0xd0, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
0xa4, 0x82, 0x1d, 0xfc, 0x01, 0x29, 0xc0, 0x01, 0x1b, 0x8c, 0x18, 0x24,
0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0xf0, 0x07, 0xa4, 0xa0, 0x07,
0x6b, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0xc1,
0x1f, 0x90, 0xc2, 0x1e, 0xa8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,174 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D12) && (defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES))
#include "SDL_render_d3d12_xbox.h"
#include "../../core/windows/SDL_windows.h"
#include <XGameRuntime.h>
#if defined(_MSC_VER) && !defined(__clang__)
#define SDL_COMPOSE_ERROR(str) __FUNCTION__ ", " str
#else
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
#endif
static const GUID SDL_IID_ID3D12Device1 = { 0x77acce80, 0x638e, 0x4e65, { 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e } };
static const GUID SDL_IID_ID3D12Resource = { 0x696442be, 0xa72e, 0x4059, { 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad } };
static const GUID SDL_IID_IDXGIDevice1 = { 0x77db970f, 0x6276, 0x48ba, { 0xba, 0x28, 0x07, 0x01, 0x43, 0xb4, 0x39, 0x2c } };
extern "C"
HRESULT D3D12_XBOX_CreateDevice(ID3D12Device **device, bool createDebug)
{
HRESULT result;
D3D12XBOX_CREATE_DEVICE_PARAMETERS params;
IDXGIDevice1 *dxgiDevice;
IDXGIAdapter *dxgiAdapter;
IDXGIOutput *dxgiOutput;
SDL_zero(params);
params.Version = D3D12_SDK_VERSION;
params.ProcessDebugFlags = createDebug ? D3D12_PROCESS_DEBUG_FLAG_DEBUG_LAYER_ENABLED : D3D12XBOX_PROCESS_DEBUG_FLAG_NONE;
params.GraphicsCommandQueueRingSizeBytes = D3D12XBOX_DEFAULT_SIZE_BYTES;
params.GraphicsScratchMemorySizeBytes = D3D12XBOX_DEFAULT_SIZE_BYTES;
params.ComputeScratchMemorySizeBytes = D3D12XBOX_DEFAULT_SIZE_BYTES;
result = D3D12XboxCreateDevice(NULL, &params, SDL_IID_ID3D12Device1, (void **) device);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] D3D12XboxCreateDevice"), result);
goto done;
}
result = (*device)->QueryInterface(SDL_IID_IDXGIDevice1, (void **) &dxgiDevice);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] ID3D12Device to IDXGIDevice1"), result);
goto done;
}
result = dxgiDevice->GetAdapter(&dxgiAdapter);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] dxgiDevice->GetAdapter"), result);
goto done;
}
result = dxgiAdapter->EnumOutputs(0, &dxgiOutput);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] dxgiAdapter->EnumOutputs"), result);
goto done;
}
// Set frame interval
result = (*device)->SetFrameIntervalX(dxgiOutput, D3D12XBOX_FRAME_INTERVAL_60_HZ, 1, D3D12XBOX_FRAME_INTERVAL_FLAG_NONE);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] SetFrameIntervalX"), result);
goto done;
}
result = (*device)->ScheduleFrameEventX(D3D12XBOX_FRAME_EVENT_ORIGIN, 0, NULL, D3D12XBOX_SCHEDULE_FRAME_EVENT_FLAG_NONE);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] ScheduleFrameEventX"), result);
goto done;
}
done:
return result;
}
extern "C"
HRESULT D3D12_XBOX_CreateBackBufferTarget(ID3D12Device1 *device, int width, int height, void **resource)
{
D3D12_HEAP_PROPERTIES heapProps;
D3D12_RESOURCE_DESC resourceDesc;
SDL_zero(heapProps);
heapProps.Type = D3D12_HEAP_TYPE_DEFAULT;
heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
heapProps.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
heapProps.CreationNodeMask = 1;
heapProps.VisibleNodeMask = 1;
SDL_zero(resourceDesc);
resourceDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
resourceDesc.Alignment = 0;
resourceDesc.Width = width;
resourceDesc.Height = height;
resourceDesc.DepthOrArraySize = 1;
resourceDesc.MipLevels = 1;
resourceDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
resourceDesc.SampleDesc.Count = 1;
resourceDesc.SampleDesc.Quality = 0;
resourceDesc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
resourceDesc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
return device->CreateCommittedResource(&heapProps,
D3D12_HEAP_FLAG_ALLOW_DISPLAY,
&resourceDesc,
D3D12_RESOURCE_STATE_PRESENT,
NULL,
SDL_IID_ID3D12Resource,
resource
);
}
extern "C"
HRESULT D3D12_XBOX_StartFrame(ID3D12Device1 *device, UINT64 *outToken)
{
*outToken = D3D12XBOX_FRAME_PIPELINE_TOKEN_NULL;
return device->WaitFrameEventX(D3D12XBOX_FRAME_EVENT_ORIGIN, INFINITE, NULL, D3D12XBOX_WAIT_FRAME_EVENT_FLAG_NONE, outToken);
}
extern "C"
HRESULT D3D12_XBOX_PresentFrame(ID3D12CommandQueue *commandQueue, UINT64 token, ID3D12Resource *renderTarget)
{
D3D12XBOX_PRESENT_PLANE_PARAMETERS planeParameters;
SDL_zero(planeParameters);
planeParameters.Token = token;
planeParameters.ResourceCount = 1;
planeParameters.ppResources = &renderTarget;
return commandQueue->PresentX(1, &planeParameters, NULL);
}
extern "C"
void D3D12_XBOX_GetResolution(Uint32 *width, Uint32 *height)
{
switch (XSystemGetDeviceType()) {
case XSystemDeviceType::XboxScarlettLockhart:
*width = 2560;
*height = 1440;
break;
case XSystemDeviceType::XboxOneX:
case XSystemDeviceType::XboxScarlettAnaconda:
case XSystemDeviceType::XboxOneXDevkit:
case XSystemDeviceType::XboxScarlettDevkit:
*width = 3840;
*height = 2160;
break;
default:
*width = 1920;
*height = 1080;
break;
}
}
#endif // SDL_VIDEO_RENDER_D3D12 && (SDL_PLATFORM_XBOXONE || SDL_PLATFORM_XBOXSERIES)

View File

@@ -0,0 +1,44 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifndef SDL_render_d3d12_xbox_h_
#define SDL_render_d3d12_xbox_h_
#include "../../SDL_internal.h"
#include "../../video/directx/SDL_d3d12.h"
// Set up for C function definitions, even when using C++
#ifdef __cplusplus
extern "C" {
#endif
extern HRESULT D3D12_XBOX_CreateDevice(ID3D12Device **device, bool createDebug);
extern HRESULT D3D12_XBOX_CreateBackBufferTarget(ID3D12Device1 *device, int width, int height, void **resource);
extern HRESULT D3D12_XBOX_StartFrame(ID3D12Device1 *device, UINT64 *outToken);
extern HRESULT D3D12_XBOX_PresentFrame(ID3D12CommandQueue *commandQueue, UINT64 token, ID3D12Resource *renderTarget);
extern void D3D12_XBOX_GetResolution(Uint32 *width, Uint32 *height);
// Ends C function definitions when using C++
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,125 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D12) && !defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)
#include "../../core/windows/SDL_windows.h"
#include "../../video/directx/SDL_d3d12.h"
#include "SDL_shaders_d3d12.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
// The shaders here were compiled with compile_shaders.bat
#define g_main D3D12_PixelShader_Colors
#include "D3D12_PixelShader_Colors.h"
#undef g_main
#define g_main D3D12_PixelShader_Textures
#include "D3D12_PixelShader_Textures.h"
#undef g_main
#define g_main D3D12_PixelShader_Advanced
#include "D3D12_PixelShader_Advanced.h"
#undef g_main
#define g_mainColor D3D12_VertexShader_Colors
#include "D3D12_VertexShader_Color.h"
#undef g_mainColor
#define g_mainTexture D3D12_VertexShader_Textures
#include "D3D12_VertexShader_Texture.h"
#undef g_mainTexture
#define g_mainAdvanced D3D12_VertexShader_Advanced
#include "D3D12_VertexShader_Advanced.h"
#undef g_mainAdvanced
#define g_ColorRS D3D12_RootSig_Color
#include "D3D12_RootSig_Color.h"
#undef g_ColorRS
#define g_TextureRS D3D12_RootSig_Texture
#include "D3D12_RootSig_Texture.h"
#undef g_TextureRS
#define g_AdvancedRS D3D12_RootSig_Advanced
#include "D3D12_RootSig_Advanced.h"
#undef g_AdvancedRS
static struct
{
const void *ps_shader_data;
SIZE_T ps_shader_size;
const void *vs_shader_data;
SIZE_T vs_shader_size;
D3D12_RootSignature root_sig;
} D3D12_shaders[NUM_SHADERS] = {
{ D3D12_PixelShader_Colors, sizeof(D3D12_PixelShader_Colors),
D3D12_VertexShader_Colors, sizeof(D3D12_VertexShader_Colors),
ROOTSIG_COLOR },
{ D3D12_PixelShader_Textures, sizeof(D3D12_PixelShader_Textures),
D3D12_VertexShader_Textures, sizeof(D3D12_VertexShader_Textures),
ROOTSIG_TEXTURE },
{ D3D12_PixelShader_Advanced, sizeof(D3D12_PixelShader_Advanced),
D3D12_VertexShader_Advanced, sizeof(D3D12_VertexShader_Advanced),
ROOTSIG_ADVANCED },
};
static struct
{
const void *rs_shader_data;
SIZE_T rs_shader_size;
} D3D12_rootsigs[NUM_ROOTSIGS] = {
{ D3D12_RootSig_Color, sizeof(D3D12_RootSig_Color) },
{ D3D12_RootSig_Texture, sizeof(D3D12_RootSig_Texture) },
{ D3D12_RootSig_Advanced, sizeof(D3D12_RootSig_Advanced) },
};
void D3D12_GetVertexShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_shaders[shader].vs_shader_data;
outBytecode->BytecodeLength = D3D12_shaders[shader].vs_shader_size;
}
void D3D12_GetPixelShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_shaders[shader].ps_shader_data;
outBytecode->BytecodeLength = D3D12_shaders[shader].ps_shader_size;
}
D3D12_RootSignature D3D12_GetRootSignatureType(D3D12_Shader shader)
{
return D3D12_shaders[shader].root_sig;
}
void D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_rootsigs[rootSig].rs_shader_data;
outBytecode->BytecodeLength = D3D12_rootsigs[rootSig].rs_shader_size;
}
#endif // SDL_VIDEO_RENDER_D3D12 && !SDL_PLATFORM_XBOXONE && !SDL_PLATFORM_XBOXSERIES

View File

@@ -0,0 +1,54 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
// D3D12 shader implementation
// Set up for C function definitions, even when using C++
#ifdef __cplusplus
extern "C" {
#endif
typedef enum
{
SHADER_SOLID,
SHADER_RGB,
SHADER_ADVANCED,
NUM_SHADERS
} D3D12_Shader;
typedef enum
{
ROOTSIG_COLOR,
ROOTSIG_TEXTURE,
ROOTSIG_ADVANCED,
NUM_ROOTSIGS
} D3D12_RootSignature;
extern void D3D12_GetVertexShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode);
extern void D3D12_GetPixelShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode);
extern D3D12_RootSignature D3D12_GetRootSignatureType(D3D12_Shader shader);
extern void D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECODE *outBytecode);
// Ends C function definitions when using C++
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,132 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D12) && defined(SDL_PLATFORM_XBOXONE)
#include <SDL3/SDL_stdinc.h>
#include "../../core/windows/SDL_windows.h"
#include "../../video/directx/SDL_d3d12.h"
#include "SDL_shaders_d3d12.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
// Shader blob headers are generated with a pre-build step using compile_shaders_xbox.bat
#define g_main D3D12_PixelShader_Colors
#include "D3D12_PixelShader_Colors_One.h"
#undef g_main
#define g_main D3D12_PixelShader_Textures
#include "D3D12_PixelShader_Textures_One.h"
#undef g_main
#define g_main D3D12_PixelShader_Advanced
#include "D3D12_PixelShader_Advanced_One.h"
#undef g_main
#define g_mainColor D3D12_VertexShader_Colors
#include "D3D12_VertexShader_Color_One.h"
#undef g_mainColor
#define g_mainTexture D3D12_VertexShader_Textures
#include "D3D12_VertexShader_Texture_One.h"
#undef g_mainTexture
#define g_mainAdvanced D3D12_VertexShader_Advanced
#include "D3D12_VertexShader_Advanced_One.h"
#undef g_mainAdvanced
#define g_ColorRS D3D12_RootSig_Color
#include "D3D12_RootSig_Color_One.h"
#undef g_ColorRS
#define g_TextureRS D3D12_RootSig_Texture
#include "D3D12_RootSig_Texture_One.h"
#undef g_TextureRS
#define g_AdvancedRS D3D12_RootSig_Advanced
#include "D3D12_RootSig_Advanced_One.h"
#undef g_AdvancedRS
static struct
{
const void *ps_shader_data;
SIZE_T ps_shader_size;
const void *vs_shader_data;
SIZE_T vs_shader_size;
D3D12_RootSignature root_sig;
} D3D12_shaders[NUM_SHADERS] = {
{ D3D12_PixelShader_Colors, sizeof(D3D12_PixelShader_Colors),
D3D12_VertexShader_Colors, sizeof(D3D12_VertexShader_Colors),
ROOTSIG_COLOR },
{ D3D12_PixelShader_Textures, sizeof(D3D12_PixelShader_Textures),
D3D12_VertexShader_Textures, sizeof(D3D12_VertexShader_Textures),
ROOTSIG_TEXTURE },
{ D3D12_PixelShader_Advanced, sizeof(D3D12_PixelShader_Advanced),
D3D12_VertexShader_Advanced, sizeof(D3D12_VertexShader_Advanced),
ROOTSIG_ADVANCED },
};
static struct
{
const void *rs_shader_data;
SIZE_T rs_shader_size;
} D3D12_rootsigs[NUM_ROOTSIGS] = {
{ D3D12_RootSig_Color, sizeof(D3D12_RootSig_Color) },
{ D3D12_RootSig_Texture, sizeof(D3D12_RootSig_Texture) },
{ D3D12_RootSig_Advanced, sizeof(D3D12_RootSig_Advanced) },
};
extern "C"
void D3D12_GetVertexShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_shaders[shader].vs_shader_data;
outBytecode->BytecodeLength = D3D12_shaders[shader].vs_shader_size;
}
extern "C"
void D3D12_GetPixelShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_shaders[shader].ps_shader_data;
outBytecode->BytecodeLength = D3D12_shaders[shader].ps_shader_size;
}
extern "C"
D3D12_RootSignature D3D12_GetRootSignatureType(D3D12_Shader shader)
{
return D3D12_shaders[shader].root_sig;
}
extern "C"
void D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_rootsigs[rootSig].rs_shader_data;
outBytecode->BytecodeLength = D3D12_rootsigs[rootSig].rs_shader_size;
}
#endif // SDL_VIDEO_RENDER_D3D12 && SDL_PLATFORM_XBOXONE

View File

@@ -0,0 +1,133 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D12) && defined(SDL_PLATFORM_XBOXSERIES)
#include <SDL3/SDL_stdinc.h>
#include "../../core/windows/SDL_windows.h"
#include "../../video/directx/SDL_d3d12.h"
#include "SDL_shaders_d3d12.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
// Shader blob headers are generated with a pre-build step using compile_shaders_xbox.bat
#define g_main D3D12_PixelShader_Colors
#include "D3D12_PixelShader_Colors_Series.h"
#undef g_main
#define g_main D3D12_PixelShader_Textures
#include "D3D12_PixelShader_Textures_Series.h"
#undef g_main
#define g_main D3D12_PixelShader_Advanced
#include "D3D12_PixelShader_Advanced_Series.h"
#undef g_main
#define g_mainColor D3D12_VertexShader_Colors
#include "D3D12_VertexShader_Color_Series.h"
#undef g_mainColor
#define g_mainTexture D3D12_VertexShader_Textures
#include "D3D12_VertexShader_Texture_Series.h"
#undef g_mainTexture
#define g_mainAdvanced D3D12_VertexShader_Advanced
#include "D3D12_VertexShader_Advanced_Series.h"
#undef g_mainAdvanced
#define g_ColorRS D3D12_RootSig_Color
#include "D3D12_RootSig_Color_Series.h"
#undef g_ColorRS
#define g_TextureRS D3D12_RootSig_Texture
#include "D3D12_RootSig_Texture_Series.h"
#undef g_TextureRS
#define g_AdvancedRS D3D12_RootSig_Advanced
#include "D3D12_RootSig_Advanced_Series.h"
#undef g_AdvancedRS
static struct
{
const void *ps_shader_data;
SIZE_T ps_shader_size;
const void *vs_shader_data;
SIZE_T vs_shader_size;
D3D12_RootSignature root_sig;
} D3D12_shaders[NUM_SHADERS] = {
{ D3D12_PixelShader_Colors, sizeof(D3D12_PixelShader_Colors),
D3D12_VertexShader_Colors, sizeof(D3D12_VertexShader_Colors),
ROOTSIG_COLOR },
{ D3D12_PixelShader_Textures, sizeof(D3D12_PixelShader_Textures),
D3D12_VertexShader_Textures, sizeof(D3D12_VertexShader_Textures),
ROOTSIG_TEXTURE },
{ D3D12_PixelShader_Advanced, sizeof(D3D12_PixelShader_Advanced),
D3D12_VertexShader_Advanced, sizeof(D3D12_VertexShader_Advanced),
ROOTSIG_ADVANCED },
};
static struct
{
const void *rs_shader_data;
SIZE_T rs_shader_size;
} D3D12_rootsigs[NUM_ROOTSIGS] = {
{ D3D12_RootSig_Color, sizeof(D3D12_RootSig_Color) },
{ D3D12_RootSig_Texture, sizeof(D3D12_RootSig_Texture) },
{ D3D12_RootSig_Advanced, sizeof(D3D12_RootSig_Advanced) },
};
extern "C"
void D3D12_GetVertexShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_shaders[shader].vs_shader_data;
outBytecode->BytecodeLength = D3D12_shaders[shader].vs_shader_size;
}
extern "C"
void D3D12_GetPixelShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_shaders[shader].ps_shader_data;
outBytecode->BytecodeLength = D3D12_shaders[shader].ps_shader_size;
}
extern "C"
D3D12_RootSignature D3D12_GetRootSignatureType(D3D12_Shader shader)
{
return D3D12_shaders[shader].root_sig;
}
extern "C"
void D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECODE *outBytecode)
{
outBytecode->pShaderBytecode = D3D12_rootsigs[rootSig].rs_shader_data;
outBytecode->BytecodeLength = D3D12_rootsigs[rootSig].rs_shader_size;
}
#endif // SDL_VIDEO_RENDER_D3D12 && SDL_PLATFORM_XBOXSERIES

View File

@@ -0,0 +1,21 @@
rem This script runs for the Windows build, but also via the _xbox variant with these vars set.
rem Make sure to default to building for Windows if they're not set.
if %DXC%.==. set DXC=dxc
if %SUFFIX%.==. set SUFFIX=.h
echo Building with %DXC%
echo Suffix %SUFFIX%
cd "%~dp0"
%DXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_Colors%SUFFIX% D3D12_PixelShader_Colors.hlsl
%DXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_Textures%SUFFIX% D3D12_PixelShader_Textures.hlsl
%DXC% -E main -T ps_6_0 -Fh D3D12_PixelShader_Advanced%SUFFIX% D3D12_PixelShader_Advanced.hlsl
%DXC% -E mainColor -T vs_6_0 -Fh D3D12_VertexShader_Color%SUFFIX% D3D12_VertexShader.hlsl
%DXC% -E mainTexture -T vs_6_0 -Fh D3D12_VertexShader_Texture%SUFFIX% D3D12_VertexShader.hlsl
%DXC% -E mainAdvanced -T vs_6_0 -Fh D3D12_VertexShader_Advanced%SUFFIX% D3D12_VertexShader.hlsl
%DXC% -E ColorRS -T rootsig_1_1 -rootsig-define ColorRS -Fh D3D12_RootSig_Color%SUFFIX% D3D12_VertexShader.hlsl
%DXC% -E TextureRS -T rootsig_1_1 -rootsig-define TextureRS -Fh D3D12_RootSig_Texture%SUFFIX% D3D12_VertexShader.hlsl
%DXC% -E AdvancedRS -T rootsig_1_1 -rootsig-define AdvancedRS -Fh D3D12_RootSig_Advanced%SUFFIX% D3D12_VertexShader.hlsl

View File

@@ -0,0 +1,13 @@
if %2.==one. goto setxboxone
rem Xbox Series compile
set DXC="%GameDKLatest%\GXDK\bin\Scarlett\DXC.exe"
set SUFFIX=_Series.h
goto startbuild
:setxboxone
set DXC="%GameDKLatest%\GXDK\bin\XboxOne\DXC.exe"
set SUFFIX=_One.h
:startbuild
call "%~dp0\compile_shaders.bat"

View File

@@ -0,0 +1,74 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifndef SDL_gpu_util_h_
#define SDL_gpu_util_h_
#define SDL_GPU_BLENDOP_INVALID ((SDL_GPUBlendOp)0x7fffffff)
#define SDL_GPU_BLENDFACTOR_INVALID ((SDL_GPUBlendFactor)0x7fffffff)
static SDL_INLINE SDL_GPUBlendFactor GPU_ConvertBlendFactor(SDL_BlendFactor factor)
{
switch (factor) {
case SDL_BLENDFACTOR_ZERO:
return SDL_GPU_BLENDFACTOR_ZERO;
case SDL_BLENDFACTOR_ONE:
return SDL_GPU_BLENDFACTOR_ONE;
case SDL_BLENDFACTOR_SRC_COLOR:
return SDL_GPU_BLENDFACTOR_SRC_COLOR;
case SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR:
return SDL_GPU_BLENDFACTOR_ONE_MINUS_SRC_COLOR;
case SDL_BLENDFACTOR_SRC_ALPHA:
return SDL_GPU_BLENDFACTOR_SRC_ALPHA;
case SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA:
return SDL_GPU_BLENDFACTOR_ONE_MINUS_SRC_ALPHA;
case SDL_BLENDFACTOR_DST_COLOR:
return SDL_GPU_BLENDFACTOR_DST_COLOR;
case SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR:
return SDL_GPU_BLENDFACTOR_ONE_MINUS_DST_COLOR;
case SDL_BLENDFACTOR_DST_ALPHA:
return SDL_GPU_BLENDFACTOR_DST_ALPHA;
case SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA:
return SDL_GPU_BLENDFACTOR_ONE_MINUS_DST_ALPHA;
default:
return SDL_GPU_BLENDFACTOR_INVALID;
}
}
static SDL_INLINE SDL_GPUBlendOp GPU_ConvertBlendOperation(SDL_BlendOperation operation)
{
switch (operation) {
case SDL_BLENDOPERATION_ADD:
return SDL_GPU_BLENDOP_ADD;
case SDL_BLENDOPERATION_SUBTRACT:
return SDL_GPU_BLENDOP_SUBTRACT;
case SDL_BLENDOPERATION_REV_SUBTRACT:
return SDL_GPU_BLENDOP_REVERSE_SUBTRACT;
case SDL_BLENDOPERATION_MINIMUM:
return SDL_GPU_BLENDOP_MIN;
case SDL_BLENDOPERATION_MAXIMUM:
return SDL_GPU_BLENDOP_MAX;
default:
return SDL_GPU_BLENDOP_INVALID;
}
}
#endif // SDL_gpu_util_h

View File

@@ -0,0 +1,167 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_GPU
#include "SDL_gpu_util.h"
#include "SDL_pipeline_gpu.h"
#include "../SDL_sysrender.h"
static Uint32 SDLCALL HashPipelineCacheKey(void *userdata, const void *key)
{
const GPU_PipelineParameters *params = (const GPU_PipelineParameters *) key;
return SDL_murmur3_32(params, sizeof(*params), 0);
}
static bool SDLCALL MatchPipelineCacheKey(void *userdata, const void *a, const void *b)
{
return (SDL_memcmp(a, b, sizeof (GPU_PipelineParameters)) == 0);
}
static void SDLCALL DestroyPipelineCacheHashItem(void *userdata, const void *key, const void *value)
{
SDL_GPUGraphicsPipeline *pipeline = (SDL_GPUGraphicsPipeline *) value;
SDL_GPUDevice *device = (SDL_GPUDevice *) userdata;
SDL_ReleaseGPUGraphicsPipeline(device, pipeline);
SDL_free((GPU_PipelineParameters *) key);
}
bool GPU_InitPipelineCache(GPU_PipelineCache *cache, SDL_GPUDevice *device)
{
cache->table = SDL_CreateHashTable(0, false, HashPipelineCacheKey, MatchPipelineCacheKey, DestroyPipelineCacheHashItem, device);
return (cache->table != NULL);
}
void GPU_DestroyPipelineCache(GPU_PipelineCache *cache)
{
SDL_DestroyHashTable(cache->table);
}
static SDL_GPUGraphicsPipeline *MakePipeline(SDL_GPUDevice *device, GPU_Shaders *shaders, const GPU_PipelineParameters *params)
{
SDL_GPUColorTargetDescription ad;
SDL_zero(ad);
ad.format = params->attachment_format;
SDL_BlendMode blend = params->blend_mode;
ad.blend_state.enable_blend = blend != 0;
ad.blend_state.color_write_mask = 0xF;
ad.blend_state.alpha_blend_op = GPU_ConvertBlendOperation(SDL_GetBlendModeAlphaOperation(blend));
ad.blend_state.dst_alpha_blendfactor = GPU_ConvertBlendFactor(SDL_GetBlendModeDstAlphaFactor(blend));
ad.blend_state.src_alpha_blendfactor = GPU_ConvertBlendFactor(SDL_GetBlendModeSrcAlphaFactor(blend));
ad.blend_state.color_blend_op = GPU_ConvertBlendOperation(SDL_GetBlendModeColorOperation(blend));
ad.blend_state.dst_color_blendfactor = GPU_ConvertBlendFactor(SDL_GetBlendModeDstColorFactor(blend));
ad.blend_state.src_color_blendfactor = GPU_ConvertBlendFactor(SDL_GetBlendModeSrcColorFactor(blend));
SDL_GPUGraphicsPipelineCreateInfo pci;
SDL_zero(pci);
pci.target_info.has_depth_stencil_target = false;
pci.target_info.num_color_targets = 1;
pci.target_info.color_target_descriptions = &ad;
pci.vertex_shader = GPU_GetVertexShader(shaders, params->vert_shader);
pci.fragment_shader = GPU_GetFragmentShader(shaders, params->frag_shader);
pci.multisample_state.sample_count = SDL_GPU_SAMPLECOUNT_1;
pci.multisample_state.enable_mask = false;
pci.primitive_type = params->primitive_type;
pci.rasterizer_state.cull_mode = SDL_GPU_CULLMODE_NONE;
pci.rasterizer_state.fill_mode = SDL_GPU_FILLMODE_FILL;
pci.rasterizer_state.front_face = SDL_GPU_FRONTFACE_COUNTER_CLOCKWISE;
pci.rasterizer_state.enable_depth_clip = true;
SDL_GPUVertexBufferDescription vertex_buffer_desc;
SDL_zero(vertex_buffer_desc);
Uint32 num_attribs = 0;
SDL_GPUVertexAttribute attribs[4];
SDL_zero(attribs);
bool have_attr_uv = false;
switch (params->vert_shader) {
case VERT_SHADER_TRI_TEXTURE:
have_attr_uv = true;
break;
default:
break;
}
// Position
attribs[num_attribs].location = num_attribs;
attribs[num_attribs].format = SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2;
attribs[num_attribs].offset = vertex_buffer_desc.pitch;
vertex_buffer_desc.pitch += 2 * sizeof(float);
num_attribs++;
// Color
attribs[num_attribs].location = num_attribs;
attribs[num_attribs].format = SDL_GPU_VERTEXELEMENTFORMAT_FLOAT4;
attribs[num_attribs].offset = vertex_buffer_desc.pitch;
vertex_buffer_desc.pitch += 4 * sizeof(float);
num_attribs++;
if (have_attr_uv) {
// UVs
attribs[num_attribs].location = num_attribs;
attribs[num_attribs].format = SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2;
attribs[num_attribs].offset = vertex_buffer_desc.pitch;
vertex_buffer_desc.pitch += 2 * sizeof(float);
num_attribs++;
}
pci.vertex_input_state.num_vertex_attributes = num_attribs;
pci.vertex_input_state.vertex_attributes = attribs;
pci.vertex_input_state.num_vertex_buffers = 1;
pci.vertex_input_state.vertex_buffer_descriptions = &vertex_buffer_desc;
return SDL_CreateGPUGraphicsPipeline(device, &pci);
}
SDL_GPUGraphicsPipeline *GPU_GetPipeline(GPU_PipelineCache *cache, GPU_Shaders *shaders, SDL_GPUDevice *device, const GPU_PipelineParameters *params)
{
SDL_GPUGraphicsPipeline *pipeline = NULL;
if (!SDL_FindInHashTable(cache->table, params, (const void **) &pipeline)) {
bool inserted = false;
// !!! FIXME: why don't we have an SDL_alloc_copy function/macro?
GPU_PipelineParameters *paramscpy = (GPU_PipelineParameters *) SDL_malloc(sizeof (*paramscpy));
if (paramscpy) {
SDL_copyp(paramscpy, params);
pipeline = MakePipeline(device, shaders, params);
if (pipeline) {
inserted = SDL_InsertIntoHashTable(cache->table, paramscpy, pipeline, false);
}
}
if (!inserted) {
SDL_free(paramscpy);
if (pipeline) {
SDL_ReleaseGPUGraphicsPipeline(device, pipeline);
pipeline = NULL;
}
}
}
return pipeline;
}
#endif // SDL_VIDEO_RENDER_GPU

View File

@@ -0,0 +1,48 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifndef SDL_pipeline_gpu_h_
#define SDL_pipeline_gpu_h_
#include "SDL_internal.h"
#include "SDL_shaders_gpu.h"
typedef struct GPU_PipelineParameters
{
SDL_BlendMode blend_mode;
GPU_FragmentShaderID frag_shader;
GPU_VertexShaderID vert_shader;
SDL_GPUTextureFormat attachment_format;
SDL_GPUPrimitiveType primitive_type;
SDL_GPUShader *custom_frag_shader;
} GPU_PipelineParameters;
typedef struct GPU_PipelineCache
{
SDL_HashTable *table;
} GPU_PipelineCache;
extern bool GPU_InitPipelineCache(GPU_PipelineCache *cache, SDL_GPUDevice *device);
extern void GPU_DestroyPipelineCache(GPU_PipelineCache *cache);
extern SDL_GPUGraphicsPipeline *GPU_GetPipeline(GPU_PipelineCache *cache, GPU_Shaders *shaders, SDL_GPUDevice *device, const GPU_PipelineParameters *params);
#endif // SDL_pipeline_gpu_h_

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,260 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_GPU
#include "SDL_shaders_gpu.h"
// SDL_GPU shader implementation
typedef struct GPU_ShaderModuleSource
{
const unsigned char *code;
unsigned int code_len;
SDL_GPUShaderFormat format;
} GPU_ShaderModuleSource;
#if defined(SDL_GPU_VULKAN) && SDL_GPU_VULKAN
#define IF_VULKAN(...) __VA_ARGS__
#define HAVE_SPIRV_SHADERS 1
#include "shaders/spir-v.h"
#else
#define IF_VULKAN(...)
#define HAVE_SPIRV_SHADERS 0
#endif
#ifdef SDL_GPU_D3D12
#define IF_D3D12(...) __VA_ARGS__
#define HAVE_DXIL60_SHADERS 1
#include "shaders/dxil.h"
#else
#define IF_D3D12(...)
#define HAVE_DXIL60_SHADERS 0
#endif
#ifdef SDL_GPU_METAL
#define IF_METAL(...) __VA_ARGS__
#define HAVE_METAL_SHADERS 1
#include "shaders/msl.h"
#else
#define IF_METAL(...)
#define HAVE_METAL_SHADERS 0
#endif
typedef struct GPU_ShaderSources
{
IF_VULKAN(GPU_ShaderModuleSource spirv;)
IF_D3D12(GPU_ShaderModuleSource dxil60;)
IF_METAL(GPU_ShaderModuleSource msl;)
unsigned int num_samplers;
unsigned int num_uniform_buffers;
} GPU_ShaderSources;
#define SHADER_SPIRV(code) \
IF_VULKAN(.spirv = { code, sizeof(code), SDL_GPU_SHADERFORMAT_SPIRV }, )
#define SHADER_DXIL60(code) \
IF_D3D12(.dxil60 = { code, sizeof(code), SDL_GPU_SHADERFORMAT_DXIL }, )
#define SHADER_METAL(code) \
IF_METAL(.msl = { code, sizeof(code), SDL_GPU_SHADERFORMAT_MSL }, )
// clang-format off
static const GPU_ShaderSources vert_shader_sources[NUM_VERT_SHADERS] = {
[VERT_SHADER_LINEPOINT] = {
.num_samplers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(linepoint_vert_spv)
SHADER_DXIL60(linepoint_vert_dxil)
SHADER_METAL(linepoint_vert_msl)
},
[VERT_SHADER_TRI_COLOR] = {
.num_samplers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(tri_color_vert_spv)
SHADER_DXIL60(tri_color_vert_dxil)
SHADER_METAL(tri_color_vert_msl)
},
[VERT_SHADER_TRI_TEXTURE] = {
.num_samplers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(tri_texture_vert_spv)
SHADER_DXIL60(tri_texture_vert_dxil)
SHADER_METAL(tri_texture_vert_msl)
},
};
static const GPU_ShaderSources frag_shader_sources[NUM_FRAG_SHADERS] = {
[FRAG_SHADER_COLOR] = {
.num_samplers = 0,
.num_uniform_buffers = 1,
SHADER_SPIRV(color_frag_spv)
SHADER_DXIL60(color_frag_dxil)
SHADER_METAL(color_frag_msl)
},
[FRAG_SHADER_TEXTURE_RGB] = {
.num_samplers = 1,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_rgb_frag_spv)
SHADER_DXIL60(texture_rgb_frag_dxil)
SHADER_METAL(texture_rgb_frag_msl)
},
[FRAG_SHADER_TEXTURE_RGBA] = {
.num_samplers = 1,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_rgba_frag_spv)
SHADER_DXIL60(texture_rgba_frag_dxil)
SHADER_METAL(texture_rgba_frag_msl)
},
[FRAG_SHADER_TEXTURE_ADVANCED] = {
.num_samplers = 3,
.num_uniform_buffers = 1,
SHADER_SPIRV(texture_advanced_frag_spv)
SHADER_DXIL60(texture_advanced_frag_dxil)
SHADER_METAL(texture_advanced_frag_msl)
},
};
// clang-format on
static SDL_GPUShader *CompileShader(const GPU_ShaderSources *sources, SDL_GPUDevice *device, SDL_GPUShaderStage stage)
{
const GPU_ShaderModuleSource *sms = NULL;
SDL_GPUShaderFormat formats = SDL_GetGPUShaderFormats(device);
if (formats == SDL_GPU_SHADERFORMAT_INVALID) {
// SDL_GetGPUShaderFormats already set the error
return NULL;
#if HAVE_SPIRV_SHADERS
} else if (formats & SDL_GPU_SHADERFORMAT_SPIRV) {
sms = &sources->spirv;
#endif // HAVE_SPIRV_SHADERS
#if HAVE_DXIL60_SHADERS
} else if (formats & SDL_GPU_SHADERFORMAT_DXIL) {
sms = &sources->dxil60;
#endif // HAVE_DXIL60_SHADERS
#if HAVE_METAL_SHADERS
} else if (formats & SDL_GPU_SHADERFORMAT_MSL) {
sms = &sources->msl;
#endif // HAVE_METAL_SHADERS
} else {
SDL_SetError("Unsupported GPU backend");
return NULL;
}
SDL_GPUShaderCreateInfo sci = { 0 };
sci.code = sms->code;
sci.code_size = sms->code_len;
sci.format = sms->format;
// FIXME not sure if this is correct
sci.entrypoint =
#if HAVE_METAL_SHADERS
(sms == &sources->msl) ? "main0" :
#endif // HAVE_METAL_SHADERS
"main";
sci.num_samplers = sources->num_samplers;
sci.num_uniform_buffers = sources->num_uniform_buffers;
sci.stage = stage;
return SDL_CreateGPUShader(device, &sci);
}
bool GPU_InitShaders(GPU_Shaders *shaders, SDL_GPUDevice *device)
{
for (int i = 0; i < SDL_arraysize(vert_shader_sources); ++i) {
shaders->vert_shaders[i] = CompileShader(
&vert_shader_sources[i], device, SDL_GPU_SHADERSTAGE_VERTEX);
if (shaders->vert_shaders[i] == NULL) {
GPU_ReleaseShaders(shaders, device);
return false;
}
}
for (int i = 0; i < SDL_arraysize(frag_shader_sources); ++i) {
if (i == FRAG_SHADER_TEXTURE_CUSTOM) {
continue;
}
shaders->frag_shaders[i] = CompileShader(
&frag_shader_sources[i], device, SDL_GPU_SHADERSTAGE_FRAGMENT);
if (shaders->frag_shaders[i] == NULL) {
GPU_ReleaseShaders(shaders, device);
return false;
}
}
return true;
}
void GPU_ReleaseShaders(GPU_Shaders *shaders, SDL_GPUDevice *device)
{
for (int i = 0; i < SDL_arraysize(shaders->vert_shaders); ++i) {
SDL_ReleaseGPUShader(device, shaders->vert_shaders[i]);
shaders->vert_shaders[i] = NULL;
}
for (int i = 0; i < SDL_arraysize(shaders->frag_shaders); ++i) {
if (i == FRAG_SHADER_TEXTURE_CUSTOM) {
continue;
}
SDL_ReleaseGPUShader(device, shaders->frag_shaders[i]);
shaders->frag_shaders[i] = NULL;
}
}
SDL_GPUShader *GPU_GetVertexShader(GPU_Shaders *shaders, GPU_VertexShaderID id)
{
SDL_assert((unsigned int)id < SDL_arraysize(shaders->vert_shaders));
SDL_GPUShader *shader = shaders->vert_shaders[id];
SDL_assert(shader != NULL);
return shader;
}
SDL_GPUShader *GPU_GetFragmentShader(GPU_Shaders *shaders, GPU_FragmentShaderID id)
{
SDL_assert((unsigned int)id < SDL_arraysize(shaders->frag_shaders));
SDL_GPUShader *shader = shaders->frag_shaders[id];
SDL_assert(shader != NULL);
return shader;
}
void GPU_FillSupportedShaderFormats(SDL_PropertiesID props)
{
bool custom_shaders = false;
if (SDL_GetBooleanProperty(props, SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN, false)) {
SDL_SetBooleanProperty(props, SDL_PROP_GPU_DEVICE_CREATE_SHADERS_SPIRV_BOOLEAN, HAVE_SPIRV_SHADERS);
custom_shaders = true;
}
if (SDL_GetBooleanProperty(props, SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN, false)) {
SDL_SetBooleanProperty(props, SDL_PROP_GPU_DEVICE_CREATE_SHADERS_DXIL_BOOLEAN, HAVE_DXIL60_SHADERS);
custom_shaders = true;
}
if (SDL_GetBooleanProperty(props, SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN, false)) {
SDL_SetBooleanProperty(props, SDL_PROP_GPU_DEVICE_CREATE_SHADERS_MSL_BOOLEAN, HAVE_METAL_SHADERS);
custom_shaders = true;
}
if (!custom_shaders) {
SDL_SetBooleanProperty(props, SDL_PROP_GPU_DEVICE_CREATE_SHADERS_SPIRV_BOOLEAN, HAVE_SPIRV_SHADERS);
SDL_SetBooleanProperty(props, SDL_PROP_GPU_DEVICE_CREATE_SHADERS_DXIL_BOOLEAN, HAVE_DXIL60_SHADERS);
SDL_SetBooleanProperty(props, SDL_PROP_GPU_DEVICE_CREATE_SHADERS_MSL_BOOLEAN, HAVE_METAL_SHADERS);
}
}
#endif // SDL_VIDEO_RENDER_GPU

View File

@@ -0,0 +1,65 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifndef SDL_shaders_gpu_h_
#define SDL_shaders_gpu_h_
#include "SDL_internal.h"
// SDL_GPU shader implementation
typedef enum
{
VERT_SHADER_INVALID = -1,
VERT_SHADER_LINEPOINT,
VERT_SHADER_TRI_COLOR,
VERT_SHADER_TRI_TEXTURE,
NUM_VERT_SHADERS,
} GPU_VertexShaderID;
typedef enum
{
FRAG_SHADER_INVALID = -1,
FRAG_SHADER_COLOR,
FRAG_SHADER_TEXTURE_RGB,
FRAG_SHADER_TEXTURE_RGBA,
FRAG_SHADER_TEXTURE_ADVANCED,
FRAG_SHADER_TEXTURE_CUSTOM,
NUM_FRAG_SHADERS,
} GPU_FragmentShaderID;
struct GPU_Shaders
{
SDL_GPUShader *vert_shaders[NUM_VERT_SHADERS];
SDL_GPUShader *frag_shaders[NUM_FRAG_SHADERS];
};
typedef struct GPU_Shaders GPU_Shaders;
void GPU_FillSupportedShaderFormats(SDL_PropertiesID props);
extern bool GPU_InitShaders(GPU_Shaders *shaders, SDL_GPUDevice *device);
extern void GPU_ReleaseShaders(GPU_Shaders *shaders, SDL_GPUDevice *device);
extern SDL_GPUShader *GPU_GetVertexShader(GPU_Shaders *shaders, GPU_VertexShaderID id);
extern SDL_GPUShader *GPU_GetFragmentShader(GPU_Shaders *shaders, GPU_FragmentShaderID id);
#endif // SDL_shaders_gpu_h_

View File

@@ -0,0 +1 @@
*.h linguist-generated

View File

@@ -0,0 +1,4 @@
*.hlsl
*.metal
*.spv
*.tmp.h

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -e
make-header() {
xxd -i "$1" | sed \
-e 's/^unsigned /const unsigned /g' \
-e 's,^const,static const,' \
> "$1.h"
}
# Requires shadercross CLI installed from SDL_shadercross
for filename in *.hlsl; do
if [ -f "$filename" ]; then
echo "$filename"
shadercross "$filename" -o "${filename/.hlsl/.spv}"
make-header "${filename/.hlsl/.spv}"
shadercross "$filename" -o "${filename/.hlsl/.msl}"
make-header "${filename/.hlsl/.msl}"
shadercross "$filename" -o "${filename/.hlsl/.dxil}"
make-header "${filename/.hlsl/.dxil}"
fi
done
rm -f *.spv *.msl *.dxil

View File

@@ -0,0 +1,283 @@
static const unsigned char color_frag_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0x14, 0xca, 0x57, 0x62, 0x73, 0xf9, 0xd9, 0x39,
0xf2, 0x3f, 0x7b, 0x7c, 0x48, 0x51, 0x30, 0xa5, 0x01, 0x00, 0x00, 0x00,
0x18, 0x0d, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00,
0x74, 0x01, 0x00, 0x00, 0x34, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
0x00, 0x00, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x00, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30, 0xa8, 0x00, 0x00, 0x00,
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58,
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00,
0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x53, 0x54, 0x41, 0x54, 0xb8, 0x05, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0x6e, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x58, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c,
0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18,
0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19,
0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0x6d, 0x8e, 0x20, 0x28,
0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20, 0xe0, 0x9c, 0x09, 0x7b, 0x88,
0x9f, 0x73, 0x1a, 0x69, 0x02, 0x9a, 0x49, 0x42, 0xc1, 0xa0, 0x99, 0x06,
0x04, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x65, 0x50, 0x08,
0xe5, 0x50, 0x12, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0x8a, 0xa0, 0x10,
0x0a, 0x84, 0xe6, 0x0c, 0x00, 0xd1, 0x19, 0x00, 0xaa, 0x63, 0x19, 0x04,
0x11, 0x08, 0x04, 0x02, 0x79, 0x18, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6,
0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c,
0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x88, 0x62, 0x82, 0x40, 0x18,
0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05, 0xb8, 0xb9, 0x09, 0x02,
0x71, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x50, 0x13, 0x1d, 0xba, 0x3c,
0xb8, 0xb2, 0xaf, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9,
0x09, 0x02, 0x81, 0x4c, 0x10, 0x88, 0x64, 0x03, 0x42, 0x28, 0x0b, 0x43,
0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00, 0x13, 0x84,
0x49, 0x62, 0x35, 0xf4, 0xe6, 0x36, 0x47, 0x17, 0xe6, 0x46, 0x37, 0xf7,
0x35, 0xf6, 0xc6, 0xf6, 0x26, 0xf7, 0x35, 0x37, 0x16, 0xc6, 0x56, 0x36,
0x41, 0x20, 0x94, 0x09, 0x02, 0xb1, 0x6c, 0x30, 0x10, 0x89, 0x21, 0x26,
0x6a, 0x83, 0xd0, 0x54, 0x1b, 0x06, 0x22, 0xb2, 0x26, 0x08, 0x02, 0xb0,
0x01, 0xd8, 0x30, 0x10, 0x59, 0xb6, 0x21, 0xd0, 0x36, 0x0c, 0x03, 0xb6,
0x4d, 0x10, 0x2a, 0x6a, 0x43, 0xd0, 0x91, 0x68, 0x0b, 0x4b, 0x73, 0x23,
0x42, 0x55, 0x84, 0x35, 0xf4, 0xf4, 0x24, 0x45, 0x34, 0x41, 0x28, 0x9a,
0x09, 0x42, 0xe1, 0x6c, 0x08, 0x88, 0x09, 0x42, 0xf1, 0x4c, 0x10, 0x0a,
0x68, 0x82, 0x40, 0x30, 0x1b, 0x04, 0xc6, 0x0c, 0x36, 0x2c, 0x04, 0x18,
0x84, 0x81, 0x18, 0x8c, 0x01, 0x19, 0x0c, 0x65, 0x40, 0x88, 0xc1, 0x19,
0x6c, 0x08, 0xd0, 0x80, 0xc9, 0x94, 0xd5, 0x17, 0x55, 0x98, 0xdc, 0x59,
0x19, 0xdd, 0x04, 0xa1, 0x88, 0x36, 0x2c, 0x84, 0x1a, 0x84, 0xc1, 0x1a,
0x8c, 0x81, 0x18, 0x0c, 0x65, 0x40, 0x88, 0xc1, 0x19, 0x6c, 0x08, 0xd8,
0x60, 0xc3, 0x90, 0x06, 0x6d, 0x00, 0x6c, 0x28, 0xb0, 0xcf, 0x0d, 0x20,
0x80, 0x86, 0x19, 0xdb, 0x5b, 0x18, 0xdd, 0x1c, 0x8b, 0x34, 0xb7, 0x39,
0xba, 0x39, 0x1a, 0x73, 0x69, 0x67, 0x5f, 0x6c, 0x64, 0x34, 0xe6, 0xd2,
0xce, 0xbe, 0xe6, 0xe8, 0x36, 0x20, 0x70, 0xc0, 0xc4, 0x81, 0x19, 0xc8,
0x41, 0x33, 0x07, 0x4d, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2,
0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c,
0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1,
0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c,
0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6,
0x04, 0x48, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9,
0xb1, 0xb2, 0xb9, 0x29, 0xc1, 0x53, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f,
0xae, 0x2c, 0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d,
0x6e, 0x8a, 0x60, 0x6d, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee,
0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x5d, 0x1d, 0x32,
0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba,
0xb9, 0x29, 0x81, 0x1b, 0x74, 0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73,
0xa3, 0x2b, 0x93, 0x9b, 0x9b, 0x12, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x04, 0xd2, 0x70, 0xf9, 0xce,
0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10, 0x0c,
0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0xf9, 0x83, 0x7e,
0x3a, 0x8a, 0x94, 0x7f, 0x05, 0xc4, 0x15, 0xe1, 0x35, 0x35, 0x42, 0x4f,
0x44, 0x58, 0x49, 0x4c, 0xc0, 0x05, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0x70, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0xa8, 0x05, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x58, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c,
0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18,
0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19,
0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0x6d, 0x8e, 0x20, 0x28,
0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20, 0xe0, 0x9c, 0x09, 0x7b, 0x88,
0x9f, 0x73, 0x1a, 0x69, 0x02, 0x9a, 0x49, 0x42, 0xc1, 0xa0, 0x99, 0x06,
0x04, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x12, 0xc5, 0x50, 0x06,
0x85, 0x50, 0x1e, 0x54, 0x4a, 0x62, 0x04, 0xa0, 0x08, 0x0a, 0xa1, 0x40,
0x88, 0xce, 0x00, 0x50, 0x1d, 0xcb, 0x20, 0x88, 0x40, 0x20, 0x10, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04,
0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x88, 0x62, 0x82, 0x40, 0x18, 0x1b, 0x84, 0x81, 0x98,
0x20, 0x10, 0xc7, 0x06, 0x61, 0x30, 0x28, 0xc0, 0xcd, 0x4d, 0x10, 0x08,
0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x81, 0x8a, 0x08, 0x4c, 0x10, 0x88,
0x64, 0x82, 0x40, 0x28, 0x1b, 0x10, 0x62, 0x61, 0x1a, 0x62, 0x70, 0x80,
0x0d, 0xc1, 0xb3, 0x81, 0x00, 0x00, 0x08, 0x98, 0x20, 0x54, 0xd2, 0x86,
0x40, 0x9a, 0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34, 0x37, 0x22, 0x54,
0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0x82, 0x99, 0x20,
0x14, 0xcd, 0x86, 0x80, 0x98, 0x20, 0x14, 0xce, 0x04, 0xa1, 0x78, 0x26,
0x08, 0xc4, 0xb2, 0x41, 0x68, 0xb8, 0x0d, 0x0b, 0x61, 0x5d, 0x58, 0xa6,
0x0d, 0x1b, 0x81, 0x75, 0x1b, 0x02, 0x8f, 0xc9, 0x94, 0xd5, 0x17, 0x55,
0x98, 0xdc, 0x59, 0x19, 0xdd, 0x04, 0xa1, 0x80, 0x36, 0x2c, 0x04, 0x18,
0x5c, 0x61, 0x90, 0x61, 0xc3, 0x46, 0x60, 0xdd, 0x86, 0x40, 0x0c, 0x36,
0x0c, 0xdf, 0x18, 0x00, 0x1b, 0x0a, 0xaa, 0x22, 0x83, 0x08, 0xa8, 0xc2,
0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08,
0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d,
0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72,
0x53, 0x02, 0xa3, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99,
0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x20, 0x29, 0x43, 0x86, 0xe7,
0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0x80,
0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1,
0x85, 0xd1, 0x95, 0x4d, 0x09, 0xa4, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e,
0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x32,
0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x04,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
0x29, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x44, 0x66, 0x00, 0x4a, 0xa1, 0xe4, 0xca, 0x8e,
0x4a, 0x09, 0x94, 0x01, 0xbd, 0x11, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
0x82, 0x60, 0x00, 0x59, 0x05, 0x43, 0x51, 0xc1, 0x88, 0x41, 0x02, 0x80,
0x20, 0x18, 0x18, 0x5a, 0x54, 0x55, 0x0e, 0x32, 0x62, 0x90, 0x00, 0x20,
0x08, 0x06, 0xc6, 0x26, 0x59, 0x56, 0x91, 0x8c, 0x18, 0x24, 0x00, 0x08,
0x82, 0x81, 0xc1, 0x4d, 0xd7, 0xf5, 0x28, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x60, 0x74, 0x14, 0x86, 0x19, 0xcb, 0x88, 0xc1, 0x01, 0x80, 0x20,
0x18, 0x34, 0x5c, 0x52, 0x64, 0xa3, 0x09, 0x01, 0x60, 0x81, 0x21, 0x1f,
0x13, 0x0c, 0xf9, 0xd8, 0x60, 0xc8, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10,
0x0c, 0x10, 0x31, 0x80, 0x3c, 0xef, 0x1a, 0x46, 0x0c, 0x12, 0x00, 0x04,
0xc1, 0x00, 0x11, 0x03, 0xc8, 0xf3, 0x1a, 0x61, 0xc4, 0x20, 0x01, 0x40,
0x10, 0x0c, 0x10, 0x31, 0x80, 0x3c, 0xcf, 0x0a, 0x46, 0x0c, 0x12, 0x00,
0x04, 0xc1, 0x00, 0x11, 0x03, 0xc8, 0xf3, 0x18, 0x03, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
static const unsigned int color_frag_dxil_len = 3352;

View File

@@ -0,0 +1,54 @@
static const unsigned char color_frag_msl[] = {
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65,
0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a,
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69,
0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a,
0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x0a, 0x7b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f,
0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x7d,
0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x20, 0x3d,
0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20,
0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x53, 0x56, 0x5f, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30,
0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x20, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f,
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65,
0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a,
0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d,
0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69,
0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65,
0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x26, 0x20, 0x43, 0x6f, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x74, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66,
0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74,
0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32,
0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x31,
0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63,
0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x32, 0x34, 0x2e, 0x78, 0x2c, 0x20,
0x5f, 0x32, 0x34, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x2e, 0x7a,
0x2c, 0x20, 0x5f, 0x31, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x5f, 0x32, 0x35, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e,
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f,
0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x53, 0x56, 0x5f, 0x54, 0x61,
0x72, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x35, 0x20, 0x2a,
0x20, 0x69, 0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43,
0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d,
0x0a, 0x0a
};
static const unsigned int color_frag_msl_len = 602;

View File

@@ -0,0 +1,70 @@
static const unsigned char color_frag_spv[] = {
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00,
0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00,
0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
0x05, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
0x04, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x05, 0x00, 0x05, 0x00,
0x05, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00,
0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52,
0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x03, 0x00, 0x00, 0x00,
0x6f, 0x75, 0x74, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x53, 0x56, 0x5f, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x05, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f, 0x17, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00,
0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x21, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x17, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00,
0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00,
0x08, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00,
0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
0x16, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
0x4f, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x52, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x85, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
0x1a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
0x03, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00,
0x38, 0x00, 0x01, 0x00
};
static const unsigned int color_frag_spv_len = 796;

View File

@@ -0,0 +1,10 @@
float4 GetOutputColor(float4 rgba)
{
float4 output;
output.rgb = rgba.rgb * color_scale;
output.a = rgba.a;
return output;
}

7
thirdparty/SDL3-3.4.0/src/render/gpu/shaders/dxil.h generated vendored Normal file
View File

@@ -0,0 +1,7 @@
#include "color.frag.dxil.h"
#include "linepoint.vert.dxil.h"
#include "texture_advanced.frag.dxil.h"
#include "texture_rgb.frag.dxil.h"
#include "texture_rgba.frag.dxil.h"
#include "tri_color.vert.dxil.h"
#include "tri_texture.vert.dxil.h"

View File

@@ -0,0 +1,330 @@
static const unsigned char linepoint_vert_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0x0f, 0xc0, 0xaa, 0x7e, 0x88, 0xff, 0x08, 0x33,
0xbd, 0x51, 0xad, 0x10, 0xb9, 0x90, 0xb1, 0x72, 0x01, 0x00, 0x00, 0x00,
0x54, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
0x08, 0x02, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x50, 0x08, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x54, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43,
0x4f, 0x4f, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30,
0xf0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54, 0x45,
0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f,
0x4f, 0x52, 0x44, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00,
0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x24, 0x06, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0x89, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0xbb,
0x0e, 0x47, 0x9a, 0x16, 0x00, 0x73, 0xa8, 0xc9, 0x9f, 0xb0, 0x87, 0xf8,
0x39, 0xa7, 0x99, 0x88, 0x6b, 0x42, 0x81, 0xa5, 0x9b, 0x0a, 0x04, 0x00,
0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50, 0x04, 0x85, 0x50, 0x06,
0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x65, 0x45, 0xa5, 0x24, 0x46, 0x00,
0x8a, 0xa0, 0x10, 0xca, 0x80, 0xee, 0x0c, 0x00, 0xe1, 0x19, 0x00, 0xca,
0x63, 0x29, 0x08, 0x02, 0x1f, 0xf0, 0x01, 0x00, 0x81, 0x40, 0x20, 0x00,
0x79, 0x18, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04,
0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8,
0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e,
0x84, 0x98, 0x20, 0x60, 0x18, 0x19, 0xba, 0x3c, 0xb8, 0xb2, 0xaf, 0xa1,
0x37, 0x37, 0xba, 0x32, 0x3c, 0xba, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08,
0x65, 0x19, 0x88, 0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c,
0x60, 0x82, 0x70, 0x5d, 0x5c, 0x86, 0xde, 0xdc, 0xe8, 0xca, 0xf0, 0xe8,
0xbe, 0xda, 0xec, 0xe0, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d,
0xc3, 0x34, 0x49, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81,
0x70, 0x36, 0x20, 0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04, 0x06,
0xdb, 0x30, 0x10, 0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86, 0x81,
0xe0, 0xb8, 0x0d, 0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90, 0x65,
0x1b, 0x02, 0x30, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0x46, 0x84, 0xaa, 0x08,
0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x48, 0x13, 0x84, 0x62,
0xda, 0x10, 0x10, 0x13, 0x84, 0x82, 0xda, 0x20, 0x54, 0xd5, 0x86, 0x85,
0x18, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88, 0x32,
0x40, 0x83, 0x0d, 0xc1, 0x30, 0x41, 0x28, 0xaa, 0x09, 0x02, 0xf1, 0x6c,
0x10, 0x2a, 0x36, 0xd8, 0xb0, 0x0c, 0x63, 0x40, 0x06, 0x65, 0xa0, 0x06,
0x65, 0x30, 0xac, 0xc1, 0x50, 0x06, 0x6d, 0xb0, 0x41, 0x48, 0x03, 0x37,
0xd8, 0xb0, 0x10, 0x63, 0x40, 0x06, 0x65, 0x60, 0x06, 0x67, 0x30, 0xac,
0x01, 0x51, 0x06, 0x6d, 0xc0, 0x65, 0xca, 0xea, 0x0b, 0xea, 0x6d, 0x2e,
0x8d, 0x2e, 0xed, 0xcd, 0x6d, 0x82, 0x50, 0x58, 0x1b, 0x96, 0x21, 0x0e,
0xc8, 0x40, 0x0e, 0xcc, 0x60, 0x0d, 0x86, 0x35, 0x18, 0xca, 0xa0, 0x0d,
0x36, 0x08, 0x70, 0x30, 0x07, 0x1b, 0x86, 0x37, 0xa0, 0x03, 0x60, 0x43,
0xb1, 0x89, 0x41, 0x1d, 0x3c, 0x00, 0x0d, 0x33, 0xb6, 0xb7, 0x30, 0xba,
0xb9, 0x09, 0x02, 0x01, 0xb1, 0x48, 0x73, 0x9b, 0xa3, 0x9b, 0x9b, 0x20,
0x10, 0x11, 0x8d, 0xb9, 0xb4, 0xb3, 0x2f, 0x36, 0x32, 0x1a, 0x73, 0x69,
0x67, 0x5f, 0x73, 0x74, 0x1b, 0x90, 0x3b, 0xc0, 0x83, 0x3c, 0xd0, 0x83,
0x3d, 0x40, 0xf8, 0x00, 0x0f, 0xaa, 0xb0, 0xb1, 0xd9, 0xb5, 0xb9, 0xa4,
0x91, 0x95, 0xb9, 0xd1, 0x4d, 0x09, 0x82, 0x2a, 0x64, 0x78, 0x2e, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x02, 0xa2, 0x09, 0x19, 0x9e,
0x8b, 0x5d, 0x18, 0x9b, 0x5d, 0x99, 0xdc, 0x94, 0xa0, 0xa8, 0x43, 0x86,
0xe7, 0x32, 0x87, 0x16, 0x46, 0x56, 0x26, 0xd7, 0xf4, 0x46, 0x56, 0xc6,
0x36, 0x25, 0x40, 0xca, 0x90, 0xe1, 0xb9, 0xc8, 0x95, 0xcd, 0xbd, 0xd5,
0xc9, 0x8d, 0x95, 0xcd, 0x4d, 0x09, 0x9c, 0x4a, 0x64, 0x78, 0x2e, 0x74,
0x79, 0x70, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x53, 0x84, 0xcc, 0xab, 0x43, 0x86, 0xe7, 0x62, 0x97, 0x56,
0x76, 0x97, 0x44, 0x36, 0x45, 0x17, 0x46, 0x57, 0x36, 0x25, 0x00, 0x83,
0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69,
0x6e, 0x74, 0x73, 0x53, 0x82, 0x3a, 0xe8, 0x42, 0x86, 0xe7, 0x32, 0xf6,
0x56, 0xe7, 0x46, 0x57, 0x26, 0x37, 0x37, 0x25, 0xe0, 0x03, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce,
0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3,
0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7,
0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x65, 0x07, 0xd2, 0xb7, 0x7b, 0x5a, 0xf4, 0xe5, 0xba, 0x7a, 0xd1, 0x9a,
0x0e, 0x0b, 0x0d, 0x19, 0x44, 0x58, 0x49, 0x4c, 0xfc, 0x06, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe4, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0xbb,
0x0e, 0x47, 0x9a, 0x16, 0x00, 0x73, 0xa8, 0xc9, 0x9f, 0xb0, 0x87, 0xf8,
0x39, 0xa7, 0x99, 0x88, 0x6b, 0x42, 0x81, 0xa5, 0x9b, 0x0a, 0x04, 0x00,
0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x16, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x25, 0x30, 0x02, 0x50, 0x12, 0xc5, 0x50, 0x80, 0x01, 0x65, 0x50, 0x1e,
0x54, 0x4a, 0x62, 0x04, 0xa0, 0x08, 0x0a, 0xa1, 0x0c, 0x08, 0xcf, 0x00,
0x50, 0x1e, 0x4b, 0x41, 0x10, 0xf8, 0x80, 0x0f, 0x00, 0x08, 0x04, 0x02,
0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00,
0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6,
0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c,
0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8,
0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x93,
0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c, 0xcc, 0x40, 0x0c, 0x0d,
0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x6c, 0xda,
0x10, 0x44, 0x13, 0x04, 0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0x46, 0x84,
0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x34, 0x13,
0x84, 0xc2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0xe2, 0x99, 0x20, 0x10, 0xcb,
0x06, 0x41, 0xd3, 0x36, 0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4,
0xb5, 0x6d, 0x08, 0x86, 0x09, 0x42, 0x01, 0x4d, 0x10, 0x08, 0x66, 0x83,
0xa0, 0x7d, 0x1b, 0x96, 0xa1, 0xb2, 0xae, 0xee, 0x1a, 0xbc, 0xe1, 0x02,
0x83, 0x0d, 0x02, 0x17, 0x06, 0x1b, 0x16, 0xa2, 0xb2, 0x2e, 0x2c, 0x1b,
0x3c, 0xe2, 0x02, 0x03, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x22, 0xda, 0xb0, 0x0c, 0x64, 0x60,
0x95, 0x01, 0xe6, 0x0d, 0xde, 0x70, 0x81, 0xc1, 0x06, 0x61, 0x0c, 0xcc,
0x60, 0xc3, 0x20, 0x06, 0x67, 0x00, 0x6c, 0x28, 0x26, 0x0a, 0x0d, 0x20,
0xa0, 0x0a, 0x1b, 0x9b, 0x5d, 0x9b, 0x4b, 0x1a, 0x59, 0x99, 0x1b, 0xdd,
0x94, 0x20, 0xa8, 0x42, 0x86, 0xe7, 0x62, 0x57, 0x26, 0x37, 0x97, 0xf6,
0xe6, 0x36, 0x25, 0x20, 0x9a, 0x90, 0xe1, 0xb9, 0xd8, 0x85, 0xb1, 0xd9,
0x95, 0xc9, 0x4d, 0x09, 0x8c, 0x3a, 0x64, 0x78, 0x2e, 0x73, 0x68, 0x61,
0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x82, 0xa4, 0x0c,
0x19, 0x9e, 0x8b, 0x5c, 0xd9, 0xdc, 0x5b, 0x9d, 0xdc, 0x58, 0xd9, 0xdc,
0x94, 0xe0, 0xa9, 0x43, 0x86, 0xe7, 0x62, 0x97, 0x56, 0x76, 0x97, 0x44,
0x36, 0x45, 0x17, 0x46, 0x57, 0x36, 0x25, 0x88, 0xea, 0x90, 0xe1, 0xb9,
0x94, 0xb9, 0xd1, 0xc9, 0xe5, 0x41, 0xbd, 0xa5, 0xb9, 0xd1, 0xcd, 0x4d,
0x09, 0xd0, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00,
0x61, 0x20, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c,
0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x44, 0x4a, 0xa1, 0x10,
0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01,
0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x5d,
0x43, 0x53, 0x55, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x1c,
0x72, 0x59, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x97,
0x60, 0x17, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xe1, 0x29,
0x19, 0x06, 0x25, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x7c, 0x8b,
0x96, 0x3d, 0xca, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x60, 0xc0,
0x68, 0xda, 0xb4, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x11, 0x06,
0xcd, 0xb6, 0x21, 0xcc, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x60,
0xb0, 0x1c, 0xdc, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2,
0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34,
0x65, 0x00, 0x31, 0x62, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30,
0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08,
0x06, 0x8d, 0x1a, 0x54, 0x91, 0x18, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x98, 0x13, 0xc9, 0x67,
0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x37, 0xe0, 0x94, 0x28, 0x30,
0x23, 0x80, 0x8e, 0x41, 0x94, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1,
0xe0, 0x91, 0x83, 0x8f, 0xa1, 0x02, 0x0b, 0x10, 0xe8, 0x98, 0x74, 0xc9,
0x67, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x3a, 0x10, 0x03, 0xe7,
0x0a, 0x2c, 0x50, 0xa0, 0x63, 0x94, 0x26, 0x9f, 0x11, 0x03, 0x04, 0x00,
0x41, 0x30, 0x78, 0xf0, 0xa0, 0x0c, 0x20, 0x2d, 0xb0, 0x80, 0x81, 0xce,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7c, 0xa0, 0x06, 0x77, 0x70,
0x07, 0x70, 0x10, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xf0,
0x81, 0x1a, 0xdc, 0xc1, 0x1d, 0x90, 0x01, 0x18, 0x8c, 0x18, 0x24, 0x00,
0x08, 0x82, 0x01, 0xc2, 0x07, 0x6a, 0x70, 0x07, 0x77, 0xf0, 0x06, 0xdf,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7c, 0xa0, 0x06, 0x77, 0x70,
0x07, 0x6d, 0xe0, 0x8d, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0xc2, 0x07,
0x6a, 0x80, 0x07, 0x77, 0x00, 0x07, 0xca, 0x88, 0x41, 0x02, 0x80, 0x20,
0x18, 0x20, 0x7c, 0xa0, 0x06, 0x78, 0x70, 0x07, 0x64, 0x70, 0x8c, 0x18,
0x24, 0x00, 0x08, 0x82, 0x01, 0xc2, 0x07, 0x6a, 0x80, 0x07, 0x77, 0xf0,
0x06, 0xc4, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7c, 0xa0, 0x06,
0x78, 0x70, 0x07, 0x6d, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned int linepoint_vert_dxil_len = 3924;

View File

@@ -0,0 +1,58 @@
static const unsigned char linepoint_vert_msl[] = {
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65,
0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a,
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69,
0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a,
0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x6d,
0x76, 0x70, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75,
0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74,
0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x34, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f,
0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28,
0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f,
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70,
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f,
0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x5b, 0x5b,
0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5d, 0x5d,
0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x69,
0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49,
0x4f, 0x4e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x69, 0x6e, 0x5f, 0x76,
0x61, 0x72, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29,
0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74,
0x65, 0x78, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30,
0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61,
0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x26, 0x20, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f,
0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72,
0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e,
0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f, 0x4c, 0x4f,
0x52, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e,
0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x3d, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x6d, 0x76,
0x70, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69,
0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x50, 0x4f, 0x53,
0x49, 0x54, 0x49, 0x4f, 0x4e, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20,
0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75,
0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x69,
0x7a, 0x65, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74,
0x3b, 0x0a, 0x7d, 0x0a, 0x0a
};
static const unsigned int linepoint_vert_msl_len = 653;

View File

@@ -0,0 +1,86 @@
static const unsigned char linepoint_vert_spv[] = {
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00,
0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
0x05, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
0x07, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x76, 0x70, 0x00,
0x05, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00,
0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x50, 0x4f, 0x53, 0x49, 0x54,
0x49, 0x4f, 0x4e, 0x00, 0x05, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00,
0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52,
0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00,
0x6f, 0x75, 0x74, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f,
0x52, 0x30, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x05, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x08, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00,
0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00,
0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
0x16, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00,
0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x17, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x1b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x1f, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
};
static const unsigned int linepoint_vert_spv_len = 992;

7
thirdparty/SDL3-3.4.0/src/render/gpu/shaders/msl.h generated vendored Normal file
View File

@@ -0,0 +1,7 @@
#include "color.frag.msl.h"
#include "linepoint.vert.msl.h"
#include "texture_advanced.frag.msl.h"
#include "texture_rgb.frag.msl.h"
#include "texture_rgba.frag.msl.h"
#include "tri_color.vert.msl.h"
#include "tri_texture.vert.msl.h"

View File

@@ -0,0 +1,7 @@
#include "color.frag.spv.h"
#include "linepoint.vert.spv.h"
#include "texture_advanced.frag.spv.h"
#include "texture_rgb.frag.spv.h"
#include "texture_rgba.frag.spv.h"
#include "tri_color.vert.spv.h"
#include "tri_texture.vert.spv.h"

View File

@@ -0,0 +1,919 @@
static const unsigned char texture_advanced_frag_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0xd4, 0xfc, 0x30, 0x59, 0xc7, 0xf8, 0xb0, 0x68,
0x13, 0xf8, 0xe2, 0x91, 0x10, 0x66, 0x8d, 0xcf, 0x01, 0x00, 0x00, 0x00,
0xf0, 0x2a, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00,
0x38, 0x02, 0x00, 0x00, 0x80, 0x0c, 0x00, 0x00, 0x9c, 0x0c, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x54, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00,
0x50, 0x53, 0x56, 0x30, 0x4c, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x6d,
0x61, 0x69, 0x6e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00,
0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x40, 0x0a, 0x00, 0x00,
0x60, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x28, 0x0a, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00,
0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84,
0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c,
0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xa4, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a,
0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40, 0x10,
0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4, 0xa6,
0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98, 0xfc,
0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70, 0xf9,
0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58, 0x0a,
0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d, 0x19,
0x06, 0x62, 0xa0, 0xa7, 0x10, 0x03, 0x31, 0x0c, 0x14, 0x15, 0x49, 0x21,
0x18, 0x66, 0x18, 0x86, 0x81, 0x20, 0x88, 0x61, 0x18, 0x86, 0x61, 0x18,
0x68, 0x2a, 0xc8, 0x40, 0x0c, 0xc3, 0x30, 0x0c, 0x03, 0x55, 0x47, 0x0d,
0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0xdc, 0x46, 0x15, 0x2b, 0x31, 0xf9,
0xc5, 0x6d, 0x23, 0x62, 0x18, 0x86, 0xa1, 0x10, 0x17, 0xc1, 0x10, 0x84,
0x95, 0x62, 0x20, 0x86, 0x61, 0x20, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x43,
0x14, 0x04, 0xc1, 0x51, 0x37, 0x10, 0x30, 0x8c, 0x40, 0x0c, 0x33, 0xb5,
0xc1, 0x38, 0xb0, 0x43, 0x38, 0xcc, 0xc3, 0x3c, 0xb8, 0x01, 0x2d, 0x94,
0x03, 0x3e, 0xd0, 0x43, 0x3d, 0xc8, 0x43, 0x39, 0xc8, 0x01, 0x29, 0xf0,
0x81, 0x3d, 0x94, 0xc3, 0x38, 0xd0, 0xc3, 0x3b, 0xc8, 0x03, 0x1f, 0x98,
0x03, 0x3b, 0xbc, 0x43, 0x38, 0xd0, 0x03, 0x1b, 0x80, 0x01, 0x1d, 0xf8,
0x01, 0x18, 0xf8, 0x81, 0x1e, 0xe8, 0x41, 0x3b, 0xa4, 0x03, 0x3c, 0xcc,
0xc3, 0x2f, 0xd0, 0x43, 0x3e, 0xc0, 0x43, 0x39, 0xa0, 0x80, 0x98, 0x49,
0x0c, 0xc6, 0x81, 0x1d, 0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1,
0x1c, 0xf0, 0x81, 0x1e, 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81,
0x0f, 0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0,
0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0,
0x0f, 0xc0, 0xc0, 0x0f, 0x90, 0x00, 0x86, 0x24, 0x9e, 0x33, 0x61, 0x0f,
0xf1, 0x73, 0x4e, 0x23, 0x4d, 0x40, 0x33, 0x49, 0xa8, 0x19, 0x86, 0x61,
0x00, 0x87, 0x61, 0x18, 0x40, 0x10, 0x04, 0x89, 0xbc, 0x49, 0x9a, 0x22,
0x4a, 0x98, 0x7c, 0x16, 0x60, 0x9e, 0x85, 0x88, 0xd8, 0x09, 0x98, 0x08,
0x14, 0x10, 0x64, 0x26, 0x02, 0x01, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02,
0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4f,
0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
0x1e, 0x0c, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x86, 0x3c, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0c, 0x79, 0x3a, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc8, 0x02, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24,
0xca, 0xa0, 0xc0, 0x03, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4,
0x34, 0x0a, 0xa8, 0x90, 0x0a, 0xaa, 0xb0, 0x0a, 0xac, 0x00, 0x03, 0x0a,
0x34, 0xa0, 0x80, 0x03, 0xca, 0xa3, 0x84, 0x4a, 0xf3, 0xa0, 0x50, 0x19,
0xca, 0x86, 0x8a, 0x92, 0x18, 0x01, 0x28, 0x82, 0x42, 0x28, 0x10, 0xe2,
0x6a, 0x80, 0xc6, 0x19, 0x00, 0x22, 0x67, 0x00, 0xa8, 0x9c, 0x01, 0xa0,
0x73, 0x06, 0x80, 0xd0, 0xb1, 0x10, 0x83, 0x08, 0x04, 0x02, 0x79, 0x1e,
0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6,
0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c,
0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x88, 0x65, 0x82, 0x40, 0x30,
0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05, 0xb8, 0xb9, 0x09, 0x02,
0xd1, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x8c, 0xc1, 0x1a, 0x10, 0xa1,
0x2b, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0x83, 0x99, 0x20, 0x10, 0xce, 0x04,
0x81, 0x78, 0x36, 0x08, 0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x21, 0x06,
0x86, 0x70, 0x88, 0xd0, 0x95, 0xe1, 0xd1, 0xd5, 0xc9, 0x95, 0xc5, 0x6c,
0x48, 0x06, 0x05, 0x62, 0x86, 0x81, 0x21, 0x1c, 0x22, 0x74, 0x65, 0x78,
0x74, 0x75, 0x72, 0x65, 0x32, 0x1b, 0x12, 0x46, 0x91, 0x18, 0x66, 0x60,
0x08, 0x67, 0xc3, 0xf0, 0x44, 0xd3, 0x04, 0xa1, 0x0c, 0xda, 0x80, 0x0e,
0x5d, 0x1e, 0x5c, 0xd9, 0xd7, 0xd0, 0x9b, 0xdb, 0x1c, 0x5d, 0x98, 0x1b,
0xdd, 0xdc, 0x04, 0x81, 0x80, 0x26, 0x08, 0x44, 0xb4, 0x01, 0x21, 0x2a,
0xeb, 0x22, 0x06, 0x0c, 0xd8, 0x10, 0x64, 0x13, 0x84, 0x33, 0x70, 0x03,
0x22, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x30, 0x1b, 0x10, 0x62,
0xe3, 0x18, 0x62, 0x20, 0x00, 0x22, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x72, 0x31, 0x1b, 0x90, 0x61, 0xf3, 0x98, 0x61, 0x20, 0x80, 0x0d, 0x42,
0xf7, 0x6d, 0x20, 0x28, 0x40, 0x03, 0x83, 0x09, 0x02, 0x19, 0xb0, 0x01,
0xad, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9, 0xaf, 0xb9,
0x31, 0xa9, 0x23, 0xa1, 0xaf, 0xb7, 0x3a, 0x3a, 0xb8, 0x3a, 0xba, 0x09,
0x02, 0x21, 0x4d, 0x10, 0x38, 0x35, 0xd8, 0x80, 0x20, 0x63, 0x70, 0x11,
0x64, 0xd0, 0x34, 0x65, 0x40, 0x6b, 0xe8, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc,
0x8d, 0x6e, 0xee, 0x8b, 0xae, 0x0c, 0x8f, 0xae, 0x4e, 0xae, 0xec, 0x8b,
0x2e, 0x0f, 0xae, 0x6c, 0x82, 0x40, 0x4c, 0x1b, 0x10, 0xe4, 0x0c, 0x2e,
0x34, 0x20, 0x83, 0xa6, 0x29, 0x03, 0x52, 0x43, 0x6f, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x13, 0x04, 0x82, 0xda, 0x80, 0x20, 0x6a, 0x70, 0xad,
0x01, 0x19, 0x34, 0x4d, 0x19, 0xb0, 0x1a, 0x7a, 0x73, 0x9b, 0xa3, 0x0b,
0x73, 0xa3, 0x9b, 0xfb, 0x1a, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a, 0x1b,
0x0b, 0x63, 0x2b, 0x9b, 0x20, 0x10, 0xd5, 0x06, 0x04, 0x69, 0x83, 0xcb,
0x0d, 0xc8, 0xa0, 0x69, 0xca, 0x80, 0xd4, 0xd0, 0x9b, 0xdb, 0x1c, 0x5d,
0x98, 0x1b, 0xdd, 0xdc, 0x17, 0x5d, 0x19, 0x5e, 0x19, 0xdb, 0xd7, 0x5c,
0x9a, 0x5e, 0xd9, 0x04, 0x81, 0xb0, 0x26, 0x08, 0xc4, 0xb5, 0x41, 0x41,
0xe0, 0xe0, 0x8a, 0x03, 0x32, 0x68, 0x9a, 0x32, 0x90, 0x03, 0x34, 0x20,
0x36, 0xf4, 0xe6, 0x36, 0x47, 0x17, 0xe6, 0x46, 0x37, 0xf7, 0x45, 0xf7,
0xe6, 0x56, 0xd6, 0x16, 0x06, 0xf7, 0xd5, 0x56, 0x46, 0x87, 0xf6, 0x46,
0x36, 0x41, 0x20, 0xb0, 0x0d, 0x08, 0x42, 0x07, 0x57, 0x1d, 0x90, 0x41,
0xd3, 0x94, 0x01, 0xb3, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba,
0xb9, 0x2f, 0xba, 0x37, 0xb7, 0xb2, 0xb6, 0x30, 0xb8, 0x2f, 0xb3, 0xb0,
0x31, 0xba, 0x37, 0xb9, 0x98, 0x09, 0x02, 0x91, 0x6d, 0x40, 0x90, 0x3b,
0xb8, 0xf0, 0x80, 0x0c, 0x9a, 0xa6, 0x0c, 0x98, 0x0d, 0xbd, 0xb9, 0xcd,
0xd1, 0x85, 0xb9, 0xd1, 0xcd, 0x7d, 0xd1, 0xbd, 0xb9, 0x95, 0xb5, 0x85,
0xc1, 0x7d, 0x99, 0x85, 0x8d, 0xd1, 0xbd, 0xc9, 0xc9, 0x4c, 0x10, 0x08,
0x6d, 0x03, 0x82, 0xe8, 0xc1, 0xb5, 0x07, 0x64, 0xd0, 0x34, 0x65, 0xc0,
0x6c, 0xe8, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0xee, 0x6b, 0x8e,
0x4c, 0xee, 0xeb, 0x0e, 0x2d, 0x8d, 0xae, 0xec, 0x0b, 0xee, 0x2d, 0xcd,
0x8d, 0x6e, 0x82, 0x40, 0x6c, 0x1b, 0x10, 0xa4, 0x0f, 0x2e, 0x3f, 0x20,
0x83, 0xa6, 0x29, 0x03, 0x46, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x74, 0x73, 0x5f, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13, 0x04,
0x82, 0xdb, 0xa0, 0x20, 0xa0, 0x70, 0x85, 0x02, 0x19, 0x34, 0x4d, 0x19,
0xc8, 0x01, 0x1a, 0x10, 0x1a, 0x7a, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0xa3,
0x9b, 0xfb, 0x92, 0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xdd,
0x06, 0x05, 0x19, 0x85, 0x8b, 0x14, 0xc8, 0xa0, 0x69, 0xca, 0x40, 0x0e,
0xd0, 0x80, 0xd0, 0xd0, 0x9b, 0xdb, 0x1c, 0x5d, 0x98, 0x1b, 0xdd, 0xdc,
0xd7, 0xd1, 0xd8, 0x5b, 0x99, 0x99, 0xd9, 0x04, 0x81, 0xf0, 0x36, 0x28,
0x88, 0x29, 0x5c, 0xa7, 0x40, 0x06, 0x4d, 0x53, 0x06, 0x72, 0x80, 0x06,
0x84, 0x86, 0xde, 0xdc, 0xe6, 0xe8, 0xc2, 0xdc, 0xe8, 0xe6, 0xbe, 0x84,
0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0xc4, 0xb7, 0x41, 0x41, 0x52,
0xe1, 0x52, 0x05, 0x32, 0x68, 0x9a, 0x32, 0x90, 0x03, 0x34, 0xd8, 0xe0,
0x60, 0x66, 0x90, 0x06, 0x6c, 0xf0, 0x06, 0x73, 0x60, 0x07, 0x79, 0xc0,
0x07, 0x7f, 0x20, 0x0a, 0xa5, 0x80, 0x0a, 0xab, 0xb0, 0x61, 0x20, 0xc4,
0x80, 0x15, 0x26, 0x08, 0x02, 0xb0, 0x01, 0xd8, 0x30, 0x10, 0xaf, 0xf0,
0x0a, 0x1b, 0x02, 0x58, 0xd8, 0x30, 0x0c, 0xae, 0x10, 0x0b, 0x13, 0x04,
0x34, 0x78, 0x83, 0x0d, 0xc1, 0x2c, 0x90, 0x68, 0x0b, 0x4b, 0x73, 0x23,
0x42, 0x55, 0x84, 0x35, 0xf4, 0xf4, 0x24, 0x45, 0x34, 0x41, 0x28, 0xca,
0x60, 0x82, 0x50, 0x98, 0xc1, 0x86, 0x80, 0x98, 0x20, 0x14, 0x67, 0x30,
0x41, 0x28, 0xd0, 0x60, 0x82, 0x40, 0x80, 0xc1, 0x06, 0xe1, 0xe2, 0x85,
0x0d, 0x0b, 0x61, 0x0b, 0xb7, 0x80, 0x0b, 0xb9, 0xa0, 0x0b, 0xc3, 0x2e,
0x10, 0xb8, 0xd0, 0x0b, 0x1b, 0x82, 0x61, 0x83, 0x70, 0x5d, 0x1b, 0x96,
0xc1, 0x16, 0x6e, 0x01, 0x17, 0x7e, 0x41, 0x17, 0x06, 0x5d, 0x18, 0x70,
0x01, 0x1c, 0x36, 0x08, 0xbe, 0x10, 0x0e, 0x4c, 0xa6, 0xac, 0xbe, 0xa8,
0xc2, 0xe4, 0xce, 0xca, 0xe8, 0x26, 0x08, 0x45, 0x1a, 0x6c, 0x58, 0x88,
0x71, 0xb8, 0x05, 0x72, 0xc8, 0x05, 0x5c, 0x18, 0x76, 0x81, 0xc0, 0x85,
0x5e, 0xd8, 0x10, 0x94, 0xc3, 0x86, 0x41, 0x1c, 0xcc, 0x01, 0xd8, 0x50,
0xb8, 0x42, 0x2d, 0x9c, 0x43, 0x18, 0x00, 0x44, 0xc4, 0xe4, 0xc2, 0xdc,
0xc6, 0xd0, 0xca, 0xe6, 0x26, 0x08, 0x44, 0x18, 0xd0, 0x30, 0x63, 0x7b,
0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x62, 0xc0, 0x22, 0xcd, 0x6d, 0x8e,
0x6e, 0x6e, 0x82, 0x40, 0x8c, 0x01, 0x8d, 0xb9, 0xb4, 0xb3, 0x2f, 0x36,
0x32, 0x1a, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x44, 0xe8, 0xca, 0xf0,
0xbe, 0xce, 0xe4, 0xc2, 0xc8, 0x88, 0xd0, 0x95, 0xe1, 0x7d, 0xb9, 0xbd,
0xc9, 0xb5, 0x4d, 0x10, 0x08, 0x32, 0xd8, 0xe0, 0xa4, 0x83, 0x3a, 0xac,
0x03, 0x3b, 0xb4, 0x83, 0x3b, 0xbc, 0x03, 0x02, 0x0f, 0x68, 0x10, 0x0f,
0x8c, 0x3c, 0xcc, 0x43, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2,
0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c,
0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1,
0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c,
0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6,
0x04, 0x48, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9,
0xb1, 0xb2, 0xb9, 0x29, 0x01, 0x18, 0x54, 0x22, 0xc3, 0x73, 0xa1, 0xcb,
0x83, 0x2b, 0x0b, 0x72, 0x73, 0x7b, 0xa3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73,
0x9b, 0x9b, 0x22, 0xb0, 0x42, 0x2c, 0xd4, 0x21, 0xc3, 0x73, 0xb1, 0x4b,
0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0xcc,
0x42, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0xa8, 0xb7,
0x34, 0x37, 0xba, 0xb9, 0x29, 0xc1, 0x39, 0x74, 0x21, 0xc3, 0x73, 0x19,
0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b, 0x9b, 0x12, 0xcc, 0x03, 0x00,
0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x30, 0x83, 0x81,
0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d,
0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x2a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e, 0x80,
0x34, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0xc2, 0x36, 0x5c, 0xbe, 0xf3,
0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84, 0x01,
0x08, 0x98, 0x5f, 0xdc, 0xb6, 0x29, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f,
0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x07, 0xce, 0x70,
0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0, 0x34,
0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f,
0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3,
0x10, 0x7e, 0x71, 0xdb, 0x66, 0x40, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x04,
0x30, 0xcf, 0x42, 0x80, 0x11, 0x30, 0xf8, 0xc5, 0x6d, 0x9b, 0x40, 0x35,
0x5c, 0xbe, 0xf3, 0xf8, 0xd2, 0xe4, 0x44, 0x04, 0x4a, 0x4d, 0x0f, 0x35,
0xf9, 0xc5, 0x6d, 0x5b, 0x82, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x13, 0x11,
0x4d, 0x08, 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x46, 0xf0, 0x0c, 0x97, 0xef,
0x3c, 0x3e, 0xd5, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x04, 0x03,
0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x9d, 0xc5, 0xbc,
0x54, 0xca, 0x8e, 0x09, 0xf3, 0x58, 0x6e, 0x8b, 0x04, 0x4d, 0xdb, 0xb2,
0x44, 0x58, 0x49, 0x4c, 0x4c, 0x1e, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0x93, 0x07, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x34, 0x1e, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0x8a, 0x07, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09,
0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c,
0x10, 0xa8, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6, 0x08,
0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90, 0x51,
0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27, 0xec,
0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51, 0x31,
0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92,
0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c, 0x33,
0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d, 0x19, 0x06, 0x62, 0xa0, 0xa7,
0x10, 0x03, 0x31, 0x0c, 0x14, 0x15, 0x49, 0x21, 0x18, 0x66, 0x18, 0x86,
0x81, 0x20, 0x88, 0x61, 0x18, 0x86, 0x61, 0x18, 0x68, 0x2a, 0xc8, 0x40,
0x0c, 0xc3, 0x30, 0x0c, 0x03, 0x55, 0x47, 0x0d, 0x97, 0x3f, 0x61, 0x0f,
0x21, 0xf9, 0xdc, 0x46, 0x15, 0x2b, 0x31, 0xf9, 0xc5, 0x6d, 0x23, 0x62,
0x18, 0x86, 0xa1, 0x10, 0x17, 0xc1, 0x10, 0x84, 0x95, 0x62, 0x20, 0x86,
0x61, 0x20, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x43, 0x14, 0x04, 0xc1, 0x51,
0x37, 0x10, 0x30, 0x8c, 0x40, 0x0c, 0x33, 0xb5, 0xc1, 0x38, 0xb0, 0x43,
0x38, 0xcc, 0xc3, 0x3c, 0xb8, 0x01, 0x2d, 0x94, 0x03, 0x3e, 0xd0, 0x43,
0x3d, 0xc8, 0x43, 0x39, 0xc8, 0x01, 0x29, 0xf0, 0x81, 0x3d, 0x94, 0xc3,
0x38, 0xd0, 0xc3, 0x3b, 0xc8, 0x03, 0x1f, 0x98, 0x03, 0x3b, 0xbc, 0x43,
0x38, 0xd0, 0x03, 0x1b, 0x80, 0x01, 0x1d, 0xf8, 0x01, 0x18, 0xf8, 0x81,
0x1e, 0xe8, 0x41, 0x3b, 0xa4, 0x03, 0x3c, 0xcc, 0xc3, 0x2f, 0xd0, 0x43,
0x3e, 0xc0, 0x43, 0x39, 0xa0, 0x80, 0x98, 0x49, 0x0c, 0xc6, 0x81, 0x1d,
0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e,
0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c,
0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d,
0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f,
0x90, 0x00, 0x86, 0x24, 0x9e, 0x33, 0x61, 0x0f, 0xf1, 0x73, 0x4e, 0x23,
0x4d, 0x40, 0x33, 0x49, 0xa8, 0x19, 0x86, 0x61, 0x00, 0x87, 0x61, 0x18,
0x40, 0x10, 0x04, 0x89, 0xbc, 0x49, 0x9a, 0x22, 0x4a, 0x98, 0x7c, 0x16,
0x60, 0x9e, 0x85, 0x88, 0xd8, 0x09, 0x98, 0x08, 0x14, 0x10, 0x64, 0x26,
0x02, 0x31, 0x05, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4f, 0x05, 0x04, 0x40, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x80,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1a, 0x10,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x3a,
0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x02,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x4a, 0x60, 0x04, 0xa0, 0x24, 0x8a, 0xa1, 0x08, 0xca, 0xa0, 0xc0, 0x03,
0xca, 0x83, 0x8a, 0x92, 0x18, 0x01, 0x28, 0x82, 0x42, 0x28, 0x10, 0x1a,
0x67, 0x00, 0xa8, 0x9c, 0x01, 0xa0, 0x73, 0x06, 0x80, 0xd0, 0xb1, 0x10,
0x83, 0x08, 0x04, 0x02, 0x79, 0x1e, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x66, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45,
0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c,
0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x88,
0x65, 0x82, 0x40, 0x30, 0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xcd, 0x06,
0x61, 0x30, 0x28, 0xc0, 0xcd, 0x4d, 0x10, 0x08, 0x67, 0xc3, 0x80, 0x24,
0xc4, 0x04, 0x61, 0x0c, 0x30, 0x02, 0x13, 0x04, 0xe2, 0xd9, 0x20, 0x10,
0xc6, 0x86, 0x84, 0x58, 0x98, 0x86, 0x18, 0x1a, 0xc2, 0xd9, 0x90, 0x0c,
0x0b, 0xd3, 0x0c, 0x43, 0x43, 0x38, 0x1b, 0x92, 0x66, 0x61, 0x9a, 0x66,
0x68, 0x08, 0x67, 0xc3, 0xf0, 0x40, 0xd1, 0x04, 0xa1, 0x0c, 0xb2, 0x09,
0x02, 0x01, 0x4d, 0x10, 0x88, 0x68, 0x03, 0x42, 0x4c, 0x0c, 0x45, 0x0c,
0x15, 0xb0, 0x21, 0xb0, 0x26, 0x08, 0x67, 0xa0, 0x6d, 0x40, 0x08, 0x8c,
0x69, 0x88, 0x81, 0x00, 0x36, 0x20, 0x03, 0xc6, 0x34, 0xc3, 0x40, 0x00,
0x1b, 0x84, 0x4c, 0xdb, 0x40, 0x48, 0xc0, 0xb5, 0x4d, 0x10, 0xd0, 0x60,
0xdb, 0x10, 0x74, 0x13, 0x04, 0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0x46,
0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x4c,
0x13, 0x84, 0x82, 0xda, 0x10, 0x10, 0x13, 0x84, 0xa2, 0x9a, 0x20, 0x14,
0xd6, 0x04, 0x81, 0x90, 0x36, 0x08, 0xd4, 0x19, 0x6c, 0x58, 0x88, 0x30,
0x10, 0x83, 0x31, 0x20, 0x83, 0x32, 0x18, 0xcc, 0x80, 0x18, 0x03, 0x34,
0xd8, 0x10, 0x0c, 0x1b, 0x04, 0x8a, 0xda, 0xb0, 0x0c, 0x61, 0x20, 0x06,
0x63, 0xa0, 0x06, 0x65, 0x30, 0x94, 0xc1, 0x30, 0x06, 0x6b, 0xb0, 0x41,
0x48, 0x03, 0x36, 0x60, 0x32, 0x65, 0xf5, 0x45, 0x15, 0x26, 0x77, 0x56,
0x46, 0x37, 0x41, 0x28, 0xae, 0x0d, 0x0b, 0xe1, 0x06, 0x62, 0xf0, 0x06,
0x64, 0x30, 0x06, 0x83, 0x19, 0x10, 0x63, 0x80, 0x06, 0x1b, 0x02, 0x38,
0xd8, 0x30, 0xb4, 0x41, 0x1c, 0x00, 0x1b, 0x8a, 0x0f, 0x0c, 0xe4, 0x80,
0x03, 0xaa, 0xb0, 0xb1, 0xd9, 0xb5, 0xb9, 0xa4, 0x91, 0x95, 0xb9, 0xd1,
0x4d, 0x09, 0x82, 0x2a, 0x64, 0x78, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x53, 0x02, 0xa2, 0x09, 0x19, 0x9e, 0x8b, 0x5d, 0x18, 0x9b,
0x5d, 0x99, 0xdc, 0x94, 0xc0, 0xa8, 0x43, 0x86, 0xe7, 0x32, 0x87, 0x16,
0x46, 0x56, 0x26, 0xd7, 0xf4, 0x46, 0x56, 0xc6, 0x36, 0x25, 0x48, 0xca,
0x90, 0xe1, 0xb9, 0xc8, 0x95, 0xcd, 0xbd, 0xd5, 0xc9, 0x8d, 0x95, 0xcd,
0x4d, 0x09, 0xb6, 0x3a, 0x64, 0x78, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x49,
0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x82, 0xae, 0x0e, 0x19, 0x9e,
0x4b, 0x99, 0x1b, 0x9d, 0x5c, 0x1e, 0xd4, 0x5b, 0x9a, 0x1b, 0xdd, 0xdc,
0x94, 0x40, 0x0e, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1,
0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0d, 0x97,
0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0xc2,
0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0e,
0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x5f, 0xdc, 0xb6, 0x29, 0x48, 0xc3,
0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, 0x0b,
0x61, 0x07, 0xce, 0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, 0xc5,
0x6d, 0x5b, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62,
0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f,
0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x66, 0x40, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x04, 0x30, 0xcf, 0x42, 0x80, 0x11, 0x30, 0xf8, 0xc5,
0x6d, 0x9b, 0x40, 0x35, 0x5c, 0xbe, 0xf3, 0xf8, 0xd2, 0xe4, 0x44, 0x04,
0x4a, 0x4d, 0x0f, 0x35, 0xf9, 0xc5, 0x6d, 0x5b, 0x82, 0x34, 0x5c, 0xbe,
0xf3, 0xf8, 0x13, 0x11, 0x4d, 0x08, 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x46,
0xf0, 0x0c, 0x97, 0xef, 0x3c, 0x3e, 0xd5, 0x00, 0x11, 0xe6, 0x17, 0xb7,
0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
0xc5, 0x05, 0x00, 0x00, 0x13, 0x04, 0xa7, 0x10, 0x0b, 0x04, 0x00, 0x00,
0x61, 0x00, 0x00, 0x00, 0xc4, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x65, 0x40,
0x44, 0xf9, 0x95, 0x43, 0xa1, 0x06, 0x94, 0x69, 0x40, 0xc9, 0x95, 0x42,
0xb9, 0x15, 0x42, 0xb1, 0x94, 0x4d, 0x21, 0x95, 0x4a, 0xb9, 0x94, 0x51,
0x71, 0x95, 0x5d, 0xe1, 0xcd, 0x00, 0xd0, 0x30, 0x46, 0x00, 0x82, 0x30,
0x1e, 0x8e, 0xc1, 0x18, 0x81, 0x79, 0xaf, 0xab, 0xec, 0x8d, 0x11, 0xc4,
0x3c, 0xd8, 0xe7, 0xde, 0x18, 0x81, 0xdb, 0xc7, 0xa2, 0xed, 0x8d, 0x11,
0xbc, 0x7b, 0x5a, 0xde, 0xdf, 0x18, 0x81, 0xce, 0x9a, 0x73, 0x08, 0x06,
0x63, 0x04, 0x62, 0x2e, 0xa6, 0xfd, 0x37, 0x46, 0x00, 0x96, 0x3c, 0x1b,
0xff, 0xc2, 0x18, 0xc1, 0x98, 0xae, 0x6a, 0xee, 0x0b, 0x63, 0x04, 0xff,
0x4c, 0xfa, 0xbf, 0x2f, 0x8c, 0x11, 0xd0, 0x35, 0x28, 0xe6, 0xdf, 0x18,
0x41, 0x0b, 0xc7, 0x31, 0xe8, 0x0b, 0x63, 0x04, 0x73, 0xdf, 0xa6, 0xa9,
0x2f, 0x8c, 0x11, 0xb4, 0x6e, 0xc8, 0xf3, 0xbe, 0x30, 0x46, 0xc0, 0xe7,
0xac, 0x8f, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82, 0x28, 0x18, 0x8c, 0x11,
0x80, 0x20, 0x08, 0xaa, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0xc8, 0x82,
0xc1, 0x18, 0x01, 0x08, 0x82, 0xa0, 0x0b, 0x06, 0x63, 0x04, 0x20, 0x08,
0x82, 0x30, 0x18, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc6, 0x60, 0x30, 0x46,
0x00, 0x82, 0x20, 0x28, 0x83, 0xc1, 0x18, 0x01, 0xcb, 0x9e, 0xa1, 0xfc,
0x8d, 0x11, 0xa0, 0x7e, 0x19, 0xab, 0xdf, 0x18, 0x41, 0x7e, 0xea, 0xe2,
0xec, 0x8d, 0x11, 0xe8, 0x35, 0xb8, 0xe3, 0xde, 0x18, 0x81, 0x8a, 0xe7,
0xb6, 0xfd, 0x8d, 0x11, 0xbc, 0x7d, 0x4a, 0x8f, 0xde, 0x18, 0xc1, 0x3a,
0xc7, 0x2c, 0xea, 0x8d, 0x11, 0xa4, 0x21, 0x8c, 0xee, 0xde, 0x18, 0xc1,
0xdd, 0xc6, 0xaa, 0xfd, 0x8d, 0x11, 0xac, 0x23, 0x1e, 0xb3, 0x60, 0x30,
0x46, 0x00, 0x82, 0x74, 0x9b, 0x83, 0xc1, 0x18, 0x01, 0x08, 0x82, 0x6b,
0x0e, 0x06, 0x63, 0x04, 0x20, 0x08, 0xb2, 0xf5, 0x2f, 0x8c, 0x11, 0xb0,
0xed, 0xfc, 0x93, 0xde, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfc, 0x0b, 0x63,
0x04, 0x6e, 0x1f, 0x8b, 0xb6, 0x2f, 0x8c, 0x11, 0xf4, 0xb1, 0xe8, 0xe2,
0xdf, 0x18, 0x41, 0xad, 0xd6, 0x6a, 0xfb, 0x8d, 0x11, 0xc8, 0xa2, 0xdb,
0xd3, 0x60, 0x30, 0x46, 0xc0, 0xc3, 0xab, 0x4e, 0x77, 0x63, 0x04, 0x20,
0x08, 0x82, 0xf8, 0x2f, 0x8c, 0x11, 0xb0, 0x6d, 0xfc, 0xca, 0xdb, 0x18,
0x01, 0x08, 0x82, 0x20, 0x09, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0x70,
0x37, 0x46, 0x00, 0x82, 0xa0, 0x7f, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82,
0x20, 0x18, 0x8c, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0xdf, 0x18,
0x01, 0x08, 0x82, 0x20, 0xfe, 0xcd, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
0x82, 0x60, 0xd0, 0xed, 0x82, 0x28, 0xc4, 0x82, 0x2d, 0xd8, 0x42, 0x2a,
0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xc7, 0x0b, 0xa3, 0x20, 0x0b,
0xbb, 0xb0, 0x0b, 0xaa, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x5d,
0x2f, 0x90, 0xc2, 0x2c, 0xec, 0xc2, 0x2e, 0xac, 0xc2, 0x88, 0x41, 0x02,
0x80, 0x20, 0x18, 0x74, 0xbe, 0x50, 0x0a, 0xaa, 0xd0, 0x0b, 0xbd, 0xc0,
0x0a, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xd0, 0xfd, 0x82, 0x29, 0xac,
0x42, 0x2f, 0xf4, 0x42, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41,
0x07, 0x0e, 0xa7, 0x50, 0x0b, 0xbe, 0xe0, 0x0b, 0xae, 0x30, 0x62, 0x90,
0x00, 0x20, 0x08, 0x06, 0x86, 0x3a, 0x94, 0x02, 0x38, 0xfc, 0xc2, 0x2d,
0xec, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xeb, 0x60, 0x0a,
0xe1, 0x00, 0x0e, 0xaf, 0xc0, 0x07, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
0x60, 0xb0, 0xc3, 0x29, 0x84, 0x43, 0x38, 0xe4, 0x42, 0x1f, 0x8c, 0x18,
0x24, 0x00, 0x08, 0x82, 0x81, 0xd1, 0x0e, 0xa8, 0x20, 0x0e, 0xe2, 0x10,
0x0b, 0x7e, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x3b, 0xa4,
0xc2, 0x38, 0x8c, 0x83, 0x2e, 0xfc, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20,
0x18, 0x18, 0xef, 0xa0, 0x0a, 0xe4, 0x40, 0x0e, 0xb2, 0x00, 0x0a, 0x23,
0x06, 0x07, 0x00, 0x82, 0x60, 0x80, 0xa5, 0xc3, 0x28, 0x1c, 0xe5, 0x30,
0x9a, 0x10, 0x04, 0xc3, 0x11, 0x81, 0x14, 0x7c, 0xb3, 0x0c, 0x55, 0x10,
0x0c, 0x47, 0x08, 0x57, 0xf0, 0xcd, 0x32, 0x08, 0x43, 0x30, 0x62, 0xf0,
0x00, 0x20, 0x08, 0x06, 0x8d, 0x3c, 0x98, 0x82, 0xc3, 0x28, 0x49, 0x14,
0xa5, 0x43, 0x3a, 0x94, 0x42, 0x34, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42,
0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x4b, 0x50, 0x0d, 0x47,
0x20, 0x7a, 0x10, 0x7c, 0xb3, 0x0c, 0x44, 0x11, 0x8c, 0x18, 0x18, 0x00,
0x08, 0x82, 0xc1, 0x73, 0x0f, 0xb9, 0x00, 0x8d, 0x18, 0x18, 0x00, 0x08,
0x82, 0xc1, 0x83, 0x0f, 0xba, 0x00, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82,
0xc1, 0x93, 0x0f, 0xef, 0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
0xa3, 0x0f, 0xf0, 0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xb3,
0x0f, 0xbe, 0x40, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xc3, 0x0f,
0xbf, 0x40, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xd3, 0x0f, 0xf3,
0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xe3, 0x0f, 0xf4, 0x20,
0x98, 0x60, 0xc0, 0xc7, 0x04, 0x03, 0x3e, 0x23, 0x06, 0x07, 0x00, 0x82,
0x60, 0x80, 0xf5, 0xc3, 0x2d, 0x6c, 0xfa, 0x30, 0x9a, 0x10, 0x08, 0xa3,
0x09, 0xc2, 0x60, 0x42, 0x21, 0x1f, 0x13, 0x0a, 0xf9, 0x8c, 0x18, 0x1c,
0x00, 0x08, 0x82, 0x41, 0x54, 0x12, 0xbe, 0x20, 0xb8, 0xc1, 0x88, 0xc1,
0x01, 0x80, 0x20, 0x18, 0x44, 0x26, 0xf1, 0x0b, 0xc2, 0x1b, 0x8c, 0x18,
0x1c, 0x00, 0x08, 0x82, 0x41, 0x74, 0x12, 0xe3, 0x20, 0xa4, 0xc1, 0x88,
0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x28, 0x41, 0x0e, 0x82, 0x1a, 0x18,
0x32, 0x06, 0xf2, 0x31, 0x64, 0x0c, 0xe4, 0x63, 0x84, 0x1b, 0xc8, 0xc7,
0x88, 0x37, 0x90, 0x8f, 0x11, 0x42, 0x7c, 0x8c, 0x10, 0xe2, 0x33, 0x62,
0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0x4c, 0xb0, 0x83, 0x30, 0x62, 0x60,
0x00, 0x20, 0x08, 0x06, 0x4f, 0x4c, 0xb4, 0x83, 0x60, 0x02, 0x1d, 0xc0,
0xc7, 0x84, 0x3a, 0x80, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c,
0x34, 0x11, 0x0f, 0xc6, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x35,
0x21, 0x0f, 0x86, 0x39, 0x7f, 0x00, 0x1f, 0x0b, 0x06, 0xf8, 0xd8, 0x13,
0x0a, 0xf0, 0xb1, 0x80, 0x80, 0x8f, 0x0d, 0x12, 0x7d, 0x4c, 0x90, 0xe8,
0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0x4f, 0x80, 0x84, 0x30,
0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x4f, 0x84, 0x84, 0x60, 0x82,
0x28, 0xc8, 0xc7, 0x84, 0x51, 0x90, 0x8f, 0x9d, 0x82, 0x10, 0x1f, 0x43,
0x05, 0x21, 0x3e, 0x66, 0x18, 0xf2, 0xb1, 0x60, 0x90, 0x8f, 0x1d, 0x87,
0x7c, 0x2c, 0x20, 0xe4, 0x63, 0xd4, 0x00, 0x1f, 0xa3, 0x04, 0xf8, 0x8c,
0x26, 0x9c, 0x01, 0x30, 0x9a, 0x80, 0x06, 0x81, 0x11, 0x82, 0x7c, 0x8c,
0x10, 0xe4, 0x33, 0x62, 0x50, 0x01, 0x20, 0x08, 0x06, 0x93, 0x5a, 0xc4,
0x44, 0x2a, 0x9c, 0x82, 0x10, 0xb0, 0x02, 0x2b, 0x90, 0x05, 0x59, 0x80,
0x44, 0x1d, 0xd0, 0x01, 0x2b, 0xc4, 0x01, 0x1c, 0xb0, 0x02, 0x2b, 0x8c,
0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02,
0x31, 0xcc, 0x12, 0x54, 0xc3, 0x11, 0xa3, 0x20, 0x0b, 0xc1, 0x37, 0xcb,
0x60, 0x1c, 0xc1, 0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0x73, 0x71,
0x12, 0xaf, 0xd0, 0x0a, 0xab, 0xa0, 0x0a, 0xb2, 0x20, 0x0b, 0x6a, 0xa1,
0x16, 0x26, 0x21, 0x0b, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3,
0x09, 0x83, 0x30, 0x4b, 0x50, 0x0d, 0x47, 0xa0, 0x82, 0x2e, 0x04, 0xdf,
0x2c, 0x03, 0x92, 0x04, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xdc,
0x45, 0x4e, 0xc0, 0xc2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x78,
0xa1, 0x13, 0xb0, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x5e,
0xbc, 0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x5e, 0xc0,
0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x5e, 0xf8, 0x04,
0x2d, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xc3, 0x17, 0x3f, 0x41,
0x0b, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf4, 0xc5, 0x5c, 0x08,
0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf8, 0x05, 0x5d, 0x08, 0x26,
0x18, 0xf0, 0x31, 0xc1, 0x80, 0xcf, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18,
0x60, 0x7d, 0x71, 0x13, 0xbb, 0xa0, 0x17, 0xa3, 0x09, 0x81, 0x30, 0x9a,
0x20, 0x0c, 0x26, 0x14, 0xf2, 0x31, 0xa1, 0x90, 0xcf, 0x88, 0xc1, 0x01,
0x80, 0x20, 0x18, 0x44, 0xa5, 0xe1, 0x13, 0x82, 0x3b, 0x8c, 0x18, 0x1c,
0x00, 0x08, 0x82, 0x41, 0x64, 0x1a, 0x3f, 0x21, 0xbc, 0xc3, 0x88, 0xc1,
0x01, 0x80, 0x20, 0x18, 0x44, 0xa7, 0x31, 0x16, 0x42, 0x3a, 0x8c, 0x18,
0x1c, 0x00, 0x08, 0x82, 0x41, 0x84, 0x1a, 0x64, 0x21, 0xa8, 0x83, 0x21,
0xe3, 0x20, 0x1f, 0x43, 0xc6, 0x41, 0x3e, 0x46, 0xb8, 0x83, 0x7c, 0x8c,
0x78, 0x07, 0xf9, 0x18, 0x21, 0xc4, 0xc7, 0x08, 0x21, 0x3e, 0x23, 0x06,
0x06, 0x00, 0x82, 0x60, 0xf0, 0xc0, 0x06, 0x5b, 0x08, 0x23, 0x06, 0x06,
0x00, 0x82, 0x60, 0xf0, 0xc4, 0x46, 0x5b, 0x08, 0x26, 0xd0, 0x03, 0x7c,
0x4c, 0xa8, 0x07, 0xf8, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x43,
0x1b, 0x71, 0x61, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x53, 0x1b,
0x72, 0x61, 0x98, 0xf3, 0x0f, 0xf0, 0xb1, 0x60, 0x80, 0x8f, 0x3d, 0x21,
0x01, 0x1f, 0x0b, 0x08, 0xf8, 0xd8, 0x20, 0xd1, 0xc7, 0x04, 0x89, 0x3e,
0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf0, 0x06, 0x68, 0x08, 0x23,
0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf4, 0x46, 0x68, 0x08, 0x26, 0x88,
0x84, 0x7c, 0x4c, 0x18, 0x09, 0xf9, 0xd8, 0x49, 0x08, 0xf1, 0x31, 0x94,
0x10, 0xe2, 0x63, 0x86, 0x21, 0x1f, 0x0b, 0x06, 0xf9, 0xd8, 0x71, 0xc8,
0xc7, 0x02, 0x42, 0x3e, 0x46, 0x0d, 0xf0, 0x31, 0x4a, 0x80, 0xcf, 0x68,
0xc2, 0x19, 0x00, 0xa3, 0x09, 0x68, 0x10, 0x18, 0x21, 0xc8, 0xc7, 0x08,
0x41, 0x3e, 0x23, 0x06, 0x15, 0x00, 0x82, 0x60, 0x30, 0xa9, 0x47, 0x6c,
0xa4, 0xc4, 0x49, 0x08, 0x01, 0x4b, 0xb0, 0x04, 0x79, 0x90, 0x07, 0x68,
0xd4, 0x01, 0x1d, 0xb0, 0x44, 0x1c, 0xc0, 0x01, 0x4b, 0xb0, 0xc4, 0x68,
0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xcc, 0x12, 0x54,
0xc3, 0x11, 0x22, 0x31, 0x17, 0xc1, 0x37, 0xcb, 0xa0, 0x2c, 0xc1, 0x88,
0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xf2, 0x61, 0x1a, 0x2e, 0xc1, 0x12,
0x2a, 0x91, 0x12, 0x31, 0x11, 0x13, 0xe9, 0x91, 0x1e, 0xa5, 0x11, 0x13,
0xa3, 0x09, 0x01, 0x60, 0x01, 0x4e, 0xc8, 0xc7, 0x02, 0x9d, 0x80, 0xcf,
0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xf6, 0xa1, 0x1a, 0x33, 0x11,
0x13, 0xc1, 0x4d, 0xd4, 0x44, 0x4d, 0xb4, 0x47, 0x7b, 0xa4, 0x46, 0x4d,
0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68,
0x02, 0x31, 0xcc, 0x12, 0x54, 0xc3, 0x11, 0x2c, 0xc1, 0x17, 0xc1, 0x37,
0xcb, 0xc0, 0x34, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0xf7,
0x11, 0x1b, 0x35, 0x41, 0x1f, 0xa3, 0x09, 0x81, 0x30, 0x9a, 0x20, 0x0c,
0x26, 0xdc, 0x84, 0x7c, 0x4c, 0xb8, 0x09, 0xf9, 0x98, 0x20, 0x16, 0xf0,
0x31, 0x61, 0x2c, 0xe0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f,
0x88, 0xf8, 0x86, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x88,
0xfc, 0x86, 0x60, 0xc2, 0x5c, 0xc0, 0xc7, 0x04, 0xba, 0x80, 0xcf, 0x68,
0xc2, 0x02, 0x8c, 0x26, 0x30, 0x81, 0x11, 0x82, 0x7c, 0x8c, 0x10, 0xe4,
0x63, 0x08, 0x5b, 0xc0, 0xc7, 0x90, 0xb6, 0x80, 0x8f, 0x09, 0x86, 0x7c,
0x4c, 0x30, 0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x8b,
0xac, 0x87, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x8b, 0xb0,
0x87, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0x8c, 0x94, 0x47,
0x5b, 0xac, 0x05, 0x31, 0xc0, 0x05, 0x5c, 0xa0, 0x08, 0x8a, 0x90, 0x07,
0x5c, 0x8c, 0x26, 0x04, 0x80, 0x05, 0x77, 0x21, 0x1f, 0x0b, 0xf2, 0x02,
0x3e, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xd4, 0x48, 0x7a, 0xc8,
0x05, 0x5c, 0x04, 0x76, 0x41, 0x17, 0x74, 0xc1, 0x22, 0x2c, 0x82, 0x1e,
0x74, 0x31, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08,
0xa3, 0x09, 0xc4, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x8e,
0xb8, 0x87, 0x5d, 0xd0, 0x45, 0x03, 0xe5, 0x45, 0x5e, 0xc4, 0x48, 0x8c,
0xb4, 0x47, 0x5e, 0x8c, 0x26, 0x04, 0x80, 0x05, 0xa0, 0x21, 0x1f, 0x0b,
0x44, 0x03, 0x3e, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xf8, 0x88,
0x7c, 0xec, 0x45, 0x5e, 0x04, 0x7f, 0xd1, 0x17, 0x7d, 0x51, 0x23, 0x35,
0x12, 0x1f, 0x7d, 0x31, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a,
0x30, 0x08, 0xa3, 0x09, 0xc4, 0x60, 0x0d, 0x11, 0x1f, 0x6b, 0x88, 0xf8,
0x58, 0x43, 0xc4, 0xc7, 0x1a, 0x22, 0x3e, 0x46, 0x5c, 0xf2, 0x31, 0x02,
0x93, 0x8f, 0x11, 0x99, 0x7c, 0x8c, 0xd0, 0xe4, 0x63, 0x04, 0x03, 0x1f,
0x23, 0x18, 0xf8, 0x18, 0xc1, 0xc0, 0xc7, 0x08, 0x06, 0x3e, 0x23, 0x06,
0x0f, 0x00, 0x82, 0x60, 0xd0, 0xbc, 0xc9, 0x88, 0xac, 0x46, 0x6a, 0x98,
0x41, 0x18, 0xb8, 0x86, 0x6b, 0x98, 0x89, 0x99, 0x88, 0x88, 0x6b, 0x8c,
0x26, 0x04, 0x80, 0x05, 0xb5, 0x21, 0x1f, 0x0b, 0x6e, 0x03, 0x3e, 0x23,
0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xcc, 0xc9, 0x89, 0xc0, 0x86, 0x6b,
0x04, 0xb4, 0x21, 0x1b, 0xb2, 0xa1, 0x26, 0x6a, 0x62, 0x22, 0xb2, 0x31,
0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09,
0xc4, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x9e, 0xb0, 0x08,
0x6d, 0xc8, 0xc6, 0x1b, 0xb8, 0xc1, 0x6d, 0xdc, 0xc6, 0x9b, 0xbc, 0xc9,
0x8a, 0xdc, 0xc6, 0x68, 0x42, 0x00, 0x58, 0xe0, 0x1b, 0xf2, 0xb1, 0x00,
0x3c, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x9f, 0xc0,
0x48, 0x6e, 0xdc, 0x46, 0xd0, 0x1b, 0xbb, 0xb1, 0x1b, 0x73, 0x32, 0x27,
0x2f, 0xb2, 0x1b, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
0x83, 0x30, 0x9a, 0x40, 0x0c, 0xd6, 0x10, 0xf1, 0xb1, 0x86, 0x88, 0x8f,
0x35, 0x44, 0x7c, 0xac, 0x21, 0xe2, 0x63, 0x44, 0x1d, 0xc8, 0xc7, 0x08,
0x3b, 0x90, 0x8f, 0x11, 0x77, 0x20, 0x1f, 0x23, 0xf0, 0x40, 0x3e, 0x46,
0x30, 0xf0, 0x31, 0x82, 0x81, 0x8f, 0x11, 0x0c, 0x7c, 0x8c, 0x60, 0xe0,
0x63, 0x62, 0x40, 0xc4, 0xc7, 0xc4, 0x80, 0x88, 0x8f, 0x89, 0x01, 0x11,
0x1f, 0x13, 0x03, 0x22, 0x3e, 0x46, 0x88, 0x82, 0x7c, 0x8c, 0x18, 0x05,
0xf9, 0x18, 0x41, 0x0a, 0xf2, 0x31, 0xa2, 0x14, 0xe4, 0x63, 0x04, 0x03,
0x1f, 0x23, 0x18, 0xf8, 0x18, 0xc1, 0xc0, 0xc7, 0x08, 0x06, 0x3e, 0xb3,
0x04, 0xd5, 0x70, 0x84, 0x7a, 0xe4, 0x48, 0xf0, 0xcd, 0x32, 0x38, 0x4f,
0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0xae, 0xec, 0x89, 0x7c,
0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xa3, 0x2b, 0x7c, 0x22, 0x1f,
0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xec, 0x4a, 0xac, 0x08, 0x23,
0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf0, 0x8a, 0xac, 0x08, 0x23, 0x06,
0x06, 0x00, 0x82, 0x60, 0xf0, 0xf4, 0x0a, 0xa8, 0xd8, 0xc7, 0x88, 0x81,
0x01, 0x80, 0x20, 0x18, 0x3c, 0xbe, 0x12, 0x2a, 0xf6, 0x31, 0x62, 0x60,
0x00, 0x20, 0x08, 0x06, 0xcf, 0xaf, 0xd4, 0x8a, 0x30, 0x62, 0x60, 0x00,
0x20, 0x08, 0x06, 0x0f, 0xb8, 0xd8, 0x8a, 0x60, 0x82, 0x01, 0x1f, 0x13,
0x0c, 0xf8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x01, 0xf6, 0x2b, 0x79,
0xd2, 0x1f, 0xbc, 0x32, 0x9a, 0x10, 0x08, 0xa3, 0x09, 0xc2, 0x60, 0x42,
0x21, 0x1f, 0x13, 0x0a, 0xf9, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41,
0x74, 0x2e, 0xa0, 0x22, 0xc0, 0xc8, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18,
0x44, 0xe8, 0x12, 0x2a, 0x42, 0x8c, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82,
0x41, 0x94, 0x2e, 0xa5, 0x22, 0xac, 0xc8, 0x88, 0xc1, 0x01, 0x80, 0x20,
0x18, 0x44, 0xea, 0x62, 0x2a, 0x02, 0x8b, 0x18, 0x52, 0x22, 0xf2, 0x31,
0xa4, 0x44, 0xe4, 0x63, 0x04, 0x8c, 0xc8, 0xc7, 0x88, 0x18, 0x91, 0x8f,
0x11, 0x42, 0x7c, 0x8c, 0x10, 0xe2, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08,
0x06, 0x8f, 0xbc, 0xb8, 0x8a, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06,
0xcf, 0xbc, 0xbc, 0x8a, 0x60, 0x82, 0x8d, 0xc0, 0xc7, 0x84, 0x1b, 0x81,
0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0xf6, 0x32, 0x2b, 0xc6,
0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0xf7, 0x42, 0x2b, 0x86, 0x39,
0x61, 0x02, 0x1f, 0x0b, 0x06, 0xf8, 0xd8, 0x33, 0x26, 0xf0, 0xb1, 0x80,
0x80, 0x8f, 0x0d, 0x12, 0x7d, 0x4c, 0x90, 0xe8, 0x33, 0x62, 0x60, 0x00,
0x20, 0x08, 0x06, 0x8f, 0xbf, 0x88, 0x8b, 0x30, 0x62, 0x60, 0x00, 0x20,
0x08, 0x06, 0xcf, 0xbf, 0x8c, 0x8b, 0x60, 0x02, 0x99, 0xc8, 0xc7, 0x84,
0x32, 0x91, 0x8f, 0xa5, 0x89, 0x10, 0x1f, 0x53, 0x13, 0x21, 0x3e, 0x66,
0x18, 0xf2, 0xb1, 0x60, 0x90, 0x8f, 0x1d, 0x87, 0x7c, 0x2c, 0x20, 0xe4,
0x63, 0xd4, 0x00, 0x1f, 0xa3, 0x04, 0xf8, 0x8c, 0x26, 0x9c, 0x01, 0x30,
0x9a, 0x80, 0x06, 0x81, 0xa1, 0x81, 0x20, 0x1f, 0x0b, 0x0a, 0xf9, 0x58,
0x1a, 0x0c, 0xf2, 0xb1, 0xc0, 0x90, 0x8f, 0x0d, 0x72, 0x02, 0x1f, 0x13,
0xe6, 0x04, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xc8, 0x8c,
0xbb, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xcc, 0xcc, 0xbb,
0x08, 0x26, 0x8c, 0x0a, 0x7c, 0x4c, 0x20, 0x15, 0xf8, 0x98, 0xc0, 0xc8,
0xc7, 0x04, 0x46, 0x3e, 0x66, 0xe8, 0x09, 0x7c, 0xcc, 0xd8, 0x13, 0xf8,
0x98, 0x00, 0xc9, 0xc7, 0x04, 0x48, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
0x60, 0xf0, 0xf0, 0x4c, 0xbe, 0x30, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60,
0xf0, 0xf4, 0x8c, 0xbe, 0x30, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0,
0xfc, 0xcc, 0xbc, 0xec, 0x49, 0x9e, 0x10, 0x83, 0x9f, 0xf8, 0x89, 0xcd,
0xd8, 0x8c, 0xbc, 0xf8, 0xc9, 0x68, 0x42, 0x00, 0x58, 0x50, 0x2a, 0xf2,
0xb1, 0xe0, 0x54, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd,
0xd8, 0xdc, 0x0b, 0xa8, 0xf8, 0x49, 0x40, 0x2a, 0xa2, 0x22, 0x2a, 0x3a,
0xa3, 0x33, 0xf6, 0x22, 0x2a, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04,
0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x0f, 0x00, 0x82,
0x60, 0xd0, 0xa0, 0x0d, 0xbf, 0x90, 0x8a, 0xa8, 0x34, 0xd0, 0xa9, 0x9c,
0xca, 0xcf, 0xfc, 0xcc, 0xbe, 0x9c, 0xca, 0x68, 0x42, 0x00, 0x58, 0xe0,
0x2a, 0xf2, 0xb1, 0x00, 0x56, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08,
0x06, 0x0d, 0xdb, 0x80, 0x4c, 0xaa, 0x9c, 0x4a, 0xd0, 0x2a, 0xab, 0xb2,
0x2a, 0x63, 0x33, 0x36, 0xff, 0xb2, 0x2a, 0xa3, 0x09, 0x01, 0x30, 0x9a,
0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0xd6, 0x10, 0xf1,
0xb1, 0x86, 0x88, 0x8f, 0x35, 0x44, 0x7c, 0xac, 0x21, 0xe2, 0x63, 0xc4,
0x25, 0x1f, 0x23, 0x30, 0xf9, 0x18, 0x91, 0xc9, 0xc7, 0x08, 0x4d, 0x3e,
0x46, 0x30, 0xf0, 0x31, 0x82, 0x81, 0x8f, 0x11, 0x0c, 0x7c, 0x8c, 0x60,
0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0xdf, 0xc4, 0x4c,
0xae, 0xdc, 0x8a, 0x19, 0x84, 0x01, 0xaf, 0xf0, 0x0a, 0xdd, 0xd0, 0x0d,
0xcc, 0xf0, 0xca, 0x68, 0x42, 0x00, 0x58, 0x30, 0x2e, 0xf2, 0xb1, 0xa0,
0x5c, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0xe8, 0xd4,
0x8c, 0xaf, 0xf0, 0x4a, 0x20, 0x2e, 0xe0, 0x02, 0x2e, 0x78, 0x83, 0x37,
0x34, 0x03, 0x2e, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
0x83, 0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0,
0x98, 0x8e, 0xce, 0x88, 0x0b, 0xb8, 0xbc, 0x81, 0x1b, 0x94, 0x4b, 0xb9,
0xf4, 0x4d, 0xdf, 0xe4, 0x4c, 0xb9, 0x8c, 0x26, 0x04, 0x80, 0x05, 0xec,
0x22, 0x1f, 0x0b, 0xdc, 0x05, 0x3e, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60,
0xd0, 0xa8, 0x8e, 0xcf, 0x9c, 0x4b, 0xb9, 0x04, 0xeb, 0x92, 0x2e, 0xe9,
0x12, 0x3a, 0xa1, 0xd3, 0x33, 0xe9, 0x32, 0x9a, 0x10, 0x00, 0xa3, 0x09,
0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x60, 0x0d, 0x11, 0x1f,
0x6b, 0x88, 0xf8, 0x58, 0x43, 0xc4, 0xc7, 0x1a, 0x22, 0x3e, 0x46, 0xd4,
0x81, 0x7c, 0x8c, 0xb0, 0x03, 0xf9, 0x18, 0x71, 0x07, 0xf2, 0x31, 0x02,
0x0f, 0xe4, 0x63, 0x04, 0x03, 0x1f, 0x23, 0x18, 0xf8, 0x18, 0xc1, 0xc0,
0xc7, 0x08, 0x06, 0x3e, 0x26, 0x06, 0x44, 0x7c, 0x4c, 0x0c, 0x88, 0xf8,
0x98, 0x18, 0x10, 0xf1, 0x31, 0x31, 0x20, 0xe2, 0x63, 0x84, 0x28, 0xc8,
0xc7, 0x88, 0x51, 0x90, 0x8f, 0x11, 0xa4, 0x20, 0x1f, 0x23, 0x4a, 0x41,
0x3e, 0x46, 0x30, 0xf0, 0x31, 0x82, 0x81, 0x8f, 0x11, 0x0c, 0x7c, 0x8c,
0x60, 0xe0, 0x33, 0x4b, 0x50, 0x0d, 0x47, 0xe0, 0x8b, 0xd9, 0x04, 0xdf,
0x2c, 0x03, 0x14, 0x05, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xa0,
0x0f, 0xdf, 0x90, 0x8c, 0xc8, 0x80, 0xcc, 0xbf, 0x9c, 0xcc, 0xc9, 0xfc,
0xce, 0xef, 0xec, 0xcd, 0xc9, 0x8c, 0x26, 0x04, 0xc0, 0x88, 0xc1, 0x03,
0x80, 0x20, 0x18, 0x34, 0xea, 0xe3, 0x37, 0x27, 0x43, 0x32, 0x22, 0x13,
0x32, 0x29, 0x93, 0x32, 0xe1, 0x13, 0x3e, 0x7d, 0x93, 0x32, 0xa3, 0x09,
0x01, 0x30, 0x9a, 0x20, 0x04, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x80,
0xa1, 0x8f, 0xe8, 0x98, 0x0c, 0xf8, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
0x10, 0x8c, 0x26, 0x0c, 0x82, 0x0d, 0x08, 0x7c, 0x6c, 0x38, 0xe0, 0x63,
0xc3, 0x01, 0x9f, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0xde, 0x27,
0x75, 0x5a, 0x26, 0x76, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46,
0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x2a, 0xfa, 0xb1,
0x9d, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x03,
0x8c, 0x7e, 0x5c, 0x47, 0x66, 0x70, 0x67, 0x34, 0x21, 0x00, 0x46, 0x13,
0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00, 0x04, 0xc1, 0xa0,
0xca, 0x9f, 0xdd, 0x61, 0x16, 0x65, 0x10, 0x82, 0x11, 0x83, 0x03, 0x00,
0x41, 0x30, 0xc0, 0xf2, 0x67, 0x76, 0x6e, 0x66, 0x7e, 0x46, 0x13, 0x02,
0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40,
0x10, 0x0c, 0x2a, 0xff, 0x01, 0x9f, 0x08, 0x7a, 0x06, 0x21, 0x98, 0x25,
0xa8, 0x86, 0x23, 0x68, 0x26, 0x74, 0x82, 0x6f, 0x96, 0x41, 0x9a, 0x82,
0x11, 0x83, 0x07, 0x00, 0x41, 0x30, 0x68, 0x48, 0x08, 0x77, 0xc0, 0xc6,
0x67, 0x78, 0x66, 0x67, 0xc6, 0x66, 0x6c, 0xf6, 0x67, 0x7f, 0x6e, 0x67,
0x6c, 0x46, 0x13, 0x02, 0x60, 0xc4, 0xe0, 0x01, 0x40, 0x10, 0x0c, 0x1a,
0x13, 0xd2, 0x9d, 0xb1, 0x01, 0x1b, 0x9f, 0xe9, 0x99, 0xb2, 0x29, 0x9b,
0xfe, 0xe9, 0x9f, 0xdc, 0x29, 0x9b, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10,
0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0x48, 0xc8, 0x77, 0xc4,
0x86, 0x7f, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06,
0xc1, 0x06, 0x04, 0x3e, 0x36, 0x18, 0xf0, 0xb1, 0x01, 0x81, 0xcf, 0x88,
0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0x2b, 0x54, 0x3e, 0x69, 0xd3, 0x3e,
0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x62,
0xb0, 0x00, 0x20, 0x08, 0x06, 0x15, 0x0c, 0xc9, 0xcf, 0x61, 0x14, 0x83,
0x10, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x01, 0x06, 0x43, 0xea, 0xe3,
0x36, 0xf4, 0x33, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30,
0x08, 0x23, 0x06, 0x0b, 0x00, 0x82, 0x60, 0x50, 0xd5, 0xd0, 0xfd, 0x30,
0x8b, 0x32, 0x08, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0x35,
0xf4, 0x3e, 0x73, 0xf3, 0x42, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04,
0xa3, 0x09, 0x83, 0x30, 0x62, 0xb0, 0x00, 0x20, 0x08, 0x06, 0x95, 0x0e,
0xf1, 0x4f, 0x04, 0x3d, 0x83, 0x10, 0xcc, 0x12, 0x54, 0xc3, 0x11, 0x70,
0xc3, 0x3b, 0xc1, 0x37, 0xcb, 0x40, 0x55, 0xc1, 0x88, 0xc1, 0x03, 0x80,
0x20, 0x18, 0x34, 0x60, 0x44, 0x3f, 0x7c, 0xa3, 0x37, 0x78, 0x73, 0x37,
0x7f, 0xf3, 0x37, 0x37, 0x74, 0x43, 0xf3, 0xf3, 0x37, 0xa3, 0x09, 0x01,
0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x18, 0xd9, 0xcf, 0xdf,
0xf0, 0x8d, 0xde, 0xe4, 0x4d, 0xe8, 0x84, 0x4e, 0x0e, 0xe5, 0x50, 0xfd,
0x84, 0xce, 0x68, 0x42, 0x00, 0x8c, 0x18, 0x3c, 0x00, 0x08, 0x82, 0x41,
0x43, 0x46, 0xf8, 0x23, 0x3a, 0x7e, 0xc3, 0x37, 0x7b, 0x33, 0x3a, 0xa3,
0xb3, 0x43, 0x3b, 0x74, 0x3f, 0xa3, 0x33, 0x9a, 0x10, 0x00, 0x23, 0x06,
0x07, 0x00, 0x82, 0x60, 0x80, 0x85, 0xd1, 0xfe, 0xfc, 0x4d, 0x0e, 0x8d,
0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0x82, 0x0d, 0x09,
0x7c, 0x6c, 0x40, 0xe0, 0x63, 0xc3, 0x01, 0x9f, 0x11, 0x83, 0x03, 0x00,
0x41, 0x30, 0xc0, 0xd0, 0x48, 0x84, 0x4c, 0x47, 0x85, 0x46, 0x13, 0x02,
0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40,
0x10, 0x0c, 0xaa, 0x36, 0x7a, 0xa1, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31,
0x38, 0x00, 0x10, 0x04, 0x03, 0xac, 0x8d, 0x4e, 0x68, 0x75, 0x62, 0x68,
0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c,
0x16, 0x00, 0x04, 0xc1, 0xa0, 0x92, 0x23, 0x1a, 0x62, 0x16, 0x65, 0x10,
0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0xe4, 0x88, 0x85, 0x60,
0x87, 0x8d, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06,
0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0xaa, 0x3b, 0xca, 0xa1, 0x08,
0x7a, 0x06, 0x21, 0x98, 0x25, 0xa8, 0x06, 0xca, 0x06, 0xbc, 0x03, 0x64,
0x4e, 0xe0, 0x31, 0x02, 0xc6, 0x0c, 0x9e, 0x42, 0x54, 0x4a, 0x71, 0x1d,
0x46, 0x2e, 0x1c, 0x94, 0x80, 0x60, 0x41, 0xb2, 0x28, 0xbc, 0x9b, 0x06,
0xca, 0x06, 0xbd, 0x03, 0x64, 0x4e, 0xe0, 0x31, 0x02, 0xc6, 0x0c, 0x9e,
0x42, 0x54, 0x4a, 0x71, 0x1d, 0x46, 0x2e, 0x1c, 0x90, 0x80, 0x50, 0x41,
0x72, 0x28, 0xbf, 0x9b, 0x06, 0xca, 0x06, 0xbe, 0x03, 0x64, 0x4e, 0xe0,
0x31, 0x02, 0xc6, 0x0c, 0x9e, 0x42, 0x54, 0x4a, 0x71, 0x1d, 0x46, 0x2e,
0x1c, 0x7c, 0x80, 0x40, 0x41, 0x32, 0x28, 0xbe, 0x9b, 0x06, 0xca, 0x06,
0xbf, 0x03, 0x64, 0x4e, 0xe0, 0x31, 0xc2, 0xef, 0x0c, 0xbf, 0x43, 0x54,
0x4a, 0x71, 0x1d, 0x46, 0x2e, 0x1c, 0xbf, 0x83, 0xfc, 0x4e, 0xf2, 0x3b,
0xca, 0xef, 0xa6, 0xd1, 0x04, 0xd9, 0x11, 0x86, 0x23, 0x82, 0xf3, 0x09,
0xbe, 0x59, 0x06, 0xeb, 0x0a, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0,
0x09, 0xa5, 0x3b, 0x32, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x11,
0x25, 0x3c, 0x32, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x19, 0xa5,
0x3c, 0x32, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x21, 0xa5, 0x1e,
0x1a, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x29, 0x25, 0x1f, 0x1a,
0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x31, 0xa5, 0x1f, 0x1a, 0x6c,
0xb8, 0x1f, 0xf9, 0xd8, 0x80, 0x3f, 0xf2, 0xb1, 0x21, 0x7f, 0xe4, 0x33,
0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x2a, 0x91, 0xd1, 0x30, 0x62,
0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x2a, 0x95, 0xd1, 0x30, 0x62, 0x60,
0x00, 0x20, 0x08, 0x06, 0x0f, 0x2b, 0x99, 0xd1, 0x60, 0x83, 0xff, 0xc0,
0xc7, 0x86, 0xff, 0x81, 0x8f, 0x0d, 0x20, 0x04, 0x9f, 0x11, 0x83, 0x03,
0x00, 0x41, 0x30, 0x88, 0x5e, 0x09, 0x8d, 0x86, 0xf9, 0x19, 0x31, 0x38,
0x00, 0x10, 0x04, 0x83, 0x08, 0x96, 0xd2, 0x68, 0xa0, 0x9f, 0x11, 0x83,
0x03, 0x00, 0x41, 0x30, 0x88, 0x62, 0x49, 0x8d, 0x86, 0xfa, 0xb1, 0xa4,
0x84, 0xe4, 0x63, 0x89, 0x09, 0xc9, 0xc7, 0x92, 0x13, 0x92, 0x8f, 0xa5,
0xd0, 0x10, 0x1f, 0x53, 0xa1, 0x21, 0x3e, 0xb6, 0x42, 0x43, 0x7c, 0x2c,
0x19, 0xe8, 0x63, 0xc9, 0x40, 0x1f, 0x4b, 0x06, 0xfa, 0x8c, 0x18, 0x18,
0x00, 0x08, 0x82, 0xc1, 0xc3, 0x4b, 0xb2, 0x34, 0x8c, 0x18, 0x18, 0x00,
0x08, 0x82, 0xc1, 0xd3, 0x4b, 0xb3, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08,
0x82, 0xc1, 0xe3, 0x4b, 0xb4, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82,
0xc1, 0xf3, 0x4b, 0x78, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
0x03, 0x4e, 0x79, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x13,
0x4e, 0x7a, 0x34, 0xd8, 0x60, 0x43, 0xf2, 0xb1, 0xe1, 0x86, 0xe4, 0x63,
0x03, 0x0e, 0xc9, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0x72,
0xfa, 0xa3, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x1e, 0x73, 0x02,
0xa5, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0x73, 0x0a, 0xa5,
0xc1, 0x86, 0x3d, 0x92, 0x8f, 0x0d, 0x7c, 0x24, 0x1f, 0x1b, 0xfa, 0x48,
0x3e, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x80, 0x9d, 0x53, 0x28, 0x95,
0x10, 0x38, 0x8d, 0x26, 0x04, 0x83, 0x15, 0x01, 0x7d, 0xac, 0x10, 0xe8,
0x63, 0xc5, 0x40, 0x9f, 0x59, 0x82, 0x6b, 0xa0, 0x62, 0x30, 0x2c, 0x75,
0xa8, 0x06, 0x2a, 0x06, 0xc3, 0x52, 0x87, 0x6a, 0xa0, 0x62, 0x30, 0x2c,
0x75, 0xa8, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x00, 0x7b, 0xa7, 0x54,
0x6a, 0x21, 0x74, 0x1a, 0x4d, 0x08, 0x80, 0xe1, 0x88, 0x00, 0x87, 0x9c,
0x6f, 0x96, 0x01, 0x0b, 0x83, 0x60, 0x38, 0x42, 0xb8, 0xa1, 0xe0, 0x9b,
0x65, 0xc8, 0xb4, 0x60, 0x34, 0x81, 0x08, 0x2c, 0x40, 0xe4, 0x63, 0x02,
0x22, 0x1f, 0x1b, 0x10, 0xf9, 0xcc, 0x12, 0x84, 0xc1, 0x70, 0xc4, 0xf1,
0x43, 0xc1, 0x37, 0xcb, 0xb0, 0x85, 0x41, 0x30, 0x1c, 0xd1, 0x07, 0x60,
0x14, 0x7c, 0xb3, 0x0c, 0x5c, 0x17, 0x58, 0xa3, 0x47, 0xf2, 0x19, 0x31,
0x40, 0x00, 0x10, 0x04, 0x03, 0x2d, 0x9f, 0x6a, 0x49, 0x8f, 0x9a, 0x60,
0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x34, 0x7d, 0xb2, 0x25, 0x3d, 0x6a,
0x02, 0x83, 0xf4, 0x48, 0x3e, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xa0,
0xf1, 0x13, 0x2e, 0xe9, 0x11, 0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82,
0x81, 0xd6, 0x4f, 0xb9, 0xa4, 0x47, 0x50, 0x60, 0x93, 0x1e, 0xc9, 0x67,
0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0xb4, 0x7f, 0xda, 0x25, 0x3d, 0x9a,
0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0xd0, 0x40, 0x8a, 0x97, 0xf4,
0x68, 0x0a, 0x66, 0x09, 0xba, 0x81, 0x8a, 0xc1, 0xe1, 0xd8, 0x60, 0x1b,
0xa8, 0x18, 0x14, 0x8e, 0x0d, 0xb6, 0x81, 0x8a, 0xc1, 0xe0, 0xd8, 0x60,
0x1b, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x08, 0xa5, 0xc2, 0x49, 0x08,
0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x20, 0x4a, 0x29, 0x71, 0x22, 0x82,
0xe1, 0x88, 0xc0, 0x8d, 0x84, 0x6f, 0x96, 0xc1, 0xfb, 0x82, 0xd1, 0x84,
0x2c, 0xb0, 0x21, 0x90, 0x8f, 0x05, 0x6f, 0x04, 0x9f, 0xd1, 0x04, 0x4e,
0x30, 0x23, 0x90, 0x8f, 0x05, 0x72, 0x04, 0x1f, 0x23, 0x02, 0xfa, 0x58,
0xd0, 0xc8, 0xc7, 0x84, 0x46, 0x3e, 0x36, 0x34, 0xf2, 0x99, 0x25, 0xf8,
0x06, 0x2a, 0x06, 0xc3, 0x03, 0x83, 0x6e, 0xa0, 0x62, 0x30, 0x3c, 0x30,
0xe8, 0x06, 0x2a, 0x06, 0xc3, 0x03, 0x83, 0x6e, 0x96, 0x01, 0x0c, 0xc2,
0xa0, 0xb3, 0xc1, 0x9c, 0xe4, 0x33, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06,
0x5a, 0x4d, 0xc5, 0x93, 0x39, 0x0d, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20,
0x18, 0x68, 0x36, 0x25, 0x4f, 0xe6, 0x34, 0x04, 0x66, 0x98, 0x93, 0x7c,
0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0x40, 0xc3, 0x29, 0x7a, 0x32, 0x27,
0x23, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0x2d, 0xa7, 0xea, 0xc9,
0x9c, 0x8c, 0xc0, 0x12, 0x73, 0x92, 0xcf, 0x88, 0x01, 0x02, 0x80, 0x20,
0x18, 0x68, 0x3b, 0x75, 0x4f, 0xe6, 0x94, 0x04, 0x23, 0x06, 0x08, 0x00,
0x82, 0x60, 0xa0, 0xf1, 0x14, 0x3e, 0x99, 0x53, 0x12, 0xcc, 0x12, 0x84,
0xc1, 0x40, 0xcb, 0x40, 0x0e, 0x17, 0x2d, 0x64, 0x0e, 0x18, 0x60, 0x1f,
0x39, 0x68, 0x03, 0x2d, 0x03, 0x39, 0x5c, 0xb4, 0x90, 0x29, 0x60, 0x80,
0x7d, 0xe4, 0xa0, 0x0d, 0xb4, 0x0c, 0xe4, 0x70, 0xd1, 0x42, 0x66, 0x80,
0x01, 0xf6, 0x91, 0x83, 0x36, 0x1c, 0x61, 0x0e, 0xa6, 0x14, 0x7c, 0xb3,
0x0c, 0x62, 0xd0, 0x06, 0xc1, 0x68, 0x42, 0x1e, 0x01, 0xc3, 0x11, 0x81,
0x2a, 0x39, 0xdf, 0x2c, 0xc3, 0x18, 0xb0, 0x41, 0x30, 0x1c, 0x61, 0xe8,
0x93, 0xf2, 0xcd, 0x32, 0x94, 0x01, 0x19, 0x04, 0x76, 0xe8, 0x93, 0x7c,
0x66, 0x09, 0xcc, 0xc0, 0x10, 0x7d, 0x82, 0xcf, 0x88, 0x81, 0x01, 0x80,
0x20, 0x18, 0x3c, 0x6b, 0x15, 0x56, 0x81, 0x05, 0xfb, 0x24, 0x9f, 0x11,
0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0xda, 0xca, 0xa4, 0x02, 0x0b, 0xf8,
0x49, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xbc, 0x55, 0x4a,
0x05, 0xb3, 0x04, 0x66, 0x30, 0x50, 0x31, 0x38, 0x64, 0x20, 0x94, 0xc1,
0x70, 0x84, 0x33, 0x52, 0xca, 0x37, 0xcb, 0x80, 0x06, 0x67, 0x10, 0xd8,
0x33, 0x52, 0xf2, 0x99, 0x25, 0x48, 0x03, 0x83, 0x46, 0x0a, 0x3e, 0x23,
0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xd0, 0x95, 0x5a, 0x05, 0x16, 0x90,
0x94, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0xb1, 0xab, 0x97,
0x0a, 0x2c, 0x28, 0x29, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
0x83, 0x57, 0x32, 0x15, 0xcc, 0x12, 0xa4, 0xc1, 0x40, 0xc5, 0xe0, 0x9c,
0x81, 0x80, 0x06, 0xc3, 0x11, 0x16, 0x4b, 0x29, 0xdf, 0x2c, 0xc3, 0x1a,
0xa8, 0x41, 0x60, 0x17, 0x4b, 0xc9, 0x67, 0x96, 0x80, 0x0d, 0x0c, 0x63,
0x29, 0xf8, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xd3, 0x57, 0x73,
0x15, 0x58, 0xd0, 0x52, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83,
0xe7, 0xaf, 0x70, 0x2a, 0xb0, 0xc0, 0xa5, 0xe4, 0x33, 0x62, 0x60, 0x00,
0x20, 0x08, 0x06, 0x4f, 0x68, 0xed, 0x54, 0x30, 0x4b, 0xc0, 0x06, 0x03,
0x1d, 0x03, 0x19, 0xac, 0x01, 0x19, 0xa8, 0x01, 0x28, 0x88, 0xc1, 0x40,
0xc7, 0x40, 0xad, 0x01, 0xa5, 0x06, 0xa0, 0x20, 0x06, 0x03, 0x1d, 0x83,
0xb1, 0x06, 0x92, 0x1a, 0x80, 0x82, 0x18, 0x8c, 0x26, 0xe0, 0xd2, 0x60,
0x44, 0x20, 0x1f, 0x23, 0x04, 0xf9, 0x18, 0x31, 0xc8, 0x67, 0x96, 0xc0,
0x14, 0x86, 0x23, 0x54, 0xa2, 0x9d, 0x82, 0x6f, 0x34, 0xa1, 0x97, 0x86,
0x59, 0x06, 0x37, 0xc8, 0x03, 0xc1, 0xd2, 0x20, 0x90, 0x8f, 0xa5, 0x81,
0x20, 0x1f, 0x4b, 0x83, 0x41, 0x3e, 0xa3, 0x09, 0xe1, 0x04, 0x0c, 0x47,
0x04, 0xf2, 0xe4, 0x7c, 0xb3, 0x0c, 0xa6, 0xf0, 0x06, 0xc1, 0x70, 0x44,
0xa1, 0x4f, 0xca, 0x37, 0xcb, 0x10, 0x07, 0x70, 0x10, 0x98, 0xc1, 0x4f,
0xf2, 0x99, 0x25, 0x90, 0x83, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78,
0x64, 0x0b, 0xb5, 0x8e, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x66,
0x8b, 0xad, 0x02, 0x0b, 0x40, 0x4a, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
0x60, 0xf0, 0xd4, 0xd6, 0x5b, 0x05, 0x16, 0x8c, 0x94, 0x7c, 0x2c, 0x28,
0x29, 0xf8, 0xcc, 0x12, 0xc8, 0xc1, 0x40, 0xc5, 0xe0, 0xc0, 0x81, 0x10,
0x07, 0xc3, 0x11, 0xcd, 0x48, 0x29, 0xdf, 0x2c, 0x03, 0x1d, 0xcc, 0x41,
0x60, 0x4e, 0x49, 0xc9, 0x67, 0x96, 0xa0, 0x0e, 0x46, 0x0c, 0x0c, 0x00,
0x04, 0xc1, 0xe0, 0xd9, 0xad, 0xd8, 0x7a, 0x46, 0x0c, 0x0c, 0x00, 0x04,
0xc1, 0xe0, 0xe1, 0xad, 0xba, 0x0a, 0x2c, 0x48, 0x29, 0xf9, 0x8c, 0x18,
0x18, 0x00, 0x08, 0x82, 0xc1, 0xe3, 0x5b, 0x78, 0x15, 0x58, 0xc0, 0x52,
0xf2, 0xb1, 0xc0, 0xa5, 0xe0, 0x33, 0x4b, 0x50, 0x07, 0x03, 0x15, 0x83,
0x33, 0x07, 0x02, 0x1d, 0x0c, 0x47, 0x54, 0x2c, 0xa5, 0x7c, 0xb3, 0x0c,
0x77, 0x60, 0x07, 0x81, 0x59, 0x2e, 0x25, 0x9f, 0x59, 0x02, 0x3c, 0x18,
0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x87, 0xbc, 0x74, 0xeb, 0x1a, 0x31,
0x30, 0x00, 0x10, 0x04, 0x83, 0xa7, 0xbc, 0xfc, 0x2a, 0xb0, 0x40, 0xa6,
0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x79, 0x85, 0x56,
0x60, 0x41, 0x4d, 0xc9, 0xc7, 0x82, 0x9b, 0x82, 0xcf, 0x2c, 0x01, 0x1e,
0x0c, 0x54, 0x0c, 0x8e, 0x1d, 0x08, 0x77, 0x30, 0x62, 0x70, 0x00, 0x20,
0x08, 0x06, 0x91, 0x7a, 0x8d, 0xd6, 0xe4, 0x52, 0x23, 0x06, 0x07, 0x00,
0x82, 0x60, 0x10, 0xad, 0x17, 0x69, 0x2d, 0x2f, 0x35, 0x62, 0x70, 0x00,
0x20, 0x08, 0x06, 0x11, 0x7b, 0x95, 0xd6, 0x00, 0x53, 0x23, 0x06, 0x07,
0x00, 0x82, 0x60, 0x10, 0xb5, 0x57, 0x6a, 0x0d, 0x2f, 0x35, 0x62, 0x70,
0x00, 0x20, 0x08, 0x06, 0x91, 0x7b, 0xa9, 0xd6, 0x00, 0x53, 0x23, 0x06,
0x07, 0x00, 0x82, 0x60, 0x10, 0xbd, 0xd7, 0x6a, 0x0d, 0x31, 0x35, 0x4b,
0x60, 0x0a, 0xb3, 0x0c, 0x7a, 0x50, 0x0a, 0x71, 0x61, 0xaf, 0xe0, 0x57,
0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0xad, 0xbd, 0x52, 0xcb,
0xaf, 0x5e, 0x21, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0xcd, 0xbd,
0x54, 0xcb, 0xaf, 0x5e, 0x21, 0x30, 0x59, 0xf0, 0x2b, 0xf9, 0x8c, 0x18,
0x20, 0x00, 0x08, 0x82, 0x81, 0x06, 0x5f, 0xac, 0xe5, 0x57, 0xb2, 0x10,
0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0x81, 0x16, 0x5f, 0xad, 0xe5, 0x57,
0xb2, 0x10, 0x58, 0x2d, 0xf8, 0x95, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04,
0xc1, 0x40, 0x9b, 0xaf, 0xd7, 0xf2, 0xab, 0x5a, 0x08, 0x46, 0x0c, 0x10,
0x00, 0x04, 0xc1, 0x40, 0xa3, 0x2f, 0xd8, 0xf2, 0xab, 0x5a, 0x08, 0xec,
0x80, 0x03, 0xf9, 0x58, 0x11, 0x07, 0xf2, 0xb1, 0x41, 0x0e, 0xe4, 0x33,
0x9a, 0x00, 0x53, 0xc0, 0x70, 0x44, 0x10, 0x56, 0xce, 0x37, 0xcb, 0x60,
0x0a, 0x7b, 0x10, 0x0c, 0x47, 0x14, 0x69, 0xa5, 0x7c, 0xb3, 0x0c, 0x7d,
0xc0, 0x07, 0x81, 0x19, 0x6b, 0x25, 0x9f, 0x59, 0x02, 0x3f, 0x18, 0x31,
0x30, 0x00, 0x10, 0x04, 0x83, 0x27, 0xc4, 0xee, 0xeb, 0x18, 0x31, 0x30,
0x00, 0x10, 0x04, 0x83, 0x47, 0xc4, 0x76, 0x2b, 0xb0, 0xe0, 0xad, 0xe4,
0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0x89, 0xf9, 0x56, 0x60,
0x81, 0x5c, 0xc9, 0xc7, 0x02, 0xba, 0x82, 0xcf, 0x2c, 0x81, 0x1f, 0x0c,
0x54, 0x0c, 0x0e, 0x1f, 0x08, 0x7d, 0x30, 0x1c, 0xd1, 0xc8, 0x95, 0xf2,
0xcd, 0x32, 0x80, 0xc2, 0x1f, 0x04, 0xe6, 0xd0, 0x95, 0x7c, 0x66, 0x09,
0x42, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x1e, 0x15, 0x03, 0xb1,
0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0x15, 0x23, 0xaf, 0xc0,
0x02, 0xbc, 0x92, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x2d,
0x76, 0x5e, 0x81, 0x05, 0x7b, 0x25, 0x1f, 0x0b, 0xfa, 0x0a, 0x3e, 0xb3,
0x04, 0xa1, 0x30, 0x50, 0x31, 0x38, 0x7f, 0x20, 0x80, 0xc2, 0x70, 0x44,
0xb5, 0x57, 0xca, 0x37, 0xcb, 0x30, 0x0a, 0xa2, 0x10, 0x98, 0xd5, 0x57,
0xf2, 0x99, 0x25, 0x20, 0x85, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78,
0x66, 0x2c, 0xc5, 0xae, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x68,
0xac, 0xbd, 0x02, 0x0b, 0x42, 0x4b, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
0x60, 0xf0, 0xd8, 0x18, 0x7c, 0x05, 0x16, 0x90, 0x96, 0x7c, 0x2c, 0x30,
0x2d, 0xf8, 0xcc, 0x12, 0x90, 0xc2, 0x40, 0xc5, 0xe0, 0x88, 0x82, 0x30,
0x0a, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x10, 0xe5, 0x98, 0x7c, 0x4d,
0x7d, 0x35, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x91, 0x8e, 0xcd, 0xd7,
0xe2, 0x57, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x10, 0xed, 0x18, 0x7d,
0x0d, 0x7f, 0x35, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x11, 0x8f, 0xe1,
0xd7, 0xe0, 0x57, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x10, 0xf5, 0x58,
0x7e, 0x0d, 0x7f, 0x35, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x91, 0x8f,
0xe9, 0xd7, 0x00, 0x5a, 0xb3, 0x04, 0xa6, 0x60, 0xfe, 0x60, 0x0b, 0xf2,
0x31, 0x7f, 0xb8, 0x05, 0xf9, 0x98, 0x3f, 0xe0, 0x82, 0x7c, 0x66, 0x09,
0x4c, 0x61, 0xa0, 0x66, 0xd0, 0x0b, 0x36, 0x30, 0x4a, 0x41, 0x1d, 0xf0,
0x00, 0x2e, 0xdc, 0x80, 0x21, 0x05, 0x59, 0xd0, 0x83, 0x81, 0x9a, 0x41,
0x2f, 0xd8, 0xc0, 0x28, 0x05, 0x75, 0xc0, 0x03, 0xb8, 0x70, 0x03, 0x86,
0x14, 0x64, 0x41, 0x0f, 0x06, 0x6a, 0x06, 0xbd, 0x60, 0x03, 0xa3, 0x14,
0xd4, 0x01, 0x0f, 0xe0, 0xc2, 0x0d, 0x18, 0x52, 0x90, 0x05, 0x3d, 0xb0,
0xa1, 0xaf, 0xe4, 0x63, 0x43, 0x5f, 0xc9, 0xc7, 0x86, 0xbe, 0x92, 0x8f,
0xad, 0x47, 0x5f, 0xc9, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10,
0x36, 0x53, 0x31, 0x31, 0x13, 0x33, 0x1d, 0x23, 0x46, 0x0c, 0x12, 0x00,
0x04, 0xc1, 0x00, 0x61, 0x33, 0x15, 0x13, 0x33, 0x31, 0x8b, 0xb1, 0x61,
0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x36, 0x53, 0x31, 0x31, 0x13,
0xb3, 0x1c, 0x13, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0x61, 0x33,
0x15, 0x13, 0x33, 0x31, 0x83, 0xb1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00
};
static const unsigned int texture_advanced_frag_dxil_len = 10992;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,353 @@
static const unsigned char texture_rgb_frag_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0x37, 0x73, 0xca, 0xeb, 0x37, 0xaa, 0x03, 0x92,
0x6e, 0xc9, 0x41, 0x8a, 0x5a, 0xd5, 0x6f, 0x91, 0x01, 0x00, 0x00, 0x00,
0x60, 0x10, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00,
0xf0, 0x01, 0x00, 0x00, 0xf0, 0x08, 0x00, 0x00, 0x0c, 0x09, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x54, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00,
0x50, 0x53, 0x56, 0x30, 0x04, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x6d,
0x61, 0x69, 0x6e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00,
0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xf8, 0x06, 0x00, 0x00,
0x60, 0x00, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0xfc, 0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46,
0xc5, 0x18, 0x63, 0x10, 0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21,
0xf9, 0x21, 0xd0, 0x0c, 0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b,
0x63, 0x0c, 0x42, 0xc8, 0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10,
0x92, 0xcf, 0x6d, 0x54, 0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6,
0x18, 0xa3, 0x10, 0x8f, 0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23,
0x85, 0x10, 0x49, 0x73, 0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83,
0x71, 0x60, 0x87, 0x70, 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07,
0x7c, 0xa0, 0x87, 0x7a, 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03,
0x7b, 0x28, 0x87, 0x71, 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07,
0x76, 0x78, 0x87, 0x70, 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03,
0x30, 0xf0, 0x03, 0x3d, 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87,
0x5f, 0xa0, 0x87, 0x7c, 0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c,
0xc6, 0x81, 0x1d, 0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c,
0xf0, 0x81, 0x1e, 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f,
0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c,
0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f,
0xc0, 0xc0, 0x0f, 0x90, 0x60, 0x2f, 0xe1, 0x73, 0x26, 0xec, 0x21, 0x7e,
0xce, 0x69, 0xa4, 0x09, 0x68, 0x26, 0x09, 0x05, 0x83, 0xf4, 0x4d, 0xd2,
0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
0x44, 0xa0, 0x80, 0x10, 0x4f, 0x04, 0x02, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0c, 0x45, 0x50, 0x12, 0x65, 0x50, 0x08, 0xe5, 0x50, 0x1e, 0x45, 0x43,
0xa5, 0x24, 0x46, 0x00, 0x8a, 0xa0, 0x10, 0x0a, 0x84, 0xf2, 0x0c, 0x00,
0xe9, 0x19, 0x00, 0xda, 0x33, 0x00, 0xd4, 0x67, 0x00, 0xc8, 0x8f, 0x85,
0x18, 0x44, 0x20, 0x10, 0xc8, 0x71, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x8e, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45,
0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c,
0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
0xb8, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x64,
0x15, 0x93, 0xba, 0x2f, 0xba, 0x32, 0x3c, 0xba, 0x3a, 0xb9, 0xb2, 0x09,
0x02, 0x91, 0x4c, 0x10, 0x08, 0x65, 0x83, 0x40, 0x34, 0x1b, 0x12, 0x42,
0x59, 0x18, 0x62, 0x60, 0x08, 0x67, 0x43, 0xf0, 0x4c, 0x10, 0xb6, 0x8b,
0x0e, 0x5d, 0x1e, 0x5c, 0xd9, 0xd7, 0xd0, 0x9b, 0xdb, 0x1c, 0x5d, 0x98,
0x1b, 0xdd, 0xdc, 0x04, 0x81, 0x58, 0x26, 0x08, 0x04, 0xb3, 0x01, 0x21,
0x22, 0x69, 0x22, 0x06, 0x0a, 0xd8, 0x10, 0x54, 0x13, 0x84, 0x0e, 0x63,
0x52, 0xf7, 0x35, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x26, 0xb7, 0x01, 0x21,
0x2e, 0x8c, 0x21, 0x06, 0x02, 0xd8, 0x10, 0x64, 0x1b, 0x08, 0x08, 0xb0,
0xb4, 0x09, 0x82, 0x66, 0xb1, 0x1a, 0x7a, 0x73, 0x9b, 0xa3, 0x0b, 0x73,
0xa3, 0x9b, 0xfb, 0x1a, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a, 0x1b, 0x0b,
0x63, 0x2b, 0x9b, 0x20, 0x10, 0xcd, 0x06, 0x03, 0xe9, 0x26, 0xc2, 0x6b,
0x36, 0x08, 0xd4, 0xb7, 0x61, 0x20, 0x38, 0x30, 0x98, 0x20, 0x08, 0xc0,
0x06, 0x60, 0xc3, 0x40, 0x8c, 0xc1, 0x18, 0x6c, 0x08, 0xc8, 0x60, 0xc3,
0x30, 0x88, 0x41, 0x19, 0x4c, 0x10, 0xbc, 0x6c, 0x43, 0x70, 0x06, 0x24,
0xda, 0xc2, 0xd2, 0xdc, 0x88, 0x50, 0x15, 0x61, 0x0d, 0x3d, 0x3d, 0x49,
0x11, 0x4d, 0x10, 0x0a, 0x68, 0x82, 0x50, 0x44, 0x1b, 0x02, 0x62, 0x82,
0x50, 0x48, 0x13, 0x84, 0x62, 0x9a, 0x20, 0x10, 0xce, 0x06, 0x61, 0x82,
0x83, 0x0d, 0x0b, 0xa1, 0x06, 0x6b, 0xc0, 0x06, 0x6d, 0xe0, 0x06, 0xc3,
0x1b, 0x10, 0x6c, 0x10, 0x07, 0x1b, 0x82, 0x61, 0x83, 0x30, 0x4d, 0x1b,
0x96, 0x41, 0x0d, 0xd6, 0x80, 0x0d, 0xe6, 0xc0, 0x0d, 0x06, 0x37, 0x18,
0xd8, 0x80, 0x0e, 0x36, 0x08, 0x72, 0x50, 0x07, 0x4c, 0xa6, 0xac, 0xbe,
0xa8, 0xc2, 0xe4, 0xce, 0xca, 0xe8, 0x26, 0x08, 0x05, 0xb5, 0x61, 0x21,
0xee, 0x60, 0x0d, 0xf0, 0xa0, 0x0d, 0xd8, 0x60, 0x78, 0x03, 0x82, 0x0d,
0xe2, 0x60, 0x43, 0x90, 0x07, 0x1b, 0x06, 0x3b, 0xd0, 0x03, 0x60, 0x43,
0x21, 0x06, 0x69, 0xb0, 0x07, 0x1b, 0x40, 0xc3, 0x8c, 0xed, 0x2d, 0x8c,
0x6e, 0x8e, 0x45, 0x9a, 0xdb, 0x1c, 0xdd, 0xdc, 0x04, 0x81, 0x78, 0x68,
0xcc, 0xa5, 0x9d, 0x7d, 0xb1, 0x91, 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x9a,
0xa3, 0x23, 0x42, 0x57, 0x86, 0xf7, 0xe5, 0xf6, 0x26, 0xd7, 0xb6, 0x41,
0xe9, 0x03, 0xc4, 0x0f, 0xfe, 0x00, 0x14, 0x90, 0x50, 0xa0, 0x44, 0x61,
0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x37,
0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd,
0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c, 0x76,
0x65, 0x72, 0x53, 0x82, 0xa2, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a, 0x18,
0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x00, 0x29, 0x43,
0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36, 0x37,
0x25, 0xd0, 0x2a, 0x91, 0xe1, 0xb9, 0xd0, 0xe5, 0xc1, 0x95, 0x05, 0xb9,
0xb9, 0xbd, 0xd1, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0xcd, 0x4d, 0x11, 0xc0,
0xa0, 0x0c, 0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25, 0x91,
0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09, 0xce, 0xa0, 0x0e, 0x19, 0x9e,
0x4b, 0x99, 0x1b, 0x9d, 0x5c, 0x1e, 0xd4, 0x5b, 0x9a, 0x1b, 0xdd, 0xdc,
0x94, 0x60, 0x0f, 0xba, 0x90, 0xe1, 0xb9, 0x8c, 0xbd, 0xd5, 0xb9, 0xd1,
0x95, 0xc9, 0xcd, 0x4d, 0x09, 0x44, 0x01, 0x00, 0x79, 0x18, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87,
0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87,
0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40,
0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d,
0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71,
0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81,
0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00, 0xd2,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xfd, 0xb6, 0x60,
0x88, 0x06, 0x02, 0x15, 0xb2, 0xad, 0x97, 0x06, 0x58, 0xab, 0xdb, 0x1f,
0x44, 0x58, 0x49, 0x4c, 0x4c, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0xd3, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x34, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0xca, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0xfc,
0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46, 0xc5, 0x18, 0x63, 0x10,
0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x21, 0xd0, 0x0c,
0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b, 0x63, 0x0c, 0x42, 0xc8,
0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d, 0x54,
0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6, 0x18, 0xa3, 0x10, 0x8f,
0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x10, 0x49, 0x73,
0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87, 0x70,
0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87, 0x7a,
0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87, 0x71,
0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87, 0x70,
0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03, 0x3d,
0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87, 0x7c,
0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c, 0xc6, 0x81, 0x1d, 0xc2,
0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, 0xea,
0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6,
0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2,
0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0x90,
0x60, 0x2f, 0xe1, 0x73, 0x26, 0xec, 0x21, 0x7e, 0xce, 0x69, 0xa4, 0x09,
0x68, 0x26, 0x09, 0x05, 0x83, 0xf4, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4,
0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x10,
0x4f, 0x04, 0x02, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x12, 0xc5, 0x50, 0x04,
0x65, 0x50, 0x08, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0x8a, 0xa0, 0x10,
0x0a, 0x84, 0xf2, 0x0c, 0x00, 0xed, 0x19, 0x00, 0xea, 0x33, 0x00, 0xe4,
0xc7, 0x42, 0x0c, 0x22, 0x10, 0x08, 0xe4, 0x38, 0x00, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04,
0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98,
0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xc0, 0xcd, 0x4d, 0x10, 0x88,
0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x21, 0x9b, 0x08, 0x4c, 0x10, 0x08,
0x65, 0x83, 0x40, 0x18, 0x1b, 0x12, 0x62, 0x61, 0x1a, 0x62, 0x68, 0x08,
0x67, 0x43, 0xf0, 0x4c, 0x10, 0x36, 0x6a, 0x82, 0x40, 0x2c, 0x13, 0x04,
0x82, 0xd9, 0x80, 0x10, 0x11, 0x23, 0x11, 0xc3, 0x04, 0x6c, 0x08, 0xa8,
0x09, 0x42, 0x57, 0x6d, 0x40, 0x08, 0x8b, 0x69, 0x88, 0x81, 0x00, 0x36,
0x04, 0xd7, 0x06, 0x02, 0x02, 0x2a, 0x6c, 0x82, 0xe0, 0x59, 0x1b, 0x02,
0x6d, 0x82, 0x20, 0x00, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0x88, 0x50, 0x15,
0x61, 0x0d, 0x3d, 0x3d, 0x49, 0x11, 0x4d, 0x10, 0x0a, 0x67, 0x82, 0x50,
0x3c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x40, 0x13, 0x84, 0x22, 0x9a, 0x20,
0x10, 0xcd, 0x06, 0x41, 0x22, 0x83, 0x0d, 0x0b, 0xe1, 0x7d, 0x60, 0x10,
0x06, 0x62, 0x30, 0x8c, 0x01, 0x01, 0x06, 0x65, 0xb0, 0x21, 0x18, 0x36,
0x08, 0x92, 0xb4, 0x61, 0x19, 0xbc, 0x0f, 0x0c, 0xce, 0x40, 0x0c, 0x06,
0x31, 0x18, 0xc0, 0x00, 0x0d, 0x36, 0x08, 0x66, 0x90, 0x06, 0x4c, 0xa6,
0xac, 0xbe, 0xa8, 0xc2, 0xe4, 0xce, 0xca, 0xe8, 0x26, 0x08, 0x85, 0xb4,
0x61, 0x21, 0xd6, 0xe0, 0x63, 0x83, 0x30, 0x00, 0x83, 0x61, 0x0c, 0x08,
0x30, 0x28, 0x83, 0x0d, 0x41, 0x1b, 0x6c, 0x18, 0xd4, 0xc0, 0x0d, 0x80,
0x0d, 0x05, 0xd7, 0xbd, 0x41, 0x06, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73,
0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c,
0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32,
0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x81, 0x51, 0x87,
0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac,
0x8c, 0x6d, 0x4a, 0x90, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b,
0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x60, 0x75, 0xc8, 0xf0, 0x5c,
0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6,
0x04, 0x5a, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0xa8,
0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0xc1, 0x1b, 0x00, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce,
0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc,
0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06,
0x40, 0x30, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
0x44, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x24, 0x47, 0x00, 0x88, 0xcc, 0x00, 0x94, 0x42,
0xc9, 0x15, 0x5e, 0xd9, 0x51, 0x29, 0x83, 0x12, 0xa0, 0x31, 0x03, 0x00,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x30, 0x6d, 0x46, 0x94, 0x65, 0xc9,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x4c, 0xdc, 0x41, 0x68, 0x9a, 0x32,
0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x53, 0x87, 0x48, 0xdb, 0xb6, 0x8c,
0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x21, 0x06, 0x57, 0xc7, 0x51, 0xcb,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x63, 0x80, 0x79, 0x9d, 0xc1,
0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x41, 0x06, 0x99, 0xe7, 0x59,
0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x65, 0xa0, 0x7d, 0x1f,
0xe2, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x61, 0x06, 0x1b, 0x18,
0x80, 0xc1, 0xf5, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x71, 0x06,
0x5c, 0x18, 0x84, 0xc1, 0x02, 0x8d, 0x18, 0x3c, 0x00, 0x08, 0x82, 0x41,
0x63, 0x06, 0x4e, 0x82, 0x18, 0x85, 0xa2, 0x88, 0x81, 0x18, 0x44, 0xca,
0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x18,
0x1c, 0x00, 0x08, 0x82, 0x01, 0x94, 0x06, 0xd1, 0x62, 0x06, 0xa3, 0x09,
0x01, 0x60, 0x85, 0x22, 0x1f, 0x0b, 0x04, 0xf9, 0x98, 0xb1, 0xc8, 0xc7,
0x02, 0x42, 0x3e, 0x76, 0x30, 0xf2, 0xb1, 0xc0, 0x90, 0xcf, 0x88, 0x41,
0x02, 0x80, 0x20, 0x18, 0x20, 0x73, 0xc0, 0xb9, 0x81, 0x1b, 0x98, 0x41,
0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc8, 0x1c, 0x70, 0x6e, 0xe0,
0x06, 0xd7, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc8, 0x1c, 0x70,
0x6e, 0xe0, 0x06, 0x65, 0x10, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
0x32, 0x07, 0x9c, 0x1b, 0xb8, 0x01, 0xd6, 0x20, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
static const unsigned int texture_rgb_frag_dxil_len = 4192;

View File

@@ -0,0 +1,69 @@
static const unsigned char texture_rgb_frag_msl[] = {
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65,
0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a,
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69,
0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a,
0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x0a, 0x7b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f,
0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x7d,
0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x38, 0x20, 0x3d,
0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20,
0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x53, 0x56, 0x5f, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30,
0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x20, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f,
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65,
0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x69,
0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
0x52, 0x44, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c,
0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a,
0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61,
0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e,
0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69,
0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e,
0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
0x20, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x74, 0x73, 0x26, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x74, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28,
0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72,
0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x75,
0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x74,
0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c,
0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x75, 0x5f, 0x73,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f,
0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20,
0x5f, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34,
0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x73,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x75, 0x5f, 0x73, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76,
0x61, 0x72, 0x5f, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x30,
0x29, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2e,
0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63,
0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x33, 0x2e, 0x78, 0x2c, 0x20,
0x5f, 0x34, 0x33, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x34, 0x33, 0x2e, 0x7a,
0x2c, 0x20, 0x5f, 0x32, 0x38, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x5f, 0x34, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e,
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f,
0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x53, 0x56, 0x5f, 0x54, 0x61,
0x72, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x20, 0x2a,
0x20, 0x69, 0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43,
0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d,
0x0a, 0x0a
};
static const unsigned int texture_rgb_frag_msl_len = 782;

View File

@@ -0,0 +1,118 @@
static const unsigned char texture_rgb_frag_spv[] = {
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00,
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x10, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65,
0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00,
0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x00,
0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
0x07, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x32, 0x64, 0x2e,
0x69, 0x6d, 0x61, 0x67, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
0x08, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72,
0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00,
0x74, 0x79, 0x70, 0x65, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72,
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x75, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76,
0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x00, 0x00, 0x00,
0x05, 0x00, 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76,
0x61, 0x72, 0x2e, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x30,
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00,
0x6f, 0x75, 0x74, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x53, 0x56, 0x5f, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65,
0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x2e, 0x69, 0x6d, 0x61,
0x67, 0x65, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x15, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x07, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00,
0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
0x13, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00,
0x21, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x1b, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x17, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00,
0x13, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x1f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x57, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x51, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x26, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x50, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x28, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x41, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
0x8e, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00,
0x13, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
0x2b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00,
0x13, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x2c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
0x13, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00,
0x2e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
};
static const unsigned int texture_rgb_frag_spv_len = 1380;

View File

@@ -0,0 +1,353 @@
static const unsigned char texture_rgba_frag_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0x2b, 0x94, 0x5f, 0xcd, 0x98, 0x2a, 0x37, 0x41,
0x73, 0x69, 0x67, 0xea, 0xbf, 0xa7, 0x06, 0xfb, 0x01, 0x00, 0x00, 0x00,
0x64, 0x10, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00,
0xf0, 0x01, 0x00, 0x00, 0xf0, 0x08, 0x00, 0x00, 0x0c, 0x09, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x54, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00,
0x50, 0x53, 0x56, 0x30, 0x04, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x6d,
0x61, 0x69, 0x6e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00,
0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xf8, 0x06, 0x00, 0x00,
0x60, 0x00, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0xfc, 0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46,
0xc5, 0x18, 0x63, 0x10, 0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21,
0xf9, 0x21, 0xd0, 0x0c, 0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b,
0x63, 0x0c, 0x42, 0xc8, 0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10,
0x92, 0xcf, 0x6d, 0x54, 0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6,
0x18, 0xa3, 0x10, 0x8f, 0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23,
0x85, 0x10, 0x49, 0x73, 0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83,
0x71, 0x60, 0x87, 0x70, 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07,
0x7c, 0xa0, 0x87, 0x7a, 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03,
0x7b, 0x28, 0x87, 0x71, 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07,
0x76, 0x78, 0x87, 0x70, 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03,
0x30, 0xf0, 0x03, 0x3d, 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87,
0x5f, 0xa0, 0x87, 0x7c, 0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c,
0xc6, 0x81, 0x1d, 0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c,
0xf0, 0x81, 0x1e, 0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f,
0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c,
0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f,
0xc0, 0xc0, 0x0f, 0x90, 0x60, 0x2f, 0xe1, 0x73, 0x26, 0xec, 0x21, 0x7e,
0xce, 0x69, 0xa4, 0x09, 0x68, 0x26, 0x09, 0x05, 0x83, 0xf4, 0x4d, 0xd2,
0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
0x44, 0xa0, 0x80, 0x10, 0x4f, 0x04, 0x02, 0x00, 0x13, 0x14, 0x72, 0xc0,
0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01,
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
0x0c, 0x45, 0x50, 0x12, 0x65, 0x50, 0x08, 0xe5, 0x50, 0x1e, 0x85, 0x43,
0xa5, 0x24, 0x46, 0x00, 0x8a, 0xa0, 0x10, 0x0a, 0x84, 0xf2, 0x0c, 0x00,
0xe9, 0x19, 0x00, 0xda, 0x33, 0x00, 0xd4, 0x67, 0x00, 0xc8, 0x8f, 0x85,
0x18, 0x44, 0x20, 0x10, 0xc8, 0xf3, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x8e, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45,
0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c,
0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
0xb8, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x64,
0x15, 0x93, 0xba, 0x2f, 0xba, 0x32, 0x3c, 0xba, 0x3a, 0xb9, 0xb2, 0x09,
0x02, 0x91, 0x4c, 0x10, 0x08, 0x65, 0x83, 0x40, 0x34, 0x1b, 0x12, 0x42,
0x59, 0x18, 0x62, 0x60, 0x08, 0x67, 0x43, 0xf0, 0x4c, 0x10, 0xb6, 0x8b,
0x0e, 0x5d, 0x1e, 0x5c, 0xd9, 0xd7, 0xd0, 0x9b, 0xdb, 0x1c, 0x5d, 0x98,
0x1b, 0xdd, 0xdc, 0x04, 0x81, 0x58, 0x26, 0x08, 0x04, 0xb3, 0x01, 0x21,
0x22, 0x69, 0x22, 0x06, 0x0a, 0xd8, 0x10, 0x54, 0x13, 0x84, 0x0e, 0x63,
0x52, 0xf7, 0x35, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x26, 0xb7, 0x01, 0x21,
0x2e, 0x8c, 0x21, 0x06, 0x02, 0xd8, 0x10, 0x64, 0x1b, 0x08, 0x08, 0xb0,
0xb4, 0x09, 0x82, 0x66, 0xb1, 0x1a, 0x7a, 0x73, 0x9b, 0xa3, 0x0b, 0x73,
0xa3, 0x9b, 0xfb, 0x1a, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a, 0x1b, 0x0b,
0x63, 0x2b, 0x9b, 0x20, 0x10, 0xcd, 0x06, 0x03, 0xe9, 0x26, 0xc2, 0x6b,
0x36, 0x08, 0xd4, 0xb7, 0x61, 0x20, 0x38, 0x30, 0x98, 0x20, 0x08, 0xc0,
0x06, 0x60, 0xc3, 0x40, 0x8c, 0xc1, 0x18, 0x6c, 0x08, 0xc8, 0x60, 0xc3,
0x30, 0x88, 0x41, 0x19, 0x4c, 0x10, 0xbc, 0x6c, 0x43, 0x70, 0x06, 0x24,
0xda, 0xc2, 0xd2, 0xdc, 0x88, 0x50, 0x15, 0x61, 0x0d, 0x3d, 0x3d, 0x49,
0x11, 0x4d, 0x10, 0x0a, 0x68, 0x82, 0x50, 0x44, 0x1b, 0x02, 0x62, 0x82,
0x50, 0x48, 0x13, 0x84, 0x62, 0x9a, 0x20, 0x10, 0xce, 0x06, 0x61, 0x82,
0x83, 0x0d, 0x0b, 0xa1, 0x06, 0x6b, 0xc0, 0x06, 0x6d, 0xe0, 0x06, 0xc3,
0x1b, 0x10, 0x6c, 0x10, 0x07, 0x1b, 0x82, 0x61, 0x83, 0x30, 0x4d, 0x1b,
0x96, 0x41, 0x0d, 0xd6, 0x80, 0x0d, 0xe6, 0xc0, 0x0d, 0x06, 0x37, 0x18,
0xd8, 0x80, 0x0e, 0x36, 0x08, 0x72, 0x50, 0x07, 0x4c, 0xa6, 0xac, 0xbe,
0xa8, 0xc2, 0xe4, 0xce, 0xca, 0xe8, 0x26, 0x08, 0x05, 0xb5, 0x61, 0x21,
0xee, 0x60, 0x0d, 0xf0, 0xa0, 0x0d, 0xd8, 0x60, 0x78, 0x03, 0x82, 0x0d,
0xe2, 0x60, 0x43, 0x90, 0x07, 0x1b, 0x06, 0x3b, 0xd0, 0x03, 0x60, 0x43,
0x21, 0x06, 0x69, 0xb0, 0x07, 0x1b, 0x40, 0xc3, 0x8c, 0xed, 0x2d, 0x8c,
0x6e, 0x8e, 0x45, 0x9a, 0xdb, 0x1c, 0xdd, 0xdc, 0x04, 0x81, 0x78, 0x68,
0xcc, 0xa5, 0x9d, 0x7d, 0xb1, 0x91, 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x9a,
0xa3, 0x23, 0x42, 0x57, 0x86, 0xf7, 0xe5, 0xf6, 0x26, 0xd7, 0xb6, 0x41,
0xe9, 0x03, 0xcf, 0x0f, 0xfe, 0x00, 0x14, 0x90, 0x50, 0xa0, 0x44, 0x61,
0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x37,
0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd,
0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c, 0x76,
0x65, 0x72, 0x53, 0x82, 0xa2, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a, 0x18,
0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x00, 0x29, 0x43,
0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36, 0x37,
0x25, 0xd0, 0x2a, 0x91, 0xe1, 0xb9, 0xd0, 0xe5, 0xc1, 0x95, 0x05, 0xb9,
0xb9, 0xbd, 0xd1, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0xcd, 0x4d, 0x11, 0xc0,
0xa0, 0x0c, 0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25, 0x91,
0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09, 0xce, 0xa0, 0x0e, 0x19, 0x9e,
0x4b, 0x99, 0x1b, 0x9d, 0x5c, 0x1e, 0xd4, 0x5b, 0x9a, 0x1b, 0xdd, 0xdc,
0x94, 0x60, 0x0f, 0xba, 0x90, 0xe1, 0xb9, 0x8c, 0xbd, 0xd5, 0xb9, 0xd1,
0x95, 0xc9, 0xcd, 0x4d, 0x09, 0x44, 0x01, 0x00, 0x79, 0x18, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87,
0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87,
0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40,
0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d,
0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71,
0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81,
0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00, 0xd2,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x1c, 0x0d, 0x85,
0xb4, 0x48, 0x99, 0xc0, 0xce, 0x90, 0xaf, 0x39, 0xfa, 0x8e, 0xec, 0xfd,
0x44, 0x58, 0x49, 0x4c, 0x50, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0xd4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
0x21, 0x0c, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
0x89, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0xfc,
0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46, 0xc5, 0x18, 0x63, 0x10,
0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x21, 0xd0, 0x0c,
0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b, 0x63, 0x0c, 0x42, 0xc8,
0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d, 0x54,
0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6, 0x18, 0xa3, 0x10, 0x8f,
0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x10, 0x49, 0x73,
0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87, 0x70,
0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87, 0x7a,
0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87, 0x71,
0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87, 0x70,
0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03, 0x3d,
0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87, 0x7c,
0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c, 0xc6, 0x81, 0x1d, 0xc2,
0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, 0xea,
0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6,
0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2,
0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0x90,
0x60, 0x2f, 0xe1, 0x73, 0x26, 0xec, 0x21, 0x7e, 0xce, 0x69, 0xa4, 0x09,
0x68, 0x26, 0x09, 0x05, 0x83, 0xf4, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4,
0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x10,
0x4f, 0x04, 0x02, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x12, 0xc5, 0x50, 0x04,
0x65, 0x50, 0x08, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0x8a, 0xa0, 0x10,
0x0a, 0x84, 0xf2, 0x0c, 0x00, 0xed, 0x19, 0x00, 0xea, 0x33, 0x00, 0xe4,
0xc7, 0x42, 0x0c, 0x22, 0x10, 0x08, 0xe4, 0x79, 0x00, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04,
0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98,
0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xc0, 0xcd, 0x4d, 0x10, 0x88,
0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x21, 0x9b, 0x08, 0x4c, 0x10, 0x08,
0x65, 0x83, 0x40, 0x18, 0x1b, 0x12, 0x62, 0x61, 0x1a, 0x62, 0x68, 0x08,
0x67, 0x43, 0xf0, 0x4c, 0x10, 0x36, 0x6a, 0x82, 0x40, 0x2c, 0x13, 0x04,
0x82, 0xd9, 0x80, 0x10, 0x11, 0x23, 0x11, 0xc3, 0x04, 0x6c, 0x08, 0xa8,
0x09, 0x42, 0x57, 0x6d, 0x40, 0x08, 0x8b, 0x69, 0x88, 0x81, 0x00, 0x36,
0x04, 0xd7, 0x06, 0x02, 0x02, 0x2a, 0x6c, 0x82, 0xe0, 0x59, 0x1b, 0x02,
0x6d, 0x82, 0x20, 0x00, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0x88, 0x50, 0x15,
0x61, 0x0d, 0x3d, 0x3d, 0x49, 0x11, 0x4d, 0x10, 0x0a, 0x67, 0x82, 0x50,
0x3c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x40, 0x13, 0x84, 0x22, 0x9a, 0x20,
0x10, 0xcd, 0x06, 0x41, 0x22, 0x83, 0x0d, 0x0b, 0xe1, 0x7d, 0x60, 0x10,
0x06, 0x62, 0x30, 0x8c, 0x01, 0x01, 0x06, 0x65, 0xb0, 0x21, 0x18, 0x36,
0x08, 0x92, 0xb4, 0x61, 0x19, 0xbc, 0x0f, 0x0c, 0xce, 0x40, 0x0c, 0x06,
0x31, 0x18, 0xc0, 0x00, 0x0d, 0x36, 0x08, 0x66, 0x90, 0x06, 0x4c, 0xa6,
0xac, 0xbe, 0xa8, 0xc2, 0xe4, 0xce, 0xca, 0xe8, 0x26, 0x08, 0x85, 0xb4,
0x61, 0x21, 0xd6, 0xe0, 0x63, 0x83, 0x30, 0x00, 0x83, 0x61, 0x0c, 0x08,
0x30, 0x28, 0x83, 0x0d, 0x41, 0x1b, 0x6c, 0x18, 0xd4, 0xc0, 0x0d, 0x80,
0x0d, 0x05, 0xd7, 0xbd, 0x41, 0x06, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73,
0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c,
0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32,
0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x81, 0x51, 0x87,
0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac,
0x8c, 0x6d, 0x4a, 0x90, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b,
0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x60, 0x75, 0xc8, 0xf0, 0x5c,
0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6,
0x04, 0x5a, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0xa8,
0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0xc1, 0x1b, 0x00, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce,
0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc,
0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06,
0x40, 0x30, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
0x45, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x24, 0x47, 0x00, 0x88, 0xcc, 0x00, 0x94, 0x42,
0xc9, 0x15, 0x5e, 0xd9, 0x51, 0x29, 0x83, 0x12, 0xa0, 0x31, 0x03, 0x00,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x30, 0x6d, 0x46, 0x94, 0x65, 0xc9,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x4c, 0xdc, 0x41, 0x68, 0x9a, 0x32,
0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x53, 0x87, 0x48, 0xdb, 0xb6, 0x8c,
0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x21, 0x06, 0x57, 0xc7, 0x51, 0xcb,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x63, 0x80, 0x79, 0x9d, 0xc1,
0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x41, 0x06, 0x99, 0xe7, 0x59,
0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x65, 0xa0, 0x7d, 0x1f,
0xe2, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x61, 0x06, 0x1b, 0x18,
0x80, 0xc1, 0xf5, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x71, 0x06,
0x5c, 0x18, 0x84, 0xc1, 0x02, 0x8d, 0x18, 0x3c, 0x00, 0x08, 0x82, 0x41,
0x63, 0x06, 0x4e, 0x82, 0x18, 0x85, 0xa2, 0x88, 0x81, 0x18, 0x44, 0xca,
0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26,
0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x40, 0x6a, 0x20, 0x31,
0x67, 0x30, 0x9a, 0x10, 0x00, 0x66, 0x2c, 0xf2, 0xb1, 0x40, 0x90, 0x8f,
0x1d, 0x8c, 0x7c, 0x2c, 0x20, 0xe4, 0x63, 0x48, 0x23, 0x1f, 0x0b, 0x0c,
0xf9, 0x58, 0xe2, 0xc8, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90,
0x3a, 0xf0, 0xe0, 0x00, 0x0e, 0xd0, 0xc0, 0x18, 0x31, 0x48, 0x00, 0x10,
0x04, 0x03, 0xa4, 0x0e, 0x3c, 0x38, 0x80, 0x83, 0x8c, 0x18, 0x31, 0x48,
0x00, 0x10, 0x04, 0x03, 0xa4, 0x0e, 0x3c, 0x38, 0x80, 0x83, 0x33, 0x10,
0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xa9, 0x03, 0x0f, 0x0e, 0xe0,
0x40, 0x0b, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned int texture_rgba_frag_dxil_len = 4196;

View File

@@ -0,0 +1,69 @@
static const unsigned char texture_rgba_frag_msl[] = {
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65,
0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a,
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69,
0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a,
0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x0a, 0x7b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6f,
0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x7d,
0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x37, 0x20, 0x3d,
0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20,
0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x53, 0x56, 0x5f, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30,
0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x20, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f,
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65,
0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x69,
0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
0x52, 0x44, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c,
0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a,
0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61,
0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e,
0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69,
0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e,
0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
0x20, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x74, 0x73, 0x26, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x74, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28,
0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72,
0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x75,
0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x74,
0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c,
0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x75, 0x5f, 0x73,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f,
0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20,
0x5f, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x74,
0x75, 0x72, 0x65, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x75,
0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e,
0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x54, 0x45, 0x58, 0x43,
0x4f, 0x4f, 0x52, 0x44, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x20, 0x3d,
0x20, 0x5f, 0x33, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x43,
0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6c,
0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x39,
0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x33,
0x38, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x2e, 0x79, 0x2c, 0x20,
0x5f, 0x33, 0x38, 0x2e, 0x7a, 0x2c, 0x20, 0x5f, 0x32, 0x37, 0x2e, 0x77,
0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x39, 0x2e, 0x77,
0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61,
0x72, 0x5f, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20,
0x3d, 0x20, 0x5f, 0x33, 0x39, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x69,
0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30,
0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a
};
static const unsigned int texture_rgba_frag_msl_len = 789;

View File

@@ -0,0 +1,111 @@
static const unsigned char texture_rgba_frag_spv[] = {
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00,
0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x10, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65,
0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00,
0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x00,
0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
0x07, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x32, 0x64, 0x2e,
0x69, 0x6d, 0x61, 0x67, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
0x08, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72,
0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00,
0x74, 0x79, 0x70, 0x65, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72,
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x75, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76,
0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x00, 0x00, 0x00,
0x05, 0x00, 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76,
0x61, 0x72, 0x2e, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x30,
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00,
0x6f, 0x75, 0x74, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x53, 0x56, 0x5f, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65,
0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x2e, 0x69, 0x6d, 0x61,
0x67, 0x65, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x15, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00,
0x05, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x19, 0x00, 0x09, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
0x13, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
0x19, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00,
0x1b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0xf8, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
0x12, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
0x1f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x56, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x57, 0x00, 0x06, 0x00,
0x12, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00,
0x19, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00,
0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
0x24, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00,
0x26, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
0x4f, 0x00, 0x09, 0x00, 0x12, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
0x1b, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00,
0x12, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
0x12, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00,
0x2a, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
};
static const unsigned int texture_rgba_frag_spv_len = 1296;

View File

@@ -0,0 +1,330 @@
static const unsigned char tri_color_vert_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0x0f, 0xc0, 0xaa, 0x7e, 0x88, 0xff, 0x08, 0x33,
0xbd, 0x51, 0xad, 0x10, 0xb9, 0x90, 0xb1, 0x72, 0x01, 0x00, 0x00, 0x00,
0x54, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
0x08, 0x02, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x50, 0x08, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x54, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00,
0x4f, 0x53, 0x47, 0x31, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43,
0x4f, 0x4f, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30,
0xf0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54, 0x45,
0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f,
0x4f, 0x52, 0x44, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00,
0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x24, 0x06, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0x89, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0xbb,
0x0e, 0x47, 0x9a, 0x16, 0x00, 0x73, 0xa8, 0xc9, 0x9f, 0xb0, 0x87, 0xf8,
0x39, 0xa7, 0x99, 0x88, 0x6b, 0x42, 0x81, 0xa5, 0x9b, 0x0a, 0x04, 0x00,
0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50, 0x04, 0x85, 0x50, 0x06,
0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x65, 0x45, 0xa5, 0x24, 0x46, 0x00,
0x8a, 0xa0, 0x10, 0xca, 0x80, 0xee, 0x0c, 0x00, 0xe1, 0x19, 0x00, 0xca,
0x63, 0x29, 0x08, 0x02, 0x1f, 0xf0, 0x01, 0x00, 0x81, 0x40, 0x20, 0x00,
0x79, 0x18, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04,
0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8,
0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e,
0x84, 0x98, 0x20, 0x60, 0x18, 0x19, 0xba, 0x3c, 0xb8, 0xb2, 0xaf, 0xa1,
0x37, 0x37, 0xba, 0x32, 0x3c, 0xba, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08,
0x65, 0x19, 0x88, 0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c,
0x60, 0x82, 0x70, 0x5d, 0x5c, 0x86, 0xde, 0xdc, 0xe8, 0xca, 0xf0, 0xe8,
0xbe, 0xda, 0xec, 0xe0, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d,
0xc3, 0x34, 0x49, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81,
0x70, 0x36, 0x20, 0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04, 0x06,
0xdb, 0x30, 0x10, 0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86, 0x81,
0xe0, 0xb8, 0x0d, 0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90, 0x65,
0x1b, 0x02, 0x30, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0x46, 0x84, 0xaa, 0x08,
0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x48, 0x13, 0x84, 0x62,
0xda, 0x10, 0x10, 0x13, 0x84, 0x82, 0xda, 0x20, 0x54, 0xd5, 0x86, 0x85,
0x18, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88, 0x32,
0x40, 0x83, 0x0d, 0xc1, 0x30, 0x41, 0x28, 0xaa, 0x09, 0x02, 0xf1, 0x6c,
0x10, 0x2a, 0x36, 0xd8, 0xb0, 0x0c, 0x63, 0x40, 0x06, 0x65, 0xa0, 0x06,
0x65, 0x30, 0xac, 0xc1, 0x50, 0x06, 0x6d, 0xb0, 0x41, 0x48, 0x03, 0x37,
0xd8, 0xb0, 0x10, 0x63, 0x40, 0x06, 0x65, 0x60, 0x06, 0x67, 0x30, 0xac,
0x01, 0x51, 0x06, 0x6d, 0xc0, 0x65, 0xca, 0xea, 0x0b, 0xea, 0x6d, 0x2e,
0x8d, 0x2e, 0xed, 0xcd, 0x6d, 0x82, 0x50, 0x58, 0x1b, 0x96, 0x21, 0x0e,
0xc8, 0x40, 0x0e, 0xcc, 0x60, 0x0d, 0x86, 0x35, 0x18, 0xca, 0xa0, 0x0d,
0x36, 0x08, 0x70, 0x30, 0x07, 0x1b, 0x86, 0x37, 0xa0, 0x03, 0x60, 0x43,
0xb1, 0x89, 0x41, 0x1d, 0x3c, 0x00, 0x0d, 0x33, 0xb6, 0xb7, 0x30, 0xba,
0xb9, 0x09, 0x02, 0x01, 0xb1, 0x48, 0x73, 0x9b, 0xa3, 0x9b, 0x9b, 0x20,
0x10, 0x11, 0x8d, 0xb9, 0xb4, 0xb3, 0x2f, 0x36, 0x32, 0x1a, 0x73, 0x69,
0x67, 0x5f, 0x73, 0x74, 0x1b, 0x90, 0x3b, 0xc0, 0x83, 0x3c, 0xd0, 0x83,
0x3d, 0x40, 0xf8, 0x00, 0x0f, 0xaa, 0xb0, 0xb1, 0xd9, 0xb5, 0xb9, 0xa4,
0x91, 0x95, 0xb9, 0xd1, 0x4d, 0x09, 0x82, 0x2a, 0x64, 0x78, 0x2e, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x02, 0xa2, 0x09, 0x19, 0x9e,
0x8b, 0x5d, 0x18, 0x9b, 0x5d, 0x99, 0xdc, 0x94, 0xa0, 0xa8, 0x43, 0x86,
0xe7, 0x32, 0x87, 0x16, 0x46, 0x56, 0x26, 0xd7, 0xf4, 0x46, 0x56, 0xc6,
0x36, 0x25, 0x40, 0xca, 0x90, 0xe1, 0xb9, 0xc8, 0x95, 0xcd, 0xbd, 0xd5,
0xc9, 0x8d, 0x95, 0xcd, 0x4d, 0x09, 0x9c, 0x4a, 0x64, 0x78, 0x2e, 0x74,
0x79, 0x70, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x53, 0x84, 0xcc, 0xab, 0x43, 0x86, 0xe7, 0x62, 0x97, 0x56,
0x76, 0x97, 0x44, 0x36, 0x45, 0x17, 0x46, 0x57, 0x36, 0x25, 0x00, 0x83,
0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69,
0x6e, 0x74, 0x73, 0x53, 0x82, 0x3a, 0xe8, 0x42, 0x86, 0xe7, 0x32, 0xf6,
0x56, 0xe7, 0x46, 0x57, 0x26, 0x37, 0x37, 0x25, 0xe0, 0x03, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce,
0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3,
0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7,
0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x65, 0x07, 0xd2, 0xb7, 0x7b, 0x5a, 0xf4, 0xe5, 0xba, 0x7a, 0xd1, 0x9a,
0x0e, 0x0b, 0x0d, 0x19, 0x44, 0x58, 0x49, 0x4c, 0xfc, 0x06, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe4, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0xbb,
0x0e, 0x47, 0x9a, 0x16, 0x00, 0x73, 0xa8, 0xc9, 0x9f, 0xb0, 0x87, 0xf8,
0x39, 0xa7, 0x99, 0x88, 0x6b, 0x42, 0x81, 0xa5, 0x9b, 0x0a, 0x04, 0x00,
0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x16, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x25, 0x30, 0x02, 0x50, 0x12, 0xc5, 0x50, 0x80, 0x01, 0x65, 0x50, 0x1e,
0x54, 0x4a, 0x62, 0x04, 0xa0, 0x08, 0x0a, 0xa1, 0x0c, 0x08, 0xcf, 0x00,
0x50, 0x1e, 0x4b, 0x41, 0x10, 0xf8, 0x80, 0x0f, 0x00, 0x08, 0x04, 0x02,
0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00,
0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6,
0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c,
0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8,
0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x93,
0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c, 0xcc, 0x40, 0x0c, 0x0d,
0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x6c, 0xda,
0x10, 0x44, 0x13, 0x04, 0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0x46, 0x84,
0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x34, 0x13,
0x84, 0xc2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0xe2, 0x99, 0x20, 0x10, 0xcb,
0x06, 0x41, 0xd3, 0x36, 0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4,
0xb5, 0x6d, 0x08, 0x86, 0x09, 0x42, 0x01, 0x4d, 0x10, 0x08, 0x66, 0x83,
0xa0, 0x7d, 0x1b, 0x96, 0xa1, 0xb2, 0xae, 0xee, 0x1a, 0xbc, 0xe1, 0x02,
0x83, 0x0d, 0x02, 0x17, 0x06, 0x1b, 0x16, 0xa2, 0xb2, 0x2e, 0x2c, 0x1b,
0x3c, 0xe2, 0x02, 0x03, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x22, 0xda, 0xb0, 0x0c, 0x64, 0x60,
0x95, 0x01, 0xe6, 0x0d, 0xde, 0x70, 0x81, 0xc1, 0x06, 0x61, 0x0c, 0xcc,
0x60, 0xc3, 0x20, 0x06, 0x67, 0x00, 0x6c, 0x28, 0x26, 0x0a, 0x0d, 0x20,
0xa0, 0x0a, 0x1b, 0x9b, 0x5d, 0x9b, 0x4b, 0x1a, 0x59, 0x99, 0x1b, 0xdd,
0x94, 0x20, 0xa8, 0x42, 0x86, 0xe7, 0x62, 0x57, 0x26, 0x37, 0x97, 0xf6,
0xe6, 0x36, 0x25, 0x20, 0x9a, 0x90, 0xe1, 0xb9, 0xd8, 0x85, 0xb1, 0xd9,
0x95, 0xc9, 0x4d, 0x09, 0x8c, 0x3a, 0x64, 0x78, 0x2e, 0x73, 0x68, 0x61,
0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x82, 0xa4, 0x0c,
0x19, 0x9e, 0x8b, 0x5c, 0xd9, 0xdc, 0x5b, 0x9d, 0xdc, 0x58, 0xd9, 0xdc,
0x94, 0xe0, 0xa9, 0x43, 0x86, 0xe7, 0x62, 0x97, 0x56, 0x76, 0x97, 0x44,
0x36, 0x45, 0x17, 0x46, 0x57, 0x36, 0x25, 0x88, 0xea, 0x90, 0xe1, 0xb9,
0x94, 0xb9, 0xd1, 0xc9, 0xe5, 0x41, 0xbd, 0xa5, 0xb9, 0xd1, 0xcd, 0x4d,
0x09, 0xd0, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00,
0x61, 0x20, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c,
0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x44, 0x4a, 0xa1, 0x10,
0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01,
0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x5d,
0x43, 0x53, 0x55, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x1c,
0x72, 0x59, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x97,
0x60, 0x17, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xe1, 0x29,
0x19, 0x06, 0x25, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x7c, 0x8b,
0x96, 0x3d, 0xca, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x60, 0xc0,
0x68, 0xda, 0xb4, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x11, 0x06,
0xcd, 0xb6, 0x21, 0xcc, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x60,
0xb0, 0x1c, 0xdc, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2,
0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34,
0x65, 0x00, 0x31, 0x62, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30,
0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08,
0x06, 0x8d, 0x1a, 0x54, 0x91, 0x18, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x98, 0x13, 0xc9, 0x67,
0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x37, 0xe0, 0x94, 0x28, 0x30,
0x23, 0x80, 0x8e, 0x41, 0x94, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1,
0xe0, 0x91, 0x83, 0x8f, 0xa1, 0x02, 0x0b, 0x10, 0xe8, 0x98, 0x74, 0xc9,
0x67, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x3a, 0x10, 0x03, 0xe7,
0x0a, 0x2c, 0x50, 0xa0, 0x63, 0x94, 0x26, 0x9f, 0x11, 0x03, 0x04, 0x00,
0x41, 0x30, 0x78, 0xf0, 0xa0, 0x0c, 0x20, 0x2d, 0xb0, 0x80, 0x81, 0xce,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7c, 0xa0, 0x06, 0x77, 0x70,
0x07, 0x70, 0x10, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xf0,
0x81, 0x1a, 0xdc, 0xc1, 0x1d, 0x90, 0x01, 0x18, 0x8c, 0x18, 0x24, 0x00,
0x08, 0x82, 0x01, 0xc2, 0x07, 0x6a, 0x70, 0x07, 0x77, 0xf0, 0x06, 0xdf,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7c, 0xa0, 0x06, 0x77, 0x70,
0x07, 0x6d, 0xe0, 0x8d, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0xc2, 0x07,
0x6a, 0x80, 0x07, 0x77, 0x00, 0x07, 0xca, 0x88, 0x41, 0x02, 0x80, 0x20,
0x18, 0x20, 0x7c, 0xa0, 0x06, 0x78, 0x70, 0x07, 0x64, 0x70, 0x8c, 0x18,
0x24, 0x00, 0x08, 0x82, 0x01, 0xc2, 0x07, 0x6a, 0x80, 0x07, 0x77, 0xf0,
0x06, 0xc4, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7c, 0xa0, 0x06,
0x78, 0x70, 0x07, 0x6d, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned int tri_color_vert_dxil_len = 3924;

View File

@@ -0,0 +1,52 @@
static const unsigned char tri_color_vert_msl[] = {
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65,
0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a,
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69,
0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a,
0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x6d,
0x76, 0x70, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75,
0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74,
0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x34, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f,
0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28,
0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f,
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70,
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d,
0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61,
0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x69, 0x6e, 0x5f, 0x76,
0x61, 0x72, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x20,
0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28,
0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x20, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f,
0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b,
0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20,
0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61,
0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e,
0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f,
0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x26, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29,
0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61,
0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20,
0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75,
0x74, 0x2e, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f,
0x4c, 0x4f, 0x52, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x69, 0x6e,
0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x3b,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f,
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x6d, 0x76, 0x70, 0x20, 0x2a,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x69,
0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49,
0x4f, 0x4e, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30,
0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a
};
static const unsigned int tri_color_vert_msl_len = 586;

View File

@@ -0,0 +1,81 @@
static const unsigned char tri_color_vert_spv[] = {
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00,
0x58, 0x02, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6d, 0x76, 0x70, 0x00, 0x05, 0x00, 0x04, 0x00,
0x07, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x00,
0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76,
0x61, 0x72, 0x2e, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00,
0x05, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76,
0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x00, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x2e,
0x76, 0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x00, 0x00,
0x05, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x07, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x47, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x15, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00,
0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
0xf8, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00,
0x1a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
0x1a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x1c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x51, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00,
0x0d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x90, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
0x04, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
0x05, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00,
0x38, 0x00, 0x01, 0x00
};
static const unsigned int tri_color_vert_spv_len = 928;

View File

@@ -0,0 +1,354 @@
static const unsigned char tri_texture_vert_dxil[] = {
0x44, 0x58, 0x42, 0x43, 0x4f, 0x7c, 0xd8, 0x02, 0x19, 0x0d, 0x84, 0x3f,
0x2d, 0xc5, 0xae, 0x44, 0xce, 0x19, 0x52, 0xfc, 0x01, 0x00, 0x00, 0x00,
0x70, 0x10, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x4c, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00,
0x8c, 0x02, 0x00, 0x00, 0xec, 0x08, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00,
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x74, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43,
0x4f, 0x4f, 0x52, 0x44, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x53, 0x47, 0x31,
0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5f,
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x50, 0x53, 0x56, 0x30, 0x34, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x34, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54,
0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54, 0x45, 0x58, 0x43,
0x4f, 0x4f, 0x52, 0x44, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x42, 0x00,
0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x03,
0x03, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x58, 0x06, 0x00, 0x00,
0x60, 0x00, 0x01, 0x00, 0x96, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00,
0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00,
0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0xbb,
0x0e, 0x47, 0x9a, 0x16, 0x00, 0x73, 0xa8, 0xc9, 0x9f, 0xb0, 0x87, 0xf8,
0x39, 0xa7, 0x99, 0x88, 0x6b, 0x42, 0x81, 0xa5, 0x9b, 0x0c, 0x04, 0x00,
0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x16, 0x08, 0x00, 0x12, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50, 0x04, 0x85, 0x50, 0x06,
0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0xe5, 0x55, 0x14, 0x54, 0x4a, 0x62,
0x04, 0xa0, 0x08, 0x0a, 0xa1, 0x0c, 0xe8, 0xce, 0x00, 0x10, 0x9e, 0x01,
0xa0, 0x3c, 0x16, 0xa3, 0x30, 0x20, 0x3e, 0x80, 0xf8, 0x00, 0x00, 0x81,
0x40, 0x20, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
0x8d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0x05, 0xc7, 0x45,
0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04, 0x25, 0xa7, 0xcc, 0x4c,
0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x60,
0x19, 0x19, 0xba, 0x3c, 0xb8, 0xb2, 0xaf, 0xa1, 0x37, 0x37, 0xba, 0x32,
0x3c, 0xba, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x19, 0x88, 0x81,
0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70, 0x61,
0x5c, 0x86, 0xde, 0xdc, 0xe8, 0xca, 0xf0, 0xe8, 0xbe, 0xda, 0xec, 0xe0,
0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d, 0xc3, 0x34, 0x49, 0x13,
0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81, 0x70, 0x36, 0x20, 0x48,
0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04, 0x06, 0xdb, 0x30, 0x10, 0x50,
0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86, 0x81, 0xe0, 0xb8, 0x0d, 0x41,
0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90, 0x69, 0x1b, 0x02, 0x30, 0x20,
0xd1, 0x16, 0x96, 0xe6, 0x46, 0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49,
0x8a, 0x68, 0x82, 0x50, 0x4c, 0x13, 0x84, 0x82, 0xda, 0x10, 0x10, 0x13,
0x84, 0xa2, 0xda, 0x20, 0x54, 0xd5, 0x86, 0x85, 0x18, 0x03, 0x32, 0x28,
0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88, 0x32, 0x40, 0x83, 0x0d, 0xc1,
0x30, 0x41, 0x28, 0xac, 0x09, 0x02, 0xf1, 0x6c, 0x10, 0x2a, 0x36, 0xd8,
0xb0, 0x0c, 0x63, 0x40, 0x06, 0x65, 0xa0, 0x06, 0x65, 0x30, 0xac, 0xc1,
0x50, 0x06, 0x6d, 0xb0, 0x21, 0x90, 0x36, 0x2c, 0xd2, 0x18, 0x90, 0x41,
0x19, 0xbc, 0x41, 0x19, 0x0c, 0x67, 0x20, 0x95, 0x01, 0x1a, 0x6c, 0x18,
0xd2, 0xc0, 0x0d, 0xe0, 0x60, 0xc3, 0x42, 0x8c, 0x01, 0x19, 0x94, 0x81,
0x19, 0x9c, 0xc1, 0xb0, 0x06, 0x44, 0x19, 0xb4, 0xc1, 0x86, 0x65, 0x18,
0x03, 0x32, 0x28, 0x03, 0x35, 0x38, 0x83, 0xe1, 0x0c, 0x86, 0x32, 0x40,
0x03, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x13, 0x84, 0xe2, 0xda, 0xb0, 0x48, 0x74, 0x40, 0x06, 0x75, 0x60,
0x06, 0x6b, 0x30, 0xac, 0x81, 0x54, 0x06, 0x6d, 0xb0, 0x61, 0x90, 0x83,
0x39, 0xb0, 0x83, 0x0d, 0x43, 0x1c, 0xdc, 0x01, 0xb0, 0xa1, 0xd8, 0xc4,
0x00, 0x0f, 0x1e, 0x80, 0x86, 0x19, 0xdb, 0x5b, 0x18, 0xdd, 0xdc, 0x04,
0x81, 0x80, 0x58, 0xa4, 0xb9, 0xcd, 0xd1, 0xcd, 0x4d, 0x10, 0x88, 0x88,
0xc6, 0x5c, 0xda, 0xd9, 0x17, 0x1b, 0x19, 0x8d, 0xb9, 0xb4, 0xb3, 0xaf,
0x39, 0xba, 0x09, 0x02, 0x21, 0x6d, 0x40, 0xf4, 0x60, 0x0f, 0xf8, 0xa0,
0x0f, 0xfc, 0x60, 0x0f, 0xfe, 0x00, 0x14, 0xaa, 0xb0, 0xb1, 0xd9, 0xb5,
0xb9, 0xa4, 0x91, 0x95, 0xb9, 0xd1, 0x4d, 0x09, 0x82, 0x2a, 0x64, 0x78,
0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x02, 0xa2, 0x09,
0x19, 0x9e, 0x8b, 0x5d, 0x18, 0x9b, 0x5d, 0x99, 0xdc, 0x94, 0xa0, 0xa8,
0x43, 0x86, 0xe7, 0x32, 0x87, 0x16, 0x46, 0x56, 0x26, 0xd7, 0xf4, 0x46,
0x56, 0xc6, 0x36, 0x25, 0x40, 0xca, 0x90, 0xe1, 0xb9, 0xc8, 0x95, 0xcd,
0xbd, 0xd5, 0xc9, 0x8d, 0x95, 0xcd, 0x4d, 0x09, 0x9c, 0x4a, 0x64, 0x78,
0x2e, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x53, 0x84, 0xcc, 0xab, 0x43, 0x86, 0xe7, 0x62,
0x97, 0x56, 0x76, 0x97, 0x44, 0x36, 0x45, 0x17, 0x46, 0x57, 0x36, 0x25,
0x00, 0x83, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50,
0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x3c, 0xe8, 0x42, 0x86, 0xe7,
0x32, 0xf6, 0x56, 0xe7, 0x46, 0x57, 0x26, 0x37, 0x37, 0x25, 0x00, 0x05,
0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x2b, 0x2a, 0x99, 0x10, 0x58, 0x82, 0xa5, 0x3c,
0x8d, 0xb2, 0x14, 0xd6, 0xaa, 0xd4, 0xe4, 0x68, 0x44, 0x58, 0x49, 0x4c,
0x60, 0x07, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0xd8, 0x01, 0x00, 0x00,
0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x48, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
0xcf, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88,
0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42,
0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c,
0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07,
0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20,
0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00,
0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42,
0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00,
0x24, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04,
0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14,
0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00,
0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29,
0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1,
0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95,
0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e,
0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab,
0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11,
0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10,
0x43, 0x12, 0xd4, 0xbb, 0x0e, 0x47, 0x9a, 0x16, 0x00, 0x73, 0xa8, 0xc9,
0x9f, 0xb0, 0x87, 0xf8, 0x39, 0xa7, 0x99, 0x88, 0x6b, 0x42, 0x81, 0xa5,
0x9b, 0x0c, 0x04, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x12, 0xc5, 0x50, 0x80,
0x01, 0x65, 0x50, 0x1e, 0x45, 0x40, 0xa5, 0x24, 0x46, 0x00, 0x8a, 0xa0,
0x10, 0xca, 0x80, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x18, 0x85, 0x01, 0xf1,
0x01, 0xc4, 0x07, 0x00, 0x08, 0x04, 0x02, 0x81, 0xc0, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
0xc6, 0x05, 0xc7, 0x45, 0xa6, 0x06, 0xa6, 0xc6, 0x45, 0x06, 0x07, 0x04,
0x25, 0xa7, 0xcc, 0x4c, 0x4c, 0xcc, 0x66, 0x6c, 0x46, 0x26, 0x65, 0x43,
0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98,
0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8, 0xcd, 0x4d, 0x10, 0x88,
0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x9b, 0x08, 0x4c, 0x10, 0x08,
0x65, 0x03, 0x42, 0x2c, 0xcc, 0x40, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36,
0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x8c, 0xda, 0x10, 0x44, 0x13, 0x04,
0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0x46, 0x84, 0xaa, 0x08, 0x6b, 0xe8,
0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10,
0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x10, 0xcb, 0x06, 0x41, 0xd3, 0x36,
0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4, 0xb5, 0x6d, 0x08, 0x86,
0x09, 0x42, 0x11, 0x4d, 0x10, 0x08, 0x66, 0x83, 0xa0, 0x7d, 0x1b, 0x96,
0xa1, 0xb2, 0xae, 0xee, 0x1a, 0xbc, 0xe1, 0x02, 0x83, 0x09, 0x02, 0xd1,
0x6c, 0x08, 0xc4, 0x60, 0xc3, 0x22, 0x06, 0x95, 0x75, 0x8d, 0xc1, 0x35,
0x64, 0x62, 0x70, 0x6d, 0x1b, 0x06, 0x2e, 0x0c, 0xc8, 0x60, 0xc3, 0x42,
0x54, 0xd6, 0x85, 0x65, 0x83, 0x47, 0x5c, 0x60, 0xb0, 0x61, 0x19, 0x2a,
0xeb, 0xea, 0xb2, 0x21, 0x1b, 0xae, 0x8d, 0xcb, 0x94, 0xd5, 0x17, 0xd4,
0xdb, 0x5c, 0x1a, 0x5d, 0xda, 0x9b, 0xdb, 0x04, 0xa1, 0x90, 0x36, 0x2c,
0x62, 0x80, 0x06, 0x56, 0x1a, 0x60, 0xde, 0xe0, 0x89, 0xc1, 0x05, 0x06,
0x1b, 0x06, 0x33, 0x38, 0x03, 0x35, 0xd8, 0x30, 0x94, 0xc1, 0x1a, 0x00,
0x1b, 0x8a, 0x89, 0x62, 0x03, 0x08, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6,
0x92, 0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9,
0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64,
0x78, 0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e,
0x19, 0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59,
0x19, 0xdb, 0x94, 0x20, 0x29, 0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7,
0x56, 0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0x78, 0xea, 0x90, 0xe1, 0xb9,
0xd8, 0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d,
0x09, 0xa2, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50,
0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x36, 0x00, 0x00, 0x00, 0x00,
0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97,
0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce,
0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3,
0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7,
0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
0x72, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x44, 0x4a, 0xa1, 0x10, 0x66, 0x00, 0x8a, 0xab,
0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x61, 0x43, 0x63, 0x59, 0xc1,
0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x1d, 0x12, 0x5d, 0xcf, 0x31,
0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x97, 0x48, 0x18, 0x81, 0x8c,
0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xf1, 0x29, 0x5a, 0x16, 0x25, 0x23,
0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x80, 0xc1, 0xb2, 0x69, 0x86, 0x32,
0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x18, 0x30, 0xdc, 0x26, 0x2d,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x88, 0x41, 0xd3, 0x71, 0x11,
0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x18, 0x38, 0x5d, 0x57,
0x35, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x90, 0xc1, 0xe3, 0x79,
0x8a, 0x33, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x18, 0x34, 0xc9,
0x37, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3,
0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x1a, 0x48,
0x4e, 0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c,
0xc2, 0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0xd3,
0x06, 0xd7, 0x54, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3,
0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0xe6, 0x44, 0xf2, 0x19, 0x31, 0x40,
0x00, 0x10, 0x04, 0x83, 0x47, 0x0e, 0x3c, 0x25, 0x0a, 0xcc, 0x08, 0xa0,
0x63, 0x10, 0x25, 0x9f, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xea,
0x20, 0x0c, 0x18, 0x2a, 0xb0, 0x00, 0x81, 0x8e, 0x49, 0x97, 0x7c, 0x46,
0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xc1, 0x03, 0x32, 0x70, 0xae, 0xc0,
0x02, 0x05, 0x3a, 0x46, 0x69, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04,
0x83, 0x67, 0x0f, 0xce, 0x00, 0xd2, 0x02, 0x0b, 0x18, 0xe8, 0x8c, 0x18,
0x24, 0x00, 0x08, 0x82, 0x01, 0xf2, 0x07, 0x6c, 0xa0, 0x07, 0x7a, 0x20,
0x07, 0x61, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc8, 0x1f, 0xb0,
0x81, 0x1e, 0xe8, 0x81, 0x19, 0x80, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20,
0x18, 0x20, 0x7f, 0xc0, 0x06, 0x7a, 0xa0, 0x07, 0x71, 0xf0, 0x8d, 0x18,
0x24, 0x00, 0x08, 0x82, 0x01, 0xf2, 0x07, 0x6c, 0xa0, 0x07, 0x7a, 0xf0,
0x06, 0xde, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7f, 0xc0, 0x06,
0x7b, 0xa0, 0x07, 0x72, 0x30, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
0x80, 0xfc, 0x01, 0x1b, 0xec, 0x81, 0x1e, 0x98, 0x81, 0x18, 0x8c, 0x18,
0x24, 0x00, 0x08, 0x82, 0x01, 0xf2, 0x07, 0x6c, 0x40, 0x07, 0x7a, 0x20,
0x07, 0xca, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0x7f, 0xc0, 0x06,
0x74, 0xa0, 0x07, 0x66, 0x70, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
0xf2, 0x07, 0x6c, 0x40, 0x07, 0x7a, 0x10, 0x07, 0xc4, 0x88, 0x41, 0x02,
0x80, 0x20, 0x18, 0x20, 0x7f, 0xc0, 0x06, 0x74, 0xa0, 0x07, 0x6f, 0x10,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned int tri_texture_vert_dxil_len = 4208;

View File

@@ -0,0 +1,64 @@
static const unsigned char tri_texture_vert_msl[] = {
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65,
0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a,
0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69,
0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a,
0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a,
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x5f,
0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x6d,
0x76, 0x70, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75,
0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74,
0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x34, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f,
0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28,
0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6f, 0x75, 0x74,
0x5f, 0x76, 0x61, 0x72, 0x5f, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f,
0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f,
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a,
0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e,
0x30, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72,
0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x5b, 0x5b,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29,
0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x34, 0x20, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f,
0x4c, 0x4f, 0x52, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x69, 0x6e,
0x5f, 0x76, 0x61, 0x72, 0x5f, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
0x44, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a,
0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, 0x61, 0x69, 0x6e,
0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28,
0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20,
0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d,
0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x74,
0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x26,
0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x5b, 0x5b, 0x62,
0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a,
0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f,
0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d,
0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75,
0x74, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30,
0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72,
0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x72,
0x5f, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x30, 0x20, 0x3d,
0x20, 0x69, 0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x54,
0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x30, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x2e, 0x6d, 0x76, 0x70, 0x20, 0x2a, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x69, 0x6e, 0x5f, 0x76,
0x61, 0x72, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x2c,
0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f,
0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a
};
static const unsigned int tri_texture_vert_msl_len = 727;

View File

@@ -0,0 +1,95 @@
static const unsigned char tri_texture_vert_spv[] = {
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00,
0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65,
0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x6d, 0x76, 0x70, 0x00, 0x05, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x05, 0x00, 0x06, 0x00,
0x02, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x50,
0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x05, 0x00, 0x06, 0x00,
0x03, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x43,
0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00,
0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x2e, 0x54,
0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x30, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x2e,
0x76, 0x61, 0x72, 0x2e, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x30, 0x00, 0x00,
0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x2e,
0x76, 0x61, 0x72, 0x2e, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x07, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
0x09, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f, 0x17, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00,
0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x1e, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
0x13, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x14, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x3b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0xf8, 0x00, 0x02, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
0x12, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00,
0x1d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
0x19, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x21, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
};
static const unsigned int tri_texture_vert_spv_len = 1100;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,382 @@
#include <metal_common>
#include <metal_texture>
#include <metal_matrix>
#include <metal_stdlib>
using namespace metal;
// These should mirror the definitions in SDL_render_metal.m
#define TONEMAP_NONE 0
#define TONEMAP_LINEAR 1
#define TONEMAP_CHROME 2
#define TEXTURETYPE_NONE 0
#define TEXTURETYPE_RGB 1
#define TEXTURETYPE_RGB_PIXELART 2
#define TEXTURETYPE_PALETTE_NEAREST 3
#define TEXTURETYPE_PALETTE_LINEAR 4
#define TEXTURETYPE_PALETTE_PIXELART 5
#define TEXTURETYPE_NV12 6
#define TEXTURETYPE_NV21 7
#define TEXTURETYPE_YUV 8
#define INPUTTYPE_UNSPECIFIED 0
#define INPUTTYPE_SRGB 1
#define INPUTTYPE_SCRGB 2
#define INPUTTYPE_HDR10 3
struct ShaderConstants
{
float scRGB_output;
float texture_type;
float input_type;
float color_scale;
float4 texel_size;
float tonemap_method;
float tonemap_factor1;
float tonemap_factor2;
float sdr_white_point;
};
struct YUVDecode
{
float3 offset;
float3x3 matrix;
};
float sRGBtoLinear(float v)
{
if (v <= 0.04045) {
v = (v / 12.92);
} else {
v = pow(abs(v + 0.055) / 1.055, 2.4);
}
return v;
}
float sRGBfromLinear(float v)
{
if (v <= 0.0031308) {
v = (v * 12.92);
} else {
v = (pow(abs(v), 1.0 / 2.4) * 1.055 - 0.055);
}
return v;
}
float3 PQtoLinear(float3 v, float sdr_white_point)
{
const float c1 = 0.8359375;
const float c2 = 18.8515625;
const float c3 = 18.6875;
const float oo_m1 = 1.0 / 0.1593017578125;
const float oo_m2 = 1.0 / 78.84375;
float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
float3 den = c2 - c3 * pow(abs(v), oo_m2);
return (10000.0 * pow(abs(num / den), oo_m1) / sdr_white_point);
}
float3 ApplyTonemap(float3 v, float input_type, float tonemap_method, float tonemap_factor1, float tonemap_factor2)
{
const float3x3 mat709to2020 = {
{ 0.627404, 0.329283, 0.043313 },
{ 0.069097, 0.919541, 0.011362 },
{ 0.016391, 0.088013, 0.895595 }
};
const float3x3 mat2020to709 = {
{ 1.660496, -0.587656, -0.072840 },
{ -0.124547, 1.132895, -0.008348 },
{ -0.018154, -0.100597, 1.118751 }
};
if (tonemap_method == TONEMAP_LINEAR) {
v *= tonemap_factor1;
} else if (tonemap_method == TONEMAP_CHROME) {
if (input_type == INPUTTYPE_SCRGB) {
// Convert to BT.2020 colorspace for tone mapping
v = v * mat709to2020;
}
float vmax = max(v.r, max(v.g, v.b));
if (vmax > 0.0) {
float scale = (1.0 + tonemap_factor1 * vmax) / (1.0 + tonemap_factor2 * vmax);
v *= scale;
}
if (input_type == INPUTTYPE_SCRGB) {
// Convert to BT.709 colorspace after tone mapping
v = v * mat2020to709;
}
}
return v;
}
float4 SamplePaletteNearest(texture2d<float> tex0, texture2d<float> tex1, sampler s0, sampler s1, float2 uv)
{
float index = tex0.sample(s0, uv).r * 255;
return tex1.sample(s1, float2((index + 0.5) / 256, 0.5));
}
// Implementation with thanks from bgolus:
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
float4 SamplePaletteLinear(texture2d<float> tex0, texture2d<float> tex1, sampler s0, sampler s1, float2 uv, float4 texel_size)
{
// scale & offset uvs to integer values at texel centers
float2 uv_texels = uv * texel_size.zw + 0.5;
// get uvs for the center of the 4 surrounding texels by flooring
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
// blend factor
float2 uv_frac = fract(uv_texels);
// sample all 4 texels
float4 texelA = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.xy);
float4 texelB = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.xw);
float4 texelC = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.zy);
float4 texelD = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.zw);
// bilinear interpolation
return mix(mix(texelA, texelB, uv_frac.y), mix(texelC, texelD, uv_frac.y), uv_frac.x);
}
float2 GetPixelArtUV(float2 uv, float4 texel_size)
{
// box filter size in texel units
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
// scale uv by texture size to get texel coordinate
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
// compute offset for pixel-sized box filter
float2 txOffset = smoothstep(1 - boxSize, 1, fract(tx));
// compute bilinear sample uv coordinates
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
}
float4 GetOutputColorSimple(float4 rgba, float color_scale)
{
float4 output;
output.rgb = rgba.rgb * color_scale;
output.a = rgba.a;
return output;
}
float3 GetOutputColorFromSRGB(float3 rgb, float scRGB_output, float color_scale)
{
float3 output;
if (scRGB_output) {
rgb.r = sRGBtoLinear(rgb.r);
rgb.g = sRGBtoLinear(rgb.g);
rgb.b = sRGBtoLinear(rgb.b);
}
output = rgb * color_scale;
return output;
}
float3 GetOutputColorFromLinear(float3 rgb, float scRGB_output, float color_scale)
{
float3 output;
output = rgb * color_scale;
if (!scRGB_output) {
output.r = sRGBfromLinear(output.r);
output.g = sRGBfromLinear(output.g);
output.b = sRGBfromLinear(output.b);
output = clamp(output, 0.0, 1.0);
}
return output;
}
float4 GetOutputColor(float4 rgba, constant ShaderConstants &c)
{
const float3x3 mat2020to709 = {
{ 1.660496, -0.587656, -0.072840 },
{ -0.124547, 1.132895, -0.008348 },
{ -0.018154, -0.100597, 1.118751 }
};
float4 output;
if (c.input_type == INPUTTYPE_HDR10) {
rgba.rgb = PQtoLinear(rgba.rgb, c.sdr_white_point);
}
if (c.tonemap_method != TONEMAP_NONE) {
rgba.rgb = ApplyTonemap(rgba.rgb, c.input_type, c.tonemap_method, c.tonemap_factor1, c.tonemap_factor2);
}
if (c.input_type == INPUTTYPE_SRGB) {
if (c.texture_type == TEXTURETYPE_RGB) {
// The sampler has already converted to linear if necessary
output.rgb = rgba.rgb * c.color_scale;
} else {
output.rgb = GetOutputColorFromSRGB(rgba.rgb, c.scRGB_output, c.color_scale);
}
} else if (c.input_type == INPUTTYPE_SCRGB) {
output.rgb = GetOutputColorFromLinear(rgba.rgb, c.scRGB_output, c.color_scale);
} else if (c.input_type == INPUTTYPE_HDR10) {
rgba.rgb = rgba.rgb * mat2020to709;
output.rgb = GetOutputColorFromLinear(rgba.rgb, c.scRGB_output, c.color_scale);
} else {
// Unexpected input type, use magenta error color
output.rgb = float3(1.0, 0.0, 1.0);
}
output.a = rgba.a;
return output;
}
struct SolidVertexInput
{
float2 position [[attribute(0)]];
float4 color [[attribute(1)]];
};
struct SolidVertexOutput
{
float4 position [[position]];
float4 color;
float pointSize [[point_size]];
};
vertex SolidVertexOutput SDL_Solid_vertex(SolidVertexInput in [[stage_in]],
constant float4x4 &projection [[buffer(2)]],
constant float4x4 &transform [[buffer(3)]])
{
SolidVertexOutput v;
v.position = (projection * transform) * float4(in.position, 0.0f, 1.0f);
v.color = in.color;
v.pointSize = 1.0f;
return v;
}
fragment float4 SDL_Solid_fragment(SolidVertexInput in [[stage_in]],
constant ShaderConstants &c [[buffer(0)]])
{
return GetOutputColorSimple(1.0, c.color_scale) * in.color;
}
struct CopyVertexInput
{
float2 position [[attribute(0)]];
float4 color [[attribute(1)]];
float2 texcoord [[attribute(2)]];
};
struct CopyVertexOutput
{
float4 position [[position]];
float4 color;
float2 texcoord;
};
vertex CopyVertexOutput SDL_Copy_vertex(CopyVertexInput in [[stage_in]],
constant float4x4 &projection [[buffer(2)]],
constant float4x4 &transform [[buffer(3)]])
{
CopyVertexOutput v;
v.position = (projection * transform) * float4(in.position, 0.0f, 1.0f);
v.color = in.color;
v.texcoord = in.texcoord;
return v;
}
fragment float4 SDL_Palette_fragment(CopyVertexOutput vert [[stage_in]],
constant ShaderConstants &c [[buffer(0)]],
texture2d<float> tex0 [[texture(0)]],
texture2d<float> tex1 [[texture(1)]],
sampler s0 [[sampler(0)]],
sampler s1 [[sampler(1)]])
{
float4 rgba;
if (c.texture_type == TEXTURETYPE_PALETTE_NEAREST) {
rgba = SamplePaletteNearest(tex0, tex1, s0, s1, vert.texcoord);
} else if (c.texture_type == TEXTURETYPE_PALETTE_LINEAR) {
rgba = SamplePaletteLinear(tex0, tex1, s0, s1, vert.texcoord, c.texel_size);
} else if (c.texture_type == TEXTURETYPE_PALETTE_PIXELART) {
float2 uv = GetPixelArtUV(vert.texcoord, c.texel_size);
rgba = SamplePaletteLinear(tex0, tex1, s0, s1, uv, c.texel_size);
} else {
// Unexpected texture type, use magenta error color
rgba = float4(1.0, 0.0, 1.0, 1.0);
}
return GetOutputColor(rgba, c) * vert.color;
}
fragment float4 SDL_Copy_fragment(CopyVertexOutput vert [[stage_in]],
constant ShaderConstants &c [[buffer(0)]],
texture2d<float> tex [[texture(0)]],
sampler s [[sampler(0)]])
{
float4 rgba;
if (c.texture_type == TEXTURETYPE_RGB) {
rgba = tex.sample(s, vert.texcoord);
} else if (c.texture_type == TEXTURETYPE_RGB_PIXELART) {
float2 uv = GetPixelArtUV(vert.texcoord, c.texel_size);
rgba = tex.sample(s, uv, gradient2d(dfdx(vert.texcoord), dfdy(vert.texcoord)));
} else {
// Unexpected texture type, use magenta error color
rgba = float4(1.0, 0.0, 1.0, 1.0);
}
return GetOutputColor(rgba, c) * vert.color;
}
fragment float4 SDL_YUV_fragment(CopyVertexOutput vert [[stage_in]],
constant ShaderConstants &c [[buffer(0)]],
constant YUVDecode &decode [[buffer(1)]],
texture2d<float> texY [[texture(0)]],
texture2d_array<float> texUV [[texture(1)]],
sampler s [[sampler(0)]])
{
float3 yuv;
yuv.x = texY.sample(s, vert.texcoord).r;
yuv.y = texUV.sample(s, vert.texcoord, 0).r;
yuv.z = texUV.sample(s, vert.texcoord, 1).r;
float4 rgba;
rgba.rgb = (yuv + decode.offset) * decode.matrix;
rgba.a = 1.0;
return GetOutputColor(rgba, c) * vert.color;
}
fragment float4 SDL_NV12_fragment(CopyVertexOutput vert [[stage_in]],
constant ShaderConstants &c [[buffer(0)]],
constant YUVDecode &decode [[buffer(1)]],
texture2d<float> texY [[texture(0)]],
texture2d<float> texUV [[texture(1)]],
sampler s [[sampler(0)]])
{
float4 rgba;
if (c.texture_type == TEXTURETYPE_NV12) {
float3 yuv;
yuv.x = texY.sample(s, vert.texcoord).r;
yuv.yz = texUV.sample(s, vert.texcoord).rg;
rgba.rgb = (yuv + decode.offset) * decode.matrix;
} else if (c.texture_type == TEXTURETYPE_NV21) {
float3 yuv;
yuv.x = texY.sample(s, vert.texcoord).r;
yuv.yz = texUV.sample(s, vert.texcoord).gr;
rgba.rgb = (yuv + decode.offset) * decode.matrix;
} else {
// Unexpected texture type, use magenta error color
rgba.rgb = float3(1.0, 0.0, 1.0);
}
rgba.a = 1.0;
return GetOutputColor(rgba, c) * vert.color;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
#!/bin/bash
set -x
set -e
cd `dirname "$0"`
generate_shaders()
{
fileplatform=$1
compileplatform=$2
sdkplatform=$3
minversion=$4
xcrun -sdk $sdkplatform metal -c -std=$compileplatform-metal1.1 -m$sdkplatform-version-min=$minversion -Wall -O3 -o ./sdl.air ./SDL_shaders_metal.metal || exit $?
xcrun -sdk $sdkplatform metal-ar rc sdl.metalar sdl.air || exit $?
xcrun -sdk $sdkplatform metallib -o sdl.metallib sdl.metalar || exit $?
xxd -i sdl.metallib | perl -w -p -e 's/\Aunsigned /const unsigned /;' >./SDL_shaders_metal_$fileplatform.h
rm -f sdl.air sdl.metalar sdl.metallib
}
generate_shaders macos macos macosx 10.11
generate_shaders ios ios iphoneos 8.0
generate_shaders iphonesimulator ios iphonesimulator 8.0
generate_shaders tvos ios appletvos 9.0
generate_shaders tvsimulator ios appletvsimulator 9.0

View File

@@ -0,0 +1,536 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_NGAGE
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#ifndef Int2Fix
#define Int2Fix(i) ((i) << 16)
#endif
#ifndef Fix2Int
#define Fix2Int(i) ((((unsigned int)(i) > 0xFFFF0000) ? 0 : ((i) >> 16)))
#endif
#ifndef Fix2Real
#define Fix2Real(i) ((i) / 65536.0)
#endif
#ifndef Real2Fix
#define Real2Fix(i) ((int)((i) * 65536.0))
#endif
#include "../SDL_sysrender.h"
#include "SDL_render_ngage_c.h"
static void NGAGE_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event);
static bool NGAGE_GetOutputSize(SDL_Renderer *renderer, int *w, int *h);
static bool NGAGE_SupportsBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode);
static bool NGAGE_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_PropertiesID create_props);
static bool NGAGE_QueueSetViewport(SDL_Renderer *renderer, SDL_RenderCommand *cmd);
static bool NGAGE_QueueSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand *cmd);
static bool NGAGE_QueueDrawVertices(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count);
static bool NGAGE_QueueFillRects(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FRect *rects, int count);
static bool NGAGE_QueueCopy(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture, const SDL_FRect *srcrect, const SDL_FRect *dstrect);
static bool NGAGE_QueueCopyEx(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture, const SDL_FRect *srcquad, const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_FlipMode flip, float scale_x, float scale_y);
static bool NGAGE_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture, const float *xy, int xy_stride, const SDL_FColor *color, int color_stride, const float *uv, int uv_stride, int num_vertices, const void *indices, int num_indices, int size_indices, float scale_x, float scale_y);
static void NGAGE_InvalidateCachedState(SDL_Renderer *renderer);
static bool NGAGE_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, void *vertices, size_t vertsize);
static bool NGAGE_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, const void *pixels, int pitch);
static bool NGAGE_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, void **pixels, int *pitch);
static void NGAGE_UnlockTexture(SDL_Renderer *renderer, SDL_Texture *texture);
static bool NGAGE_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture);
static SDL_Surface *NGAGE_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect);
static bool NGAGE_RenderPresent(SDL_Renderer *renderer);
static void NGAGE_DestroyTexture(SDL_Renderer *renderer, SDL_Texture *texture);
static void NGAGE_DestroyRenderer(SDL_Renderer *renderer);
static bool NGAGE_SetVSync(SDL_Renderer *renderer, int vsync);
static bool NGAGE_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_PropertiesID create_props)
{
SDL_SetupRendererColorspace(renderer, create_props);
if (renderer->output_colorspace != SDL_COLORSPACE_RGB_DEFAULT) {
return SDL_SetError("Unsupported output colorspace");
}
NGAGE_RendererData *phdata = SDL_calloc(1, sizeof(NGAGE_RendererData));
if (!phdata) {
SDL_OutOfMemory();
return false;
}
renderer->WindowEvent = NGAGE_WindowEvent;
renderer->GetOutputSize = NGAGE_GetOutputSize;
renderer->SupportsBlendMode = NGAGE_SupportsBlendMode;
renderer->CreateTexture = NGAGE_CreateTexture;
renderer->QueueSetViewport = NGAGE_QueueSetViewport;
renderer->QueueSetDrawColor = NGAGE_QueueSetDrawColor;
renderer->QueueDrawPoints = NGAGE_QueueDrawVertices;
renderer->QueueDrawLines = NGAGE_QueueDrawVertices;
renderer->QueueFillRects = NGAGE_QueueFillRects;
renderer->QueueCopy = NGAGE_QueueCopy;
renderer->QueueCopyEx = NGAGE_QueueCopyEx;
renderer->QueueGeometry = NGAGE_QueueGeometry;
renderer->InvalidateCachedState = NGAGE_InvalidateCachedState;
renderer->RunCommandQueue = NGAGE_RunCommandQueue;
renderer->UpdateTexture = NGAGE_UpdateTexture;
renderer->LockTexture = NGAGE_LockTexture;
renderer->UnlockTexture = NGAGE_UnlockTexture;
renderer->SetRenderTarget = NGAGE_SetRenderTarget;
renderer->RenderReadPixels = NGAGE_RenderReadPixels;
renderer->RenderPresent = NGAGE_RenderPresent;
renderer->DestroyTexture = NGAGE_DestroyTexture;
renderer->DestroyRenderer = NGAGE_DestroyRenderer;
renderer->SetVSync = NGAGE_SetVSync;
renderer->name = NGAGE_RenderDriver.name;
renderer->window = window;
renderer->internal = phdata;
renderer->npot_texture_wrap_unsupported = true;
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB4444);
SDL_SetNumberProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER, 1024);
SDL_SetHintWithPriority(SDL_HINT_RENDER_LINE_METHOD, "2", SDL_HINT_OVERRIDE);
return true;
}
SDL_RenderDriver NGAGE_RenderDriver = {
NGAGE_CreateRenderer,
"N-Gage"
};
static void NGAGE_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event)
{
return;
}
static bool NGAGE_GetOutputSize(SDL_Renderer *renderer, int *w, int *h)
{
return true;
}
static bool NGAGE_SupportsBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode)
{
switch (blendMode) {
case SDL_BLENDMODE_NONE:
case SDL_BLENDMODE_MOD:
return true;
default:
return false;
}
}
static bool NGAGE_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_PropertiesID create_props)
{
NGAGE_TextureData *data = (NGAGE_TextureData *)SDL_calloc(1, sizeof(*data));
if (!data) {
return false;
}
if (!NGAGE_CreateTextureData(data, texture->w, texture->h)) {
SDL_free(data);
return false;
}
SDL_Surface *surface = SDL_CreateSurface(texture->w, texture->h, texture->format);
if (!surface) {
SDL_free(data);
return false;
}
data->surface = surface;
texture->internal = data;
return true;
}
static bool NGAGE_QueueSetViewport(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
if (!cmd->data.viewport.rect.w && !cmd->data.viewport.rect.h) {
SDL_Rect viewport = { 0, 0, NGAGE_SCREEN_WIDTH, NGAGE_SCREEN_HEIGHT };
SDL_SetRenderViewport(renderer, &viewport);
}
return true;
}
static bool NGAGE_QueueSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
return true;
}
static bool NGAGE_QueueDrawVertices(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
{
NGAGE_Vertex *verts = (NGAGE_Vertex *)SDL_AllocateRenderVertices(renderer, count * sizeof(NGAGE_Vertex), 0, &cmd->data.draw.first);
if (!verts) {
return false;
}
cmd->data.draw.count = count;
for (int i = 0; i < count; i++, points++) {
int fixed_x = Real2Fix(points->x);
int fixed_y = Real2Fix(points->y);
verts[i].x = Fix2Int(fixed_x);
verts[i].y = Fix2Int(fixed_y);
Uint32 color = NGAGE_ConvertColor(cmd->data.draw.color.r, cmd->data.draw.color.g, cmd->data.draw.color.b, cmd->data.draw.color.a, cmd->data.draw.color_scale);
verts[i].color.a = (Uint8)(color >> 24);
verts[i].color.b = (Uint8)(color >> 16);
verts[i].color.g = (Uint8)(color >> 8);
verts[i].color.r = (Uint8)color;
}
return true;
}
static bool NGAGE_QueueFillRects(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FRect *rects, int count)
{
NGAGE_Vertex *verts = (NGAGE_Vertex *)SDL_AllocateRenderVertices(renderer, count * 2 * sizeof(NGAGE_Vertex), 0, &cmd->data.draw.first);
if (!verts) {
return false;
}
cmd->data.draw.count = count;
for (int i = 0; i < count; i++, rects++) {
verts[i * 2].x = Real2Fix(rects->x);
verts[i * 2].y = Real2Fix(rects->y);
verts[i * 2 + 1].x = Real2Fix(rects->w);
verts[i * 2 + 1].y = Real2Fix(rects->h);
verts[i * 2].x = Fix2Int(verts[i * 2].x);
verts[i * 2].y = Fix2Int(verts[i * 2].y);
verts[i * 2 + 1].x = Fix2Int(verts[i * 2 + 1].x);
verts[i * 2 + 1].y = Fix2Int(verts[i * 2 + 1].y);
Uint32 color = NGAGE_ConvertColor(cmd->data.draw.color.r, cmd->data.draw.color.g, cmd->data.draw.color.b, cmd->data.draw.color.a, cmd->data.draw.color_scale);
verts[i * 2].color.a = (Uint8)(color >> 24);
verts[i * 2].color.b = (Uint8)(color >> 16);
verts[i * 2].color.g = (Uint8)(color >> 8);
verts[i * 2].color.r = (Uint8)color;
}
return true;
}
static bool NGAGE_QueueCopy(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture, const SDL_FRect *srcrect, const SDL_FRect *dstrect)
{
SDL_Rect *verts = (SDL_Rect *)SDL_AllocateRenderVertices(renderer, 2 * sizeof(SDL_Rect), 0, &cmd->data.draw.first);
if (!verts) {
return false;
}
cmd->data.draw.count = 1;
verts->x = (int)srcrect->x;
verts->y = (int)srcrect->y;
verts->w = (int)srcrect->w;
verts->h = (int)srcrect->h;
verts++;
verts->x = (int)dstrect->x;
verts->y = (int)dstrect->y;
verts->w = (int)dstrect->w;
verts->h = (int)dstrect->h;
return true;
}
static bool NGAGE_QueueCopyEx(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture, const SDL_FRect *srcquad, const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_FlipMode flip, float scale_x, float scale_y)
{
NGAGE_CopyExData *verts = (NGAGE_CopyExData *)SDL_AllocateRenderVertices(renderer, sizeof(NGAGE_CopyExData), 0, &cmd->data.draw.first);
if (!verts) {
return false;
}
cmd->data.draw.count = 1;
verts->srcrect.x = (int)srcquad->x;
verts->srcrect.y = (int)srcquad->y;
verts->srcrect.w = (int)srcquad->w;
verts->srcrect.h = (int)srcquad->h;
verts->dstrect.x = (int)dstrect->x;
verts->dstrect.y = (int)dstrect->y;
verts->dstrect.w = (int)dstrect->w;
verts->dstrect.h = (int)dstrect->h;
verts->angle = Real2Fix(angle);
verts->center.x = Real2Fix(center->x);
verts->center.y = Real2Fix(center->y);
verts->scale_x = Real2Fix(scale_x);
verts->scale_y = Real2Fix(scale_y);
verts->flip = flip;
return true;
}
static bool NGAGE_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture, const float *xy, int xy_stride, const SDL_FColor *color, int color_stride, const float *uv, int uv_stride, int num_vertices, const void *indices, int num_indices, int size_indices, float scale_x, float scale_y)
{
return true;
}
static void NGAGE_InvalidateCachedState(SDL_Renderer *renderer)
{
return;
}
static bool NGAGE_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, void *vertices, size_t vertsize)
{
NGAGE_RendererData *phdata = (NGAGE_RendererData *)renderer->internal;
if (!phdata) {
return false;
}
phdata->viewport = 0;
while (cmd) {
switch (cmd->command) {
case SDL_RENDERCMD_NO_OP:
break;
case SDL_RENDERCMD_SETVIEWPORT:
phdata->viewport = &cmd->data.viewport.rect;
break;
case SDL_RENDERCMD_SETCLIPRECT:
{
const SDL_Rect *rect = &cmd->data.cliprect.rect;
if (cmd->data.cliprect.enabled) {
NGAGE_SetClipRect(rect);
}
break;
}
case SDL_RENDERCMD_SETDRAWCOLOR:
{
break;
}
case SDL_RENDERCMD_CLEAR:
{
Uint32 color = NGAGE_ConvertColor(cmd->data.color.color.r, cmd->data.color.color.g, cmd->data.color.color.b, cmd->data.color.color.a, cmd->data.color.color_scale);
NGAGE_Clear(color);
break;
}
case SDL_RENDERCMD_DRAW_POINTS:
{
NGAGE_Vertex *verts = (NGAGE_Vertex *)(((Uint8 *)vertices) + cmd->data.draw.first);
const int count = cmd->data.draw.count;
// Apply viewport.
if (phdata->viewport && (phdata->viewport->x || phdata->viewport->y)) {
for (int i = 0; i < count; i++) {
verts[i].x += phdata->viewport->x;
verts[i].y += phdata->viewport->y;
}
}
NGAGE_DrawPoints(verts, count);
break;
}
case SDL_RENDERCMD_DRAW_LINES:
{
NGAGE_Vertex *verts = (NGAGE_Vertex *)(((Uint8 *)vertices) + cmd->data.draw.first);
const int count = cmd->data.draw.count;
// Apply viewport.
if (phdata->viewport && (phdata->viewport->x || phdata->viewport->y)) {
for (int i = 0; i < count; i++) {
verts[i].x += phdata->viewport->x;
verts[i].y += phdata->viewport->y;
}
}
NGAGE_DrawLines(verts, count);
break;
}
case SDL_RENDERCMD_FILL_RECTS:
{
NGAGE_Vertex *verts = (NGAGE_Vertex *)(((Uint8 *)vertices) + cmd->data.draw.first);
const int count = cmd->data.draw.count;
// Apply viewport.
if (phdata->viewport && (phdata->viewport->x || phdata->viewport->y)) {
for (int i = 0; i < count; i++) {
verts[i].x += phdata->viewport->x;
verts[i].y += phdata->viewport->y;
}
}
NGAGE_FillRects(verts, count);
break;
}
case SDL_RENDERCMD_COPY:
{
SDL_Rect *verts = (SDL_Rect *)(((Uint8 *)vertices) + cmd->data.draw.first);
SDL_Rect *srcrect = verts;
SDL_Rect *dstrect = verts + 1;
SDL_Texture *texture = cmd->data.draw.texture;
// Apply viewport.
if (phdata->viewport && (phdata->viewport->x || phdata->viewport->y)) {
dstrect->x += phdata->viewport->x;
dstrect->y += phdata->viewport->y;
}
NGAGE_Copy(renderer, texture, srcrect, dstrect);
break;
}
case SDL_RENDERCMD_COPY_EX:
{
NGAGE_CopyExData *copydata = (NGAGE_CopyExData *)(((Uint8 *)vertices) + cmd->data.draw.first);
SDL_Texture *texture = cmd->data.draw.texture;
// Apply viewport.
if (phdata->viewport && (phdata->viewport->x || phdata->viewport->y)) {
copydata->dstrect.x += phdata->viewport->x;
copydata->dstrect.y += phdata->viewport->y;
}
NGAGE_CopyEx(renderer, texture, copydata);
break;
}
case SDL_RENDERCMD_GEOMETRY:
{
break;
}
}
cmd = cmd->next;
}
return true;
}
static bool NGAGE_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, const void *pixels, int pitch)
{
NGAGE_TextureData *phdata = (NGAGE_TextureData *)texture->internal;
SDL_Surface *surface = phdata->surface;
Uint8 *src, *dst;
int row;
size_t length;
if (SDL_MUSTLOCK(surface)) {
if (!SDL_LockSurface(surface)) {
return false;
}
}
src = (Uint8 *)pixels;
dst = (Uint8 *)surface->pixels +
rect->y * surface->pitch +
rect->x * surface->fmt->bytes_per_pixel;
length = (size_t)rect->w * surface->fmt->bytes_per_pixel;
for (row = 0; row < rect->h; ++row) {
SDL_memcpy(dst, src, length);
src += pitch;
dst += surface->pitch;
}
if (SDL_MUSTLOCK(surface)) {
SDL_UnlockSurface(surface);
}
return true;
}
static bool NGAGE_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *rect, void **pixels, int *pitch)
{
NGAGE_TextureData *phdata = (NGAGE_TextureData *)texture->internal;
SDL_Surface *surface = phdata->surface;
*pixels =
(void *)((Uint8 *)surface->pixels + rect->y * surface->pitch +
rect->x * surface->fmt->bytes_per_pixel);
*pitch = surface->pitch;
return true;
}
static void NGAGE_UnlockTexture(SDL_Renderer *renderer, SDL_Texture *texture)
{
}
static bool NGAGE_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
{
return true;
}
static SDL_Surface *NGAGE_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect)
{
return (SDL_Surface *)0;
}
static bool NGAGE_RenderPresent(SDL_Renderer *renderer)
{
NGAGE_Flip();
return true;
}
static void NGAGE_DestroyTexture(SDL_Renderer *renderer, SDL_Texture *texture)
{
NGAGE_TextureData *data = (NGAGE_TextureData *)texture->internal;
if (data) {
SDL_DestroySurface(data->surface);
NGAGE_DestroyTextureData(data);
SDL_free(data);
texture->internal = 0;
}
}
static void NGAGE_DestroyRenderer(SDL_Renderer *renderer)
{
NGAGE_RendererData *phdata = (NGAGE_RendererData *)renderer->internal;
if (phdata) {
SDL_free(phdata);
renderer->internal = 0;
}
}
static bool NGAGE_SetVSync(SDL_Renderer *renderer, int vsync)
{
return true;
}
#endif // SDL_VIDEO_RENDER_NGAGE

View File

@@ -0,0 +1,744 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "../../events/SDL_keyboard_c.h"
#include "../SDL_sysrender.h"
#include "SDL_internal.h"
#include "SDL_render_ngage_c.h"
#ifdef __cplusplus
}
#endif
#ifdef SDL_VIDEO_RENDER_NGAGE
#include "SDL_render_ngage_c.hpp"
#include "SDL_render_ops.hpp"
const TUint32 WindowClientHandle = 0x571D0A;
extern CRenderer *gRenderer;
#ifdef __cplusplus
extern "C" {
#endif
void NGAGE_Clear(const Uint32 color)
{
gRenderer->Clear(color);
}
bool NGAGE_Copy(SDL_Renderer *renderer, SDL_Texture *texture, SDL_Rect *srcrect, SDL_Rect *dstrect)
{
return gRenderer->Copy(renderer, texture, srcrect, dstrect);
}
bool NGAGE_CopyEx(SDL_Renderer *renderer, SDL_Texture *texture, NGAGE_CopyExData *copydata)
{
return gRenderer->CopyEx(renderer, texture, copydata);
}
bool NGAGE_CreateTextureData(NGAGE_TextureData *data, const int width, const int height)
{
return gRenderer->CreateTextureData(data, width, height);
}
void NGAGE_DestroyTextureData(NGAGE_TextureData *data)
{
if (data) {
delete data->bitmap;
data->bitmap = NULL;
}
}
void NGAGE_DrawLines(NGAGE_Vertex *verts, const int count)
{
gRenderer->DrawLines(verts, count);
}
void NGAGE_DrawPoints(NGAGE_Vertex *verts, const int count)
{
gRenderer->DrawPoints(verts, count);
}
void NGAGE_FillRects(NGAGE_Vertex *verts, const int count)
{
gRenderer->FillRects(verts, count);
}
void NGAGE_Flip()
{
gRenderer->Flip();
}
void NGAGE_SetClipRect(const SDL_Rect *rect)
{
gRenderer->SetClipRect(rect->x, rect->y, rect->w, rect->h);
}
void NGAGE_SetDrawColor(const Uint32 color)
{
if (gRenderer) {
gRenderer->SetDrawColor(color);
}
}
void NGAGE_PumpEventsInternal()
{
gRenderer->PumpEvents();
}
void NGAGE_SuspendScreenSaverInternal(bool suspend)
{
gRenderer->SuspendScreenSaver(suspend);
}
#ifdef __cplusplus
}
#endif
CRenderer *CRenderer::NewL()
{
CRenderer *self = new (ELeave) CRenderer();
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(self);
return self;
}
CRenderer::CRenderer() : iRenderer(0), iDirectScreen(0), iScreenGc(0), iWsSession(), iWsWindowGroup(), iWsWindowGroupID(0), iWsWindow(), iWsScreen(0), iWsEventStatus(), iWsEvent(), iShowFPS(EFalse), iFPS(0), iFont(0) {}
CRenderer::~CRenderer()
{
delete iRenderer;
iRenderer = 0;
}
void CRenderer::ConstructL()
{
TInt error = KErrNone;
error = iWsSession.Connect();
if (error != KErrNone) {
SDL_Log("Failed to connect to window server: %d", error);
User::Leave(error);
}
iWsScreen = new (ELeave) CWsScreenDevice(iWsSession);
error = iWsScreen->Construct();
if (error != KErrNone) {
SDL_Log("Failed to construct screen device: %d", error);
User::Leave(error);
}
iWsWindowGroup = RWindowGroup(iWsSession);
error = iWsWindowGroup.Construct(WindowClientHandle);
if (error != KErrNone) {
SDL_Log("Failed to construct window group: %d", error);
User::Leave(error);
}
iWsWindowGroup.SetOrdinalPosition(0);
RProcess thisProcess;
TParse exeName;
exeName.Set(thisProcess.FileName(), NULL, NULL);
TBuf<32> winGroupName;
winGroupName.Append(0);
winGroupName.Append(0);
winGroupName.Append(0); // UID
winGroupName.Append(0);
winGroupName.Append(exeName.Name()); // Caption
winGroupName.Append(0);
winGroupName.Append(0); // DOC name
iWsWindowGroup.SetName(winGroupName);
iWsWindow = RWindow(iWsSession);
error = iWsWindow.Construct(iWsWindowGroup, WindowClientHandle - 1);
if (error != KErrNone) {
SDL_Log("Failed to construct window: %d", error);
User::Leave(error);
}
iWsWindow.SetBackgroundColor(KRgbWhite);
iWsWindow.SetRequiredDisplayMode(EColor4K);
iWsWindow.Activate();
iWsWindow.SetSize(iWsScreen->SizeInPixels());
iWsWindow.SetVisible(ETrue);
iWsWindowGroupID = iWsWindowGroup.Identifier();
TRAPD(errc, iRenderer = iRenderer->NewL());
if (errc != KErrNone) {
SDL_Log("Failed to create renderer: %d", errc);
return;
}
iDirectScreen = CDirectScreenAccess::NewL(
iWsSession,
*(iWsScreen),
iWsWindow, *this);
// Select font.
TFontSpec fontSpec(_L("LatinBold12"), 12);
TInt errd = iWsScreen->GetNearestFontInTwips((CFont *&)iFont, fontSpec);
if (errd != KErrNone) {
SDL_Log("Failed to get font: %d", errd);
return;
}
// Activate events.
iWsEventStatus = KRequestPending;
iWsSession.EventReady(&iWsEventStatus);
DisableKeyBlocking();
iIsFocused = ETrue;
iShowFPS = EFalse;
iSuspendScreenSaver = EFalse;
if (!iDirectScreen->IsActive()) {
TRAPD(err, iDirectScreen->StartL());
if (KErrNone != err) {
return;
}
iDirectScreen->ScreenDevice()->SetAutoUpdate(ETrue);
}
}
void CRenderer::Restart(RDirectScreenAccess::TTerminationReasons aReason)
{
if (!iDirectScreen->IsActive()) {
TRAPD(err, iDirectScreen->StartL());
if (KErrNone != err) {
return;
}
iDirectScreen->ScreenDevice()->SetAutoUpdate(ETrue);
}
}
void CRenderer::AbortNow(RDirectScreenAccess::TTerminationReasons aReason)
{
if (iDirectScreen->IsActive()) {
iDirectScreen->Cancel();
}
}
void CRenderer::Clear(TUint32 iColor)
{
if (iRenderer && iRenderer->Gc()) {
iRenderer->Gc()->SetBrushColor(iColor);
iRenderer->Gc()->Clear();
}
}
#ifdef __cplusplus
extern "C" {
#endif
Uint32 NGAGE_ConvertColor(float r, float g, float b, float a, float color_scale)
{
TFixed ff = 255 << 16; // 255.f
TFixed scalef = Real2Fix(color_scale);
TFixed rf = Real2Fix(r);
TFixed gf = Real2Fix(g);
TFixed bf = Real2Fix(b);
TFixed af = Real2Fix(a);
rf = FixMul(rf, scalef);
gf = FixMul(gf, scalef);
bf = FixMul(bf, scalef);
rf = SDL_clamp(rf, 0, ff);
gf = SDL_clamp(gf, 0, ff);
bf = SDL_clamp(bf, 0, ff);
af = SDL_clamp(af, 0, ff);
rf = FixMul(rf, ff) >> 16;
gf = FixMul(gf, ff) >> 16;
bf = FixMul(bf, ff) >> 16;
af = FixMul(af, ff) >> 16;
return (af << 24) | (bf << 16) | (gf << 8) | rf;
}
#ifdef __cplusplus
}
#endif
bool CRenderer::Copy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_Rect *dstrect)
{
if (!texture) {
return false;
}
NGAGE_TextureData *phdata = (NGAGE_TextureData *)texture->internal;
if (!phdata) {
return false;
}
SDL_FColor *c = &texture->color;
int w = phdata->surface->w;
int h = phdata->surface->h;
int pitch = phdata->surface->pitch;
void *source = phdata->surface->pixels;
void *dest;
if (!source) {
return false;
}
void *pixel_buffer_a = SDL_calloc(1, pitch * h);
if (!pixel_buffer_a) {
return false;
}
dest = pixel_buffer_a;
void *pixel_buffer_b = SDL_calloc(1, pitch * h);
if (!pixel_buffer_b) {
SDL_free(pixel_buffer_a);
return false;
}
if (c->a != 1.f || c->r != 1.f || c->g != 1.f || c->b != 1.f) {
ApplyColorMod(dest, source, pitch, w, h, texture->color);
source = dest;
}
float sx;
float sy;
SDL_GetRenderScale(renderer, &sx, &sy);
if (sx != 1.f || sy != 1.f) {
TFixed scale_x = Real2Fix(sx);
TFixed scale_y = Real2Fix(sy);
TFixed center_x = Int2Fix(w / 2);
TFixed center_y = Int2Fix(h / 2);
dest == pixel_buffer_a ? dest = pixel_buffer_b : dest = pixel_buffer_a;
ApplyScale(dest, source, pitch, w, h, center_x, center_y, scale_x, scale_y);
source = dest;
}
Mem::Copy(phdata->bitmap->DataAddress(), source, pitch * h);
SDL_free(pixel_buffer_a);
SDL_free(pixel_buffer_b);
if (phdata->bitmap) {
TRect aSource(TPoint(srcrect->x, srcrect->y), TSize(srcrect->w, srcrect->h));
TPoint aDest(dstrect->x, dstrect->y);
iRenderer->Gc()->BitBlt(aDest, phdata->bitmap, aSource);
}
return true;
}
bool CRenderer::CopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const NGAGE_CopyExData *copydata)
{
NGAGE_TextureData *phdata = (NGAGE_TextureData *)texture->internal;
if (!phdata) {
return false;
}
SDL_FColor *c = &texture->color;
int w = phdata->surface->w;
int h = phdata->surface->h;
int pitch = phdata->surface->pitch;
void *source = phdata->surface->pixels;
void *dest;
if (!source) {
return false;
}
void *pixel_buffer_a = SDL_calloc(1, pitch * h);
if (!pixel_buffer_a) {
return false;
}
dest = pixel_buffer_a;
void *pixel_buffer_b = SDL_calloc(1, pitch * h);
if (!pixel_buffer_a) {
SDL_free(pixel_buffer_a);
return false;
}
if (copydata->flip) {
ApplyFlip(dest, source, pitch, w, h, copydata->flip);
source = dest;
}
if (copydata->scale_x != 1.f || copydata->scale_y != 1.f) {
dest == pixel_buffer_a ? dest = pixel_buffer_b : dest = pixel_buffer_a;
ApplyScale(dest, source, pitch, w, h, copydata->center.x, copydata->center.y, copydata->scale_x, copydata->scale_y);
source = dest;
}
if (copydata->angle) {
dest == pixel_buffer_a ? dest = pixel_buffer_b : dest = pixel_buffer_a;
ApplyRotation(dest, source, pitch, w, h, copydata->center.x, copydata->center.y, copydata->angle);
source = dest;
}
if (c->a != 1.f || c->r != 1.f || c->g != 1.f || c->b != 1.f) {
dest == pixel_buffer_a ? dest = pixel_buffer_b : dest = pixel_buffer_a;
ApplyColorMod(dest, source, pitch, w, h, texture->color);
source = dest;
}
Mem::Copy(phdata->bitmap->DataAddress(), source, pitch * h);
SDL_free(pixel_buffer_a);
SDL_free(pixel_buffer_b);
if (phdata->bitmap) {
TRect aSource(TPoint(copydata->srcrect.x, copydata->srcrect.y), TSize(copydata->srcrect.w, copydata->srcrect.h));
TPoint aDest(copydata->dstrect.x, copydata->dstrect.y);
iRenderer->Gc()->BitBlt(aDest, phdata->bitmap, aSource);
}
return true;
}
bool CRenderer::CreateTextureData(NGAGE_TextureData *aTextureData, const TInt aWidth, const TInt aHeight)
{
if (!aTextureData) {
return false;
}
aTextureData->bitmap = new CFbsBitmap();
if (!aTextureData->bitmap) {
return false;
}
TInt error = aTextureData->bitmap->Create(TSize(aWidth, aHeight), EColor4K);
if (error != KErrNone) {
delete aTextureData->bitmap;
aTextureData->bitmap = NULL;
return false;
}
return true;
}
void CRenderer::DrawLines(NGAGE_Vertex *aVerts, const TInt aCount)
{
if (iRenderer && iRenderer->Gc()) {
TPoint *aPoints = new TPoint[aCount];
for (TInt i = 0; i < aCount; i++) {
aPoints[i] = TPoint(aVerts[i].x, aVerts[i].y);
}
TUint32 aColor = (((TUint8)aVerts->color.a << 24) |
((TUint8)aVerts->color.b << 16) |
((TUint8)aVerts->color.g << 8) |
(TUint8)aVerts->color.r);
iRenderer->Gc()->SetPenColor(aColor);
iRenderer->Gc()->DrawPolyLineNoEndPoint(aPoints, aCount);
delete[] aPoints;
}
}
void CRenderer::DrawPoints(NGAGE_Vertex *aVerts, const TInt aCount)
{
if (iRenderer && iRenderer->Gc()) {
for (TInt i = 0; i < aCount; i++, aVerts++) {
TUint32 aColor = (((TUint8)aVerts->color.a << 24) |
((TUint8)aVerts->color.b << 16) |
((TUint8)aVerts->color.g << 8) |
(TUint8)aVerts->color.r);
iRenderer->Gc()->SetPenColor(aColor);
iRenderer->Gc()->Plot(TPoint(aVerts->x, aVerts->y));
}
}
}
void CRenderer::FillRects(NGAGE_Vertex *aVerts, const TInt aCount)
{
if (iRenderer && iRenderer->Gc()) {
for (TInt i = 0; i < aCount; i++, aVerts++) {
TPoint pos(aVerts[i].x, aVerts[i].y);
TSize size(
aVerts[i + 1].x,
aVerts[i + 1].y);
TRect rect(pos, size);
TUint32 aColor = (((TUint8)aVerts->color.a << 24) |
((TUint8)aVerts->color.b << 16) |
((TUint8)aVerts->color.g << 8) |
(TUint8)aVerts->color.r);
iRenderer->Gc()->SetPenColor(aColor);
iRenderer->Gc()->SetBrushColor(aColor);
iRenderer->Gc()->DrawRect(rect);
}
}
}
void CRenderer::Flip()
{
if (!iRenderer) {
SDL_Log("iRenderer is NULL.");
return;
}
if (!iIsFocused) {
return;
}
iRenderer->Gc()->UseFont(iFont);
if (iShowFPS && iRenderer->Gc()) {
UpdateFPS();
TBuf<64> info;
iRenderer->Gc()->SetPenStyle(CGraphicsContext::ESolidPen);
iRenderer->Gc()->SetBrushStyle(CGraphicsContext::ENullBrush);
iRenderer->Gc()->SetPenColor(KRgbCyan);
TRect aTextRect(TPoint(3, 203 - iFont->HeightInPixels()), TSize(45, iFont->HeightInPixels() + 2));
iRenderer->Gc()->SetBrushStyle(CGraphicsContext::ESolidBrush);
iRenderer->Gc()->SetBrushColor(KRgbBlack);
iRenderer->Gc()->DrawRect(aTextRect);
// Draw messages.
info.Format(_L("FPS: %d"), iFPS);
iRenderer->Gc()->DrawText(info, TPoint(5, 203));
} else {
// This is a workaround that helps regulating the FPS.
iRenderer->Gc()->DrawText(_L(""), TPoint(0, 0));
}
iRenderer->Gc()->DiscardFont();
iRenderer->Flip(iDirectScreen);
// Keep the backlight on.
if (iSuspendScreenSaver) {
User::ResetInactivityTime();
}
// Suspend the current thread for a short while.
// Give some time to other threads and active objects.
User::After(0);
}
void CRenderer::SetDrawColor(TUint32 iColor)
{
if (iRenderer && iRenderer->Gc()) {
iRenderer->Gc()->SetPenColor(iColor);
iRenderer->Gc()->SetBrushColor(iColor);
iRenderer->Gc()->SetBrushStyle(CGraphicsContext::ESolidBrush);
TRAPD(err, iRenderer->SetCurrentColor(iColor));
if (err != KErrNone) {
return;
}
}
}
void CRenderer::SetClipRect(TInt aX, TInt aY, TInt aWidth, TInt aHeight)
{
if (iRenderer && iRenderer->Gc()) {
TRect viewportRect(aX, aY, aX + aWidth, aY + aHeight);
iRenderer->Gc()->SetClippingRect(viewportRect);
}
}
void CRenderer::UpdateFPS()
{
static TTime lastTime;
static TInt frameCount = 0;
TTime currentTime;
const TUint KOneSecond = 1000000; // 1s in ms.
currentTime.HomeTime();
++frameCount;
TTimeIntervalMicroSeconds timeDiff = currentTime.MicroSecondsFrom(lastTime);
if (timeDiff.Int64() >= KOneSecond) {
// Calculate FPS.
iFPS = frameCount;
// Reset frame count and last time.
frameCount = 0;
lastTime = currentTime;
}
}
void CRenderer::SuspendScreenSaver(TBool aSuspend)
{
iSuspendScreenSaver = aSuspend;
}
static SDL_Scancode ConvertScancode(int key)
{
SDL_Keycode keycode;
switch (key) {
case EStdKeyBackspace: // Clear key
keycode = SDLK_BACKSPACE;
break;
case 0x31: // 1
keycode = SDLK_1;
break;
case 0x32: // 2
keycode = SDLK_2;
break;
case 0x33: // 3
keycode = SDLK_3;
break;
case 0x34: // 4
keycode = SDLK_4;
break;
case 0x35: // 5
keycode = SDLK_5;
break;
case 0x36: // 6
keycode = SDLK_6;
break;
case 0x37: // 7
keycode = SDLK_7;
break;
case 0x38: // 8
keycode = SDLK_8;
break;
case 0x39: // 9
keycode = SDLK_9;
break;
case 0x30: // 0
keycode = SDLK_0;
break;
case 0x2a: // Asterisk
keycode = SDLK_ASTERISK;
break;
case EStdKeyHash: // Hash
keycode = SDLK_HASH;
break;
case EStdKeyDevice0: // Left softkey
keycode = SDLK_SOFTLEFT;
break;
case EStdKeyDevice1: // Right softkey
keycode = SDLK_SOFTRIGHT;
break;
case EStdKeyApplication0: // Call softkey
keycode = SDLK_CALL;
break;
case EStdKeyApplication1: // End call softkey
keycode = SDLK_ENDCALL;
break;
case EStdKeyDevice3: // Middle softkey
keycode = SDLK_SELECT;
break;
case EStdKeyUpArrow: // Up arrow
keycode = SDLK_UP;
break;
case EStdKeyDownArrow: // Down arrow
keycode = SDLK_DOWN;
break;
case EStdKeyLeftArrow: // Left arrow
keycode = SDLK_LEFT;
break;
case EStdKeyRightArrow: // Right arrow
keycode = SDLK_RIGHT;
break;
default:
keycode = SDLK_UNKNOWN;
break;
}
return SDL_GetScancodeFromKey(keycode, NULL);
}
void CRenderer::HandleEvent(const TWsEvent &aWsEvent)
{
Uint64 timestamp;
switch (aWsEvent.Type()) {
case EEventKeyDown: /* Key events */
timestamp = SDL_GetPerformanceCounter();
SDL_SendKeyboardKey(timestamp, 1, aWsEvent.Key()->iCode, ConvertScancode(aWsEvent.Key()->iScanCode), true);
if (aWsEvent.Key()->iScanCode == EStdKeyHash) {
if (iShowFPS) {
iShowFPS = EFalse;
} else {
iShowFPS = ETrue;
}
}
break;
case EEventKeyUp: /* Key events */
timestamp = SDL_GetPerformanceCounter();
SDL_SendKeyboardKey(timestamp, 1, aWsEvent.Key()->iCode, ConvertScancode(aWsEvent.Key()->iScanCode), false);
case EEventFocusGained:
DisableKeyBlocking();
if (!iDirectScreen->IsActive()) {
TRAPD(err, iDirectScreen->StartL());
if (KErrNone != err) {
return;
}
iDirectScreen->ScreenDevice()->SetAutoUpdate(ETrue);
iIsFocused = ETrue;
}
Flip();
break;
case EEventFocusLost:
{
if (iDirectScreen->IsActive()) {
iDirectScreen->Cancel();
}
iIsFocused = EFalse;
break;
}
default:
break;
}
}
void CRenderer::DisableKeyBlocking()
{
TRawEvent aEvent;
aEvent.Set((TRawEvent::TType) /*EDisableKeyBlock*/ 51);
iWsSession.SimulateRawEvent(aEvent);
}
void CRenderer::PumpEvents()
{
while (iWsEventStatus != KRequestPending) {
iWsSession.GetEvent(iWsEvent);
HandleEvent(iWsEvent);
iWsEventStatus = KRequestPending;
iWsSession.EventReady(&iWsEventStatus);
}
}
#endif // SDL_VIDEO_RENDER_NGAGE

Some files were not shown because too many files have changed in this diff Show More