From 135f8f5ecac5bc04bc18438bf78fd7ba82c40816 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 28 Apr 2014 23:20:51 +0200 Subject: [PATCH 01/25] Added gwinLabelSetAttribute() --- docs/releases.txt | 1 + gfxconf.example.h | 3 +++ src/gwin/label.c | 43 +++++++++++++++++++++++++++++++++++++++---- src/gwin/label.h | 28 ++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/docs/releases.txt b/docs/releases.txt index 3edfbf4c..6e234536 100644 --- a/docs/releases.txt +++ b/docs/releases.txt @@ -24,6 +24,7 @@ FEATURE: Support for ChibiOS/RT 3.x FEATURE: Added gwinProgressbarStop() and gwinProgressbarReset() FEATURE: Added generic ILI93xx driver by xlh1460 FEATURE: Added gwinListEnableRender() +FEATURE: Added gwinLabelSetAttribute() *** changes after 1.9 *** diff --git a/gfxconf.example.h b/gfxconf.example.h index 824c2a23..18437a4d 100644 --- a/gfxconf.example.h +++ b/gfxconf.example.h @@ -135,7 +135,9 @@ #define GWIN_NEED_GRAPH FALSE #define GWIN_NEED_WIDGET FALSE + #define GWIN_NEED_HIERARCHY FALSE #define GWIN_NEED_LABEL FALSE + #define GWIN_LABEL_ATTRIBUTE FALSE #define GWIN_NEED_BUTTON FALSE #define GWIN_BUTTON_LAZY_RELEASE FALSE #define GWIN_NEED_SLIDER FALSE @@ -146,6 +148,7 @@ #define GWIN_NEED_LIST FALSE #define GWIN_NEED_LIST_IMAGES FALSE #define GWIN_NEED_PROGRESSBAR FALSE + #define GWIN_NEED_FRAME FALSE /////////////////////////////////////////////////////////////////////////// diff --git a/src/gwin/label.c b/src/gwin/label.c index a5064818..167ded84 100644 --- a/src/gwin/label.c +++ b/src/gwin/label.c @@ -23,6 +23,7 @@ // macros to assist in data type conversions #define gh2obj ((GLabelObject *)gh) +#define gw2obj ((GLabelObject *)gw) // flags for the GLabelObject #define GLABEL_FLG_WAUTO (GWIN_FIRST_CONTROL_FLAG << 0) @@ -57,10 +58,26 @@ static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) { return; } - // render the text - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, - (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, - justifyLeft); + #if GWIN_LABEL_ATTRIBUTE + if (gw2obj->attr != 0) { + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw2obj->attr, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + + gdispGFillStringBox(gw->g.display, gw->g.x + gw2obj->tab, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + } else { + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + + } + #else + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + #endif // render the border (if any) if (gw->g.flags & GLABEL_FLG_BORDER) @@ -124,6 +141,11 @@ GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit) // no borders by default flags &=~ GLABEL_FLG_BORDER; + #if GWIN_LABEL_ATTRIBUTE + widget->tab = 0; + widget->attr = 0; + #endif + widget->w.g.flags |= flags; gwinSetVisible(&widget->w.g, pInit->g.show); @@ -141,6 +163,19 @@ void gwinLabelSetBorder(GHandle gh, bool_t border) { gh2obj->w.g.flags &=~ GLABEL_FLG_BORDER; } +#if GWIN_LABEL_ATTRIBUTE + void gwinLabelSetAttribute(GHandle gh, coord_t tab, char* attr) { + // is it a valid handle? + if (gh->vmt != (gwinVMT *)&labelVMT) + return; + + gh2obj->tab = tab; + gh2obj->attr = attr; + + gwinRedraw(gh); + } +#endif // GWIN_LABEL_ATTRIBUTE + #endif // GFX_USE_GWIN && GFX_NEED_LABEL /** @} */ diff --git a/src/gwin/label.h b/src/gwin/label.h index 9d62738d..5cf87ad1 100644 --- a/src/gwin/label.h +++ b/src/gwin/label.h @@ -32,6 +32,11 @@ // An label window typedef struct GLabelObject { GWidgetObject w; + + #if GWIN_LABEL_ATTRIBUTE + coord_t tab; + char* attr; + #endif } GLabelObject; #ifdef __cplusplus @@ -63,6 +68,29 @@ GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit); */ void gwinLabelSetBorder(GHandle gh, bool_t border); +#if GWIN_LABEL_ATTRIBUTE + /** + * @brief Add an attribute in front of the actualy label text + * @detail Often you want to display a text like this: + * Current IP: 192.168.1.42 + * In that case, one the actual IP will be variable, the text in front of it + * always remains the same. The static text is called the attribute and can be + * set using this function. + * Furthermore, the tab can be set in order to vertically align multiple labels. + * Please check out the website for further explanation, illustraions and usage + * examples. + * + * @note The attribute text is currently not being allocated + * + * @param[in] gh The widget handle (must be a label handle) + * @param[in] tab The distance of the label text from the left widget edge + * @param[in] attr The attribute to be displayed + * + * @api + */ + void gwinLabelSetAttribute(GHandle gh, coord_t tab, char* attr); +#endif + #ifdef __cplusplus } #endif From 9d7520da1c12ad4e36956a22ec84ebc2261fbcb6 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 28 Apr 2014 23:21:53 +0200 Subject: [PATCH 02/25] Updating .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 14b00eca..5611e0ab 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ build *.lst *.o *.map +*.sublime-* src/gdisp/fonts/*.dat From 3ca8a99c7ef7c07267933cdf9ba0de59e50b9db4 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 28 Apr 2014 23:22:09 +0200 Subject: [PATCH 03/25] Adding gwin/label demo --- demos/modules/gwin/label/demo.mk | 3 + demos/modules/gwin/label/gfxconf.h | 243 +++++++++++++++++++++++++++++ demos/modules/gwin/label/main.c | 84 ++++++++++ 3 files changed, 330 insertions(+) create mode 100644 demos/modules/gwin/label/demo.mk create mode 100644 demos/modules/gwin/label/gfxconf.h create mode 100644 demos/modules/gwin/label/main.c diff --git a/demos/modules/gwin/label/demo.mk b/demos/modules/gwin/label/demo.mk new file mode 100644 index 00000000..e0288789 --- /dev/null +++ b/demos/modules/gwin/label/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/label +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gwin/label/gfxconf.h b/demos/modules/gwin/label/gfxconf.h new file mode 100644 index 00000000..59ba809e --- /dev/null +++ b/demos/modules/gwin/label/gfxconf.h @@ -0,0 +1,243 @@ +/** + * This file has a different license to the rest of the uGFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +/** + * Copy this file into your project directory and rename it as gfxconf.h + * Edit your copy to turn on the uGFX features you want to use. + * The values below are the defaults. You should delete anything + * you are leaving as default. + * + * Please use spaces instead of tabs in this file. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use. One of these must be defined - preferably in your Makefile */ +//#define GFX_USE_OS_CHIBIOS TRUE +//#define GFX_USE_OS_WIN32 TRUE +//#define GFX_USE_OS_LINUX TRUE +//#define GFX_USE_OS_OSX TRUE + + +/////////////////////////////////////////////////////////////////////////// +// GDISP // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GDISP TRUE + +#define GDISP_NEED_AUTOFLUSH FALSE +#define GDISP_NEED_TIMERFLUSH FALSE +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_CIRCLE FALSE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_CONVEX_POLYGON FALSE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_QUERY FALSE +#define GDISP_NEED_MULTITHREAD FALSE +#define GDISP_NEED_STREAMING FALSE +#define GDISP_NEED_TEXT TRUE + #define GDISP_NEED_ANTIALIAS TRUE + #define GDISP_NEED_UTF8 TRUE + #define GDISP_NEED_TEXT_KERNING TRUE + #define GDISP_INCLUDE_FONT_UI1 FALSE + #define GDISP_INCLUDE_FONT_UI2 FALSE + #define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS12 TRUE + #define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS24 FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS32 FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 FALSE + #define GDISP_INCLUDE_FONT_FIXED_10X20 FALSE + #define GDISP_INCLUDE_FONT_FIXED_7X14 FALSE + #define GDISP_INCLUDE_FONT_FIXED_5X8 FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE + #define GDISP_INCLUDE_USER_FONTS FALSE + +#define GDISP_NEED_IMAGE FALSE + #define GDISP_NEED_IMAGE_NATIVE FALSE + #define GDISP_NEED_IMAGE_GIF FALSE + #define GDISP_NEED_IMAGE_BMP FALSE + #define GDISP_NEED_IMAGE_BMP_1 FALSE + #define GDISP_NEED_IMAGE_BMP_4 FALSE + #define GDISP_NEED_IMAGE_BMP_4_RLE FALSE + #define GDISP_NEED_IMAGE_BMP_8 FALSE + #define GDISP_NEED_IMAGE_BMP_8_RLE FALSE + #define GDISP_NEED_IMAGE_BMP_16 FALSE + #define GDISP_NEED_IMAGE_BMP_24 FALSE + #define GDISP_NEED_IMAGE_BMP_32 FALSE + #define GDISP_NEED_IMAGE_JPG FALSE + #define GDISP_NEED_IMAGE_PNG FALSE + #define GDISP_NEED_IMAGE_ACCOUNTING FALSE + +#define GDISP_NEED_STARTUP_LOGO FALSE + +#define GDISP_DEFAULT_ORIENTATION GDISP_ROTATE_LANDSCAPE +#define GDISP_LINEBUF_SIZE 128 + +#define GDISP_TOTAL_DISPLAYS 1 + #if GDISP_TOTAL_DISPLAYS > 1 + #define GDISP_HARDWARE_STREAM_WRITE FALSE + #define GDISP_HARDWARE_STREAM_READ FALSE + #define GDISP_HARDWARE_STREAM_POS FALSE + #define GDISP_HARDWARE_DRAWPIXEL FALSE + #define GDISP_HARDWARE_CLEARS FALSE + #define GDISP_HARDWARE_FILLS FALSE + #define GDISP_HARDWARE_BITFILLS FALSE + #define GDISP_HARDWARE_SCROLL FALSE + #define GDISP_HARDWARE_PIXELREAD FALSE + #define GDISP_HARDWARE_CONTROL FALSE + #define GDISP_HARDWARE_QUERY FALSE + #define GDISP_HARDWARE_CLIP FALSE + #endif + +#define GDISP_TOTAL_CONTROLLERS 1 + #if GDISP_TOTAL_CONTROLLERS > 1 + #define GDISP_CONTROLLER_LIST GDISPVMT_Win32, GDISPVMT_Win32 + #define GDISP_CONTROLLER_DISPLAYS 1, 1 + #define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888 + #endif + +#define GDISP_USE_GFXNET FALSE + #define GDISP_GFXNET_PORT 13001 + #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP FALSE + #define GDISP_DONT_WAIT_FOR_NET_DISPLAY FALSE + #define GDISP_GFXNET_UNSAFE_SOCKETS FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GWIN // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GWIN TRUE + +#define GWIN_NEED_WINDOWMANAGER TRUE + +#define GWIN_NEED_CONSOLE FALSE + #define GWIN_CONSOLE_USE_HISTORY FALSE + #define GWIN_CONSOLE_HISTORY_AVERAGING FALSE + #define GWIN_CONSOLE_HISTORY_ATCREATE FALSE + #define GWIN_CONSOLE_ESCSEQ FALSE + #define GWIN_CONSOLE_USE_BASESTREAM FALSE + #define GWIN_CONSOLE_USE_FLOAT FALSE +#define GWIN_NEED_GRAPH FALSE +#define GWIN_NEED_WIDGET FALSE + #define GWIN_NEED_HIERARCHY FALSE + #define GWIN_NEED_LABEL TRUE + #define GWIN_LABEL_ATTRIBUTE TRUE + #define GWIN_NEED_BUTTON FALSE + #define GWIN_BUTTON_LAZY_RELEASE FALSE + #define GWIN_NEED_SLIDER FALSE + #define GWIN_NEED_CHECKBOX FALSE + #define GWIN_NEED_IMAGE FALSE + #define GWIN_NEED_IMAGE_ANIMATION FALSE + #define GWIN_NEED_RADIO FALSE + #define GWIN_NEED_LIST FALSE + #define GWIN_NEED_LIST_IMAGES FALSE + #define GWIN_NEED_PROGRESSBAR FALSE + #define GWIN_NEED_FRAME FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GEVENT // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GEVENT TRUE + +#define GEVENT_ASSERT_NO_RESOURCE FALSE +#define GEVENT_MAXIMUM_SIZE 32 +#define GEVENT_MAX_SOURCE_LISTENERS 32 + + +/////////////////////////////////////////////////////////////////////////// +// GTIMER // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GTIMER TRUE + +#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY +#define GTIMER_THREAD_WORKAREA_SIZE 2048 + + +/////////////////////////////////////////////////////////////////////////// +// GQUEUE // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GQUEUE TRUE + +#define GQUEUE_NEED_ASYNC TRUE +#define GQUEUE_NEED_GSYNC FALSE +#define GQUEUE_NEED_FSYNC FALSE +#define GQUEUE_NEED_BUFFERS FALSE + +/////////////////////////////////////////////////////////////////////////// +// GINPUT // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GINPUT TRUE + +#define GINPUT_NEED_MOUSE TRUE +#define GINPUT_NEED_KEYBOARD FALSE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GFILE // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GFILE FALSE + +#define GFILE_NEED_PRINTG FALSE +#define GFILE_NEED_SCANG FALSE +#define GFILE_NEED_STRINGS FALSE +#define GFILE_NEED_STDIO FALSE + #define GFILE_ALLOW_FLOATS FALSE + #define GFILE_ALLOW_DEVICESPECIFIC FALSE + #define GFILE_MAX_GFILES 3 + +#define GFILE_NEED_MEMFS FALSE +#define GFILE_NEED_ROMFS FALSE +#define GFILE_NEED_RAMFS FALSE +#define GFILE_NEED_FATFS FALSE +#define GFILE_NEED_NATIVEFS FALSE +#define GFILE_NEED_CHBIOSFS FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GADC // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GADC FALSE + +#define GADC_MAX_LOWSPEED_DEVICES 4 + + +/////////////////////////////////////////////////////////////////////////// +// GAUDIO // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GAUDIO FALSE + #define GAUDIO_NEED_PLAY FALSE + #define GAUDIO_NEED_RECORD FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GMISC // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GMISC FALSE + +#define GMISC_NEED_ARRAYOPS FALSE +#define GMISC_NEED_FASTTRIG FALSE +#define GMISC_NEED_FIXEDTRIG FALSE +#define GMISC_NEED_INVSQRT FALSE + #define GMISC_INVSQRT_MIXED_ENDIAN FALSE + #define GMISC_INVSQRT_REAL_SLOW FALSE + + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/gwin/label/main.c b/demos/modules/gwin/label/main.c new file mode 100644 index 00000000..175c0d6e --- /dev/null +++ b/demos/modules/gwin/label/main.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gfx.h" + +GListener gl; +GHandle ghLabel1, ghLabel2; + +static void createWidgets(void) { + GWidgetInit wi; + + // Apply some default values for GWIN + wi.customDraw = 0; + wi.customParam = 0; + wi.customStyle = 0; + wi.g.show = TRUE; + + // Create the IP label + wi.g.width = 200; wi.g.height = 20; wi.g.x = 10, wi.g.y = 80; + wi.text = "192.168.1.42"; + ghLabel1 = gwinLabelCreate(NULL, &wi); + gwinLabelSetAttribute(ghLabel1, 100, "Current IP:"); + + // Create the DHCP label + wi.g.width = 200; wi.g.height = 20; wi.g.x = 10, wi.g.y = 100; + wi.text = "Off"; + ghLabel2 = gwinLabelCreate(NULL, &wi); + gwinLabelSetAttribute(ghLabel2, 100, "DHCP:"); +} + +int main(void) { + GEvent* pe; + + // Initialize the display + gfxInit(); + + // Set the widget defaults + gwinSetDefaultFont(gdispOpenFont("*")); + gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); + gdispClear(White); + + // Attach the mouse input + gwinAttachMouse(0); + + // create the widget + createWidgets(); + + // We want to listen for widget events + geventListenerInit(&gl); + gwinAttachListener(&gl); + + while(1) { + // Get an Event + pe = geventEventWait(&gl, TIME_INFINITE); + } + + return 0; +} From a0b11f764b6c2e52d7a41d7bfda438a4e7a9a5b0 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 28 Apr 2014 23:31:33 +0200 Subject: [PATCH 04/25] typo --- src/gwin/label.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gwin/label.h b/src/gwin/label.h index 5cf87ad1..eafa8d91 100644 --- a/src/gwin/label.h +++ b/src/gwin/label.h @@ -73,7 +73,7 @@ void gwinLabelSetBorder(GHandle gh, bool_t border); * @brief Add an attribute in front of the actualy label text * @detail Often you want to display a text like this: * Current IP: 192.168.1.42 - * In that case, one the actual IP will be variable, the text in front of it + * In that case, the actual IP will be variable, the text in front of it * always remains the same. The static text is called the attribute and can be * set using this function. * Furthermore, the tab can be set in order to vertically align multiple labels. From 56b8dfc72f2adf3bd214428f5fa4f81d8b41b437 Mon Sep 17 00:00:00 2001 From: inmarket Date: Tue, 29 Apr 2014 09:00:06 +1000 Subject: [PATCH 05/25] New label attribute is const. Also updated comments. --- src/gwin/label.c | 2 +- src/gwin/label.h | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gwin/label.c b/src/gwin/label.c index 167ded84..574dc8b7 100644 --- a/src/gwin/label.c +++ b/src/gwin/label.c @@ -164,7 +164,7 @@ void gwinLabelSetBorder(GHandle gh, bool_t border) { } #if GWIN_LABEL_ATTRIBUTE - void gwinLabelSetAttribute(GHandle gh, coord_t tab, char* attr) { + void gwinLabelSetAttribute(GHandle gh, coord_t tab, const char* attr) { // is it a valid handle? if (gh->vmt != (gwinVMT *)&labelVMT) return; diff --git a/src/gwin/label.h b/src/gwin/label.h index eafa8d91..708599a6 100644 --- a/src/gwin/label.h +++ b/src/gwin/label.h @@ -35,7 +35,7 @@ typedef struct GLabelObject { #if GWIN_LABEL_ATTRIBUTE coord_t tab; - char* attr; + const char* attr; #endif } GLabelObject; @@ -70,7 +70,7 @@ void gwinLabelSetBorder(GHandle gh, bool_t border); #if GWIN_LABEL_ATTRIBUTE /** - * @brief Add an attribute in front of the actualy label text + * @brief Add an text attribute in front of the normal label text * @detail Often you want to display a text like this: * Current IP: 192.168.1.42 * In that case, the actual IP will be variable, the text in front of it @@ -80,7 +80,11 @@ void gwinLabelSetBorder(GHandle gh, bool_t border); * Please check out the website for further explanation, illustraions and usage * examples. * - * @note The attribute text is currently not being allocated + * @note The attribute text is not copied into private memory and so it + * must be a constant string, not one allocated in a stack buffer. + * @note Use of this construct is discouraged. The appropriate way is to + * create two labels - one for the static text and one for the + * dynamic text. * * @param[in] gh The widget handle (must be a label handle) * @param[in] tab The distance of the label text from the left widget edge @@ -88,7 +92,7 @@ void gwinLabelSetBorder(GHandle gh, bool_t border); * * @api */ - void gwinLabelSetAttribute(GHandle gh, coord_t tab, char* attr); + void gwinLabelSetAttribute(GHandle gh, coord_t tab, const char* attr); #endif #ifdef __cplusplus From 70c96543fcd20a0d323170e4f8392a0494de2cd4 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 29 Apr 2014 08:21:18 +0200 Subject: [PATCH 06/25] doxygen --- src/gwin/label.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gwin/label.h b/src/gwin/label.h index 708599a6..b7218193 100644 --- a/src/gwin/label.h +++ b/src/gwin/label.h @@ -68,10 +68,10 @@ GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit); */ void gwinLabelSetBorder(GHandle gh, bool_t border); -#if GWIN_LABEL_ATTRIBUTE +#if GWIN_LABEL_ATTRIBUTE || defined(__DOXYGEN__) /** * @brief Add an text attribute in front of the normal label text - * @detail Often you want to display a text like this: + * @details Often you want to display a text like this: * Current IP: 192.168.1.42 * In that case, the actual IP will be variable, the text in front of it * always remains the same. The static text is called the attribute and can be From 81c19da89f6055ee19ebcb7c5fc786bd82dadbe8 Mon Sep 17 00:00:00 2001 From: inmarket Date: Tue, 29 Apr 2014 16:35:57 +1000 Subject: [PATCH 07/25] First version vs1053 audio play driver. Compiles but not tested yet. --- .../base/Mikromedia-STM32-M4-ILI9341/board.mk | 1 + .../gaudio_play_board.h | 97 +++++ .../Mikromedia-STM32-M4-ILI9341/readme.txt | 3 +- drivers/gaudio/vs1053/driver.mk | 7 + .../vs1053/gaudio_play_board_template.h | 71 ++++ drivers/gaudio/vs1053/gaudio_play_config.h | 29 ++ drivers/gaudio/vs1053/gaudio_play_lld.c | 348 ++++++++++++++++++ drivers/gaudio/vs1053/readme.txt | 4 + drivers/gaudio/vs1053/vs1053.h | 101 +++++ 9 files changed, 660 insertions(+), 1 deletion(-) create mode 100644 boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h create mode 100644 drivers/gaudio/vs1053/driver.mk create mode 100644 drivers/gaudio/vs1053/gaudio_play_board_template.h create mode 100644 drivers/gaudio/vs1053/gaudio_play_config.h create mode 100644 drivers/gaudio/vs1053/gaudio_play_lld.c create mode 100644 drivers/gaudio/vs1053/readme.txt create mode 100644 drivers/gaudio/vs1053/vs1053.h diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk b/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk index e466621c..b18bf8f5 100644 --- a/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk @@ -3,3 +3,4 @@ GFXSRC += GFXDEFS += -DGFX_USE_OS_CHIBIOS=TRUE include $(GFXLIB)/drivers/gdisp/ILI9341/gdisp_lld.mk include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk +include $(GFXLIB)/drivers/gaudio/vs1053/driver.mk diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h b/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h new file mode 100644 index 00000000..9b16b27a --- /dev/null +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h @@ -0,0 +1,97 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef GAUDIO_PLAY_BOARD_H +#define GAUDIO_PLAY_BOARD_H + +#define SET_CS palSetPad(GPIOC, GPIOC_MP3_CS) +#define CLR_CS palClearPad(GPIOC, GPIOC_MP3_CS) +#define SET_RST palSetPad(GPIOC, GPIOC_MP3_RST) +#define CLR_RST palClearPad(GPIOC, GPIOC_MP3_RST) +#define SET_DCS palSetPad(GPIOC, GPIOC_MP3_DCS) +#define CLR_DCS palClearPad(GPIOC, GPIOC_MP3_DCS) +#define GET_DREQ palReadPad(GPIOC, GPIOC_MP3_DREQ) +#define SPI_PORT &SPID3 + +static const SPIConfig spicfg_init = { + 0, + GPIOC, + GPIOC_MP3_CS, + SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0, +}; + +static const SPIConfig spicfg = { + 0, + GPIOC, + GPIOC_MP3_CS, + 0, +}; + +// Initialise the board +static inline void board_init(void) { + palSetPadMode(GPIOC, GPIOC_MP3_CS, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, GPIOC_MP3_RST, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, GPIOC_MP3_DCS, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, GPIOC_MP3_DREQ, PAL_MODE_INPUT); + SET_CS; SET_RST; SET_DCS; + spiStart(SPI_PORT, &spicfg_init); +} + +// Chip is initialised enough so we can talk fast to it +#define board_init_end() spiStart(SPI_PORT, &spicfg) + +// Reset the board +#define board_reset() { CLR_RST; gfxSleepMilliseconds(1); SET_RST; } + +// Returns the state of the dreq pin +#define board_dreq() GET_DREQ + +// Start a command write +static inline void board_startcmdwrite(void) { + #if SPI_USE_MUTUAL_EXCLUSION + spiAcquireBus(SPI_PORT); + #endif + CLR_CS; +} + +// End a command write +static inline void board_endcmdwrite(void) { + #if SPI_USE_MUTUAL_EXCLUSION + spiReleaseBus(SPI_PORT); + #endif + SET_CS; +} + +// Start a command read +#define board_startcmdread() board_startcmdwrite() + +// End a command read +#define board_endcmdread() board_endcmdwrite() + +// Start a data write +static inline void board_startdatawrite(void) { + #if SPI_USE_MUTUAL_EXCLUSION + spiAcquireBus(SPI_PORT); + #endif + CLR_DCS; +} + +// End a data write +static inline void board_enddatawrite(void) { + #if SPI_USE_MUTUAL_EXCLUSION + spiReleaseBus(SPI_PORT); + #endif + SET_DCS; +} + +// Write data to the SPI port +#define board_spiwrite(buf, len) spiSend(SPI_PORT, len, buf) + +// Read data from the SPI port +#define board_spiread(buf, len) spiReceive(SPI_PORT, len, buf) + +#endif /* GAUDIO_PLAY_BOARD_H */ diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/readme.txt b/boards/base/Mikromedia-STM32-M4-ILI9341/readme.txt index 961f9793..d37c58fb 100644 --- a/boards/base/Mikromedia-STM32-M4-ILI9341/readme.txt +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/readme.txt @@ -3,7 +3,8 @@ running under ChibiOS with the ILI9341 display. On this board uGFX currently supports: - GDISP via the ILI9341 display - - GINPUT-touch via the MCU driver + - GINPUT-touch via the MCU driver + - GAUDIO (play only) via the vs1053 driver Note there are two variants of this board - one with the ILI9341 display and an older one with a different display. This one is for the ILI9341 display. diff --git a/drivers/gaudio/vs1053/driver.mk b/drivers/gaudio/vs1053/driver.mk new file mode 100644 index 00000000..d0419c80 --- /dev/null +++ b/drivers/gaudio/vs1053/driver.mk @@ -0,0 +1,7 @@ +# List the required driver. +GFXSRC += $(GFXLIB)/drivers/gaudio/vs1053/gaudio_play_lld.c + +# Required include directories +GFXINC += $(GFXLIB)/drivers/gaudio/vs1053 + +GFXDEFS += -DGFX_USE_GTIMER=TRUE diff --git a/drivers/gaudio/vs1053/gaudio_play_board_template.h b/drivers/gaudio/vs1053/gaudio_play_board_template.h new file mode 100644 index 00000000..d6125bbc --- /dev/null +++ b/drivers/gaudio/vs1053/gaudio_play_board_template.h @@ -0,0 +1,71 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef GAUDIO_PLAY_BOARD_H +#define GAUDIO_PLAY_BOARD_H + +// Initialise the board +static void board_init(void) { + +} + +// Chip is initialised enough so we can talk fast to it +static void board_init_end(void) { + +} + +// Reset the board +static void board_reset(void) { + +} + +// Returns the state of the dreq pin +static bool board_dreq(void) { + +} + +// Start a command write +static void board_startcmdwrite(void) { + +} + +// End a command write +static void board_endcmdwrite(void) { + +} + +// Start a command read +static void board_startcmdread(void) { + +} + +// End a command read +static void board_endcmdread(void) { + +} + +// Start a data write +static void board_startdatawrite(void) { + +} + +// End a data write +static void board_enddatawrite(void) { + +} + +// Write data to the SPI port +static void board_spiwrite(const uint8_t *buf, unsigned len) { + +} + +// Read data from the SPI port +static void board_spiread(uint8_t *buf, unsigned len) { + +} + +#endif /* GAUDIO_PLAY_BOARD_H */ diff --git a/drivers/gaudio/vs1053/gaudio_play_config.h b/drivers/gaudio/vs1053/gaudio_play_config.h new file mode 100644 index 00000000..bd2af503 --- /dev/null +++ b/drivers/gaudio/vs1053/gaudio_play_config.h @@ -0,0 +1,29 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef GAUDIO_PLAY_CONFIG_H +#define GAUDIO_PLAY_CONFIG_H + +#if GFX_USE_GAUDIO && GAUDIO_NEED_PLAY + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +#define GAUDIO_PLAY_MAX_SAMPLE_FREQUENCY 48000 +#define GAUDIO_PLAY_NUM_FORMATS 2 +#define GAUDIO_PLAY_FORMAT1 ARRAY_DATA_16BITSIGNED +#define GAUDIO_PLAY_FORMAT2 ARRAY_DATA_8BITUNSIGNED +#define GAUDIO_PLAY_NUM_CHANNELS 2 +#define GAUDIO_PLAY_CHANNEL0_IS_STEREO FALSE +#define GAUDIO_PLAY_CHANNEL1_IS_STEREO TRUE +#define GAUDIO_PLAY_MONO 0 +#define GAUDIO_PLAY_STEREO 1 + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_PLAY */ + +#endif /* GAUDIO_PLAY_CONFIG_H */ diff --git a/drivers/gaudio/vs1053/gaudio_play_lld.c b/drivers/gaudio/vs1053/gaudio_play_lld.c new file mode 100644 index 00000000..9e77e383 --- /dev/null +++ b/drivers/gaudio/vs1053/gaudio_play_lld.c @@ -0,0 +1,348 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#include "gfx.h" + +#if GFX_USE_GAUDIO && GAUDIO_NEED_PLAY + +/* Include the driver defines */ +#include "src/gaudio/driver_play.h" + +/* Include the vs1053 registers */ +#include "drivers/gaudio/vs1053/vs1053.h" + +/* Include the board interface */ +#include "gaudio_play_board.h" + +// Override-able parameters +#ifndef VS1053_CLK + #define VS1053_CLK 12288000 +#endif +#ifndef VS1053_FIRMWARE_PATCH + #define VS1053_FIRMWARE_PATCH FALSE +#endif + +// Load the patch file if desired. New format patches only. +#if VS1053_FIRMWARE_PATCH + #define SKIP_PLUGIN_VARNAME + static const uint16_t plugin[] = { /* Compressed plugin */ + #include "vs1053_patch.plg" + }; +#endif + +// Set various stuff based on the clock +#if VS1053_CLK >= 16192000 + #define SCI_MODE_STARTUP (SCI_MODE_DEFAULTS|SM_CLK_RANGE) + #define VS1053_CLKI (VS1053_CLK/2) +#else + #define SCI_MODE_STARTUP (SCI_MODE_DEFAULTS) + #define VS1053_CLKI (VS1053_CLK) +#endif +#if VS1053_CLKI > 13000000 || VS1053_CLKI < 12000000 + #error "GAUDIO(vs1053): VS1053_CLK is out of range" +#endif +#if VS1053_CLKI == 12288000 + #define SC_FREQ_ADJUST 0x0000 +#else + #define SC_FREQ_ADJUST ((VS1053_CLKI-8000000)/4000) +#endif +#define VS1053_MAX_SAMPLE_RATE (VS1053_CLKI/256) +#if VS1053_CLKI > 1228800 + #define SC_CLOCK_MODE (SC_MULT_3|SC_ADD_1|SC_FREQ_ADJUST) +#else + #define SC_CLOCK_MODE (SC_MULT_3_5|SC_ADD_1|SC_FREQ_ADJUST) +#endif + +// Our static variables +static bool_t vs1053_isinit; +static GTimer playTimer; + +// Some common macro's +#define waitforready() while(!board_dreq()) gfxSleepMilliseconds(5) + +static void cmd_write(uint16_t addr, uint16_t data) { + char buf[4]; + buf[0] = 2; + buf[1] = (char)addr; + buf[2] = (char)(data >> 8); + buf[3] = (char)data; + + waitforready(); + board_startcmdwrite(); + board_spiwrite(buf, 4); + board_endcmdwrite(); +} + +#if VS1053_CLK > 12288000 + static inline void cmd_writenodreq(uint16_t addr, uint16_t data) { + uint8_t buf[4]; + + // This is the same as cmd_write() except for it doesn't wait for dreq first + buf[0] = 2; + buf[1] = (uint8_t)addr; + buf[2] = (uint8_t)(data >> 8); + buf[3] = (uint8_t)data; + + board_startcmdwrite(); + board_spiwrite(buf, 4); + board_endcmdwrite(); + } +#endif + +static uint16_t cmd_read(uint16_t addr) { + uint8_t buf[2]; + + buf[0] = 3; + buf[1] = (char)addr; + + board_startcmdread(); + board_spiwrite(buf, 2); + board_spiread(buf, 2); + board_endcmdread(); + return (((uint16_t)buf[0])<<8)|buf[1]; +} + +static void data_write(const uint8_t *data, unsigned len) { + board_startdatawrite(); + board_spiwrite(data, len); + board_enddatawrite(); +} + +#if VS1053_FIRMWARE_PATCH + static void LoadUserCode(void) { + int i; + uint16_t addr, n, val; + + for(i=0; i 12288000 + cmd_writenodreq(SCI_MODE, SCI_MODE_STARTUP); // Set super-clock before dreq + #endif + + // Set up registers + cmd_write(SCI_MODE, SCI_MODE_STARTUP); // Set mode + cmd_write(SCI_CLOCKF, SC_CLOCK_MODE); // Set clocks + board_init_end(); // Clocks are now set up + cmd_write(SCI_BASS, 0x0000); // No treble or bass boost + cmd_write(SCI_VOL, VOL_MAX); // Maximum volume + + // Load any firmware + #if VS1053_FIRMWARE_PATCH + LoadUserCode(); + + // Reset mode just in case + cmd_write(SCI_MODE, SCI_MODE_STARTUP); + #endif +} + +static void vs1053_soft_reset(void) { + cmd_write(SCI_MODE, cmd_read(SCI_MODE)|SM_RESET); + gfxSleepMilliseconds(1); // Wait for at least 2uS + waitforready(); + + // Reload any firmware + #if VS1053_FIRMWARE_PATCH + LoadUserCode(); + + // Reset mode just in case + cmd_write(SCI_MODE, SCI_MODE_STARTUP); + #endif +} + +static uint16_t vs1053_getendbyte(void) { + cmd_write(SCI_WRAMADDR, WRAMADDR_EXTRAPARAMS+4); + return cmd_read(SCI_WRAM); +} + +static GTimer playTimer; +static GDataBuffer *pplay; +static size_t playlen; +static uint8_t *pdata; + +static void FeedData(void *param) { + unsigned len; + (void) param; + + // While there is data space + while (!board_dreq()) { + + // Send up to 32 bytes + len = playlen; + if (len > 32) len = 32; + data_write(pdata, len); + pdata += len; + playlen -= len; + + // Have we finished the buffer + while (!playlen) { + gfxSystemLock(); + gaudioPlayReleaseDataBlockI(pplay); + + // Get a new data buffer + if (!(pplay = gaudioPlayGetDataBlockI())) { + // We should really only do the play-done when the audio + // has really finished playing. Unfortunately there seems + // to be no documented way of determining this. + gaudioPlayDoneI(); + gfxSystemUnlock(); + gtimerStop(&playTimer); + return; + } + + // Set up ready for the new buffer + playlen = pplay->len; + pdata = (uint8_t *)(pplay+1); + gfxSystemUnlock(); + } + } +} + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +bool_t gaudio_play_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { + uint32_t brate; + uint32_t bps; + uint8_t buf[4]; + static const uint8_t hdr1[] = { + 'R', 'I', 'F', 'F', + 0xFF, 0xFF, 0xFF, 0xFF, + 'W', 'A', 'V', 'E', + 'f', 'm', 't', ' ', + 16, 0, 0, 0, + 0x01, 0x00, + }; + static const uint8_t hdr2[] = { + 'd', 'a', 't', 'a', + 0xFF, 0xFF, 0xFF, 0xFF, + }; + + if (format != ARRAY_DATA_8BITUNSIGNED && format != ARRAY_DATA_16BITSIGNED) + return FALSE; + if (frequency > VS1053_MAX_SAMPLE_RATE) + return FALSE; + + // Reset the chip if needed + if (!vs1053_isinit) { + vs1053_hard_reset(); + vs1053_isinit = TRUE; + } + + // Setup + bps = (gfxSampleFormatBits(format)+7)/8; + if (channel == GAUDIO_PLAY_STEREO) + bps *= 2; + brate = frequency * bps; + + // Write the RIFF header + waitforready(); + data_write(hdr1, sizeof(hdr1)); + buf[0] = channel == GAUDIO_PLAY_STEREO ? 2 : 1; buf[1] = 0; data_write(buf, 2); + buf[0] = frequency; buf[1] = frequency>>8; buf[2] = frequency>>16; buf[3] = frequency>>24; data_write(buf, 4); + buf[0] = brate; buf[1] = brate>>8; buf[2] = brate>>16; buf[3] = brate>>24; data_write(buf, 4); + waitforready(); // 32 bytes max before checking + buf[0] = bps; buf[1] = 0; data_write(buf, 2); + buf[0] = gfxSampleFormatBits(format); buf[1] = 0; data_write(buf, 2); + data_write(hdr2, sizeof(hdr2)); + return TRUE; +} + +bool_t gaudio_play_lld_set_volume(uint8_t vol) { + // Volume is 0xFE -> 0x00. Adjust vol to match + vol = ~vol; + if (vol == 0xFF) vol = 0xFE; + + cmd_write(SCI_VOL, ((uint16_t)vol) << 8 | vol); + return TRUE; +} + +void gaudio_play_lld_start(void) { + + gfxSystemLock(); + // Get a new data buffer + if (pplay || !(pplay = gaudioPlayGetDataBlockI())) { + gfxSystemUnlock(); // Nothing to do + return; + } + + // Set up ready for the new buffer + playlen = pplay->len; + pdata = (uint8_t *)(pplay+1); + gfxSystemUnlock(); + + // Start the playing by starting the timer and executing FeedData immediately just to get things started + // We really should set the timer to be equivalent to half the available data but that is just too hard to calculate. + gtimerStart(&playTimer, FeedData, 0, TRUE, 5); + FeedData(0); +} + +void gaudio_play_lld_stop(void) { + uint8_t ch; + unsigned i; + + // Stop the timer interrupt + gtimerStop(&playTimer); + + // We may need to clean up the remaining buffer. + gfxSystemLock(); + if (pplay) { + gaudioPlayReleaseDataBlockI(pplay); + pplay = 0; + gaudioPlayDoneI(); + } + gfxSystemUnlock(); + + // Set CANCEL + cmd_write(SCI_MODE, cmd_read(SCI_MODE)|SM_CANCEL); + + // Write up to 2048 bytes of data + ch = 0; + for(i = 0; i < 2048; i++) { + if (!(i & 0x1F)) { + waitforready(); + if (!(cmd_read(SCI_MODE) & SM_CANCEL)) + break; + } + data_write(&ch, 1); + } + + // Make sure the cancel worked + waitforready(); + if ((cmd_read(SCI_MODE) & SM_CANCEL)) + vs1053_soft_reset(); + + // Send the terminating data + ch = vs1053_getendbyte(); + for(i = 0; i < 2052; i++) { + if (!(i & 0x1F)) + waitforready(); + data_write(&ch, 1); + } +} + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_PLAY */ diff --git a/drivers/gaudio/vs1053/readme.txt b/drivers/gaudio/vs1053/readme.txt new file mode 100644 index 00000000..6e99e56f --- /dev/null +++ b/drivers/gaudio/vs1053/readme.txt @@ -0,0 +1,4 @@ +This chip supports playing in many formats including MP3 etc. +For this driver however we only support PCM in 8 bit unisgned and 16 bit signed formats. + +Requires GFX_USE_GTIMER \ No newline at end of file diff --git a/drivers/gaudio/vs1053/vs1053.h b/drivers/gaudio/vs1053/vs1053.h new file mode 100644 index 00000000..1ae613be --- /dev/null +++ b/drivers/gaudio/vs1053/vs1053.h @@ -0,0 +1,101 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _VS1053_H +#define _VS1053_H + +// Registers +#define SCI_MODE 0x00 + #define SM_DIFF 0x0001 + #define SM_LAYER12 0x0002 + #define SM_RESET 0x0004 + #define SM_CANCEL 0x0008 + #define SM_EARSPEAKER_LO 0x0010 + #define SM_TESTS 0x0020 + #define SM_STREAM 0x0040 + #define SM_EARSPEAKER_HI 0x0080 + #define SM_DACT 0x0100 + #define SM_SDIORD 0x0200 + #define SM_SDISHARE 0x0400 + #define SM_SDINEW 0x0800 + #define SM_ADPCM 0x1000 + #define SM_LINE1 0x4000 + #define SM_CLK_RANGE 0x8000 + #define SCI_MODE_DEFAULTS (SM_LINE1|SM_SDINEW) +#define SCI_STATUS 0x01 + #define SS_DO_NOT_JUMP 0x8000 + #define SS_SWING_MASK 0x7000 + #define SS_SWING_SHIFT 12 + #define SS_VCM_OVERLOAD 0x0800 + #define SS_VCM_DISABLE 0x0400 + #define SS_VER_MASK 0x00F0 + #define SS_VER_SHIFT 4 + #define SS_APDOWN2 0x0008 + #define SS_APDOWN1 0x0004 + #define SS_SS_AD_CLOCK 0x0002 + #define SS_REFERENCE_SEL 0x0001 +#define SCI_BASS 0x02 + #define ST_AMPLITUDE_MASK 0xF000 + #define ST_AMPLITUDE_SHIFT 12 + #define ST_FREQLIMIT_MASK 0x0F00 + #define ST_FREQLIMIT_SHIFT 8 + #define SB_AMPLITUDE_MASK 0x00F0 + #define SB_AMPLITUDE_SHIFT 4 + #define SB_FREQLIMIT_MASK 0x000F + #define SB_FREQLIMIT_SHIFT 0 +#define SCI_CLOCKF 0x03 + #define SC_MULT_1 0x0000 + #define SC_MULT_2 0x2000 + #define SC_MULT_2_5 0x4000 + #define SC_MULT_3 0x6000 + #define SC_MULT_3_5 0x8000 + #define SC_MULT_4 0xa000 + #define SC_MULT_4_5 0xc000 + #define SC_MULT_5 0xe000 + #define SC_ADD_NONE 0x0000 + #define SC_ADD_1 0x0800 + #define SC_ADD_1_5 0x1000 + #define SC_ADD_2 0x1800 + #define SC_FREQ_MASK 0x07FF +#define SCI_DECODE_TIME 0x04 +#define SCI_AUDATA 0x05 + #define SR_RATE_MASK 0xFFFE + #define SR_IS_STEREO 0x0001 +#define SCI_WRAM 0x06 +#define SCI_WRAMADDR 0x07 + #define WRAMADDR_XDATA 0x1800 + #define WRAMADDR_YDATA 0x5800 + #define WRAMADDR_INSTR 0x8040 + #define WRAMADDR_IO 0xC000 + #define WRAMADDR_EXTRAPARAMS 0x1E02 +#define SCI_HDAT0 0x08 +#define SCI_HDAT1 0x09 + #define HD_FMT_NONE 0x0000 + #define HD_FMT_WAV 0x7665 + #define HD_FMT_AAC_ADTS 0x4154 + #define HD_FMT_AAC_ADIF 0x4144 + #define HD_FMT_AAC_M4A 0x4D34 + #define HD_FMT_WMA 0x574D + #define HD_FMT_MIDI 0x4D54 + #define HD_FMT_OGG 0x4F67 + #define HD_FMT_MP3_MIN 0xFFE0 + #define HD_FMT_MP3_MAX 0xFFFF +#define SCI_AIADDR 0x0A +#define SCI_VOL 0x0B + #define VOL_LEFT_MASK 0xFF00 + #define VOL_LEFT_SHIFT 8 + #define VOL_RIGHT_MASK 0x00FF + #define VOL_RIGHT_SHIFT 0 + #define VOL_POWERDOWN 0xFFFF + #define VOL_MAX 0x0000 + #define VOL_MIN 0xFEFE +#define SCI_AICTRL0 0x0C +#define SCI_AICTRL1 0x0D +#define SCI_AICTRL2 0x0E +#define SCI_AICTRL3 0x0F + +#endif /* _VS1053_H */ From ba1b649fcdd6dbea3af40e263a637b50f6b20242 Mon Sep 17 00:00:00 2001 From: inmarket Date: Tue, 29 Apr 2014 16:53:27 +1000 Subject: [PATCH 08/25] Update releases.txt --- docs/releases.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/releases.txt b/docs/releases.txt index 6e234536..ce6b3c9e 100644 --- a/docs/releases.txt +++ b/docs/releases.txt @@ -10,7 +10,7 @@ FEATURE: Added gdispGDrawThickLine() by user jpa- DEPRECATE: TDISP module removed FIX: Console does not execute gwinPrintf() anymore if not visible FEATURE: Added gwinGetColor() and gwinGetBgColor() -FEATURE: Console does now have an optional buffer (GWIN_CONSOLE_USE_HISTORY) +FEATURE: Console now has an optional backing store buffer (GWIN_CONSOLE_USE_HISTORY) FEATURE: Added smooth scrolling to list widget FEATURE: Increased performance of gwinListAddItem() FEATURE: Added gfxDeinit() @@ -20,11 +20,18 @@ FEATURE: Image file handling changed to use new GFILE module. DEPRECTATE: Old image opening functions deprecated. FEATURE: Restructure and simplify the include path for GFX FEATURE: Added LGDP4532 driver by user shilow +FIX: Updated board files to support api changes in ChibiOS/RT 2.6.4 FEATURE: Support for ChibiOS/RT 3.x FEATURE: Added gwinProgressbarStop() and gwinProgressbarReset() FEATURE: Added generic ILI93xx driver by xlh1460 FEATURE: Added gwinListEnableRender() FEATURE: Added gwinLabelSetAttribute() +FEATURE: Complete restructure of the GAUDIN and GAUDOUT into a common GAUDIO module +FEATURE: Added a PWM audio play driver +FEATURE: Update GADC audio recording driver to new GAUDIO format +FEATURE: Added vs1053 audio play driver +FEATURE: Added GAUDIO wave-play demo +FEATURE: Added many GWIN simple demo's and updated the combined widget demo *** changes after 1.9 *** From 53a523b360abddaf54f1afc0281d88f10f594020 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 29 Apr 2014 17:03:48 +0200 Subject: [PATCH 09/25] doxygen --- Doxygenfile | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Doxygenfile b/Doxygenfile index 6498d73a..386786d5 100644 --- a/Doxygenfile +++ b/Doxygenfile @@ -230,13 +230,11 @@ TAB_SIZE = 2 # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. -ALIASES = "iclass=@par Function Class:\n This is an I-Class API, this function can be invoked from within a system lock zone by both threads and interrupt handlers." \ - "sclass=@par Function Class:\n This is an S-Class API, this function can be invoked from within a system lock zone by threads only." \ - "api=@par Function Class:\n Normal API, this function can be invoked by regular system threads but not from within a lock zone." \ - "notapi=@par Function Class:\n Not an API, this function is for internal use only." \ - "isr=@par Function Class:\n Interrupt handler, this function should not be directly invoked." \ - "init=@par Function Class:\n Initializer, this function just initializes an object and can be invoked before the kernel is initialized." \ - "special=@par Function Class:\n Special function, this function has special requirements see the notes." +ALIASES = "iclass=@par Function Class:\n This is an I-Class API, this function can be invoked from within a system lock zone by both threads and interrupt handlers." \ + "sclass=@par Function Class:\n This is an S-Class API, this function can be invoked from within a system lock zone by threads only." \ + "api=@par Function Class:\n Normal API, this function can be invoked by regular system threads." \ + "notapi=@par Function Class:\n Not an API, this function is for internal use only." \ + "isr=@par Function Class:\n Interrupt handler, this function should not be directly invoked." \ # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" @@ -2051,7 +2049,7 @@ PERL_PATH = /usr/bin/perl # powerful graphs. # The default value is: YES. -CLASS_DIAGRAMS = YES +CLASS_DIAGRAMS = NO # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see: @@ -2124,7 +2122,7 @@ DOT_FONTPATH = # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -CLASS_GRAPH = YES +CLASS_GRAPH = NO # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a # graph for each documented class showing the direct and indirect implementation @@ -2198,7 +2196,7 @@ INCLUDED_BY_GRAPH = NO # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALL_GRAPH = YES +CALL_GRAPH = NO # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller # dependency graph for every global function or class method. From f4b0eb68f60495cc5e2d883746675ebd29614807 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 29 Apr 2014 17:28:14 +0200 Subject: [PATCH 10/25] doxygen --- Doxygenfile | 10 +++++----- docs/rsc/ugfx_logo_doxygen.png | Bin 0 -> 12725 bytes 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 docs/rsc/ugfx_logo_doxygen.png diff --git a/Doxygenfile b/Doxygenfile index 386786d5..37604878 100644 --- a/Doxygenfile +++ b/Doxygenfile @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = uGFX +PROJECT_NAME = # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -44,14 +44,14 @@ PROJECT_NUMBER = 2.0 # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = +PROJECT_BRIEF = "version 2.0" # With the PROJECT_LOGO tag one can specify an logo or icon that is included in # the documentation. The maximum height of the logo should not exceed 55 pixels # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = docs/rsc/ugfx_logo_doxygen.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is @@ -234,7 +234,7 @@ ALIASES = "iclass=@par Function Class:\n This is an I-ClassS-Class API, this function can be invoked from within a system lock zone by threads only." \ "api=@par Function Class:\n Normal API, this function can be invoked by regular system threads." \ "notapi=@par Function Class:\n Not an API, this function is for internal use only." \ - "isr=@par Function Class:\n Interrupt handler, this function should not be directly invoked." \ + "isr=@par Function Class:\n Interrupt handler, this function should not be directly invoked." # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" @@ -753,7 +753,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = +INPUT = . # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/docs/rsc/ugfx_logo_doxygen.png b/docs/rsc/ugfx_logo_doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..666ee2ecb64bce6751c167aee15067ecdd0aef3f GIT binary patch literal 12725 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 literal 0 HcmV?d00001 From 04307da6b7ca4fdc330c9f1cf8570d8f07ea1e5f Mon Sep 17 00:00:00 2001 From: inmarket Date: Wed, 30 Apr 2014 22:57:15 +1000 Subject: [PATCH 11/25] Updates to vs1053 driver. Now accepting data but still no sound. --- boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h | 2 +- drivers/gaudio/vs1053/gaudio_play_lld.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h b/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h index 9b16b27a..72e557e4 100644 --- a/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h @@ -60,10 +60,10 @@ static inline void board_startcmdwrite(void) { // End a command write static inline void board_endcmdwrite(void) { + SET_CS; #if SPI_USE_MUTUAL_EXCLUSION spiReleaseBus(SPI_PORT); #endif - SET_CS; } // Start a command read diff --git a/drivers/gaudio/vs1053/gaudio_play_lld.c b/drivers/gaudio/vs1053/gaudio_play_lld.c index 9e77e383..fc62fea2 100644 --- a/drivers/gaudio/vs1053/gaudio_play_lld.c +++ b/drivers/gaudio/vs1053/gaudio_play_lld.c @@ -188,7 +188,7 @@ static void FeedData(void *param) { (void) param; // While there is data space - while (!board_dreq()) { + while (board_dreq()) { // Send up to 32 bytes len = playlen; From eae98a50d9f6f5c94c918ea77c4adde146c790c1 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Wed, 30 Apr 2014 20:55:45 +0200 Subject: [PATCH 12/25] Added gwinEnable() and gwinDisable() --- docs/releases.txt | 1 + src/gwin/sys_defs.h | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/docs/releases.txt b/docs/releases.txt index ce6b3c9e..859c7edd 100644 --- a/docs/releases.txt +++ b/docs/releases.txt @@ -32,6 +32,7 @@ FEATURE: Update GADC audio recording driver to new GAUDIO format FEATURE: Added vs1053 audio play driver FEATURE: Added GAUDIO wave-play demo FEATURE: Added many GWIN simple demo's and updated the combined widget demo +FEATURE: Added gwinEnable() and gwinDisable() *** changes after 1.9 *** diff --git a/src/gwin/sys_defs.h b/src/gwin/sys_defs.h index ac2c98c7..f4e1c2f7 100644 --- a/src/gwin/sys_defs.h +++ b/src/gwin/sys_defs.h @@ -336,6 +336,24 @@ extern "C" { */ void gwinSetEnabled(GHandle gh, bool_t enabled); + /** + * @brief Enables a widget + * + * @param[in] gh The window handle + * + * @api + */ + #define gwinEnable(gh) gwinSetEnabled(gh, TRUE); + + /** + * @brief Disables a widget + * + * @param[in] gh The window handle + * + * @api + */ + #define gwinDisable(gh) gwinSetEnabled(gh, FALSE); + /** * @brief Gets the enabled state of a window * @return TRUE if enabled From 2c57363efc343ae521857cddbcfbcaec50eaedab Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Wed, 30 Apr 2014 21:11:54 +0200 Subject: [PATCH 13/25] slider does not change position if disabled --- src/gwin/slider.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gwin/slider.c b/src/gwin/slider.c index 4c91ede6..ace90365 100644 --- a/src/gwin/slider.c +++ b/src/gwin/slider.c @@ -262,6 +262,10 @@ void gwinSliderSetPosition(GHandle gh, int pos) { if (gh->vmt != (gwinVMT *)&sliderVMT) return; + // do not change the position if disabled + if (!gwinGetEnabled(gh)) + return; + if (gsw->min <= gsw->max) { if (pos < gsw->min) gsw->pos = gsw->min; else if (pos > gsw->max) gsw->pos = gsw->max; From 87c2016e41ee0600dd69695cd42f0b9bca29f30d Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 07:20:19 +1000 Subject: [PATCH 14/25] vs1053 audio driver now working --- boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h b/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h index 72e557e4..370861ee 100644 --- a/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/gaudio_play_board.h @@ -28,7 +28,7 @@ static const SPIConfig spicfg = { 0, GPIOC, GPIOC_MP3_CS, - 0, + SPI_CR1_BR_0, }; // Initialise the board From 3f254e76019f574a74d7a7d419ccb97fbc8db958 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 07:25:43 +1000 Subject: [PATCH 15/25] Revert "slider does not change position if disabled" This reverts commit 2c57363efc343ae521857cddbcfbcaec50eaedab. --- src/gwin/slider.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/gwin/slider.c b/src/gwin/slider.c index ace90365..4c91ede6 100644 --- a/src/gwin/slider.c +++ b/src/gwin/slider.c @@ -262,10 +262,6 @@ void gwinSliderSetPosition(GHandle gh, int pos) { if (gh->vmt != (gwinVMT *)&sliderVMT) return; - // do not change the position if disabled - if (!gwinGetEnabled(gh)) - return; - if (gsw->min <= gsw->max) { if (pos < gsw->min) gsw->pos = gsw->min; else if (pos > gsw->max) gsw->pos = gsw->max; From 68f50a3fe978611b8ac3d78987bb3d9efc58f06d Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 07:41:33 +1000 Subject: [PATCH 16/25] Only require GTimer for the vs1053 driver if GAUDIO is turned on. --- drivers/gaudio/vs1053/driver.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gaudio/vs1053/driver.mk b/drivers/gaudio/vs1053/driver.mk index d0419c80..54ad07de 100644 --- a/drivers/gaudio/vs1053/driver.mk +++ b/drivers/gaudio/vs1053/driver.mk @@ -4,4 +4,4 @@ GFXSRC += $(GFXLIB)/drivers/gaudio/vs1053/gaudio_play_lld.c # Required include directories GFXINC += $(GFXLIB)/drivers/gaudio/vs1053 -GFXDEFS += -DGFX_USE_GTIMER=TRUE +GFXDEFS += -DGFX_USE_GTIMER=GFX_USE_GAUDIO From 5ada56e807a947d6ce9ad3939a540d303034b4ad Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 13:52:26 +1000 Subject: [PATCH 17/25] Fix list label in widget demo --- demos/modules/gwin/widgets/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index c0c26776..ae40b612 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -237,7 +237,7 @@ static void createWidgets(void) { gdispImageOpenFile(&imgYesNo, "image_yesno.gif"); gwinListItemSetImage(ghList3, 1, &imgYesNo); gwinListItemSetImage(ghList3, 3, &imgYesNo); - wi.g.x = 0+3*(LIST_WIDTH+5); wi.text = "L2"; + wi.g.x = 0+3*(LIST_WIDTH+5); wi.text = "L4"; ghList4 = gwinListCreate(0, &wi, TRUE); gwinListAddItem(ghList4, "Item 0", FALSE); gwinListAddItem(ghList4, "Item 1", FALSE); From cf548f0e9c8a13741489a6b3368da1f8040301e2 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 13:53:46 +1000 Subject: [PATCH 18/25] Fix some gwin list widget mouse bugs --- src/gwin/list.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/gwin/list.c b/src/gwin/list.c index 50c669f0..cb17b671 100644 --- a/src/gwin/list.c +++ b/src/gwin/list.c @@ -93,10 +93,9 @@ static void gwinListDefaultDraw(GWidgetObject* gw, void* param) { coord_t sy; #endif - // dont render if render has been disabled - if (!(gw->g.flags & GLIST_FLG_ENABLERENDER)) { + // don't render if render has been disabled + if (!(gw->g.flags & GLIST_FLG_ENABLERENDER)) return; - } ps = (gw->g.flags & GWIN_FLG_ENABLED) ? &gw->pstyle->enabled : &gw->pstyle->disabled; iheight = gdispGetFontMetric(gw->g.font, fontHeight) + VERTICAL_PADDING; @@ -209,24 +208,23 @@ static void gwinListDefaultDraw(GWidgetObject* gw, void* param) { // a mouse down has occurred over the list area static void MouseDown(GWidgetObject* gw, coord_t x, coord_t y) { - int pgsz; - coord_t iheight; - (void) x; + coord_t iheight, pgsz; + // Save our mouse start position gw2obj->start_mouse_x = x; gw2obj->start_mouse_y = y; gw2obj->last_mouse_y = y; - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + VERTICAL_PADDING; - pgsz = (gw->g.height-2); - if (pgsz < 1) pgsz = 1; - // For smooth scrolling, scrolling is done in the MouseMove and selection is done on MouseUp if (gw->g.flags & GLIST_FLG_SCROLLSMOOTH) return; + // Some initial stuff + iheight = gdispGetFontMetric(gw->g.font, fontHeight) + VERTICAL_PADDING; + pgsz = gw->g.height-2; + // Handle click over the scroll bar - if (gw2obj->cnt > (pgsz / iheight) && x >= gw->g.width-(SCROLLWIDTH+2)) { + if (x >= gw->g.width-(SCROLLWIDTH+2) && (gw2obj->cnt > pgsz/iheight || (gw->g.flags & GLIST_FLG_SCROLLALWAYS))) { if (y < 2*ARROW) { if (gw2obj->top > 0) { gw2obj->top -= iheight; From 96cec5349a40bb55b9c65e19234234d2ab197b48 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 13:54:38 +1000 Subject: [PATCH 19/25] Prevent gwinGetStyle() being called on a non-widget --- src/gwin/gwidget.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gwin/gwidget.c b/src/gwin/gwidget.c index ad2b7b20..181b7425 100644 --- a/src/gwin/gwidget.c +++ b/src/gwin/gwidget.c @@ -371,6 +371,9 @@ void gwinSetStyle(GHandle gh, const GWidgetStyle *pstyle) { } const GWidgetStyle *gwinGetStyle(GHandle gh) { + if (!(gh->flags & GWIN_FLG_WIDGET)) + return 0; + return gw->pstyle; } From ef0a1ef054d100eace7cc58941b27c2d5ed67518 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 13:57:44 +1000 Subject: [PATCH 20/25] Much improved appearance for buttons and tabs. Also add GWIN_FLAT_STYLING to allow low color (eg monochrome) displays to get the old simplified look. --- gfxconf.example.h | 1 + src/gwin/button.c | 45 ++++++++++++++----- src/gwin/button.h | 2 +- src/gwin/radio.c | 98 ++++++++++++++++++++++++++++++++---------- src/gwin/sys_options.h | 9 ++++ 5 files changed, 122 insertions(+), 33 deletions(-) diff --git a/gfxconf.example.h b/gfxconf.example.h index 18437a4d..5be67335 100644 --- a/gfxconf.example.h +++ b/gfxconf.example.h @@ -149,6 +149,7 @@ #define GWIN_NEED_LIST_IMAGES FALSE #define GWIN_NEED_PROGRESSBAR FALSE #define GWIN_NEED_FRAME FALSE + #define GWIN_FLAT_STYLING FALSE /////////////////////////////////////////////////////////////////////////// diff --git a/src/gwin/button.c b/src/gwin/button.c index 72d75225..59c7f689 100644 --- a/src/gwin/button.c +++ b/src/gwin/button.c @@ -109,7 +109,7 @@ static const gwidgetVMT buttonVMT = { _gwidgetRedraw, // The redraw routine 0, // The after-clear routine }, - gwinButtonDraw_3D, // The default drawing routine + gwinButtonDraw_Normal, // The default drawing routine #if GINPUT_NEED_MOUSE { MouseDown, // Process mouse down events @@ -164,17 +164,42 @@ static const GColorSet *getDrawColors(GWidgetObject *gw) { return &gw->pstyle->enabled; } -void gwinButtonDraw_3D(GWidgetObject *gw, void *param) { - const GColorSet * pcol; - (void) param; +#if GWIN_FLAT_STYLING + void gwinButtonDraw_Normal(GWidgetObject *gw, void *param) { + const GColorSet * pcol; + (void) param; - if (gw->g.vmt != (gwinVMT *)&buttonVMT) return; - pcol = getDrawColors(gw); + if (gw->g.vmt != (gwinVMT *)&buttonVMT) return; + pcol = getDrawColors(gw); + + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); + } +#else + void gwinButtonDraw_Normal(GWidgetObject *gw, void *param) { + const GColorSet * pcol; + fixed alpha; + fixed dalpha; + coord_t i; + color_t tcol, bcol; + (void) param; + + if (gw->g.vmt != (gwinVMT *)&buttonVMT) return; + pcol = getDrawColors(gw); - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); - gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); - gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); -} + /* Fill the box blended from variants of the fill color */ + tcol = gdispBlendColor(White, pcol->fill, 50); + bcol = gdispBlendColor(Black, pcol->fill, 25); + dalpha = FIXED(255)/gw->g.height; + for(alpha = 0, i = 0; i < gw->g.height; i++, alpha += dalpha) + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+i, gw->g.x+gw->g.width-2, gw->g.y+i, gdispBlendColor(bcol, tcol, NONFIXED(alpha))); + + gdispGDrawStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, justifyCenter); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); + } +#endif #if GDISP_NEED_ARC void gwinButtonDraw_Rounded(GWidgetObject *gw, void *param) { diff --git a/src/gwin/button.h b/src/gwin/button.h index dad0cc91..6dd78488 100644 --- a/src/gwin/button.h +++ b/src/gwin/button.h @@ -111,7 +111,7 @@ bool_t gwinButtonIsPressed(GHandle gh); * @api * @{ */ -void gwinButtonDraw_3D(GWidgetObject *gw, void *param); // @< A standard 3D button +void gwinButtonDraw_Normal(GWidgetObject *gw, void *param); // @< A standard button #if GDISP_NEED_ARC || defined(__DOXYGEN__) void gwinButtonDraw_Rounded(GWidgetObject *gw, void *param); // @< A rounded rectangle button #endif diff --git a/src/gwin/radio.c b/src/gwin/radio.c index f50ffe9b..882be503 100644 --- a/src/gwin/radio.c +++ b/src/gwin/radio.c @@ -21,6 +21,8 @@ #include "src/gwin/class_gwin.h" +#define GRADIO_TAB_CNR 3 + // Our pressed state #define GRADIO_FLG_PRESSED (GWIN_FIRST_CONTROL_FLAG<<0) @@ -195,34 +197,86 @@ void gwinRadioDraw_Radio(GWidgetObject *gw, void *param) { #undef gcw } -void gwinRadioDraw_Button(GWidgetObject *gw, void *param) { - const GColorSet * pcol; - (void) param; +#if GWIN_FLAT_STYLING + void gwinRadioDraw_Button(GWidgetObject *gw, void *param) { + const GColorSet * pcol; + (void) param; - if (gw->g.vmt != (gwinVMT *)&radioVMT) return; - pcol = getDrawColors(gw); + if (gw->g.vmt != (gwinVMT *)&radioVMT) return; + pcol = getDrawColors(gw); - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); - gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); - gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); -} - -void gwinRadioDraw_Tab(GWidgetObject *gw, void *param) { - const GColorSet * pcol; - (void) param; - - if (gw->g.vmt != (gwinVMT *)&radioVMT) return; - pcol = getDrawColors(gw); - - if ((gw->g.flags & GRADIO_FLG_PRESSED)) { - gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, pcol->edge); - gdispGFillStringBox(gw->g.display, gw->g.x+1, gw->g.y+1, gw->g.width-2, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); - } else { gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); } -} + void gwinRadioDraw_Tab(GWidgetObject *gw, void *param) { + const GColorSet * pcol; + (void) param; + + if (gw->g.vmt != (gwinVMT *)&radioVMT) return; + pcol = getDrawColors(gw); + + if ((gw->g.flags & GRADIO_FLG_PRESSED)) { + gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, pcol->edge); + gdispGFillStringBox(gw->g.display, gw->g.x+1, gw->g.y+1, gw->g.width-2, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); + } else { + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, pcol->fill, justifyCenter); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); + } + } +#else + void gwinRadioDraw_Button(GWidgetObject *gw, void *param) { + const GColorSet * pcol; + fixed alpha; + fixed dalpha; + coord_t i; + color_t tcol, bcol; + (void) param; + + if (gw->g.vmt != (gwinVMT *)&radioVMT) return; + pcol = getDrawColors(gw); + + /* Fill the box blended from variants of the fill color */ + tcol = gdispBlendColor(White, pcol->fill, 50); + bcol = gdispBlendColor(Black, pcol->fill, 25); + dalpha = FIXED(255)/gw->g.height; + for(alpha = 0, i = 0; i < gw->g.height; i++, alpha += dalpha) + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+i, gw->g.x+gw->g.width-2, gw->g.y+i, gdispBlendColor(bcol, tcol, NONFIXED(alpha))); + + gdispGDrawStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, gw->text, gw->g.font, pcol->text, justifyCenter); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+gw->g.height-1, gw->g.x+gw->g.width-2, gw->g.y+gw->g.height-1, pcol->edge); + } + void gwinRadioDraw_Tab(GWidgetObject *gw, void *param) { + const GColorSet * pcol; + fixed alpha; + fixed dalpha; + coord_t i; + color_t tcol, bcol; + (void) param; + + if (gw->g.vmt != (gwinVMT *)&radioVMT) return; + pcol = getDrawColors(gw); + + if ((gw->g.flags & GRADIO_FLG_PRESSED)) { + tcol = gdispBlendColor(pcol->edge, gw->pstyle->background, 128); + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, pcol->text, gw->g.bgcolor, justifyCenter); + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y, gw->g.x+gw->g.width-(GRADIO_TAB_CNR+1), gw->g.y, tcol); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-(GRADIO_TAB_CNR+1), gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+GRADIO_TAB_CNR, tcol); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y+GRADIO_TAB_CNR, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, tcol); + } else { + /* Fill the box blended from variants of the fill color */ + tcol = gdispBlendColor(White, pcol->fill, 50); + bcol = gdispBlendColor(Black, pcol->fill, 25); + dalpha = FIXED(255)/gw->g.height; + for(alpha = 0, i = 0; i < gw->g.height; i++, alpha += dalpha) + gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+i, gw->g.x+gw->g.width-2, gw->g.y+i, gdispBlendColor(bcol, tcol, NONFIXED(alpha))); + gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, pcol->edge); + gdispGDrawStringBox(gw->g.display, gw->g.x+1, gw->g.y+1, gw->g.width-2, gw->g.height-2, gw->text, gw->g.font, pcol->text, justifyCenter); + } + } +#endif #endif /* GFX_USE_GWIN && GWIN_NEED_BUTTON */ /** @} */ diff --git a/src/gwin/sys_options.h b/src/gwin/sys_options.h index 656e0e3f..aa296026 100644 --- a/src/gwin/sys_options.h +++ b/src/gwin/sys_options.h @@ -98,6 +98,15 @@ * @name GWIN Optional Parameters * @{ */ + /** + * @brief Use flat styling for controls rather than a 3D look + * @details Defaults to FALSE + * @note This may appear better on color-restricted displays + * @note Flat styling is less graphics and cpu intensive (marginally) than the default 3D look. + */ + #ifndef GWIN_FLAT_STYLING + #define GWIN_FLAT_STYLING FALSE + #endif /** * @brief Buttons should not insist the mouse is over the button on mouse release * @details Defaults to FALSE From df4d2751831d12c081b5aa5ce830d98687db7b42 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 16:42:35 +1000 Subject: [PATCH 21/25] Updates to the widgets demo: - Convert the image to a gif so it is smaller and has a transparent background - Move opening the mouse to the beginning to stop calibration flashing the screen (ugly) - Clean up extra defines in gfxconf.h - Conflicts with some drivers. --- demos/modules/gwin/widgets/gfxconf.h | 148 +- demos/modules/gwin/widgets/main.c | 12 +- demos/modules/gwin/widgets/romfs_img_ugfx.h | 1942 +++-------------- .../gwin/widgets/rsc/romfs_img_ugfx.bmp | Bin 26322 -> 0 bytes .../gwin/widgets/rsc/romfs_img_ugfx.gif | Bin 0 -> 4629 bytes 5 files changed, 304 insertions(+), 1798 deletions(-) delete mode 100644 demos/modules/gwin/widgets/rsc/romfs_img_ugfx.bmp create mode 100644 demos/modules/gwin/widgets/rsc/romfs_img_ugfx.gif diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index 73f5e6e5..c5673367 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -30,93 +30,19 @@ /////////////////////////////////////////////////////////////////////////// #define GFX_USE_GDISP TRUE -#define GDISP_NEED_AUTOFLUSH FALSE -#define GDISP_NEED_TIMERFLUSH FALSE #define GDISP_NEED_VALIDATION TRUE #define GDISP_NEED_CLIP TRUE #define GDISP_NEED_CIRCLE TRUE -#define GDISP_NEED_ELLIPSE FALSE -#define GDISP_NEED_ARC FALSE #define GDISP_NEED_CONVEX_POLYGON TRUE -#define GDISP_NEED_SCROLL FALSE -#define GDISP_NEED_PIXELREAD FALSE +//#define GDISP_NEED_SCROLL TRUE #define GDISP_NEED_CONTROL TRUE -#define GDISP_NEED_QUERY FALSE -#define GDISP_NEED_MULTITHREAD FALSE -#define GDISP_NEED_STREAMING FALSE #define GDISP_NEED_TEXT TRUE - #define GDISP_NEED_ANTIALIAS TRUE - #define GDISP_NEED_UTF8 TRUE - #define GDISP_NEED_TEXT_KERNING TRUE - #define GDISP_INCLUDE_FONT_UI1 FALSE #define GDISP_INCLUDE_FONT_UI2 TRUE - #define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS12 FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS24 FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS32 FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 FALSE - #define GDISP_INCLUDE_FONT_FIXED_10X20 FALSE - #define GDISP_INCLUDE_FONT_FIXED_7X14 FALSE - #define GDISP_INCLUDE_FONT_FIXED_5X8 FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE - #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE - #define GDISP_INCLUDE_USER_FONTS FALSE #define GDISP_NEED_IMAGE TRUE - #define GDISP_NEED_IMAGE_NATIVE FALSE #define GDISP_NEED_IMAGE_GIF TRUE - #define GDISP_NEED_IMAGE_BMP TRUE - #define GDISP_NEED_IMAGE_BMP_1 FALSE - #define GDISP_NEED_IMAGE_BMP_4 FALSE - #define GDISP_NEED_IMAGE_BMP_4_RLE FALSE - #define GDISP_NEED_IMAGE_BMP_8 FALSE - #define GDISP_NEED_IMAGE_BMP_8_RLE FALSE - #define GDISP_NEED_IMAGE_BMP_16 FALSE - #define GDISP_NEED_IMAGE_BMP_24 TRUE - #define GDISP_NEED_IMAGE_BMP_32 FALSE - #define GDISP_NEED_IMAGE_JPG FALSE - #define GDISP_NEED_IMAGE_PNG FALSE - #define GDISP_NEED_IMAGE_ACCOUNTING FALSE - -#define GDISP_NEED_STARTUP_LOGO FALSE #define GDISP_DEFAULT_ORIENTATION GDISP_ROTATE_LANDSCAPE -#define GDISP_LINEBUF_SIZE 128 - -#define GDISP_TOTAL_DISPLAYS 1 - #if GDISP_TOTAL_DISPLAYS > 1 - #define GDISP_HARDWARE_STREAM_WRITE FALSE - #define GDISP_HARDWARE_STREAM_READ FALSE - #define GDISP_HARDWARE_STREAM_POS FALSE - #define GDISP_HARDWARE_DRAWPIXEL FALSE - #define GDISP_HARDWARE_CLEARS FALSE - #define GDISP_HARDWARE_FILLS FALSE - #define GDISP_HARDWARE_BITFILLS FALSE - #define GDISP_HARDWARE_SCROLL FALSE - #define GDISP_HARDWARE_PIXELREAD FALSE - #define GDISP_HARDWARE_CONTROL FALSE - #define GDISP_HARDWARE_QUERY FALSE - #define GDISP_HARDWARE_CLIP FALSE - #endif - -#define GDISP_TOTAL_CONTROLLERS 1 - #if GDISP_TOTAL_CONTROLLERS > 1 - #define GDISP_CONTROLLER_LIST GDISPVMT_Win32, GDISPVMT_Win32 - #define GDISP_CONTROLLER_DISPLAYS 1, 1 - #define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888 - #endif - -#define GDISP_USE_GFXNET FALSE - #define GDISP_GFXNET_PORT 13001 - #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP FALSE - #define GDISP_DONT_WAIT_FOR_NET_DISPLAY FALSE - #define GDISP_GFXNET_UNSAFE_SOCKETS FALSE - /////////////////////////////////////////////////////////////////////////// // GWIN // @@ -126,56 +52,36 @@ #define GWIN_NEED_WINDOWMANAGER TRUE #define GWIN_NEED_CONSOLE TRUE - #define GWIN_CONSOLE_USE_HISTORY FALSE - #define GWIN_CONSOLE_HISTORY_AVERAGING FALSE - #define GWIN_CONSOLE_HISTORY_ATCREATE FALSE - #define GWIN_CONSOLE_ESCSEQ FALSE - #define GWIN_CONSOLE_USE_BASESTREAM FALSE - #define GWIN_CONSOLE_USE_FLOAT FALSE #define GWIN_NEED_GRAPH TRUE #define GWIN_NEED_WIDGET TRUE #define GWIN_NEED_LABEL TRUE #define GWIN_NEED_BUTTON TRUE - #define GWIN_BUTTON_LAZY_RELEASE FALSE +// #define GWIN_BUTTON_LAZY_RELEASE TRUE #define GWIN_NEED_SLIDER TRUE #define GWIN_NEED_CHECKBOX TRUE #define GWIN_NEED_IMAGE TRUE - #define GWIN_NEED_IMAGE_ANIMATION TRUE #define GWIN_NEED_RADIO TRUE #define GWIN_NEED_LIST TRUE #define GWIN_NEED_LIST_IMAGES TRUE #define GWIN_NEED_PROGRESSBAR TRUE - /////////////////////////////////////////////////////////////////////////// // GEVENT // /////////////////////////////////////////////////////////////////////////// #define GFX_USE_GEVENT TRUE -#define GEVENT_ASSERT_NO_RESOURCE FALSE -#define GEVENT_MAXIMUM_SIZE 32 -#define GEVENT_MAX_SOURCE_LISTENERS 32 - - /////////////////////////////////////////////////////////////////////////// // GTIMER // /////////////////////////////////////////////////////////////////////////// #define GFX_USE_GTIMER TRUE -#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY -#define GTIMER_THREAD_WORKAREA_SIZE 2048 - - /////////////////////////////////////////////////////////////////////////// // GQUEUE // /////////////////////////////////////////////////////////////////////////// #define GFX_USE_GQUEUE TRUE #define GQUEUE_NEED_ASYNC TRUE -#define GQUEUE_NEED_GSYNC FALSE -#define GQUEUE_NEED_FSYNC FALSE -#define GQUEUE_NEED_BUFFERS FALSE /////////////////////////////////////////////////////////////////////////// // GINPUT // @@ -183,59 +89,15 @@ #define GFX_USE_GINPUT TRUE #define GINPUT_NEED_MOUSE TRUE -#define GINPUT_NEED_KEYBOARD FALSE -#define GINPUT_NEED_TOGGLE FALSE -#define GINPUT_NEED_DIAL FALSE - +//#define GINPUT_NEED_TOGGLE TRUE +//#define GINPUT_NEED_DIAL TRUE /////////////////////////////////////////////////////////////////////////// // GFILE // /////////////////////////////////////////////////////////////////////////// #define GFX_USE_GFILE TRUE -#define GFILE_NEED_PRINTG FALSE -#define GFILE_NEED_SCANG FALSE -#define GFILE_NEED_STRINGS FALSE -#define GFILE_NEED_STDIO FALSE - #define GFILE_ALLOW_FLOATS FALSE - #define GFILE_ALLOW_DEVICESPECIFIC FALSE - #define GFILE_MAX_GFILES 3 - -#define GFILE_NEED_MEMFS FALSE #define GFILE_NEED_ROMFS TRUE -#define GFILE_NEED_RAMFS FALSE -#define GFILE_NEED_FATFS FALSE -#define GFILE_NEED_NATIVEFS FALSE -#define GFILE_NEED_CHBIOSFS FALSE - - -/////////////////////////////////////////////////////////////////////////// -// GADC // -/////////////////////////////////////////////////////////////////////////// -#define GFX_USE_GADC FALSE - -#define GADC_MAX_LOWSPEED_DEVICES 4 - - -/////////////////////////////////////////////////////////////////////////// -// GAUDIO // -/////////////////////////////////////////////////////////////////////////// -#define GFX_USE_GAUDIO FALSE - #define GAUDIO_NEED_PLAY FALSE - #define GAUDIO_NEED_RECORD FALSE - - -/////////////////////////////////////////////////////////////////////////// -// GMISC // -/////////////////////////////////////////////////////////////////////////// -#define GFX_USE_GMISC FALSE - -#define GMISC_NEED_ARRAYOPS FALSE -#define GMISC_NEED_FASTTRIG FALSE -#define GMISC_NEED_FIXEDTRIG FALSE -#define GMISC_NEED_INVSQRT FALSE - #define GMISC_INVSQRT_MIXED_ENDIAN FALSE - #define GMISC_INVSQRT_REAL_SLOW FALSE - +//#define GFILE_NEED_NATIVEFS TRUE #endif /* _GFXCONF_H */ diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index ae40b612..17f87d46 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -258,7 +258,7 @@ static void createWidgets(void) { // Image wi.g.x = 20; wi.g.y = 2*TAB_HEIGHT+20; wi.g.width = 200; wi.g.height = 100; ghImage1 = gwinImageCreate(0, &wi.g); - gwinImageOpenFile(ghImage1, "romfs_img_ugfx.bmp"); + gwinImageOpenFile(ghImage1, "romfs_img_ugfx.gif"); // Progressbar wi.g.show = FALSE; wi.customDraw = 0; @@ -381,16 +381,16 @@ int main(void) { // Initialize the display gfxInit(); - // Set the widget defaults - gwinSetDefaultFont(gdispOpenFont("*")); - gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); - gdispClear(White); - // Connect the mouse #if GINPUT_NEED_MOUSE gwinAttachMouse(0); #endif + // Set the widget defaults + gwinSetDefaultFont(gdispOpenFont("*")); + gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); + gdispClear(White); + // Create the gwin windows/widgets createWidgets(); diff --git a/demos/modules/gwin/widgets/romfs_img_ugfx.h b/demos/modules/gwin/widgets/romfs_img_ugfx.h index 9ef5e720..fd06a41a 100644 --- a/demos/modules/gwin/widgets/romfs_img_ugfx.h +++ b/demos/modules/gwin/widgets/romfs_img_ugfx.h @@ -1,1660 +1,304 @@ /** - * This file was generated from "romfs_img_ugfx.bmp" using... + * This file was generated from "romfs_img_ugfx.gif" using... * - * file2c -dcs romfs_img_ugfx.bmp romfs_img_ugfx.h + * file2c -dcs romfs_img_ugfx.gif romfs_img_ugfx.h * */ static const char romfs_img_ugfx[] = { - 0x42, 0x4D, 0xD2, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x6C, 0x00, - 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x58, 0x66, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x47, 0x52, 0x73, 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, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x73, 0x49, 0x27, 0x9A, - 0x63, 0x38, 0xB3, 0x75, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, - 0x4C, 0x29, 0xAD, 0x6F, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x73, 0x47, 0x25, 0xA3, 0x68, 0x39, 0xAE, 0x70, - 0x3A, 0xB3, 0x77, 0x4A, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x49, 0x24, 0x88, 0x56, 0x30, 0xB9, 0x7A, - 0x48, 0xBE, 0x81, 0x53, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x47, 0x24, 0x9A, 0x63, 0x36, 0xAC, 0x69, 0x1F, 0xA9, 0x6A, 0x2E, - 0xB2, 0x73, 0x46, 0xB1, 0x76, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0x4A, 0x20, 0x80, 0x51, 0x2C, 0xC1, 0x7F, 0x4B, 0xCB, 0x82, 0x46, - 0xBF, 0x7D, 0x4D, 0xB6, 0x6D, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x73, 0x47, 0x25, 0x8E, 0x5A, 0x33, 0xB2, 0x6E, 0x24, 0xA4, 0x61, 0x0E, 0xA5, 0x65, 0x23, 0xAE, - 0x71, 0x40, 0xB2, 0x74, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x79, 0x4C, 0x27, 0xB9, 0x7B, 0x4A, 0xDE, 0x8C, 0x41, 0xCE, 0x80, 0x3E, 0xC0, - 0x7C, 0x49, 0xB9, 0x80, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x47, 0x26, 0x86, - 0x54, 0x2F, 0xB3, 0x70, 0x2E, 0xAC, 0x66, 0x10, 0xA0, 0x5E, 0x0D, 0x9E, 0x5E, 0x1A, 0xAB, 0x6D, - 0x3B, 0xB3, 0x78, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, - 0x4A, 0x26, 0xB0, 0x75, 0x48, 0xDD, 0x90, 0x4B, 0xDD, 0x87, 0x38, 0xD2, 0x7C, 0x31, 0xC2, 0x7B, - 0x44, 0xBE, 0x7D, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x45, 0x27, 0x7E, 0x4F, 0x2A, 0xB1, 0x70, - 0x37, 0xB4, 0x6B, 0x11, 0xA8, 0x63, 0x0F, 0x9D, 0x5C, 0x0D, 0x98, 0x58, 0x14, 0xA3, 0x65, 0x34, - 0xB1, 0x74, 0x46, 0x99, 0x66, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x4B, 0x26, 0xA2, 0x6A, - 0x40, 0xDB, 0x92, 0x53, 0xDF, 0x8D, 0x41, 0xDB, 0x82, 0x2F, 0xD3, 0x78, 0x24, 0xC1, 0x7A, 0x3F, - 0xBC, 0x7D, 0x4E, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x4A, 0x27, 0xAE, 0x6F, 0x3C, 0xBC, 0x70, 0x15, - 0xB0, 0x68, 0x10, 0xA2, 0x5F, 0x0E, 0x99, 0x5A, 0x0F, 0x90, 0x52, 0x12, 0x94, 0x5B, 0x2B, 0xAB, - 0x6E, 0x45, 0xAE, 0x79, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x4A, 0x25, 0x93, 0x5E, 0x36, 0xD6, 0x92, 0x58, - 0xE1, 0x93, 0x4A, 0xDD, 0x88, 0x38, 0xD9, 0x7C, 0x26, 0xD2, 0x74, 0x1E, 0xC2, 0x76, 0x36, 0xBC, - 0x7B, 0x4B, 0xB9, 0x8B, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x78, 0x49, 0x26, 0xA5, 0x6A, 0x39, 0xC1, 0x76, 0x1D, 0xB7, 0x6D, 0x12, 0xAA, - 0x65, 0x0F, 0x9E, 0x5D, 0x0F, 0x92, 0x55, 0x11, 0x85, 0x4E, 0x14, 0x86, 0x53, 0x24, 0xA0, 0x68, - 0x3F, 0xB6, 0x79, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x76, 0x48, 0x26, 0x8B, 0x58, 0x31, 0xCB, 0x8C, 0x58, 0xE3, 0x99, 0x54, 0xDF, - 0x8E, 0x42, 0xDB, 0x82, 0x30, 0xD7, 0x77, 0x1E, 0xCE, 0x71, 0x1B, 0xC0, 0x71, 0x2D, 0xBC, 0x78, - 0x46, 0xBD, 0x7B, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, - 0x4A, 0x27, 0x9A, 0x62, 0x36, 0xC6, 0x7A, 0x24, 0xBF, 0x72, 0x14, 0xB2, 0x6B, 0x11, 0xA5, 0x63, - 0x11, 0x96, 0x59, 0x11, 0x88, 0x50, 0x14, 0x7D, 0x4A, 0x16, 0x7B, 0x4A, 0x1E, 0x96, 0x60, 0x39, - 0xB1, 0x75, 0x48, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, - 0x47, 0x29, 0x84, 0x52, 0x2D, 0xC1, 0x84, 0x55, 0xE5, 0x9F, 0x5D, 0xE1, 0x93, 0x4B, 0xDD, 0x88, - 0x39, 0xD9, 0x7D, 0x27, 0xD3, 0x74, 0x1C, 0xC7, 0x6D, 0x1A, 0xBC, 0x6A, 0x24, 0xB7, 0x75, 0x41, - 0xB8, 0x7D, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7E, 0x42, 0x16, 0x9A, 0x4F, 0x14, 0x9D, 0x51, 0x14, 0x7E, 0x42, 0x17, 0x6D, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0x4B, 0x27, 0x8D, 0x5A, - 0x33, 0xC7, 0x7C, 0x2D, 0xC7, 0x78, 0x16, 0xBA, 0x70, 0x13, 0xAD, 0x67, 0x11, 0x9C, 0x5E, 0x11, - 0x8C, 0x54, 0x14, 0x7F, 0x4D, 0x18, 0x76, 0x47, 0x18, 0x74, 0x45, 0x1A, 0x89, 0x57, 0x30, 0xAA, - 0x6E, 0x44, 0xAA, 0x71, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x4F, - 0x29, 0xB8, 0x7D, 0x51, 0xE5, 0xA3, 0x66, 0xE3, 0x99, 0x55, 0xE0, 0x8E, 0x43, 0xDC, 0x83, 0x31, - 0xD8, 0x78, 0x1F, 0xCD, 0x70, 0x1B, 0xC0, 0x69, 0x1B, 0xB5, 0x68, 0x22, 0xB8, 0x77, 0x42, 0xB9, - 0x7C, 0x50, 0xBF, 0x80, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0x4A, 0x11, 0xAB, - 0x58, 0x15, 0xB9, 0x68, 0x1E, 0xB9, 0x68, 0x1F, 0xB5, 0x61, 0x19, 0xA7, 0x56, 0x15, 0x77, 0x40, - 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x4A, 0x25, 0x87, 0x55, 0x2F, 0xC0, 0x7A, 0x36, - 0xCF, 0x7D, 0x17, 0xC1, 0x75, 0x15, 0xB4, 0x6C, 0x13, 0xA4, 0x62, 0x11, 0x91, 0x58, 0x13, 0x82, - 0x50, 0x17, 0x78, 0x4A, 0x19, 0x72, 0x45, 0x18, 0x6F, 0x41, 0x17, 0x7F, 0x4F, 0x28, 0xA3, 0x69, - 0x41, 0xB8, 0x7A, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x50, 0x29, 0xAE, 0x75, 0x49, - 0xE2, 0xA3, 0x6C, 0xE6, 0x9F, 0x5E, 0xE2, 0x94, 0x4C, 0xDE, 0x89, 0x3A, 0xDA, 0x7D, 0x28, 0xD3, - 0x73, 0x1C, 0xC5, 0x6C, 0x1B, 0xBA, 0x69, 0x1F, 0xB7, 0x6D, 0x2A, 0xBB, 0x7A, 0x44, 0xBA, 0x7D, - 0x4F, 0xB8, 0x80, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x55, 0x0F, 0xB8, 0x66, 0x1D, 0xBA, 0x6D, - 0x25, 0xBA, 0x6D, 0x26, 0xBA, 0x6D, 0x26, 0xBB, 0x6A, 0x21, 0xA2, 0x53, 0x16, 0x6D, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7B, 0x4C, 0x26, 0x81, 0x50, 0x2A, 0xB8, 0x76, 0x3D, 0xD6, 0x82, 0x19, 0xCA, - 0x7A, 0x16, 0xBD, 0x72, 0x15, 0xAD, 0x68, 0x13, 0x99, 0x5D, 0x13, 0x88, 0x54, 0x17, 0x7B, 0x4D, - 0x19, 0x74, 0x47, 0x19, 0x6F, 0x42, 0x18, 0x6C, 0x3E, 0x17, 0x7C, 0x4A, 0x23, 0xA7, 0x6C, 0x43, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x50, 0x29, 0xA1, 0x69, 0x3E, 0xDF, 0xA4, 0x70, 0xE7, - 0xA4, 0x68, 0xE3, 0x99, 0x56, 0xDF, 0x8E, 0x44, 0xDC, 0x84, 0x32, 0xD6, 0x77, 0x20, 0xCA, 0x6F, - 0x1C, 0xBE, 0x6B, 0x20, 0xBC, 0x6F, 0x29, 0xB9, 0x71, 0x30, 0xBA, 0x78, 0x40, 0xBC, 0x7E, 0x4F, - 0xBC, 0x86, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x5B, 0x0B, 0xBA, 0x68, 0x20, 0xBC, 0x6F, 0x28, 0xBC, 0x6F, 0x28, - 0xBC, 0x70, 0x29, 0xBC, 0x70, 0x29, 0xB6, 0x63, 0x1B, 0x7E, 0x42, 0x16, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x4F, 0x28, 0xB0, 0x72, 0x3D, 0xDB, 0x86, 0x1F, 0xD2, 0x7F, 0x18, 0xC4, 0x76, - 0x15, 0xB5, 0x6D, 0x14, 0xA2, 0x62, 0x14, 0x8E, 0x58, 0x16, 0x7F, 0x50, 0x19, 0x77, 0x4A, 0x1A, - 0x71, 0x45, 0x19, 0x6E, 0x41, 0x18, 0x72, 0x42, 0x1B, 0x9F, 0x67, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x81, 0x4E, 0x29, 0x95, 0x5F, 0x35, 0xD6, 0x9C, 0x6C, 0xE6, 0xA9, 0x6F, 0xE3, 0x9E, - 0x5D, 0xE0, 0x93, 0x4B, 0xDC, 0x88, 0x3A, 0xD8, 0x7D, 0x28, 0xCE, 0x71, 0x1D, 0xC2, 0x6E, 0x1F, - 0xBF, 0x6F, 0x29, 0xBF, 0x74, 0x30, 0xB9, 0x73, 0x33, 0xBB, 0x7B, 0x45, 0xBB, 0x80, 0x51, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBD, 0x59, 0x09, 0xB5, 0x62, 0x1A, 0xBD, 0x71, 0x2B, 0xBE, 0x72, 0x2B, 0xBE, 0x72, 0x2C, 0xBE, - 0x72, 0x2C, 0xBE, 0x6E, 0x25, 0x92, 0x4C, 0x16, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x50, - 0x29, 0xA5, 0x6A, 0x39, 0xDD, 0x88, 0x26, 0xDA, 0x84, 0x1A, 0xCC, 0x7B, 0x17, 0xBF, 0x73, 0x15, - 0xAC, 0x68, 0x16, 0x96, 0x5D, 0x17, 0x85, 0x54, 0x1A, 0x7A, 0x4E, 0x1B, 0x73, 0x47, 0x1A, 0x6F, - 0x43, 0x18, 0x6E, 0x3F, 0x17, 0x97, 0x62, 0x3B, 0xBF, 0x80, 0x55, 0xFF, 0xFF, 0xFF, 0x81, 0x4E, - 0x29, 0x90, 0x5A, 0x31, 0xC6, 0x8E, 0x62, 0xE3, 0xAA, 0x75, 0xE0, 0x9F, 0x64, 0xDB, 0x94, 0x54, - 0xD8, 0x8A, 0x42, 0xD4, 0x80, 0x31, 0xCF, 0x75, 0x1F, 0xC6, 0x70, 0x1F, 0xC2, 0x72, 0x28, 0xC2, - 0x75, 0x30, 0xBD, 0x75, 0x33, 0xB9, 0x78, 0x3F, 0xBA, 0x7D, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xB5, - 0x5E, 0x16, 0xBF, 0x74, 0x2D, 0xBF, 0x74, 0x2E, 0xC0, 0x74, 0x2E, 0xC0, 0x75, 0x2F, 0xC0, 0x71, - 0x2A, 0x9D, 0x51, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x50, 0x29, 0x96, 0x5F, 0x37, - 0xD9, 0x87, 0x2C, 0xE2, 0x89, 0x1B, 0xD5, 0x80, 0x19, 0xC6, 0x77, 0x16, 0xB4, 0x6E, 0x17, 0x9E, - 0x62, 0x18, 0x8A, 0x57, 0x19, 0x7E, 0x50, 0x1B, 0x77, 0x4B, 0x1B, 0x73, 0x46, 0x19, 0x70, 0x42, - 0x18, 0x8C, 0x59, 0x31, 0xB9, 0x79, 0x53, 0xFF, 0xFF, 0xFF, 0x80, 0x4E, 0x27, 0x8B, 0x56, 0x2E, - 0xBD, 0x85, 0x59, 0xE3, 0xAE, 0x7D, 0xE0, 0xA5, 0x6E, 0xDC, 0x9A, 0x5E, 0xD8, 0x90, 0x4E, 0xD3, - 0x86, 0x3E, 0xCF, 0x7A, 0x2C, 0xC9, 0x72, 0x22, 0xC6, 0x74, 0x28, 0xC6, 0x78, 0x30, 0xC1, 0x77, - 0x34, 0xBB, 0x77, 0x3B, 0xBA, 0x7A, 0x4A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x5E, 0x15, 0xC0, 0x72, - 0x2B, 0xC1, 0x76, 0x31, 0xC2, 0x77, 0x31, 0xC2, 0x77, 0x31, 0xC2, 0x75, 0x2F, 0xA6, 0x57, 0x17, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x4F, 0x29, 0x8E, 0x5A, 0x32, 0xCE, 0x82, 0x33, 0xE9, - 0x8E, 0x1D, 0xDC, 0x85, 0x1A, 0xCF, 0x7D, 0x19, 0xBD, 0x73, 0x18, 0xA6, 0x67, 0x19, 0x93, 0x5D, - 0x1B, 0x83, 0x55, 0x1B, 0x7A, 0x4E, 0x1B, 0x76, 0x4A, 0x1B, 0x74, 0x46, 0x18, 0x83, 0x52, 0x2A, - 0xB8, 0x78, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8A, 0x56, 0x2D, 0xB7, 0x7F, 0x54, 0xE6, - 0xB3, 0x88, 0xE7, 0xB0, 0x7E, 0xE4, 0xA6, 0x6F, 0xE0, 0x9C, 0x60, 0xDC, 0x92, 0x4F, 0xD5, 0x87, - 0x3D, 0xD1, 0x7B, 0x2D, 0xCE, 0x7A, 0x2D, 0xCC, 0x7B, 0x32, 0xC6, 0x7A, 0x35, 0xBD, 0x76, 0x36, - 0xB9, 0x7A, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x5C, 0x0D, 0xC1, 0x70, 0x28, 0xC3, 0x79, 0x34, - 0xC3, 0x79, 0x34, 0xC4, 0x79, 0x34, 0xC4, 0x79, 0x34, 0xAE, 0x5B, 0x19, 0x6D, 0x3B, 0x1A, 0x6F, - 0x3C, 0x19, 0x76, 0x3F, 0x18, 0x7B, 0x40, 0x17, 0x7C, 0x41, 0x17, 0x79, 0x40, 0x17, 0x74, 0x3E, - 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6D, 0x3B, 0x1A, 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6F, - 0x3C, 0x19, 0x75, 0x3E, 0x18, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7E, 0x4F, 0x28, 0x88, 0x55, 0x2E, 0xC2, 0x7B, 0x3B, 0xE9, 0x8E, 0x1D, 0xE5, 0x8B, - 0x1C, 0xD7, 0x82, 0x1A, 0xC6, 0x78, 0x19, 0xB1, 0x6D, 0x19, 0x9B, 0x62, 0x1C, 0x89, 0x58, 0x1C, - 0x7F, 0x52, 0x1C, 0x79, 0x4C, 0x1B, 0x76, 0x49, 0x19, 0x7F, 0x4F, 0x24, 0xAC, 0x6F, 0x46, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x57, 0x2E, 0xAE, 0x74, 0x4A, 0xE6, 0xB4, 0x88, 0xED, 0xB9, - 0x8B, 0xEA, 0xB1, 0x7C, 0xE7, 0xA7, 0x6E, 0xE3, 0x9E, 0x5F, 0xDE, 0x93, 0x4E, 0xDA, 0x89, 0x3F, - 0xD7, 0x82, 0x34, 0xD1, 0x7F, 0x34, 0xCA, 0x7D, 0x35, 0xC1, 0x76, 0x33, 0xBA, 0x7B, 0x4A, 0xB4, - 0x78, 0x5A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBB, 0x69, 0x24, 0xC5, 0x7B, 0x36, 0xC5, 0x7B, 0x37, 0xC6, - 0x7C, 0x37, 0xC6, 0x7C, 0x37, 0xB3, 0x60, 0x1C, 0x8F, 0x4A, 0x16, 0xAB, 0x5B, 0x19, 0xB6, 0x65, - 0x21, 0xBC, 0x6B, 0x26, 0xBE, 0x6D, 0x28, 0xBB, 0x6A, 0x25, 0xB6, 0x63, 0x1E, 0x9A, 0x50, 0x19, - 0x74, 0x3E, 0x19, 0x6D, 0x3B, 0x1A, 0x84, 0x45, 0x16, 0x9E, 0x53, 0x19, 0xA8, 0x58, 0x19, 0xAE, - 0x5C, 0x1A, 0xAF, 0x5D, 0x1B, 0xA1, 0x55, 0x19, 0x8A, 0x47, 0x17, 0x7A, 0x40, 0x17, 0x6D, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x79, - 0x40, 0x17, 0x85, 0x45, 0x16, 0x97, 0x50, 0x19, 0xA7, 0x59, 0x1A, 0xB2, 0x60, 0x1E, 0xB8, 0x68, - 0x25, 0xB5, 0x63, 0x20, 0xAE, 0x5E, 0x1C, 0xA4, 0x57, 0x1B, 0x95, 0x4F, 0x19, 0x80, 0x43, 0x17, - 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x8D, 0x4A, 0x17, 0x95, 0x4F, 0x19, 0x97, - 0x50, 0x1A, 0x97, 0x50, 0x1A, 0x97, 0x50, 0x1A, 0x7E, 0x42, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x9A, 0x50, 0x16, 0x95, 0x4F, 0x1A, 0x95, 0x4F, 0x1A, 0x97, 0x51, 0x1A, 0x97, 0x51, 0x1A, - 0x97, 0x51, 0x1A, 0x97, 0x51, 0x1A, 0x97, 0x51, 0x1A, 0x97, 0x51, 0x1A, 0x97, 0x51, 0x1A, 0x97, - 0x51, 0x1B, 0x97, 0x51, 0x1B, 0x97, 0x51, 0x1B, 0x97, 0x51, 0x1B, 0x97, 0x51, 0x1B, 0x96, 0x50, - 0x1A, 0x73, 0x3E, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x99, 0x51, 0x18, 0x97, 0x51, 0x1B, 0x97, 0x51, 0x1B, 0x98, 0x51, 0x1C, 0x98, 0x52, - 0x1C, 0x98, 0x52, 0x1C, 0x98, 0x52, 0x1C, 0x98, 0x52, 0x1C, 0x98, 0x52, 0x1C, 0x98, 0x52, 0x1C, - 0x98, 0x52, 0x1C, 0x98, 0x52, 0x1C, 0x99, 0x52, 0x1C, 0x8D, 0x4B, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x9B, 0x51, 0x18, 0x97, 0x51, 0x1C, 0x97, 0x51, 0x1C, 0x99, 0x52, 0x1C, 0x99, 0x52, - 0x1C, 0x99, 0x52, 0x1C, 0x99, 0x53, 0x1C, 0x99, 0x53, 0x1C, 0x99, 0x53, 0x1C, 0x99, 0x53, 0x1C, - 0x99, 0x53, 0x1C, 0x99, 0x53, 0x1C, 0x99, 0x53, 0x1C, 0x99, 0x53, 0x1D, 0x99, 0x53, 0x1D, 0x99, - 0x53, 0x1D, 0x8F, 0x4C, 0x19, 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x52, - 0x24, 0x83, 0x51, 0x2B, 0xB7, 0x76, 0x3F, 0xE8, 0x8D, 0x1E, 0xE9, 0x8E, 0x1D, 0xE0, 0x89, 0x1C, - 0xCF, 0x7E, 0x1A, 0xBB, 0x74, 0x1B, 0xA4, 0x67, 0x1B, 0x92, 0x5E, 0x1D, 0x85, 0x56, 0x1D, 0x7D, - 0x50, 0x1C, 0x78, 0x4B, 0x1A, 0x7C, 0x4C, 0x1E, 0xA4, 0x6B, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x8C, 0x57, 0x2D, 0xA0, 0x67, 0x3C, 0xE2, 0xB0, 0x85, 0xEF, 0xBF, 0x92, 0xEC, 0xB6, 0x84, - 0xEA, 0xAD, 0x76, 0xE6, 0xA4, 0x68, 0xE3, 0x9B, 0x59, 0xE0, 0x92, 0x4B, 0xDD, 0x89, 0x3C, 0xD6, - 0x83, 0x37, 0xCE, 0x80, 0x36, 0xC5, 0x79, 0x34, 0xBC, 0x7A, 0x44, 0xBB, 0x7D, 0x55, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xB8, 0x63, 0x1D, 0xC7, 0x7D, 0x39, 0xC7, 0x7E, 0x39, 0xC7, 0x7E, 0x3A, 0xC8, 0x7E, - 0x3A, 0xC2, 0x74, 0x2E, 0xC5, 0x75, 0x2F, 0xC7, 0x7D, 0x39, 0xC9, 0x7F, 0x3C, 0xC9, 0x80, 0x3C, - 0xC9, 0x80, 0x3C, 0xC9, 0x80, 0x3D, 0xCA, 0x80, 0x3C, 0xC6, 0x77, 0x30, 0xB4, 0x61, 0x1E, 0xA5, - 0x56, 0x19, 0xBE, 0x6D, 0x27, 0xC9, 0x7D, 0x38, 0xCA, 0x80, 0x3C, 0xCB, 0x83, 0x3F, 0xCB, 0x82, - 0x3F, 0xCA, 0x7E, 0x39, 0xC8, 0x79, 0x33, 0xBE, 0x6C, 0x27, 0xA2, 0x56, 0x19, 0x73, 0x3E, 0x19, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x72, 0x3D, 0x19, 0x96, 0x4F, 0x18, 0xB9, 0x69, 0x26, 0xCA, 0x7B, - 0x35, 0xCD, 0x80, 0x3C, 0xCF, 0x85, 0x42, 0xD0, 0x88, 0x46, 0xD0, 0x89, 0x47, 0xD1, 0x89, 0x47, - 0xD0, 0x88, 0x45, 0xCF, 0x85, 0x41, 0xCD, 0x81, 0x3D, 0xC3, 0x72, 0x2D, 0xAB, 0x5C, 0x1D, 0x81, - 0x44, 0x18, 0x70, 0x3D, 0x19, 0xB2, 0x61, 0x20, 0xCF, 0x84, 0x3F, 0xCF, 0x84, 0x40, 0xCF, 0x84, - 0x40, 0xCE, 0x80, 0x3B, 0xA3, 0x57, 0x1C, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xBB, 0x61, 0x18, - 0xCE, 0x7E, 0x39, 0xD1, 0x85, 0x42, 0xD1, 0x86, 0x43, 0xD1, 0x86, 0x43, 0xD2, 0x86, 0x44, 0xD2, - 0x86, 0x44, 0xD2, 0x87, 0x44, 0xD2, 0x87, 0x44, 0xD2, 0x87, 0x44, 0xD3, 0x88, 0x44, 0xD3, 0x88, - 0x45, 0xD3, 0x88, 0x45, 0xD3, 0x88, 0x45, 0xD4, 0x89, 0x46, 0xCD, 0x7E, 0x38, 0x85, 0x45, 0x16, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x64, - 0x1D, 0xD3, 0x86, 0x42, 0xD6, 0x8C, 0x4A, 0xD6, 0x8D, 0x4A, 0xD7, 0x8D, 0x4B, 0xD7, 0x8D, 0x4B, - 0xD7, 0x8D, 0x4B, 0xD7, 0x8E, 0x4C, 0xD8, 0x8E, 0x4C, 0xD8, 0x8E, 0x4C, 0xD8, 0x8F, 0x4D, 0xD8, - 0x8F, 0x4D, 0xD9, 0x8F, 0x4E, 0xBB, 0x6A, 0x28, 0x72, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xBC, 0x64, - 0x1D, 0xD5, 0x88, 0x44, 0xD9, 0x90, 0x4F, 0xD9, 0x90, 0x4F, 0xD9, 0x91, 0x4F, 0xDA, 0x91, 0x50, - 0xDA, 0x91, 0x50, 0xDA, 0x91, 0x50, 0xDA, 0x92, 0x51, 0xDB, 0x92, 0x51, 0xDB, 0x92, 0x51, 0xDB, - 0x93, 0x52, 0xDB, 0x93, 0x52, 0xDC, 0x93, 0x52, 0xDC, 0x93, 0x53, 0xDC, 0x94, 0x53, 0xBF, 0x6E, - 0x2C, 0x73, 0x3E, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x79, 0x4B, 0x28, 0x84, 0x53, 0x2E, 0xA7, 0x6C, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0x52, 0x2A, - 0xAD, 0x6F, 0x3C, 0xE2, 0x8B, 0x24, 0xE9, 0x8E, 0x1D, 0xE7, 0x8D, 0x1D, 0xD9, 0x85, 0x1B, 0xC6, - 0x7A, 0x1B, 0xB1, 0x6E, 0x1C, 0x9C, 0x63, 0x1C, 0x8D, 0x5B, 0x1D, 0x81, 0x53, 0x1B, 0x7C, 0x4F, - 0x1B, 0x7B, 0x4C, 0x1A, 0x9F, 0x68, 0x3E, 0xFF, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x89, 0x54, 0x2B, - 0x9A, 0x60, 0x36, 0xD5, 0x9E, 0x74, 0xEA, 0xBA, 0x8D, 0xE8, 0xB5, 0x87, 0xE7, 0xAE, 0x7A, 0xE6, - 0xA6, 0x6D, 0xE5, 0xA0, 0x61, 0xE1, 0x98, 0x53, 0xDE, 0x8F, 0x44, 0xDB, 0x86, 0x38, 0xD3, 0x82, - 0x37, 0xC9, 0x7C, 0x34, 0xBE, 0x79, 0x3E, 0xBD, 0x7E, 0x54, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xB7, 0x60, - 0x19, 0xC9, 0x7E, 0x3A, 0xC9, 0x80, 0x3C, 0xC9, 0x80, 0x3D, 0xCA, 0x81, 0x3D, 0xCA, 0x81, 0x3D, - 0xCA, 0x81, 0x3E, 0xCA, 0x81, 0x3E, 0xCA, 0x82, 0x3E, 0xCB, 0x82, 0x3F, 0xCB, 0x82, 0x3F, 0xCB, - 0x83, 0x3F, 0xCB, 0x83, 0x40, 0xCC, 0x83, 0x40, 0xCB, 0x82, 0x3E, 0xCA, 0x7F, 0x3A, 0xCC, 0x84, - 0x41, 0xCD, 0x84, 0x42, 0xCD, 0x85, 0x42, 0xCD, 0x85, 0x42, 0xCD, 0x85, 0x43, 0xCE, 0x86, 0x43, - 0xCE, 0x86, 0x43, 0xCE, 0x86, 0x44, 0xCA, 0x7C, 0x37, 0xB2, 0x60, 0x1E, 0x7F, 0x43, 0x18, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x3B, 0x1A, 0x80, 0x43, - 0x17, 0xAC, 0x5D, 0x1D, 0xCB, 0x7C, 0x38, 0xD1, 0x8A, 0x48, 0xD1, 0x8A, 0x48, 0xD1, 0x8A, 0x48, - 0xD2, 0x8A, 0x49, 0xD2, 0x8B, 0x49, 0xD2, 0x8B, 0x4A, 0xD2, 0x8B, 0x4A, 0xD3, 0x8C, 0x4A, 0xD3, - 0x8C, 0x4B, 0xD3, 0x8C, 0x4B, 0xD3, 0x8D, 0x4B, 0xD1, 0x87, 0x44, 0xC4, 0x73, 0x2E, 0xAC, 0x5B, - 0x1C, 0xBE, 0x6F, 0x2D, 0xD5, 0x8E, 0x4D, 0xD5, 0x8E, 0x4D, 0xD5, 0x8F, 0x4E, 0xD4, 0x8D, 0x4C, - 0xB1, 0x5F, 0x1E, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xBD, 0x5A, 0x0A, 0xCC, 0x7E, 0x3B, 0xD7, - 0x91, 0x50, 0xD7, 0x91, 0x51, 0xD7, 0x91, 0x51, 0xD7, 0x91, 0x51, 0xD8, 0x92, 0x52, 0xD8, 0x92, - 0x52, 0xD8, 0x92, 0x52, 0xD8, 0x93, 0x53, 0xD9, 0x93, 0x53, 0xD9, 0x93, 0x54, 0xD9, 0x94, 0x54, - 0xD9, 0x94, 0x54, 0xDA, 0x94, 0x55, 0xD5, 0x8A, 0x48, 0x97, 0x51, 0x1B, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x60, 0x14, 0xD6, 0x8A, 0x47, - 0xDD, 0x98, 0x5A, 0xDD, 0x99, 0x5A, 0xDE, 0x99, 0x5B, 0xDE, 0x99, 0x5B, 0xDE, 0x9A, 0x5B, 0xDE, - 0x9A, 0x5C, 0xDE, 0x9A, 0x5C, 0xDF, 0x9B, 0x5C, 0xDF, 0x9B, 0x5D, 0xDF, 0x9B, 0x5D, 0xDF, 0x9C, - 0x5D, 0xC6, 0x78, 0x37, 0x7A, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0xBE, 0x5C, 0x0D, 0xD5, 0x8A, 0x47, - 0xE1, 0x9D, 0x5F, 0xE1, 0x9E, 0x60, 0xE1, 0x9E, 0x60, 0xE2, 0x9E, 0x60, 0xE2, 0x9E, 0x61, 0xE2, - 0x9F, 0x61, 0xE2, 0x9F, 0x61, 0xE2, 0x9F, 0x62, 0xE3, 0xA0, 0x62, 0xE3, 0xA0, 0x63, 0xE3, 0xA0, - 0x63, 0xE3, 0xA0, 0x63, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xCC, 0x7E, 0x3D, 0x7B, 0x41, 0x17, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x75, 0x49, - 0x26, 0x7F, 0x51, 0x2A, 0x79, 0x4E, 0x28, 0xA0, 0x64, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x53, 0x2C, 0xA0, 0x66, 0x38, 0xD8, - 0x87, 0x2E, 0xE9, 0x8E, 0x1D, 0xE8, 0x8D, 0x1D, 0xE2, 0x8A, 0x1D, 0xD2, 0x80, 0x1B, 0xBF, 0x75, - 0x1B, 0xAB, 0x6B, 0x1B, 0x9A, 0x61, 0x1B, 0x8B, 0x58, 0x1B, 0x81, 0x52, 0x1A, 0x7E, 0x4F, 0x19, - 0x98, 0x62, 0x38, 0xBA, 0x76, 0x4E, 0xFF, 0xFF, 0xFF, 0x8A, 0x54, 0x2C, 0x96, 0x5D, 0x32, 0xC5, - 0x8E, 0x61, 0xE5, 0xB5, 0x89, 0xE4, 0xB2, 0x85, 0xE1, 0xAB, 0x79, 0xE1, 0xA5, 0x6E, 0xE3, 0xA1, - 0x65, 0xE3, 0x9C, 0x59, 0xE1, 0x94, 0x4C, 0xDD, 0x8A, 0x3D, 0xD8, 0x84, 0x37, 0xCE, 0x7F, 0x35, - 0xC1, 0x77, 0x39, 0xB8, 0x77, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x60, 0x18, 0xC9, 0x7C, 0x37, - 0xCB, 0x82, 0x3F, 0xCB, 0x82, 0x3F, 0xCB, 0x83, 0x40, 0xCC, 0x83, 0x40, 0xCC, 0x84, 0x40, 0xCC, - 0x84, 0x41, 0xCC, 0x84, 0x41, 0xCD, 0x84, 0x42, 0xCD, 0x85, 0x42, 0xCD, 0x85, 0x42, 0xCD, 0x85, - 0x43, 0xCE, 0x86, 0x43, 0xCE, 0x86, 0x43, 0xCE, 0x86, 0x44, 0xCE, 0x86, 0x44, 0xCE, 0x87, 0x44, - 0xCF, 0x87, 0x45, 0xCF, 0x87, 0x45, 0xCF, 0x88, 0x45, 0xCF, 0x88, 0x46, 0xD0, 0x88, 0x46, 0xD0, - 0x88, 0x46, 0xD0, 0x89, 0x47, 0xCE, 0x84, 0x41, 0xB4, 0x62, 0x1F, 0x74, 0x3E, 0x18, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x94, 0x4E, 0x18, 0xBE, 0x6E, 0x2B, 0xD0, 0x87, 0x45, - 0xD3, 0x8C, 0x4A, 0xD3, 0x8C, 0x4B, 0xD3, 0x8C, 0x4B, 0xD3, 0x8D, 0x4B, 0xD4, 0x8D, 0x4C, 0xD4, - 0x8D, 0x4C, 0xD4, 0x8D, 0x4C, 0xD4, 0x8D, 0x4C, 0xD3, 0x8B, 0x49, 0xD5, 0x8E, 0x4D, 0xD5, 0x8F, - 0x4E, 0xD5, 0x8F, 0x4E, 0xD5, 0x8F, 0x4E, 0xD6, 0x8F, 0x4F, 0xD3, 0x89, 0x46, 0xD4, 0x8C, 0x4A, - 0xD6, 0x90, 0x50, 0xD7, 0x91, 0x50, 0xD7, 0x91, 0x51, 0xD7, 0x91, 0x51, 0xBA, 0x69, 0x26, 0x73, - 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xBD, 0x59, 0x09, 0xC3, 0x73, 0x2F, 0xD8, 0x90, 0x4F, 0xD9, 0x93, - 0x53, 0xD9, 0x94, 0x54, 0xD9, 0x94, 0x54, 0xDA, 0x94, 0x55, 0xDA, 0x94, 0x55, 0xDA, 0x95, 0x55, - 0xDA, 0x95, 0x56, 0xDA, 0x95, 0x56, 0xDB, 0x96, 0x56, 0xDB, 0x96, 0x57, 0xDB, 0x96, 0x57, 0xDB, - 0x96, 0x56, 0xD7, 0x8D, 0x4B, 0xA7, 0x5B, 0x1F, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xCD, 0x7F, 0x3C, 0xDF, 0x9B, 0x5D, 0xDF, - 0x9B, 0x5D, 0xDF, 0x9B, 0x5D, 0xE0, 0x9C, 0x5E, 0xE0, 0x9C, 0x5E, 0xE0, 0x9C, 0x5E, 0xE0, 0x9D, - 0x5F, 0xE1, 0x9D, 0x5F, 0xE1, 0x9D, 0x5F, 0xE1, 0x9E, 0x60, 0xE1, 0x9E, 0x5F, 0xD4, 0x86, 0x43, - 0x83, 0x44, 0x16, 0x6C, 0x3B, 0x1A, 0xB8, 0x57, 0x0A, 0xCA, 0x7B, 0x38, 0xE1, 0x9D, 0x5E, 0xE3, - 0xA0, 0x63, 0xE3, 0xA0, 0x63, 0xE3, 0xA0, 0x63, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, - 0x64, 0xE4, 0xA2, 0x65, 0xE5, 0xA2, 0x65, 0xE5, 0xA2, 0x65, 0xE5, 0xA3, 0x66, 0xE5, 0xA3, 0x66, - 0xE6, 0xA3, 0x66, 0xE6, 0xA3, 0x67, 0xDB, 0x90, 0x4E, 0x86, 0x46, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x48, 0x25, 0x81, 0x52, 0x2A, - 0x61, 0x3C, 0x14, 0x6E, 0x46, 0x22, 0x90, 0x5F, 0x34, 0x99, 0x66, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x53, 0x2B, 0x8E, 0x57, 0x2D, 0xAD, 0x6F, 0x3D, 0xD2, 0x84, - 0x31, 0xE8, 0x8E, 0x1E, 0xE8, 0x8D, 0x1D, 0xDD, 0x86, 0x1B, 0xCD, 0x7D, 0x1A, 0xBC, 0x73, 0x1A, - 0xAA, 0x69, 0x1A, 0x98, 0x5F, 0x1A, 0x89, 0x57, 0x19, 0x82, 0x52, 0x19, 0x90, 0x5D, 0x2F, 0xB8, - 0x7B, 0x50, 0xFF, 0xFF, 0xFF, 0x8E, 0x55, 0x2F, 0x91, 0x5A, 0x30, 0xB6, 0x7C, 0x4F, 0xD8, 0xA3, - 0x77, 0xE5, 0xB4, 0x87, 0xE1, 0xAD, 0x7E, 0xDD, 0xA4, 0x6F, 0xDF, 0xA0, 0x67, 0xE2, 0x9D, 0x5E, - 0xE2, 0x98, 0x54, 0xDF, 0x8F, 0x44, 0xDC, 0x86, 0x38, 0xD2, 0x80, 0x36, 0xC4, 0x78, 0x33, 0xBA, - 0x79, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x5E, 0x10, 0xC9, 0x7A, 0x34, 0xCD, 0x85, 0x42, 0xCD, - 0x85, 0x42, 0xCD, 0x85, 0x43, 0xCD, 0x85, 0x43, 0xCE, 0x86, 0x43, 0xCE, 0x86, 0x44, 0xCE, 0x86, - 0x44, 0xCE, 0x87, 0x44, 0xCD, 0x83, 0x40, 0xCD, 0x81, 0x3E, 0xCF, 0x86, 0x44, 0xCF, 0x88, 0x46, - 0xD0, 0x88, 0x46, 0xD0, 0x88, 0x46, 0xD0, 0x89, 0x47, 0xD0, 0x89, 0x47, 0xD1, 0x89, 0x47, 0xD1, - 0x89, 0x48, 0xD1, 0x8A, 0x48, 0xD1, 0x8A, 0x48, 0xD0, 0x86, 0x44, 0xCE, 0x81, 0x3C, 0xD2, 0x8A, - 0x49, 0xCD, 0x80, 0x3D, 0x9C, 0x53, 0x19, 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, - 0x83, 0x44, 0x15, 0xBC, 0x6C, 0x2A, 0xD4, 0x8D, 0x4C, 0xD4, 0x8E, 0x4D, 0xD4, 0x8E, 0x4D, 0xD5, - 0x8E, 0x4D, 0xD5, 0x8F, 0x4E, 0xD5, 0x8F, 0x4E, 0xD5, 0x8F, 0x4E, 0xCE, 0x80, 0x3D, 0xBB, 0x6D, - 0x2B, 0xB3, 0x62, 0x1F, 0xB1, 0x5F, 0x1D, 0xBA, 0x66, 0x21, 0xBF, 0x6F, 0x2B, 0xCF, 0x83, 0x3F, - 0xD7, 0x90, 0x50, 0xD8, 0x92, 0x52, 0xD8, 0x92, 0x52, 0xD8, 0x92, 0x52, 0xD8, 0x93, 0x53, 0xD8, - 0x93, 0x53, 0xD9, 0x93, 0x53, 0xD9, 0x94, 0x54, 0xC5, 0x76, 0x32, 0x7A, 0x40, 0x17, 0x6C, 0x3B, - 0x1A, 0xB4, 0x56, 0x0B, 0xC3, 0x66, 0x1A, 0xBC, 0x66, 0x21, 0xC8, 0x78, 0x34, 0xD6, 0x8C, 0x4B, - 0xDB, 0x96, 0x57, 0xDB, 0x96, 0x57, 0xDC, 0x97, 0x58, 0xDC, 0x97, 0x58, 0xDC, 0x97, 0x58, 0xDC, - 0x98, 0x59, 0xDD, 0x98, 0x59, 0xDC, 0x97, 0x57, 0xC9, 0x7B, 0x3A, 0xB5, 0x65, 0x25, 0xAD, 0x5E, - 0x1F, 0xA3, 0x56, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC2, 0x69, 0x1F, 0xC4, 0x72, 0x2F, 0xD5, 0x8A, 0x48, 0xDE, 0x98, - 0x59, 0xE2, 0x9E, 0x60, 0xE2, 0x9E, 0x61, 0xE2, 0x9F, 0x61, 0xE2, 0x9F, 0x61, 0xE2, 0x9F, 0x62, - 0xE3, 0x9F, 0x62, 0xCE, 0x82, 0x40, 0xB5, 0x66, 0x26, 0xAB, 0x5D, 0x20, 0x8B, 0x49, 0x17, 0x6C, - 0x3B, 0x1A, 0xBD, 0x59, 0x09, 0xC5, 0x69, 0x1F, 0xBD, 0x68, 0x23, 0xC2, 0x70, 0x2C, 0xE1, 0x9C, - 0x5D, 0xE5, 0xA3, 0x66, 0xE6, 0xA3, 0x66, 0xE6, 0xA3, 0x67, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x67, - 0xE6, 0xA4, 0x68, 0xE7, 0xA5, 0x68, 0xE7, 0xA5, 0x68, 0xE6, 0xA4, 0x68, 0xE0, 0x99, 0x59, 0xCD, - 0x81, 0x40, 0xB4, 0x65, 0x26, 0x89, 0x48, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x73, 0x48, 0x25, 0x82, 0x52, 0x2B, 0x66, 0x41, 0x16, 0x59, - 0x38, 0x0F, 0x64, 0x41, 0x1B, 0x86, 0x57, 0x2F, 0x9F, 0x70, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0x54, 0x2C, 0x8F, 0x59, 0x2E, 0xA7, 0x6A, 0x3B, 0xC7, 0x7F, 0x38, - 0xE5, 0x8C, 0x21, 0xE7, 0x8C, 0x1D, 0xDA, 0x84, 0x1B, 0xC9, 0x7A, 0x18, 0xB9, 0x71, 0x18, 0xA7, - 0x66, 0x18, 0x97, 0x5E, 0x18, 0x8A, 0x56, 0x17, 0x8E, 0x5B, 0x27, 0xB2, 0x76, 0x4A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x5C, 0x30, 0x9B, 0x61, 0x33, 0xB4, 0x78, 0x4B, 0xD1, 0x9A, 0x6D, - 0xE7, 0xB4, 0x86, 0xE0, 0xA8, 0x76, 0xDD, 0xA0, 0x69, 0xE1, 0xA0, 0x63, 0xE4, 0x9C, 0x5A, 0xE1, - 0x94, 0x4C, 0xDD, 0x8B, 0x3E, 0xD6, 0x82, 0x36, 0xC9, 0x77, 0x2F, 0xBA, 0x78, 0x46, 0xBF, 0x80, - 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC2, 0x72, 0x2D, 0xCF, 0x87, 0x45, 0xCF, 0x87, 0x45, 0xCF, 0x87, - 0x45, 0xCF, 0x88, 0x46, 0xD0, 0x88, 0x46, 0xD0, 0x88, 0x46, 0xCE, 0x83, 0x40, 0xB6, 0x66, 0x24, - 0xA6, 0x58, 0x1B, 0xAD, 0x5C, 0x1A, 0xB9, 0x63, 0x1D, 0xC2, 0x71, 0x2C, 0xD0, 0x86, 0x44, 0xD2, - 0x8B, 0x49, 0xD2, 0x8B, 0x4A, 0xD2, 0x8B, 0x4A, 0xD2, 0x8C, 0x4A, 0xD3, 0x8C, 0x4B, 0xD3, 0x8C, - 0x4B, 0xD0, 0x86, 0x43, 0xAE, 0x5F, 0x1F, 0x97, 0x4F, 0x19, 0xBF, 0x6A, 0x24, 0xB3, 0x62, 0x20, - 0x76, 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0x78, 0x3F, 0x17, 0xA9, 0x5B, 0x1D, 0xD4, - 0x8A, 0x48, 0xD6, 0x90, 0x4F, 0xD6, 0x90, 0x4F, 0xD6, 0x90, 0x50, 0xD7, 0x91, 0x50, 0xD7, 0x91, - 0x50, 0xD6, 0x90, 0x4F, 0xC6, 0x77, 0x34, 0x99, 0x51, 0x1A, 0x80, 0x42, 0x16, 0xBD, 0x59, 0x09, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xC2, 0x64, 0x18, 0xC3, 0x70, 0x2A, 0xD6, - 0x8D, 0x4B, 0xDA, 0x94, 0x55, 0xDA, 0x95, 0x55, 0xDA, 0x95, 0x55, 0xDA, 0x95, 0x56, 0xDB, 0x96, - 0x56, 0xDB, 0x96, 0x56, 0xD1, 0x85, 0x41, 0x85, 0x45, 0x16, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xC1, 0x69, 0x21, 0xD9, 0x90, 0x50, 0xDD, - 0x99, 0x5A, 0xDD, 0x99, 0x5A, 0xDE, 0x99, 0x5B, 0xDE, 0x9A, 0x5B, 0xDE, 0x9A, 0x5C, 0xDE, 0x9A, - 0x5C, 0xD8, 0x8E, 0x4B, 0x96, 0x50, 0x1A, 0x71, 0x3D, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC2, 0x62, 0x14, 0xC0, 0x69, 0x23, 0xD0, 0x81, 0x3F, - 0xE3, 0xA0, 0x62, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x65, 0xE1, 0x9C, 0x5D, 0xB1, - 0x60, 0x21, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x50, 0x18, 0xDC, 0x92, 0x51, 0xE7, 0xA5, 0x69, - 0xE7, 0xA5, 0x69, 0xE8, 0xA6, 0x69, 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6B, 0xE9, - 0xA7, 0x6B, 0xE8, 0xA5, 0x69, 0xC9, 0x7B, 0x3A, 0x9D, 0x55, 0x1E, 0x8B, 0x47, 0x13, 0x96, 0x4B, - 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x74, 0x49, 0x24, 0x81, 0x52, 0x2D, 0x6D, 0x45, 0x1A, 0x5E, 0x39, 0x0E, 0x56, 0x35, - 0x0E, 0x5D, 0x3B, 0x16, 0x7D, 0x50, 0x2A, 0xA2, 0x6C, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x8E, 0x58, 0x2E, 0x95, 0x5C, 0x2F, 0xA2, 0x66, 0x39, 0xBF, 0x7A, 0x3E, 0xE1, - 0x8B, 0x25, 0xE2, 0x89, 0x1C, 0xD5, 0x81, 0x1A, 0xC7, 0x78, 0x17, 0xB6, 0x6E, 0x17, 0xA6, 0x66, - 0x16, 0x97, 0x5D, 0x17, 0x92, 0x5B, 0x20, 0xAB, 0x70, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x99, 0x60, 0x33, 0xA4, 0x66, 0x36, 0xB3, 0x74, 0x44, 0xCB, 0x8F, 0x63, 0xE0, - 0xAA, 0x7B, 0xDE, 0xA4, 0x6F, 0xE2, 0xA2, 0x69, 0xE4, 0x9F, 0x61, 0xE2, 0x98, 0x54, 0xDF, 0x90, - 0x45, 0xDB, 0x85, 0x37, 0xCD, 0x7B, 0x30, 0xBA, 0x75, 0x3F, 0xB9, 0x7B, 0x4F, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, - 0x09, 0xBB, 0x69, 0x24, 0xD1, 0x89, 0x47, 0xD1, 0x89, 0x48, 0xD1, 0x8A, 0x48, 0xD1, 0x8A, 0x48, - 0xD2, 0x8A, 0x49, 0xD2, 0x8B, 0x49, 0xBE, 0x6D, 0x29, 0x7C, 0x41, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBE, 0x5B, 0x0C, 0xBF, 0x67, 0x1F, 0xCE, 0x81, 0x3E, 0xD4, 0x8D, - 0x4C, 0xD4, 0x8E, 0x4D, 0xD4, 0x8E, 0x4D, 0xD5, 0x8E, 0x4D, 0xD5, 0x8E, 0x4E, 0xCB, 0x7C, 0x38, - 0x83, 0x45, 0x16, 0x6C, 0x3B, 0x1A, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x94, 0x4D, 0x18, 0xCB, 0x7D, 0x3A, 0xD7, 0x92, 0x52, 0xD8, 0x92, - 0x52, 0xD8, 0x92, 0x52, 0xD8, 0x92, 0x53, 0xD8, 0x93, 0x53, 0xD9, 0x93, 0x53, 0xC8, 0x79, 0x36, - 0x8E, 0x4A, 0x18, 0x6E, 0x3C, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC4, 0x6E, 0x27, 0xD9, 0x92, - 0x51, 0xDC, 0x97, 0x58, 0xDC, 0x97, 0x58, 0xDC, 0x98, 0x59, 0xDC, 0x98, 0x59, 0xDD, 0x98, 0x59, - 0xD7, 0x8D, 0x4C, 0x9A, 0x53, 0x1C, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x5C, 0x0C, 0xCE, 0x80, 0x3D, 0xDF, 0x9B, 0x5D, 0xDF, 0x9B, - 0x5D, 0xE0, 0x9C, 0x5E, 0xE0, 0x9C, 0x5E, 0xE0, 0x9C, 0x5E, 0xE0, 0x9D, 0x5F, 0xCE, 0x80, 0x3D, - 0x7C, 0x41, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC3, 0x65, 0x18, 0xCE, 0x7E, 0x3A, 0xE4, - 0xA0, 0x64, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x68, 0xCE, 0x7F, 0x3E, 0x86, 0x46, - 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x7A, 0x40, 0x17, 0xAF, 0x61, 0x23, 0xE6, 0xA2, 0x65, 0xE9, 0xA7, 0x6C, 0xE9, 0xA8, 0x6C, 0xEA, - 0xA8, 0x6C, 0xEA, 0xA8, 0x6D, 0xEA, 0xA8, 0x6D, 0xEA, 0xA9, 0x6D, 0xEB, 0xA9, 0x6E, 0xD2, 0x84, - 0x44, 0x90, 0x4D, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x75, 0x49, - 0x24, 0x7F, 0x4F, 0x2B, 0x77, 0x4B, 0x20, 0x62, 0x3C, 0x0E, 0x5C, 0x38, 0x0E, 0x55, 0x35, 0x0D, - 0x59, 0x37, 0x12, 0x72, 0x4A, 0x25, 0x97, 0x61, 0x3A, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x97, 0x5D, 0x2E, 0x9B, 0x5E, 0x31, 0xA2, 0x64, 0x37, 0xB9, 0x76, 0x3F, 0xD9, 0x87, - 0x2C, 0xDE, 0x86, 0x1B, 0xD2, 0x7F, 0x19, 0xC4, 0x77, 0x17, 0xB4, 0x6D, 0x15, 0xA6, 0x65, 0x15, - 0x9B, 0x5F, 0x19, 0xA8, 0x6D, 0x41, 0xAC, 0x7A, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xA2, 0x64, 0x36, 0xAB, 0x6B, 0x38, 0xB5, 0x73, 0x40, 0xC5, 0x88, 0x59, 0xD6, 0x9F, - 0x6F, 0xE2, 0xA6, 0x70, 0xE5, 0xA3, 0x68, 0xE4, 0x9D, 0x5C, 0xE1, 0x95, 0x4D, 0xDC, 0x8A, 0x3E, - 0xD1, 0x7D, 0x30, 0xBE, 0x75, 0x38, 0xBC, 0x7D, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBA, 0x64, 0x1D, - 0xD1, 0x8B, 0x48, 0xD3, 0x8C, 0x4B, 0xD3, 0x8C, 0x4B, 0xD3, 0x8C, 0x4B, 0xD3, 0x8D, 0x4C, 0xD3, - 0x8B, 0x4A, 0xAF, 0x5F, 0x1E, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC1, 0x70, 0x2D, 0xD6, 0x90, 0x4F, 0xD6, 0x90, 0x4F, - 0xD6, 0x90, 0x50, 0xD6, 0x90, 0x50, 0xD7, 0x91, 0x50, 0xCE, 0x7F, 0x3C, 0x82, 0x43, 0x16, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x58, - 0x0A, 0xB7, 0x67, 0x26, 0xD8, 0x93, 0x52, 0xD9, 0x94, 0x54, 0xDA, 0x94, 0x55, 0xDA, 0x95, 0x55, - 0xDA, 0x95, 0x55, 0xDA, 0x95, 0x56, 0xD8, 0x90, 0x50, 0xAA, 0x5C, 0x1E, 0x6E, 0x3C, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x5D, 0x0E, 0xC6, 0x74, 0x2F, 0xDE, 0x99, 0x5B, - 0xDE, 0x99, 0x5B, 0xDE, 0x9A, 0x5B, 0xDE, 0x9A, 0x5C, 0xDF, 0x9B, 0x5C, 0xDC, 0x96, 0x55, 0xAC, - 0x5E, 0x20, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC0, 0x6C, 0x26, 0xE0, 0x9B, 0x5E, 0xE1, 0x9E, 0x60, 0xE1, 0x9E, 0x60, - 0xE2, 0x9E, 0x61, 0xE2, 0x9F, 0x61, 0xE2, 0x9F, 0x61, 0xD3, 0x87, 0x45, 0x7F, 0x42, 0x16, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC2, 0x62, 0x14, 0xCC, 0x7B, 0x36, 0xE5, 0xA1, - 0x64, 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6B, 0xE6, 0xA1, 0x64, 0xBC, 0x6C, 0x2A, 0x78, 0x40, 0x18, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8A, 0x48, 0x15, 0xCF, - 0x82, 0x42, 0xEB, 0xA9, 0x6E, 0xEB, 0xAA, 0x6E, 0xEB, 0xAA, 0x6F, 0xEB, 0xAA, 0x6F, 0xEC, 0xAB, - 0x6F, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xDA, 0x8F, 0x4F, 0x9B, 0x54, 0x1D, 0x6E, 0x3C, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x49, 0x24, 0x7C, 0x4D, 0x29, - 0x81, 0x52, 0x27, 0x68, 0x40, 0x0F, 0x60, 0x3B, 0x0E, 0x5A, 0x37, 0x0E, 0x53, 0x34, 0x0D, 0x53, - 0x34, 0x0F, 0x68, 0x42, 0x1F, 0x8B, 0x5A, 0x33, 0x9F, 0x60, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x80, 0x80, 0x00, 0x9F, 0x62, 0x32, 0xA6, 0x65, 0x36, 0xB3, 0x72, 0x3F, 0xCD, 0x81, 0x33, - 0xDA, 0x84, 0x1C, 0xCC, 0x7C, 0x17, 0xBF, 0x74, 0x16, 0xB2, 0x6B, 0x13, 0xA4, 0x63, 0x11, 0xA3, - 0x68, 0x35, 0x98, 0x64, 0x39, 0xAB, 0x78, 0x50, 0xB6, 0x6D, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xB6, 0x6D, 0x49, 0xB3, 0x6F, 0x3A, 0xBC, 0x76, 0x40, 0xC3, 0x83, 0x51, 0xD4, 0x9B, 0x6A, - 0xE6, 0xA8, 0x6F, 0xE5, 0xA1, 0x63, 0xE3, 0x99, 0x54, 0xDE, 0x8E, 0x45, 0xD6, 0x80, 0x30, 0xC2, - 0x74, 0x32, 0xBD, 0x7A, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x63, 0x1C, 0xD1, 0x87, 0x45, 0xD5, - 0x8E, 0x4D, 0xD5, 0x8E, 0x4E, 0xD5, 0x8F, 0x4E, 0xD5, 0x8F, 0x4E, 0xD6, 0x8F, 0x4F, 0xB5, 0x63, - 0x20, 0x6E, 0x3C, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBD, 0x59, 0x09, 0xBC, 0x68, 0x23, 0xD8, 0x92, 0x52, 0xD8, 0x92, 0x52, 0xD8, 0x92, 0x53, 0xD8, - 0x93, 0x53, 0xD9, 0x93, 0x53, 0xD3, 0x87, 0x44, 0x91, 0x4D, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x4F, 0x0F, 0xC8, 0x7B, 0x38, - 0xDB, 0x96, 0x57, 0xDB, 0x96, 0x57, 0xDB, 0x97, 0x57, 0xDC, 0x97, 0x58, 0xDC, 0x97, 0x58, 0xDC, - 0x97, 0x58, 0xCA, 0x7C, 0x3A, 0x83, 0x44, 0x16, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x68, 0x21, 0xDB, 0x95, 0x54, 0xE0, 0x9C, 0x5E, 0xE0, - 0x9C, 0x5E, 0xE0, 0x9D, 0x5F, 0xE0, 0x9D, 0x5F, 0xE1, 0x9D, 0x5E, 0xB9, 0x67, 0x25, 0x6E, 0x3C, - 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBC, 0x66, 0x21, 0xDE, 0x96, 0x56, 0xE3, 0xA0, 0x63, 0xE3, 0xA0, 0x63, 0xE4, 0xA1, 0x64, 0xE4, - 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xDB, 0x90, 0x50, 0x8D, 0x4A, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3C, 0x19, 0x6F, 0x3C, 0x19, 0x6F, 0x3C, 0x19, - 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5F, 0x10, 0xCB, 0x78, 0x33, 0xE7, 0xA2, 0x65, - 0xEA, 0xA9, 0x6D, 0xEA, 0xA9, 0x6E, 0xE4, 0x9E, 0x60, 0xB5, 0x65, 0x26, 0x73, 0x3E, 0x19, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x7A, 0x40, 0x17, 0xAD, 0x61, 0x23, 0xE8, 0xA4, 0x67, 0xEC, 0xAB, - 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, - 0xE5, 0x9F, 0x61, 0xA8, 0x5C, 0x22, 0x70, 0x3C, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x79, 0x4B, 0x27, 0x89, 0x56, 0x2B, 0x6F, - 0x44, 0x11, 0x67, 0x3E, 0x0E, 0x5F, 0x3A, 0x0E, 0x58, 0x37, 0x0E, 0x54, 0x33, 0x0D, 0x52, 0x31, - 0x0D, 0x60, 0x3B, 0x1A, 0x82, 0x53, 0x2F, 0xA2, 0x68, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xA3, 0x64, 0x34, 0xA5, 0x65, 0x34, 0xAE, 0x6E, 0x3D, 0xC3, 0x7C, 0x3B, 0xD3, - 0x81, 0x1F, 0xC9, 0x7A, 0x16, 0xBD, 0x72, 0x15, 0xB0, 0x69, 0x12, 0xA5, 0x68, 0x2C, 0x80, 0x49, - 0x18, 0x8E, 0x56, 0x2C, 0xA7, 0x72, 0x4C, 0xB9, 0x80, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xBE, 0x74, 0x3E, 0xC2, 0x78, 0x40, 0xC0, 0x7D, 0x4C, 0xD3, 0x96, 0x66, 0xE5, - 0xA4, 0x6A, 0xE5, 0x9D, 0x5C, 0xE0, 0x93, 0x4D, 0xD7, 0x85, 0x38, 0xC8, 0x76, 0x2D, 0xBA, 0x77, - 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x61, 0x15, 0xD0, 0x84, 0x40, 0xD6, 0x90, 0x50, 0xD7, 0x91, - 0x50, 0xD7, 0x91, 0x51, 0xD7, 0x91, 0x51, 0xD7, 0x92, 0x52, 0xBB, 0x6A, 0x28, 0x73, 0x3E, 0x19, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, - 0x65, 0x1F, 0xD8, 0x90, 0x50, 0xDA, 0x95, 0x55, 0xDA, 0x95, 0x55, 0xDA, 0x95, 0x56, 0xDA, 0x95, - 0x56, 0xD7, 0x8E, 0x4C, 0xA2, 0x57, 0x1D, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x52, 0x15, 0xD5, 0x89, 0x46, 0xDD, 0x98, 0x59, 0xDD, - 0x99, 0x5A, 0xDD, 0x99, 0x5A, 0xDE, 0x99, 0x5B, 0xDE, 0x99, 0x5B, 0xDE, 0x9A, 0x5B, 0xBA, 0x6A, - 0x29, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, - 0x3B, 0x1A, 0xA1, 0x53, 0x17, 0xD8, 0x8D, 0x4B, 0xE2, 0x9E, 0x61, 0xE2, 0x9E, 0x61, 0xE2, 0x9F, - 0x61, 0xE2, 0x9F, 0x62, 0xE3, 0x9F, 0x62, 0xCB, 0x7C, 0x3A, 0x7D, 0x42, 0x17, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x62, 0x16, 0xDC, - 0x91, 0x4F, 0xE5, 0xA2, 0x66, 0xE5, 0xA3, 0x66, 0xE5, 0xA3, 0x66, 0xE6, 0xA3, 0x67, 0xE6, 0xA4, - 0x67, 0xE0, 0x9A, 0x5A, 0xA3, 0x59, 0x20, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xB0, 0x5F, 0x1E, 0xB7, 0x68, 0x28, 0xB9, 0x69, 0x29, 0xA3, 0x58, 0x1E, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5E, 0x10, 0xCE, 0x7C, 0x38, 0xEA, 0xA7, 0x6B, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xE2, 0x99, 0x5A, 0xAC, 0x5F, 0x22, 0x6F, 0x3C, 0x19, 0x6C, 0x3B, - 0x1A, 0x86, 0x47, 0x17, 0xD2, 0x87, 0x47, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, - 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAA, 0x6F, 0xC4, 0x76, 0x36, 0x79, - 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7A, 0x4B, 0x27, 0x8A, 0x57, 0x2D, 0x76, 0x48, 0x14, 0x6B, 0x42, - 0x0F, 0x64, 0x3D, 0x0E, 0x5D, 0x39, 0x0E, 0x57, 0x36, 0x0D, 0x53, 0x32, 0x0D, 0x51, 0x31, 0x0D, - 0x58, 0x35, 0x14, 0x77, 0x4B, 0x28, 0x9C, 0x68, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xA1, 0x68, 0x39, 0xA2, 0x64, 0x33, 0xA9, 0x6A, 0x3A, 0xBC, 0x78, 0x3E, 0xCB, 0x7E, - 0x24, 0xC5, 0x77, 0x15, 0xB9, 0x6F, 0x13, 0xAE, 0x6B, 0x28, 0x89, 0x50, 0x1D, 0x76, 0x3E, 0x0B, - 0x84, 0x4D, 0x1F, 0xA2, 0x6E, 0x46, 0xB3, 0x7D, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xC4, 0x76, 0x41, 0xBE, 0x75, 0x3E, 0xBC, 0x79, 0x46, 0xCC, 0x8F, 0x5E, 0xE2, 0xA0, - 0x64, 0xE1, 0x97, 0x54, 0xD9, 0x8A, 0x40, 0xCE, 0x78, 0x2A, 0xBE, 0x7A, 0x44, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC9, 0x7B, 0x37, 0xD8, 0x93, 0x53, 0xD9, 0x93, 0x53, 0xD9, 0x93, 0x54, - 0xD9, 0x94, 0x54, 0xD9, 0x94, 0x54, 0xC6, 0x76, 0x34, 0x7A, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x64, 0x1D, 0xD6, 0x8D, - 0x4B, 0xDC, 0x97, 0x58, 0xDC, 0x97, 0x58, 0xDC, 0x97, 0x58, 0xDC, 0x98, 0x59, 0xDC, 0x96, 0x56, - 0xB1, 0x61, 0x20, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xAA, 0x5C, 0x1E, 0xD9, 0x90, 0x50, 0xDF, 0x9B, 0x5C, 0xDF, 0x9B, 0x5D, 0xDF, 0x9B, - 0x5D, 0xDF, 0x9C, 0x5D, 0xE0, 0x9C, 0x5E, 0xE0, 0x9B, 0x5D, 0xB3, 0x63, 0x23, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x90, 0x4D, - 0x19, 0xDB, 0x91, 0x4F, 0xE3, 0xA0, 0x63, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, - 0xE4, 0xA2, 0x65, 0xDE, 0x96, 0x56, 0xA2, 0x57, 0x1E, 0x6E, 0x3C, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xBD, 0x59, 0x09, 0xD1, 0x84, 0x44, 0xE7, 0xA5, - 0x68, 0xE7, 0xA5, 0x69, 0xE7, 0xA5, 0x69, 0xE7, 0xA5, 0x69, 0xE8, 0xA6, 0x6A, 0xE6, 0xA3, 0x66, - 0xB4, 0x64, 0x25, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, - 0x65, 0x24, 0xE8, 0xA4, 0x68, 0xEA, 0xA8, 0x6D, 0xBE, 0x6E, 0x2D, 0x70, 0x3D, 0x19, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x63, 0x16, 0xD1, 0x82, 0x3F, 0xEB, 0xA9, 0x6E, 0xEC, 0xAB, - 0x70, 0xEC, 0xAB, 0x70, 0xDB, 0x91, 0x51, 0xA3, 0x58, 0x1E, 0x70, 0x3C, 0x19, 0xAF, 0x62, 0x25, - 0xE8, 0xA5, 0x68, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xE1, 0x98, 0x59, 0x9A, 0x53, 0x1D, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0x79, 0x4B, 0x26, 0x88, 0x54, 0x2D, 0x7D, 0x4E, 0x19, 0x70, 0x45, 0x10, 0x6A, 0x42, 0x0F, - 0x62, 0x3D, 0x0E, 0x5C, 0x39, 0x0E, 0x55, 0x35, 0x0D, 0x53, 0x31, 0x0D, 0x51, 0x31, 0x0D, 0x54, - 0x31, 0x10, 0x6C, 0x44, 0x22, 0x90, 0x5C, 0x39, 0xAA, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x85, 0x4E, 0x2C, 0x94, 0x5C, 0x31, 0xA7, 0x67, 0x37, 0xB6, 0x74, 0x3F, 0xC3, 0x79, 0x2B, - 0xC2, 0x74, 0x15, 0xB6, 0x6F, 0x22, 0x93, 0x5A, 0x26, 0x77, 0x41, 0x0B, 0x75, 0x3D, 0x0B, 0x7D, - 0x45, 0x15, 0x9C, 0x67, 0x3E, 0xAD, 0x78, 0x52, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xB3, 0x80, 0x33, 0xBB, 0x73, 0x3C, 0xB8, 0x74, 0x3F, 0xC5, 0x85, 0x55, 0xDB, 0x97, 0x5E, - 0xDB, 0x8E, 0x47, 0xD1, 0x7C, 0x2F, 0xBF, 0x79, 0x41, 0xC4, 0x89, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, - 0xC1, 0x70, 0x2C, 0xDA, 0x95, 0x56, 0xDA, 0x95, 0x56, 0xDB, 0x96, 0x56, 0xDB, 0x96, 0x57, 0xDB, - 0x96, 0x57, 0xD2, 0x86, 0x42, 0x86, 0x45, 0x16, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5F, 0x11, 0xD5, 0x89, 0x46, 0xDE, 0x99, 0x5B, - 0xDE, 0x99, 0x5B, 0xDE, 0x9A, 0x5B, 0xDE, 0x9A, 0x5C, 0xDE, 0x9A, 0x5C, 0xBB, 0x6B, 0x28, 0x71, - 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x62, - 0x21, 0xDE, 0x99, 0x5A, 0xE1, 0x9D, 0x5F, 0xE1, 0x9D, 0x5F, 0xE1, 0x9E, 0x60, 0xE1, 0x9E, 0x60, - 0xE2, 0x9E, 0x60, 0xDF, 0x99, 0x5B, 0xAB, 0x5E, 0x21, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x87, 0x45, 0x14, 0x7F, 0x42, 0x16, 0x99, 0x52, 0x1C, 0xC0, 0x71, 0x30, 0xE3, 0xA0, 0x62, - 0xE5, 0xA3, 0x66, 0xE6, 0xA3, 0x67, 0xE6, 0xA3, 0x67, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x68, 0xE6, - 0xA3, 0x67, 0xD1, 0x84, 0x42, 0xB5, 0x65, 0x25, 0x8D, 0x4B, 0x19, 0x75, 0x3E, 0x18, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0xBD, 0x59, 0x09, 0xC6, 0x78, 0x35, 0xE9, 0xA7, 0x6B, 0xE9, 0xA7, 0x6C, - 0xE9, 0xA7, 0x6C, 0xE9, 0xA8, 0x6C, 0xEA, 0xA8, 0x6D, 0xEA, 0xA8, 0x6D, 0xC0, 0x71, 0x2F, 0x72, - 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0x9B, 0x4C, 0x10, 0xB9, 0x6A, 0x2A, 0xEC, 0xAA, - 0x6E, 0xEC, 0xAB, 0x70, 0xCD, 0x80, 0x40, 0x79, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC5, 0x67, 0x1A, 0xD6, 0x88, 0x46, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, - 0xEC, 0xAB, 0x70, 0xD5, 0x88, 0x47, 0xA2, 0x55, 0x1A, 0xD5, 0x8A, 0x4A, 0xEC, 0xAB, 0x70, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEA, 0xA8, - 0x6E, 0xBB, 0x6D, 0x2E, 0x74, 0x3E, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x79, 0x4C, 0x26, - 0x85, 0x53, 0x2D, 0x89, 0x55, 0x1E, 0x77, 0x49, 0x11, 0x6F, 0x44, 0x10, 0x68, 0x40, 0x0E, 0x61, - 0x3C, 0x0E, 0x5A, 0x37, 0x0E, 0x54, 0x34, 0x0D, 0x51, 0x31, 0x0D, 0x50, 0x31, 0x0D, 0x4F, 0x2F, - 0x0E, 0x63, 0x3D, 0x1B, 0x86, 0x56, 0x33, 0xA2, 0x74, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x7A, 0x4C, 0x27, 0xA5, 0x6C, 0x3D, 0xA5, 0x65, 0x34, 0xAF, 0x70, 0x3E, 0xBB, 0x77, 0x33, 0xBC, - 0x73, 0x20, 0xA0, 0x64, 0x2D, 0x79, 0x43, 0x0C, 0x77, 0x3F, 0x0B, 0x75, 0x3C, 0x0B, 0x78, 0x3F, - 0x0F, 0x93, 0x5D, 0x33, 0xAA, 0x74, 0x4F, 0xB9, 0x8B, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xB7, 0x71, 0x3B, 0xB5, 0x71, 0x3D, 0xBD, 0x7D, 0x4B, 0xCF, 0x8B, 0x53, 0xD2, - 0x80, 0x38, 0xC3, 0x78, 0x3A, 0xBB, 0x7C, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x68, 0x22, 0xDC, - 0x96, 0x57, 0xDC, 0x98, 0x59, 0xDD, 0x98, 0x59, 0xDD, 0x98, 0x59, 0xDD, 0x98, 0x5A, 0xD8, 0x8E, - 0x4C, 0x9A, 0x53, 0x1C, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xCB, 0x7D, 0x3B, 0xDF, 0x9C, 0x5D, 0xE0, 0x9C, 0x5E, 0xE0, - 0x9C, 0x5E, 0xE0, 0x9C, 0x5E, 0xE0, 0x9D, 0x5F, 0xC8, 0x79, 0x37, 0x79, 0x40, 0x17, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x6A, 0x27, 0xE2, 0x9F, 0x61, - 0xE2, 0x9F, 0x62, 0xE3, 0xA0, 0x62, 0xE3, 0xA0, 0x63, 0xE3, 0xA0, 0x63, 0xE3, 0xA0, 0x63, 0xE0, - 0x9A, 0x5B, 0xA8, 0x5C, 0x21, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x5F, 0x13, - 0xD0, 0x80, 0x3E, 0xDF, 0x97, 0x58, 0xE6, 0xA3, 0x66, 0xE7, 0xA5, 0x69, 0xE7, 0xA5, 0x69, 0xE7, - 0xA5, 0x69, 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6A, 0xE8, 0xA7, 0x6B, 0xE9, 0xA7, - 0x6B, 0xE6, 0xA2, 0x65, 0xDB, 0x8F, 0x4F, 0xAF, 0x60, 0x22, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0xBD, 0x59, 0x09, 0xC0, 0x6D, 0x29, 0xEB, 0xA8, 0x6D, 0xEB, 0xA9, 0x6E, 0xEB, 0xAA, 0x6F, 0xEB, - 0xAA, 0x6F, 0xEB, 0xAA, 0x6F, 0xEC, 0xAB, 0x70, 0xD0, 0x82, 0x42, 0x7A, 0x40, 0x17, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x7B, 0x40, 0x17, 0xCA, 0x7E, 0x3F, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, - 0xDE, 0x93, 0x54, 0x84, 0x45, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBD, 0x59, 0x09, 0xC6, 0x6A, 0x1F, 0xDA, 0x8F, 0x4F, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEB, - 0xAA, 0x70, 0xDC, 0x92, 0x53, 0xE9, 0xA6, 0x6B, 0xEC, 0xAB, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, - 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xDA, 0x91, 0x50, 0x8E, 0x4C, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x4A, 0x27, 0x83, 0x51, 0x2B, 0x92, - 0x5B, 0x25, 0x82, 0x4F, 0x10, 0x77, 0x49, 0x11, 0x6D, 0x43, 0x10, 0x66, 0x3F, 0x0E, 0x61, 0x3B, - 0x0E, 0x59, 0x37, 0x0E, 0x53, 0x33, 0x0D, 0x51, 0x31, 0x0D, 0x50, 0x2F, 0x0D, 0x4E, 0x2E, 0x0D, - 0x5F, 0x39, 0x19, 0x9C, 0x5F, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x4D, 0x28, 0x9F, - 0x69, 0x3D, 0xAB, 0x6A, 0x20, 0xA2, 0x64, 0x2E, 0xAA, 0x6C, 0x3C, 0xB7, 0x75, 0x3B, 0xAC, 0x6E, - 0x36, 0x7B, 0x46, 0x0D, 0x78, 0x42, 0x0B, 0x76, 0x3E, 0x0B, 0x75, 0x3C, 0x0B, 0x75, 0x3C, 0x0C, - 0x89, 0x52, 0x25, 0xA6, 0x72, 0x4B, 0xCC, 0x99, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xB7, 0x6F, 0x3D, 0xB1, 0x6E, 0x39, 0xB7, 0x76, 0x44, 0xC2, 0x80, 0x4A, 0xC4, 0x7A, - 0x3A, 0xBC, 0x7E, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x65, 0x20, 0xDA, 0x93, 0x52, 0xDE, 0x9A, - 0x5C, 0xDE, 0x9A, 0x5C, 0xDF, 0x9B, 0x5C, 0xDF, 0x9B, 0x5D, 0xDC, 0x96, 0x56, 0xAC, 0x5E, 0x20, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xC3, 0x72, 0x2F, 0xE1, 0x9E, 0x60, 0xE2, 0x9E, 0x60, 0xE2, 0x9E, 0x61, 0xE2, 0x9F, - 0x61, 0xE2, 0x9F, 0x61, 0xD5, 0x89, 0x48, 0x82, 0x44, 0x16, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x69, 0x25, 0xE4, 0xA1, 0x64, 0xE4, 0xA2, 0x65, 0xE5, - 0xA2, 0x65, 0xE5, 0xA2, 0x65, 0xE5, 0xA3, 0x66, 0xE5, 0xA3, 0x66, 0xE5, 0xA1, 0x63, 0xB4, 0x64, - 0x24, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xD3, 0x87, 0x46, 0xE8, - 0xA7, 0x6B, 0xE9, 0xA7, 0x6B, 0xE9, 0xA7, 0x6B, 0xE9, 0xA7, 0x6C, 0xE9, 0xA8, 0x6C, 0xEA, 0xA8, - 0x6C, 0xEA, 0xA8, 0x6D, 0xEA, 0xA9, 0x6D, 0xEA, 0xA9, 0x6E, 0xEB, 0xA9, 0x6E, 0xEB, 0xA9, 0x6E, - 0xEB, 0xAA, 0x6F, 0xBE, 0x6E, 0x2E, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xBE, - 0x6A, 0x26, 0xE8, 0xA4, 0x67, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, - 0x70, 0xEC, 0xAB, 0x70, 0xDE, 0x94, 0x54, 0x91, 0x4B, 0x16, 0x7D, 0x41, 0x16, 0x82, 0x43, 0x16, - 0xA8, 0x5D, 0x22, 0xE2, 0x99, 0x5A, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xE5, 0x9E, 0x60, 0x9D, - 0x55, 0x1F, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xC7, 0x6D, 0x23, 0xE0, 0x97, 0x58, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, - 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, - 0xEC, 0xAC, 0x71, 0xE9, 0xA6, 0x6A, 0xB3, 0x66, 0x27, 0x70, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7B, 0x4F, 0x23, 0x80, 0x4F, 0x29, 0x94, 0x5C, 0x2A, 0x8C, 0x54, - 0x10, 0x81, 0x4E, 0x10, 0x75, 0x48, 0x10, 0x6E, 0x43, 0x10, 0x65, 0x3E, 0x0E, 0x5F, 0x3A, 0x0E, - 0x57, 0x36, 0x0E, 0x52, 0x33, 0x0D, 0x50, 0x31, 0x0D, 0x4F, 0x2E, 0x0D, 0x57, 0x34, 0x13, 0x85, - 0x55, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x4D, 0x27, 0x95, 0x61, 0x3A, 0xB3, 0x70, - 0x26, 0xA7, 0x64, 0x11, 0xA0, 0x62, 0x26, 0xA7, 0x69, 0x39, 0xAE, 0x6F, 0x3C, 0x7D, 0x4B, 0x0F, - 0x79, 0x45, 0x0C, 0x78, 0x41, 0x0B, 0x76, 0x3D, 0x0B, 0x75, 0x3C, 0x0B, 0x75, 0x3C, 0x0B, 0x98, - 0x63, 0x3A, 0xB2, 0x83, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xB1, 0x76, 0x3B, 0xAF, 0x6B, 0x38, 0xB0, 0x70, 0x3E, 0xBB, 0x79, 0x45, 0xBA, 0x77, 0x44, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x62, 0x1A, 0xD9, 0x8F, 0x4D, 0xE0, 0x9C, 0x5E, 0xE0, 0x9D, 0x5F, - 0xE1, 0x9D, 0x5F, 0xE1, 0x9D, 0x5F, 0xE1, 0x9D, 0x60, 0xB8, 0x66, 0x25, 0x6E, 0x3C, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBE, 0x6A, - 0x25, 0xE2, 0x9F, 0x62, 0xE3, 0xA0, 0x63, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, - 0xDD, 0x94, 0x54, 0x98, 0x51, 0x1C, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBC, 0x68, 0x24, 0xE4, 0xA1, 0x63, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x68, 0xE7, 0xA5, - 0x68, 0xE7, 0xA5, 0x68, 0xE7, 0xA5, 0x69, 0xE7, 0xA5, 0x69, 0xBC, 0x6C, 0x2A, 0x70, 0x3C, 0x19, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC9, 0x7A, 0x38, 0xEA, 0xA9, 0x6D, 0xEB, 0xA9, - 0x6E, 0xEB, 0xA9, 0x6E, 0xEB, 0xAA, 0x6F, 0xEB, 0xAA, 0x6F, 0xEB, 0xAA, 0x6F, 0xEC, 0xAB, 0x70, - 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xCA, - 0x7E, 0x3E, 0x79, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xBF, 0x67, 0x20, 0xE3, 0x9C, - 0x5D, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, - 0xE9, 0xA5, 0x69, 0xD8, 0x8C, 0x4C, 0xD7, 0x8B, 0x4B, 0xDD, 0x92, 0x52, 0xE5, 0xA0, 0x62, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEA, 0xA7, 0x6B, 0xB1, 0x63, 0x25, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, - 0x09, 0xC7, 0x70, 0x27, 0xE4, 0x9E, 0x5F, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, - 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xD2, - 0x86, 0x46, 0x84, 0x46, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x4E, 0x28, 0x92, 0x5B, 0x2D, 0x8F, 0x55, 0x11, 0x8A, 0x53, 0x0F, - 0x80, 0x4D, 0x0F, 0x76, 0x48, 0x10, 0x6B, 0x42, 0x10, 0x64, 0x3D, 0x0F, 0x5D, 0x3A, 0x0E, 0x56, - 0x35, 0x0D, 0x52, 0x32, 0x0D, 0x51, 0x30, 0x0D, 0x54, 0x31, 0x0F, 0x7D, 0x50, 0x2C, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x4B, 0x27, 0x8D, 0x5B, 0x35, 0xB4, 0x74, 0x30, 0xB0, 0x69, 0x11, - 0xA4, 0x62, 0x10, 0x9C, 0x5E, 0x1A, 0x92, 0x57, 0x18, 0x80, 0x4C, 0x0C, 0x7B, 0x47, 0x0C, 0x79, - 0x44, 0x0C, 0x77, 0x40, 0x0B, 0x75, 0x3C, 0x0B, 0x75, 0x3C, 0x0B, 0x8E, 0x57, 0x2C, 0xB4, 0x7D, - 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xAC, 0x6B, 0x38, 0xAB, 0x6B, 0x3A, 0xAC, 0x69, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x89, 0x46, 0x16, 0xD8, 0x8B, 0x49, 0xE2, 0x9F, 0x61, 0xE2, 0x9F, 0x61, 0xE2, 0x9F, 0x62, 0xE3, - 0x9F, 0x62, 0xE3, 0xA0, 0x63, 0xC3, 0x74, 0x33, 0x76, 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x68, 0x23, 0xE1, 0x9B, 0x5C, - 0xE5, 0xA3, 0x66, 0xE6, 0xA3, 0x66, 0xE6, 0xA3, 0x67, 0xE6, 0xA4, 0x67, 0xE2, 0x9D, 0x5E, 0xAB, - 0x5E, 0x22, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x68, - 0x24, 0xE4, 0x9F, 0x61, 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6B, 0xE9, 0xA7, 0x6B, 0xE9, 0xA7, 0x6B, - 0xE9, 0xA7, 0x6C, 0xE9, 0xA8, 0x6C, 0xC6, 0x77, 0x36, 0x76, 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC7, 0x6E, 0x25, 0xC5, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, - 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, - 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC3, 0x75, 0x34, 0xC0, 0x70, 0x2E, 0x81, 0x43, - 0x16, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xBF, 0x5C, 0x0C, 0xDC, 0x92, 0x52, 0xEC, 0xAB, 0x70, - 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, - 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xBF, 0x6F, 0x2E, 0x70, 0x3C, 0x19, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x4C, 0x10, - 0xBB, 0x6B, 0x2B, 0xEB, 0xAA, 0x6F, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, - 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE6, 0xA1, 0x64, 0xAA, 0x5F, 0x23, 0x6D, 0x3C, - 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x82, 0x50, 0x29, 0x8F, 0x59, 0x2E, 0x92, 0x58, 0x15, 0x8E, 0x55, 0x0E, 0x89, 0x52, 0x0F, 0x80, - 0x4D, 0x0F, 0x75, 0x48, 0x10, 0x6B, 0x42, 0x10, 0x63, 0x3C, 0x0F, 0x5B, 0x38, 0x0E, 0x55, 0x34, - 0x0D, 0x51, 0x31, 0x0D, 0x50, 0x31, 0x0E, 0x78, 0x4C, 0x28, 0xAA, 0x71, 0x39, 0xFF, 0xFF, 0xFF, - 0x79, 0x4D, 0x28, 0x88, 0x55, 0x30, 0xB0, 0x74, 0x3B, 0xB8, 0x6E, 0x12, 0xAC, 0x67, 0x11, 0xA0, - 0x60, 0x10, 0x94, 0x59, 0x0E, 0x88, 0x51, 0x0D, 0x7C, 0x4A, 0x0C, 0x7A, 0x46, 0x0C, 0x78, 0x43, - 0x0B, 0x76, 0x3F, 0x0B, 0x75, 0x3C, 0x0B, 0x86, 0x4E, 0x21, 0xAB, 0x78, 0x54, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x76, 0x3F, 0x18, 0x93, 0x4D, 0x18, 0xDA, - 0x90, 0x4F, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x64, 0xE4, 0xA1, 0x65, 0xE5, 0xA2, 0x65, 0xE5, 0xA2, - 0x65, 0xD1, 0x84, 0x43, 0x7D, 0x41, 0x16, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x65, 0x1D, 0xDF, 0x96, 0x55, 0xE7, 0xA5, 0x69, 0xE7, - 0xA5, 0x69, 0xE8, 0xA6, 0x69, 0xE8, 0xA6, 0x6A, 0xE8, 0xA5, 0x69, 0xB8, 0x67, 0x27, 0x6D, 0x3C, - 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x68, 0x1D, 0xE2, 0x99, 0x5A, - 0xEA, 0xA8, 0x6D, 0xEA, 0xA9, 0x6D, 0xEB, 0xA9, 0x6E, 0xEB, 0xA9, 0x6E, 0xEB, 0xAA, 0x6E, 0xEB, - 0xAA, 0x6F, 0xD3, 0x85, 0x45, 0x7C, 0x41, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, - 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0x9E, 0x4E, 0x0F, 0xBD, 0x59, - 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xCE, 0x81, 0x40, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, - 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, - 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, - 0xEC, 0xAC, 0x71, 0xCD, 0x80, 0x40, 0x78, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x47, 0x16, 0xCE, 0x81, 0x40, 0xEC, - 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, - 0x71, 0xED, 0xAC, 0x71, 0xE3, 0x9A, 0x5A, 0xA4, 0x58, 0x1F, 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x50, 0x29, 0x8B, - 0x57, 0x2F, 0x92, 0x5A, 0x19, 0x8F, 0x55, 0x0E, 0x8E, 0x55, 0x0E, 0x89, 0x51, 0x0D, 0x7F, 0x4C, - 0x0E, 0x74, 0x47, 0x0F, 0x68, 0x41, 0x0F, 0x61, 0x3B, 0x0E, 0x5B, 0x37, 0x0E, 0x53, 0x33, 0x0D, - 0x52, 0x32, 0x0D, 0x6D, 0x44, 0x20, 0xA4, 0x6D, 0x40, 0xFF, 0xFF, 0xFF, 0x79, 0x49, 0x24, 0x82, - 0x51, 0x2B, 0xAD, 0x74, 0x42, 0xBA, 0x6F, 0x13, 0xB5, 0x6C, 0x12, 0xA9, 0x65, 0x10, 0x9D, 0x5E, - 0x0F, 0x91, 0x56, 0x0E, 0x85, 0x4F, 0x0D, 0x7C, 0x49, 0x0C, 0x7A, 0x45, 0x0C, 0x78, 0x42, 0x0B, - 0x76, 0x3E, 0x0B, 0x7F, 0x47, 0x18, 0xA4, 0x6F, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xB0, 0x61, 0x22, 0xC0, 0x72, 0x32, 0xD7, 0x8D, 0x4B, 0xE5, 0xA1, 0x64, 0xE6, 0xA3, - 0x67, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x67, 0xE6, 0xA4, 0x68, 0xE7, 0xA4, 0x68, 0xDD, 0x94, 0x52, - 0x8D, 0x4A, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBE, 0x5B, 0x0B, 0xD9, 0x8D, 0x4C, 0xE9, 0xA7, 0x6C, 0xE9, 0xA8, 0x6C, 0xEA, 0xA8, - 0x6C, 0xEA, 0xA8, 0x6D, 0xEA, 0xA8, 0x6D, 0xC4, 0x75, 0x35, 0x75, 0x3E, 0x18, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xD3, 0x87, 0x45, 0xEC, 0xAB, 0x70, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xDE, 0x94, - 0x53, 0x89, 0x48, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xC4, 0x74, 0x31, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, - 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE6, 0xA1, 0x64, 0xDA, 0x90, 0x4F, 0xD7, 0x8D, 0x4D, - 0xE1, 0x98, 0x58, 0xE4, 0x9E, 0x60, 0xEB, 0xAB, 0x70, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xDD, - 0x93, 0x53, 0x84, 0x45, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x79, 0x40, 0x17, 0xAE, 0x62, 0x25, 0xE8, 0xA4, 0x66, 0xED, 0xAC, 0x71, 0xED, 0xAC, - 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, - 0xED, 0xAC, 0x71, 0xD6, 0x88, 0x47, 0x98, 0x51, 0x1D, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x4D, 0x28, 0x88, 0x55, 0x2E, 0x95, 0x5B, - 0x21, 0x8E, 0x55, 0x0E, 0x8F, 0x55, 0x0E, 0x8F, 0x55, 0x0E, 0x87, 0x51, 0x0E, 0x7C, 0x4A, 0x0E, - 0x70, 0x44, 0x10, 0x67, 0x3F, 0x0F, 0x5F, 0x3B, 0x0E, 0x59, 0x37, 0x0E, 0x53, 0x33, 0x0D, 0x62, - 0x3E, 0x19, 0xA3, 0x6D, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x50, 0x2A, 0xA6, 0x6F, - 0x3F, 0xBC, 0x72, 0x1A, 0xB9, 0x6F, 0x12, 0xB1, 0x6A, 0x11, 0xA5, 0x63, 0x10, 0x9A, 0x5C, 0x0F, - 0x8D, 0x54, 0x0E, 0x81, 0x4D, 0x0D, 0x7B, 0x48, 0x0C, 0x79, 0x44, 0x0C, 0x77, 0x41, 0x0B, 0x78, - 0x41, 0x0F, 0xA3, 0x6E, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC9, 0x7B, - 0x3A, 0xE7, 0xA5, 0x68, 0xE7, 0xA5, 0x69, 0xE7, 0xA5, 0x69, 0xE8, 0xA6, 0x69, 0xE8, 0xA6, 0x6A, - 0xE8, 0xA6, 0x6A, 0xE8, 0xA6, 0x6B, 0xE9, 0xA7, 0x6B, 0xE3, 0x9C, 0x5E, 0xA3, 0x59, 0x20, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, - 0x09, 0xCD, 0x7F, 0x3E, 0xEB, 0xAA, 0x6E, 0xEB, 0xAA, 0x6F, 0xEB, 0xAA, 0x6F, 0xEC, 0xAB, 0x6F, - 0xEC, 0xAB, 0x70, 0xD4, 0x87, 0x47, 0x7C, 0x41, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC5, 0x71, 0x2E, 0xEC, 0xAA, 0x6F, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, - 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xE8, 0xA4, 0x67, 0xB2, 0x64, 0x25, - 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0x40, 0x17, - 0x8E, 0x4B, 0x1A, 0x83, 0x44, 0x16, 0x79, 0x40, 0x17, 0x70, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x6C, - 0x28, 0xEA, 0xA9, 0x6D, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, - 0xEC, 0xAC, 0x71, 0xD4, 0x88, 0x48, 0x89, 0x46, 0x14, 0x7E, 0x42, 0x16, 0xB9, 0x5D, 0x14, 0xBF, - 0x68, 0x20, 0xD6, 0x8A, 0x48, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE4, 0x9E, 0x60, 0x9D, 0x56, - 0x1F, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x41, 0x17, - 0x7E, 0x42, 0x16, 0x76, 0x3F, 0x18, 0x6D, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x4B, - 0x18, 0xD5, 0x8A, 0x49, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, - 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xEC, - 0xAB, 0x70, 0xCF, 0x80, 0x3F, 0x8E, 0x4B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x4D, 0x26, 0x86, 0x52, 0x2C, 0x96, 0x5E, 0x28, 0x8E, 0x55, 0x0E, - 0x8F, 0x55, 0x0E, 0x8F, 0x55, 0x0E, 0x8D, 0x54, 0x0E, 0x83, 0x4F, 0x0E, 0x77, 0x49, 0x0F, 0x6B, - 0x42, 0x10, 0x64, 0x3E, 0x0E, 0x5E, 0x39, 0x0E, 0x57, 0x37, 0x0D, 0x5D, 0x3B, 0x16, 0x91, 0x5E, - 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x53, 0x2B, 0x9D, 0x68, 0x3C, 0xBC, 0x75, 0x22, - 0xBC, 0x70, 0x12, 0xB9, 0x6E, 0x12, 0xAE, 0x68, 0x11, 0xA2, 0x61, 0x10, 0x96, 0x5A, 0x0F, 0x8A, - 0x52, 0x0D, 0x7E, 0x4B, 0x0C, 0x7A, 0x47, 0x0C, 0x79, 0x43, 0x0C, 0x77, 0x3F, 0x0B, 0x9E, 0x68, - 0x40, 0xAE, 0x79, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC2, 0x70, 0x2D, 0xE9, 0xA7, 0x6B, - 0xE9, 0xA7, 0x6C, 0xE9, 0xA8, 0x6C, 0xE9, 0xA8, 0x6C, 0xEA, 0xA8, 0x6D, 0xEA, 0xA8, 0x6D, 0xEA, - 0xA9, 0x6D, 0xEA, 0xA9, 0x6E, 0xE9, 0xA6, 0x6A, 0xB3, 0x64, 0x24, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC4, 0x72, 0x2F, - 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xE1, - 0x97, 0x57, 0x8A, 0x49, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC4, 0x6B, 0x22, 0xE5, 0x9F, 0x61, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, - 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xD0, 0x83, 0x42, 0x7F, 0x43, 0x17, 0x6C, - 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x90, 0x4B, 0x18, 0xD5, 0x89, 0x48, 0xDD, - 0x93, 0x53, 0xCE, 0x81, 0x3F, 0xA8, 0x5C, 0x20, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x69, 0x24, 0xE6, 0xA1, 0x63, - 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE1, - 0x98, 0x58, 0x8C, 0x4A, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xBD, 0x59, 0x09, 0xC6, 0x6A, - 0x1F, 0xDD, 0x94, 0x54, 0xEC, 0xAC, 0x71, 0xE9, 0xA7, 0x6A, 0xB0, 0x62, 0x25, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x48, 0x16, 0xCC, 0x7D, 0x3C, 0xC5, - 0x78, 0x37, 0xB5, 0x66, 0x26, 0x86, 0x48, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x41, 0x16, 0xB5, 0x67, 0x29, 0xEA, 0xA7, 0x6C, - 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, - 0xAC, 0x72, 0xD8, 0x8E, 0x50, 0xE3, 0x9C, 0x5E, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xEB, 0xA9, - 0x6E, 0xC8, 0x78, 0x36, 0x84, 0x45, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x7B, 0x4A, 0x29, 0x84, 0x51, 0x2A, 0x96, 0x5E, 0x2C, 0x8E, 0x55, 0x0F, 0x8E, 0x55, 0x0E, 0x8F, - 0x55, 0x0E, 0x8F, 0x55, 0x0E, 0x8A, 0x52, 0x0F, 0x7F, 0x4D, 0x10, 0x72, 0x46, 0x10, 0x6A, 0x41, - 0x0E, 0x62, 0x3D, 0x0E, 0x5C, 0x38, 0x0E, 0x5B, 0x39, 0x12, 0x83, 0x55, 0x30, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x84, 0x51, 0x2A, 0x93, 0x60, 0x39, 0xBB, 0x76, 0x2A, 0xBE, 0x72, 0x12, 0xBB, - 0x70, 0x12, 0xB7, 0x6D, 0x12, 0xAB, 0x66, 0x11, 0x9F, 0x5F, 0x0F, 0x93, 0x58, 0x0E, 0x87, 0x50, - 0x0D, 0x7C, 0x4A, 0x0C, 0x7A, 0x46, 0x0C, 0x78, 0x42, 0x0B, 0x94, 0x5F, 0x33, 0xB3, 0x7D, 0x5C, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x6D, 0x27, 0xE1, 0x98, 0x59, 0xE5, 0x9F, 0x61, 0xE8, - 0xA4, 0x67, 0xEA, 0xA9, 0x6D, 0xEC, 0xAB, 0x6F, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, - 0x70, 0xEC, 0xAB, 0x70, 0xBD, 0x6E, 0x2E, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBF, 0x6B, 0x27, 0xEA, 0xA7, 0x6B, 0xEC, - 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xE5, 0x9F, 0x61, 0x9F, 0x57, - 0x20, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, - 0xCE, 0x7F, 0x3D, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xEC, - 0xAB, 0x71, 0xEC, 0xAB, 0x71, 0xE6, 0xA0, 0x63, 0xA9, 0x5D, 0x21, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7F, 0x42, 0x16, 0xBA, 0x6C, 0x2D, 0xEA, 0xA9, 0x6E, 0xEC, 0xAC, 0x71, 0xE7, 0xA3, - 0x65, 0xA6, 0x5C, 0x22, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x64, 0x18, 0xE1, 0x99, 0x59, 0xEC, 0xAC, 0x71, 0xEC, - 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE5, 0xA0, 0x62, 0xA4, 0x5A, - 0x21, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC7, 0x73, 0x2E, - 0xEC, 0xAA, 0x6F, 0xED, 0xAC, 0x71, 0xBA, 0x6C, 0x2D, 0x6F, 0x3C, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0x7C, 0x41, 0x17, 0xAC, 0x5F, 0x23, 0xE7, 0xA2, 0x66, 0xED, 0xAC, 0x72, 0xE2, 0x98, - 0x59, 0x8C, 0x4B, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x6C, 0x3B, 0x1A, 0x94, 0x4F, 0x1A, 0xDC, 0x92, 0x53, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, - 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xE7, 0xA1, 0x64, 0xA9, 0x5D, - 0x22, 0xB1, 0x64, 0x26, 0xE6, 0xA1, 0x63, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xEA, 0xA7, 0x6A, - 0xC1, 0x71, 0x2F, 0x7B, 0x41, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x86, - 0x52, 0x2A, 0x94, 0x5C, 0x2E, 0x92, 0x58, 0x16, 0x8E, 0x55, 0x0E, 0x8E, 0x55, 0x0E, 0x8F, 0x55, - 0x0E, 0x8D, 0x54, 0x0E, 0x85, 0x50, 0x10, 0x78, 0x4A, 0x11, 0x6F, 0x44, 0x10, 0x67, 0x3F, 0x0E, - 0x61, 0x3C, 0x0E, 0x5D, 0x39, 0x0F, 0x7E, 0x52, 0x2B, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x81, - 0x4F, 0x29, 0x8F, 0x5B, 0x34, 0xB8, 0x77, 0x35, 0xC0, 0x73, 0x12, 0xBD, 0x71, 0x12, 0xBA, 0x6F, - 0x12, 0xB3, 0x6B, 0x12, 0xA7, 0x64, 0x10, 0x9B, 0x5D, 0x0F, 0x8F, 0x55, 0x0E, 0x83, 0x4E, 0x0D, - 0x7B, 0x49, 0x0C, 0x79, 0x45, 0x0C, 0x8C, 0x56, 0x27, 0xB2, 0x7C, 0x5B, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xC1, 0x60, 0x12, 0xBF, 0x67, 0x1F, 0xBC, 0x68, 0x24, 0xBD, 0x6A, 0x26, 0xBF, 0x6C, - 0x28, 0xC9, 0x79, 0x37, 0xDA, 0x8F, 0x4E, 0xE5, 0x9E, 0x60, 0xEB, 0xA9, 0x6D, 0xEC, 0xAB, 0x70, - 0xC9, 0x7C, 0x3D, 0x78, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x69, 0x24, 0xE5, 0x9F, 0x61, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, - 0x70, 0xEC, 0xAB, 0x70, 0xEC, 0xAB, 0x70, 0xEA, 0xA7, 0x6B, 0xAE, 0x61, 0x24, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC6, 0x6D, 0x24, 0xE5, - 0x9E, 0x61, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, - 0x71, 0xEC, 0xAC, 0x71, 0xC8, 0x79, 0x38, 0x7A, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3C, 0x1A, 0x9D, 0x55, - 0x1D, 0xE1, 0x9A, 0x5B, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE2, 0x9B, 0x5C, 0x93, 0x4F, 0x1C, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xD6, 0x8A, 0x4A, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, - 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xEB, 0xA8, 0x6C, 0xB4, 0x65, 0x25, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x6A, 0x1F, 0xCC, 0x7D, 0x3B, 0xCA, - 0x7C, 0x3C, 0xBD, 0x6D, 0x2C, 0x77, 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0x89, 0x46, - 0x15, 0xCD, 0x80, 0x40, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xD1, 0x85, 0x46, 0x7C, 0x41, 0x17, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, 0x40, 0x17, 0xBC, - 0x6D, 0x2E, 0xEC, 0xAB, 0x6F, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, - 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xC9, 0x7C, 0x3C, 0x7B, 0x41, 0x17, 0x83, 0x44, 0x15, - 0xCA, 0x76, 0x30, 0xE9, 0xA5, 0x68, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xE8, 0xA3, 0x66, 0xB9, - 0x69, 0x29, 0x77, 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x53, 0x2B, 0x8C, 0x57, - 0x2E, 0x97, 0x5E, 0x2F, 0x93, 0x59, 0x1B, 0x8E, 0x55, 0x0E, 0x8E, 0x55, 0x0E, 0x8E, 0x54, 0x0E, - 0x8B, 0x54, 0x10, 0x7F, 0x4E, 0x11, 0x75, 0x48, 0x11, 0x6D, 0x43, 0x0F, 0x67, 0x3E, 0x0E, 0x5F, - 0x3C, 0x0E, 0x77, 0x4B, 0x25, 0xAA, 0x71, 0x47, 0xFF, 0xFF, 0xFF, 0x80, 0x50, 0x28, 0x8A, 0x56, - 0x2E, 0xAA, 0x72, 0x42, 0xBE, 0x77, 0x28, 0xC0, 0x72, 0x12, 0xBC, 0x70, 0x12, 0xB9, 0x6F, 0x12, - 0xB0, 0x69, 0x11, 0xA4, 0x62, 0x10, 0x98, 0x5B, 0x0F, 0x8C, 0x53, 0x0E, 0x80, 0x4C, 0x0C, 0x7B, - 0x47, 0x0C, 0x86, 0x51, 0x1E, 0xA7, 0x74, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, - 0xBF, 0x5D, 0x0E, 0xC3, 0x6B, 0x24, 0xC2, 0x6E, 0x29, 0xC1, 0x6F, 0x2C, 0xBD, 0x6B, 0x28, 0x80, - 0x42, 0x16, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC4, 0x65, 0x18, 0xC6, 0x72, 0x2D, 0xBF, 0x6E, 0x2C, 0xBF, 0x6E, 0x2C, 0xBF, 0x6E, 0x2C, - 0xBF, 0x6E, 0x2C, 0xBF, 0x6E, 0x2C, 0xB1, 0x61, 0x20, 0x6E, 0x3C, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xCE, 0x7D, 0x3A, 0xEB, 0xAA, - 0x6F, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, - 0xE5, 0xA0, 0x61, 0xB2, 0x63, 0x25, 0x73, 0x3E, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x80, 0x43, 0x17, 0xC8, 0x7A, 0x3A, 0xEC, 0xAC, 0x71, - 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xDC, 0x91, 0x50, 0x81, 0x42, 0x16, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, - 0x09, 0xC8, 0x7A, 0x39, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x72, - 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xC0, 0x70, 0x30, 0x72, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, - 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3C, 0x19, 0xA8, 0x5C, 0x21, 0xE6, 0xA1, 0x64, - 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xBE, 0x70, 0x30, 0x72, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0x3D, 0x19, 0xA1, 0x58, 0x1F, 0xE3, 0x9C, 0x5D, 0xED, 0xAD, - 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, - 0xE4, 0x9E, 0x5F, 0xA1, 0x58, 0x1F, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xBF, 0x5C, 0x0D, 0xCD, - 0x7B, 0x36, 0xEA, 0xA9, 0x6C, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xE6, 0xA0, 0x62, 0xBA, 0x6B, - 0x2A, 0x7D, 0x42, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x40, 0x40, 0x8A, 0x55, 0x2C, 0x90, 0x58, 0x2E, - 0x98, 0x5F, 0x32, 0x96, 0x5C, 0x22, 0x8F, 0x56, 0x10, 0x8D, 0x55, 0x0E, 0x8C, 0x53, 0x0F, 0x88, - 0x53, 0x11, 0x7B, 0x4B, 0x11, 0x73, 0x47, 0x10, 0x6B, 0x42, 0x0F, 0x65, 0x3E, 0x0E, 0x70, 0x48, - 0x1E, 0xA5, 0x6E, 0x45, 0xFF, 0xFF, 0xFF, 0xAA, 0x55, 0x00, 0x89, 0x55, 0x2C, 0x90, 0x5A, 0x30, - 0xA7, 0x6F, 0x41, 0xBA, 0x78, 0x32, 0xBF, 0x72, 0x14, 0xBB, 0x70, 0x12, 0xB8, 0x6E, 0x12, 0xAC, - 0x67, 0x11, 0xA0, 0x60, 0x10, 0x94, 0x59, 0x0E, 0x88, 0x51, 0x0D, 0x7C, 0x4A, 0x0C, 0x80, 0x4C, - 0x15, 0xA5, 0x71, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, - 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x67, 0x1B, 0xD8, 0x8C, 0x4B, 0xEC, 0xAC, 0x71, - 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE3, - 0x9C, 0x5D, 0xB1, 0x62, 0x24, 0x73, 0x3E, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x81, 0x44, 0x18, 0xBF, 0x71, 0x31, 0xE9, 0xA5, 0x68, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, - 0xAC, 0x71, 0xCC, 0x7F, 0x3F, 0x79, 0x40, 0x17, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC0, 0x70, 0x2F, - 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, - 0xAC, 0x72, 0xD2, 0x85, 0x45, 0x7C, 0x41, 0x17, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x6C, 0x3B, 0x1A, 0x84, 0x45, 0x16, 0xCC, 0x80, 0x3F, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xEA, - 0xA8, 0x6C, 0xAE, 0x61, 0x24, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x8F, 0x4C, 0x1A, 0xD4, 0x8A, 0x49, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, - 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xC4, 0x76, 0x36, 0x78, - 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x61, 0x13, 0xD0, 0x80, - 0x3D, 0xEC, 0xAB, 0x6F, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xE8, 0xA5, 0x67, 0xC3, 0x73, 0x32, - 0x87, 0x47, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, - 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x59, 0x2E, 0x96, 0x5C, 0x2F, 0x9B, - 0x62, 0x34, 0x9A, 0x61, 0x29, 0x90, 0x57, 0x13, 0x8D, 0x54, 0x0E, 0x8B, 0x54, 0x0F, 0x86, 0x52, - 0x11, 0x7A, 0x4B, 0x11, 0x71, 0x45, 0x10, 0x6A, 0x42, 0x10, 0x6E, 0x46, 0x1A, 0x9C, 0x63, 0x3C, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x56, 0x2C, 0x92, 0x5A, 0x2F, 0xA3, - 0x6C, 0x3F, 0xB6, 0x77, 0x3C, 0xBD, 0x72, 0x19, 0xBA, 0x6F, 0x12, 0xB5, 0x6C, 0x12, 0xA9, 0x65, - 0x10, 0x9D, 0x5E, 0x0F, 0x91, 0x56, 0x0E, 0x85, 0x4F, 0x0D, 0x7D, 0x4A, 0x0D, 0xA4, 0x6F, 0x46, - 0xAA, 0x80, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC7, 0x6D, 0x24, 0xE2, 0x9B, 0x5B, 0xEC, 0xAC, 0x71, 0xEC, - 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xEC, 0xAC, 0x71, 0xE3, 0x9B, - 0x5C, 0xB0, 0x61, 0x23, 0x75, 0x3F, 0x18, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x70, 0x3C, 0x19, 0x8A, 0x49, 0x18, 0xC5, 0x77, 0x37, 0xEA, - 0xA7, 0x6B, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xBF, 0x70, - 0x30, 0x72, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x73, 0x3E, 0x18, 0xBD, 0x6F, 0x2F, 0xED, 0xAC, 0x72, 0xED, - 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xE3, 0x9B, - 0x5C, 0x9F, 0x56, 0x1E, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x72, 0x3D, 0x19, 0xB0, - 0x63, 0x25, 0xE8, 0xA5, 0x68, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xE4, 0x9E, 0x5F, 0x97, 0x52, - 0x1D, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x7D, 0x42, 0x17, 0xC4, 0x76, 0x36, - 0xEC, 0xAB, 0x6F, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, - 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xE7, 0xA3, 0x65, 0xA7, 0x5C, 0x22, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x97, 0x50, 0x19, 0xD9, 0x8F, 0x50, - 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xEA, 0xA8, 0x6D, 0xCB, 0x7D, 0x3B, 0x93, - 0x4E, 0x1C, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, - 0x1A, 0x6C, 0x3B, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x94, 0x5A, 0x31, 0x9A, 0x5F, 0x31, 0xA1, 0x63, - 0x34, 0x9E, 0x62, 0x2F, 0x92, 0x59, 0x17, 0x8D, 0x54, 0x0E, 0x8C, 0x54, 0x10, 0x85, 0x51, 0x11, - 0x79, 0x4A, 0x10, 0x70, 0x45, 0x10, 0x6E, 0x45, 0x16, 0x8D, 0x5A, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x57, 0x2C, 0x99, 0x5D, 0x31, 0xA1, 0x67, - 0x3B, 0xB2, 0x76, 0x42, 0xBB, 0x74, 0x20, 0xB9, 0x6F, 0x12, 0xB1, 0x6A, 0x11, 0xA5, 0x63, 0x10, - 0x99, 0x5C, 0x0F, 0x8D, 0x54, 0x0E, 0x81, 0x4D, 0x0D, 0x9B, 0x69, 0x3B, 0xB2, 0x7C, 0x5D, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xC7, 0x70, 0x27, 0xE1, 0x9A, 0x5A, 0xED, 0xAC, 0x71, 0xED, 0xAC, - 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x71, 0xE2, 0x9A, 0x5C, - 0xC0, 0x6F, 0x2E, 0x9A, 0x53, 0x1C, 0x7E, 0x41, 0x16, 0x78, 0x40, 0x17, 0x7E, 0x42, 0x16, 0x90, - 0x4D, 0x1A, 0xB6, 0x67, 0x29, 0xD9, 0x8E, 0x4F, 0xEB, 0xA9, 0x6E, 0xED, 0xAC, 0x72, 0xED, 0xAC, - 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xEB, 0xA9, 0x6E, 0xB3, 0x64, 0x25, 0x6C, 0x3B, 0x1A, - 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0x3E, 0x18, 0x7C, - 0x41, 0x17, 0x9A, 0x53, 0x1C, 0xDB, 0x91, 0x51, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, - 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAC, 0x71, 0xCD, 0x7F, 0x3D, - 0xA3, 0x59, 0x20, 0x87, 0x46, 0x17, 0x80, 0x43, 0x16, 0x7F, 0x42, 0x16, 0x7E, 0x42, 0x16, 0x7E, - 0x42, 0x16, 0x7F, 0x42, 0x16, 0x91, 0x4E, 0x1B, 0xB6, 0x68, 0x29, 0xDF, 0x97, 0x58, 0xED, 0xAD, - 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xDA, 0x8F, 0x4F, 0x80, 0x42, 0x16, 0x70, 0x3C, 0x19, - 0x7F, 0x43, 0x17, 0xA5, 0x5B, 0x21, 0xC5, 0x77, 0x37, 0xE9, 0xA5, 0x68, 0xED, 0xAD, 0x72, 0xED, - 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, - 0x73, 0xE4, 0x9D, 0x5F, 0xA5, 0x5A, 0x20, 0x7A, 0x40, 0x17, 0x74, 0x3E, 0x18, 0x6C, 0x3B, 0x1A, - 0x6D, 0x3C, 0x1A, 0x76, 0x3F, 0x18, 0x7F, 0x42, 0x16, 0xBE, 0x6F, 0x2F, 0xED, 0xAD, 0x73, 0xED, - 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xEC, 0xAB, 0x71, 0xD9, 0x8F, 0x4F, 0xC0, 0x70, - 0x30, 0xA8, 0x5D, 0x23, 0x83, 0x45, 0x18, 0x71, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x55, 0x2B, 0xA1, 0x63, 0x32, 0xA4, 0x65, 0x35, - 0xA1, 0x65, 0x33, 0x95, 0x5C, 0x1E, 0x8E, 0x54, 0x0F, 0x8C, 0x54, 0x0F, 0x83, 0x50, 0x0F, 0x79, - 0x4A, 0x11, 0x71, 0x47, 0x14, 0x89, 0x59, 0x2E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x5D, 0x2E, 0x9D, 0x60, 0x31, 0xA4, 0x67, 0x38, - 0xB1, 0x75, 0x44, 0xB8, 0x75, 0x2B, 0xB9, 0x6E, 0x13, 0xAE, 0x68, 0x11, 0xA2, 0x61, 0x10, 0x96, - 0x5A, 0x0F, 0x8A, 0x52, 0x0D, 0x94, 0x61, 0x2D, 0xB3, 0x80, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC7, 0x6D, 0x24, 0xDD, 0x92, 0x52, 0xED, 0xAC, 0x71, 0xED, 0xAC, 0x72, - 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xEC, 0xAA, 0x70, 0xE3, - 0x9A, 0x5C, 0xD8, 0x8C, 0x4C, 0xCD, 0x80, 0x40, 0xD8, 0x8D, 0x4C, 0xE2, 0x9A, 0x5B, 0xEB, 0xA8, - 0x6D, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, - 0xED, 0xAC, 0x72, 0xE7, 0xA1, 0x65, 0xA3, 0x5A, 0x22, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBA, 0x68, 0x26, 0xCF, 0x83, 0x43, 0xE4, 0x9D, - 0x5E, 0xEC, 0xAC, 0x70, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, - 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAC, 0x71, 0xE5, 0x9F, 0x61, 0xE1, - 0x98, 0x57, 0xDE, 0x94, 0x53, 0xDB, 0x91, 0x50, 0xDA, 0x8F, 0x4F, 0xD9, 0x8E, 0x4D, 0xDC, 0x92, - 0x51, 0xE3, 0x9B, 0x5C, 0xEB, 0xA9, 0x6D, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, - 0xED, 0xAD, 0x72, 0xC6, 0x78, 0x38, 0x76, 0x3F, 0x18, 0x9E, 0x55, 0x1C, 0xD1, 0x84, 0x44, 0xE7, - 0xA2, 0x65, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, - 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, - 0xDF, 0x96, 0x57, 0xD0, 0x84, 0x45, 0xC0, 0x70, 0x30, 0x7A, 0x40, 0x17, 0x82, 0x43, 0x17, 0xC3, - 0x75, 0x34, 0xCF, 0x84, 0x45, 0xE5, 0x9F, 0x62, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, - 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xE7, 0xA3, 0x66, - 0xDB, 0x90, 0x51, 0xAF, 0x61, 0x24, 0x6C, 0x3B, 0x1A, 0x6C, 0x3B, 0x1A, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x64, 0x34, 0xA5, 0x65, 0x34, 0xA2, - 0x66, 0x35, 0x99, 0x5F, 0x26, 0x8F, 0x56, 0x11, 0x8D, 0x54, 0x0F, 0x84, 0x50, 0x0F, 0x79, 0x4A, - 0x11, 0x88, 0x57, 0x2B, 0xAA, 0x71, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x62, 0x33, 0xA6, 0x67, 0x36, 0xAD, - 0x72, 0x42, 0xB5, 0x76, 0x36, 0xB7, 0x6E, 0x15, 0xAA, 0x66, 0x11, 0x9E, 0x5F, 0x0F, 0x93, 0x58, - 0x0E, 0x93, 0x5D, 0x23, 0xAD, 0x79, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBD, 0x59, 0x09, 0xC6, 0x6A, 0x1F, 0xCF, 0x80, 0x3E, 0xE8, 0xA3, 0x67, 0xED, 0xAC, 0x72, 0xED, - 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, - 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAC, 0x72, 0xED, 0xAD, 0x72, - 0xED, 0xAD, 0x72, 0xEC, 0xAB, 0x70, 0xE6, 0xA1, 0x63, 0xED, 0xAC, 0x71, 0xED, 0xAD, 0x72, 0xE3, - 0x9B, 0x5B, 0x90, 0x4D, 0x1B, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC0, 0x6D, 0x29, 0xEC, 0xAB, 0x70, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, - 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, - 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, - 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x73, - 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xEC, 0xAB, 0x71, 0xB5, - 0x66, 0x27, 0x6D, 0x3C, 0x1A, 0xA3, 0x54, 0x16, 0xE1, 0x98, 0x58, 0xED, 0xAD, 0x73, 0xED, 0xAD, - 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, - 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, - 0xAD, 0x73, 0xDF, 0x96, 0x57, 0x86, 0x46, 0x17, 0x7C, 0x41, 0x17, 0xD3, 0x87, 0x48, 0xED, 0xAD, - 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAE, 0x73, - 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xC1, - 0x73, 0x33, 0x72, 0x3D, 0x19, 0x6C, 0x3B, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x63, 0x32, 0xA5, 0x65, 0x33, 0xA5, 0x66, - 0x36, 0x9C, 0x62, 0x2C, 0x90, 0x58, 0x14, 0x8D, 0x54, 0x0F, 0x83, 0x4F, 0x0F, 0x88, 0x56, 0x23, - 0xAA, 0x68, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x65, 0x35, 0xA5, 0x66, 0x34, 0xA9, 0x6D, - 0x3F, 0xB2, 0x76, 0x3E, 0xB3, 0x6E, 0x1A, 0xA7, 0x64, 0x10, 0x9B, 0x5D, 0x0F, 0x95, 0x5C, 0x1B, - 0xA7, 0x74, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xBE, 0x5A, 0x0B, 0xC6, 0x6F, 0x27, 0xD8, 0x8C, 0x4C, 0xE7, 0xA2, 0x66, 0xED, 0xAC, - 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, - 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xEA, 0xA8, 0x6C, 0xDB, 0x92, 0x51, 0xB9, - 0x6C, 0x2C, 0xB2, 0x62, 0x22, 0xE4, 0x9D, 0x5E, 0xED, 0xAD, 0x72, 0xD9, 0x8F, 0x4E, 0x7F, 0x42, - 0x16, 0x6C, 0x3B, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xBE, 0x6A, 0x26, 0xE8, 0xA4, 0x67, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, - 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, 0x72, 0xED, 0xAD, - 0x72, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, - 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, - 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xE7, 0xA2, 0x65, 0xA1, 0x59, 0x21, 0x6C, 0x3B, - 0x1A, 0xB0, 0x54, 0x0C, 0xD3, 0x87, 0x47, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, - 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, - 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xED, 0xAD, 0x73, 0xE5, 0x9F, - 0x61, 0x99, 0x53, 0x1E, 0x75, 0x3E, 0x18, 0xC4, 0x78, 0x38, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, - 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, - 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xED, 0xAE, 0x73, 0xCE, 0x84, 0x44, 0x7A, 0x40, - 0x17, 0x6C, 0x3B, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x60, 0x40, 0xA4, 0x65, 0x34, 0xA4, 0x65, 0x35, - 0xA0, 0x64, 0x31, 0x93, 0x5A, 0x19, 0x8B, 0x52, 0x0E, 0x8C, 0x56, 0x1D, 0xA6, 0x6F, 0x43, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x66, 0x33, 0xA4, 0x64, 0x34, 0xA7, 0x6A, 0x3B, - 0xB0, 0x75, 0x43, 0xB0, 0x6F, 0x23, 0xA4, 0x62, 0x10, 0x9A, 0x5D, 0x14, 0xA8, 0x74, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBD, 0x59, 0x09, 0xC0, 0x5E, 0x10, 0xC3, 0x6C, 0x25, 0xC7, 0x76, 0x34, 0xDB, 0x91, 0x50, - 0xE3, 0x9B, 0x5B, 0xE6, 0xA0, 0x62, 0xE8, 0xA5, 0x68, 0xE7, 0xA2, 0x64, 0xE4, 0x9D, 0x5D, 0xDE, - 0x95, 0x55, 0xCE, 0x82, 0x42, 0xB2, 0x65, 0x26, 0x95, 0x4E, 0x18, 0x8B, 0x46, 0x14, 0xBD, 0x59, - 0x09, 0xCA, 0x77, 0x32, 0xCC, 0x80, 0x3F, 0xBE, 0x6F, 0x2F, 0x7A, 0x40, 0x17, 0x6C, 0x3B, 0x1A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x69, 0x1E, 0xCE, - 0x7F, 0x3D, 0xCB, 0x7F, 0x3F, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, - 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, - 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, - 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, - 0x40, 0xCB, 0x7F, 0x40, 0xC9, 0x7B, 0x3A, 0x8A, 0x49, 0x18, 0x6C, 0x3B, 0x1A, 0xBD, 0x59, 0x09, - 0xC9, 0x74, 0x2E, 0xCC, 0x80, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, - 0x7F, 0x40, 0xCB, 0x7F, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, - 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCA, 0x7E, 0x3D, 0xA5, 0x5B, 0x20, - 0x6F, 0x3C, 0x19, 0xC4, 0x6E, 0x28, 0xCC, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, - 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, - 0x40, 0xCB, 0x80, 0x40, 0xCB, 0x80, 0x40, 0xC8, 0x7A, 0x38, 0x83, 0x44, 0x16, 0x6C, 0x3B, 0x1A, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x63, 0x34, 0xA4, 0x65, 0x35, 0xA1, - 0x64, 0x35, 0x97, 0x5D, 0x21, 0x8F, 0x57, 0x19, 0x9A, 0x62, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x64, 0x33, 0xA7, 0x67, 0x38, 0xAD, - 0x73, 0x43, 0xAE, 0x70, 0x2F, 0xA0, 0x61, 0x11, 0xA9, 0x73, 0x42, 0xB8, 0x80, 0x55, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBE, 0x63, 0x1A, 0xBC, - 0x67, 0x22, 0xBC, 0x69, 0x26, 0xB3, 0x63, 0x23, 0xA9, 0x5A, 0x1C, 0xA2, 0x50, 0x11, 0xAC, 0x53, - 0x0C, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, - 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, - 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, - 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x59, 0x09, 0xBD, - 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, - 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0xBD, - 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, - 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, - 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xBD, 0x59, 0x09, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x64, 0x32, 0xA5, 0x65, 0x35, 0xA3, 0x65, - 0x36, 0x9B, 0x60, 0x2A, 0x9A, 0x61, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x64, 0x32, 0xA4, 0x66, 0x35, 0xAB, 0x70, - 0x41, 0xAE, 0x72, 0x38, 0xA9, 0x71, 0x3A, 0xAE, 0x7D, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x66, 0x33, 0xA5, 0x65, 0x35, 0xA4, 0x66, 0x36, - 0xA1, 0x65, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x6B, 0x36, 0xA5, 0x65, 0x34, 0xA8, 0x6B, 0x3D, - 0xAD, 0x74, 0x44, 0xAD, 0x77, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x65, 0x32, 0xA7, 0x61, 0x35, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xA4, 0x65, 0x33, 0xA5, 0x69, 0x38, 0xA7, - 0x6B, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0xAE, 0x00, 0x32, 0x00, 0xE7, 0xFF, 0x00, 0x16, 0x00, 0xFF, + 0x0E, 0x30, 0x52, 0x03, 0x34, 0x55, 0x08, 0x37, 0x59, 0x16, 0x35, 0x58, 0x0E, 0x3A, 0x5C, 0x02, + 0x3E, 0x64, 0x13, 0x3B, 0x63, 0x07, 0x3D, 0x76, 0x1C, 0x3A, 0x5D, 0x18, 0x3C, 0x70, 0x21, 0x3A, + 0x6A, 0x0E, 0x3F, 0x79, 0x00, 0x43, 0x7B, 0x19, 0x3E, 0x6C, 0x1B, 0x3E, 0x72, 0x0F, 0x43, 0x6A, + 0x00, 0x47, 0x74, 0x02, 0x45, 0x84, 0x13, 0x41, 0x7B, 0x12, 0x44, 0x71, 0x16, 0x42, 0x82, 0x06, + 0x48, 0x7B, 0x1F, 0x42, 0x71, 0x16, 0x44, 0x78, 0x1F, 0x44, 0x6D, 0x1B, 0x45, 0x85, 0x0E, 0x48, + 0x8E, 0x19, 0x48, 0x76, 0x00, 0x4F, 0x88, 0x00, 0x4E, 0x93, 0x1E, 0x49, 0x6F, 0x0F, 0x4C, 0x7F, + 0x27, 0x46, 0x7C, 0x02, 0x4E, 0xA0, 0x14, 0x4B, 0x8B, 0x14, 0x4C, 0x86, 0x15, 0x4A, 0x97, 0x21, + 0x48, 0x89, 0x40, 0x40, 0x81, 0x1E, 0x4B, 0x79, 0x16, 0x4B, 0x92, 0x27, 0x4A, 0x74, 0x05, 0x52, + 0x8B, 0x29, 0x4A, 0x79, 0x16, 0x4F, 0x82, 0x15, 0x50, 0x7D, 0x0D, 0x51, 0x9E, 0x24, 0x4D, 0x82, + 0x00, 0x54, 0xA9, 0x23, 0x4F, 0x7D, 0x1E, 0x4F, 0x96, 0x0D, 0x55, 0x8E, 0x10, 0x53, 0x99, 0x1C, + 0x52, 0x86, 0x0E, 0x57, 0x89, 0x11, 0x55, 0x94, 0x00, 0x57, 0xB6, 0x1C, 0x54, 0x82, 0x30, 0x4E, + 0x84, 0x15, 0x52, 0xAC, 0x00, 0x5B, 0x99, 0x27, 0x52, 0x80, 0x31, 0x50, 0x81, 0x08, 0x58, 0xAB, + 0x23, 0x52, 0x99, 0x2A, 0x52, 0x87, 0x04, 0x58, 0xBF, 0x15, 0x58, 0x91, 0x23, 0x55, 0x8F, 0x1A, + 0x56, 0xA3, 0x23, 0x57, 0x8B, 0x00, 0x5C, 0xC1, 0x04, 0x5C, 0xB6, 0x29, 0x55, 0x9D, 0x36, 0x54, + 0x85, 0x2F, 0x56, 0x8C, 0x2E, 0x57, 0x86, 0x0C, 0x5F, 0x9E, 0x0F, 0x5D, 0xA9, 0x2C, 0x55, 0xAA, + 0x1D, 0x5C, 0x96, 0x11, 0x5D, 0xB0, 0x00, 0x63, 0xA7, 0x0E, 0x61, 0x9A, 0x11, 0x5F, 0xA5, 0x21, + 0x5B, 0xA2, 0x20, 0x5C, 0x9D, 0x00, 0x62, 0xC1, 0x1E, 0x5E, 0x92, 0x23, 0x5B, 0xA9, 0x2C, 0x5B, + 0x96, 0x2B, 0x5C, 0x91, 0x34, 0x5A, 0x90, 0x33, 0x5B, 0x8B, 0x18, 0x5E, 0xBE, 0x03, 0x67, 0xAD, + 0x24, 0x60, 0x9A, 0x1D, 0x61, 0xB5, 0x0C, 0x66, 0xBF, 0x19, 0x65, 0xA5, 0x1F, 0x61, 0xBB, 0x31, + 0x5F, 0x9A, 0x0E, 0x66, 0xC6, 0x3A, 0x5E, 0x95, 0x2B, 0x60, 0xAE, 0x56, 0x54, 0xAB, 0x0E, 0x68, + 0xBA, 0x20, 0x64, 0xB0, 0x00, 0x6E, 0xB9, 0x3D, 0x5F, 0x9C, 0x33, 0x63, 0x98, 0x2A, 0x67, 0x9B, + 0x37, 0x63, 0x9F, 0x2E, 0x65, 0xA6, 0x26, 0x66, 0xBA, 0x40, 0x61, 0x9F, 0x00, 0x72, 0xBD, 0x16, + 0x6D, 0xB2, 0x27, 0x68, 0xB6, 0x3A, 0x64, 0xA7, 0x25, 0x6A, 0xAA, 0x2F, 0x68, 0xA2, 0x40, 0x64, + 0x9B, 0x1B, 0x6B, 0xC5, 0x1A, 0x6C, 0xBF, 0x3B, 0x67, 0xA3, 0x2D, 0x68, 0xC4, 0x34, 0x69, 0xAB, + 0x2C, 0x6A, 0xBE, 0x3A, 0x69, 0x9F, 0x39, 0x6A, 0x9A, 0x1F, 0x6F, 0xBC, 0x21, 0x6E, 0xC8, 0x40, + 0x68, 0xAC, 0x22, 0x6F, 0xC3, 0x00, 0x81, 0x80, 0x2E, 0x6F, 0xB0, 0x11, 0x76, 0xC2, 0x14, 0x74, + 0xCD, 0x00, 0x7B, 0xCC, 0x16, 0x74, 0xD4, 0x32, 0x6F, 0xBD, 0x2E, 0x72, 0xAC, 0x43, 0x6D, 0xAA, + 0x3A, 0x70, 0xAC, 0x3C, 0x6F, 0xB2, 0x33, 0x71, 0xB9, 0x40, 0x70, 0xA0, 0x42, 0x6F, 0xA5, 0x2A, + 0x73, 0xC7, 0x28, 0x75, 0xBC, 0x48, 0x6D, 0xB8, 0x2B, 0x75, 0xC3, 0x39, 0x73, 0xC2, 0x0C, 0x7E, + 0xDD, 0x1E, 0x7B, 0xC7, 0x38, 0x75, 0xBD, 0x44, 0x74, 0xA4, 0x3F, 0x75, 0xB1, 0x00, 0x84, 0xDC, + 0x39, 0x77, 0xB9, 0x43, 0x75, 0xB8, 0x24, 0x7C, 0xCF, 0x12, 0x81, 0xD3, 0x4B, 0x74, 0xB2, 0x32, + 0x79, 0xCE, 0x32, 0x7A, 0xC8, 0x3D, 0x77, 0xC6, 0x32, 0x7B, 0xC2, 0x4A, 0x76, 0xAD, 0x4A, 0x75, + 0xBC, 0x18, 0x82, 0xDB, 0x3F, 0x79, 0xC2, 0x52, 0x76, 0xA8, 0x00, 0x89, 0xE1, 0x2E, 0x80, 0xB3, + 0x37, 0x7B, 0xD0, 0x5C, 0x74, 0xAE, 0x48, 0x79, 0xBD, 0x47, 0x7A, 0xB7, 0x37, 0x7D, 0xCC, 0x2C, + 0x81, 0xCE, 0x51, 0x79, 0xB8, 0x2F, 0x80, 0xDA, 0x2E, 0x81, 0xD5, 0x4C, 0x7C, 0xC0, 0x3F, 0x80, + 0xC2, 0x3B, 0x80, 0xCE, 0x3A, 0x81, 0xC9, 0x46, 0x7F, 0xC9, 0x31, 0x85, 0xD2, 0x60, 0x7B, 0xAF, + 0x55, 0x7D, 0xBC, 0x27, 0x87, 0xE1, 0x3F, 0x82, 0xD1, 0x4D, 0x80, 0xBD, 0x27, 0x89, 0xDC, 0x5C, + 0x7D, 0xB7, 0x15, 0x8E, 0xE6, 0x5B, 0x7F, 0xB1, 0x3F, 0x85, 0xCD, 0x56, 0x82, 0xAD, 0x55, 0x82, + 0xBA, 0x39, 0x88, 0xDC, 0x38, 0x89, 0xD7, 0x44, 0x86, 0xD5, 0x43, 0x87, 0xD0, 0x7F, 0x81, 0x7E, + 0x46, 0x8A, 0xD2, 0x52, 0x88, 0xC5, 0x40, 0x8C, 0xE1, 0x48, 0x8B, 0xD4, 0x3F, 0x8D, 0xDC, 0x4A, + 0x8B, 0xDA, 0x5B, 0x8C, 0xB7, 0x4B, 0x8E, 0xD7, 0x44, 0x90, 0xDE, 0x4D, 0x90, 0xD9, 0x5D, 0x8E, + 0xCC, 0x60, 0x8E, 0xC7, 0x83, 0x7F, 0xFE, 0x50, 0x92, 0xDB, 0x48, 0x94, 0xE2, 0x53, 0x94, 0xDD, + 0x5B, 0x93, 0xD8, 0x54, 0x98, 0xDA, 0x56, 0x97, 0xE1, 0x5F, 0x96, 0xDB, 0x66, 0x96, 0xD5, 0x5A, + 0x9A, 0xE4, 0x63, 0x9A, 0xCB, 0x62, 0x99, 0xDE, 0x59, 0x9C, 0xDF, 0x5E, 0x9D, 0xE8, 0x54, 0xA0, + 0xE8, 0x5C, 0x9F, 0xE2, 0x6C, 0x9D, 0xD6, 0x67, 0x9E, 0xE3, 0x5F, 0xA1, 0xE5, 0x67, 0xA1, 0xDF, + 0x69, 0xA0, 0xE5, 0x62, 0xA3, 0xE7, 0x64, 0xA5, 0xE9, 0x66, 0xA8, 0xEC, 0x6D, 0xA7, 0xE5, 0x75, + 0xA7, 0xDF, 0x69, 0xAA, 0xEE, 0x72, 0xAB, 0xEA, 0x74, 0xAC, 0xEB, 0x75, 0xAD, 0xEC, 0x7F, 0xB1, + 0xEA, 0x85, 0xB1, 0xE5, 0x8B, 0xB6, 0xEB, 0x8E, 0xBA, 0xE8, 0xFF, 0xFF, 0xFF, 0x21, 0xF9, 0x04, + 0x01, 0x0A, 0x00, 0xFF, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x32, 0x00, 0x40, 0x08, + 0xFE, 0x00, 0xFF, 0x09, 0x1C, 0x48, 0xB0, 0xA0, 0x40, 0x39, 0x78, 0x0C, 0x2A, 0x04, 0x20, 0xC7, + 0x8F, 0x1E, 0x85, 0x10, 0x23, 0x4A, 0x9C, 0x48, 0xB1, 0xA2, 0xC5, 0x8B, 0x18, 0x33, 0x52, 0xDC, + 0x62, 0x26, 0x8E, 0x19, 0x22, 0x34, 0x56, 0xD8, 0xE0, 0x10, 0x01, 0x02, 0x17, 0x82, 0x45, 0xCC, + 0xF8, 0xF9, 0x74, 0xA9, 0x8D, 0x9D, 0x29, 0x3D, 0x68, 0x80, 0x18, 0x04, 0x4C, 0xA3, 0x4D, 0x8A, + 0x43, 0x0A, 0x99, 0xCB, 0xC7, 0xB3, 0xA7, 0xB9, 0x43, 0x41, 0x2A, 0x4C, 0x98, 0xE0, 0xE1, 0x0E, + 0xB6, 0x7B, 0x3D, 0xF3, 0xDD, 0x63, 0xB3, 0x60, 0xC1, 0x40, 0x06, 0x13, 0x82, 0x78, 0x4B, 0xDA, + 0x93, 0x97, 0x11, 0x0D, 0x12, 0x84, 0x4E, 0xA8, 0x50, 0x74, 0x5C, 0x4F, 0x6D, 0x15, 0x14, 0x4C, + 0x78, 0x72, 0x6A, 0x1E, 0x55, 0x9E, 0xEA, 0xB4, 0x4C, 0x78, 0xD0, 0x94, 0x41, 0x05, 0x47, 0x54, + 0xB5, 0x39, 0x7A, 0x22, 0x81, 0xAD, 0xD3, 0x7F, 0x42, 0x98, 0x44, 0xA1, 0x11, 0x12, 0x04, 0x07, + 0x08, 0x07, 0x08, 0x08, 0x10, 0x90, 0xA1, 0xD2, 0x3F, 0x16, 0x3F, 0x3E, 0xB5, 0x69, 0x33, 0xC5, + 0x09, 0x8D, 0x0E, 0x16, 0x30, 0x34, 0x60, 0xD0, 0xC0, 0x70, 0xC6, 0x21, 0x69, 0x34, 0x61, 0x7B, + 0x27, 0xAF, 0x73, 0x67, 0x70, 0x1B, 0x9A, 0x0E, 0x44, 0x92, 0x8D, 0x9E, 0x69, 0xD3, 0x9A, 0x18, + 0xDC, 0x1D, 0xE2, 0xEC, 0x2C, 0x38, 0x13, 0xA2, 0x2B, 0x36, 0x9D, 0x7D, 0xF7, 0xDF, 0x10, 0x4D, + 0x67, 0xDF, 0x69, 0xC3, 0x36, 0xCE, 0x5D, 0x4F, 0x70, 0x1A, 0x62, 0xFF, 0xA3, 0x5D, 0x5B, 0xE0, + 0x04, 0x36, 0xF2, 0xCE, 0xF2, 0x74, 0x36, 0x63, 0xF6, 0x44, 0x14, 0x47, 0x28, 0x1C, 0x30, 0x30, + 0x40, 0x40, 0x80, 0x04, 0x3E, 0xF6, 0x0C, 0x94, 0x23, 0x47, 0x52, 0x2A, 0x52, 0x8C, 0xEA, 0xFE, + 0x80, 0xD1, 0x43, 0xA2, 0x88, 0x2A, 0x63, 0x03, 0x57, 0xB5, 0xD2, 0x55, 0x4E, 0x9E, 0xBA, 0x6F, + 0xCC, 0x2C, 0xCD, 0xA2, 0x88, 0x65, 0x98, 0xB6, 0xFB, 0xDA, 0xC2, 0xF5, 0x61, 0x4B, 0x70, 0x8E, + 0x36, 0x72, 0x00, 0x92, 0x83, 0x8D, 0x11, 0xC2, 0xBD, 0xD0, 0x0C, 0x39, 0xE2, 0x88, 0x83, 0x0E, + 0x3A, 0xE9, 0xEC, 0x57, 0x1C, 0x41, 0x0B, 0x18, 0x81, 0x0D, 0x3B, 0x14, 0x52, 0x78, 0xCA, 0x04, + 0xCE, 0xFD, 0x83, 0x85, 0x37, 0x9C, 0x79, 0x66, 0x0E, 0x81, 0x77, 0x49, 0x71, 0xC7, 0x1A, 0x20, + 0x4E, 0xF4, 0x45, 0x2C, 0xF4, 0xF0, 0x64, 0x4E, 0x1A, 0x0A, 0x2C, 0x20, 0x81, 0x2F, 0x67, 0xDD, + 0xA3, 0x09, 0x86, 0x19, 0xF9, 0x20, 0x44, 0x28, 0xC7, 0x1C, 0xF3, 0x0A, 0x23, 0x97, 0x90, 0x91, + 0x85, 0x0E, 0x2E, 0xA0, 0x80, 0x82, 0x76, 0xFF, 0x30, 0xE1, 0x07, 0x3F, 0xFE, 0xEC, 0xA3, 0x8F, + 0x7B, 0xD9, 0x30, 0x93, 0x0B, 0x2F, 0xA7, 0x84, 0x12, 0xCC, 0x44, 0x43, 0x88, 0xD1, 0x4A, 0x2F, + 0xBD, 0xF8, 0x92, 0x89, 0x26, 0xAD, 0xF8, 0x82, 0x25, 0x96, 0xA7, 0x88, 0x61, 0xC4, 0x21, 0xA7, + 0x7C, 0x59, 0xCB, 0x29, 0x7D, 0x18, 0x61, 0x57, 0x6D, 0x0B, 0x3C, 0x30, 0xC3, 0x1A, 0xA7, 0xF0, + 0xF2, 0xCC, 0x9C, 0xD1, 0xCC, 0xC9, 0x8B, 0x25, 0x5A, 0xD4, 0x25, 0xC6, 0x2F, 0x7C, 0x5A, 0xD5, + 0x54, 0x19, 0xBC, 0x0C, 0xD3, 0x4C, 0x33, 0xCE, 0x38, 0x33, 0xE8, 0xA1, 0x87, 0xF2, 0x12, 0xDC, + 0x83, 0x03, 0x8D, 0xE1, 0x0C, 0x35, 0xD4, 0x60, 0x23, 0xE9, 0xA4, 0x92, 0x6A, 0xE3, 0xA0, 0xA3, + 0xF8, 0xE1, 0xE7, 0xCD, 0xA6, 0x9C, 0x7A, 0x03, 0xCE, 0x21, 0xFC, 0x45, 0x84, 0x02, 0x17, 0x9C, + 0x30, 0xD2, 0x06, 0x18, 0x8E, 0xF9, 0x45, 0x41, 0x13, 0x90, 0xC8, 0x32, 0x90, 0x0C, 0xFE, 0xC4, + 0xC8, 0x63, 0xCE, 0x34, 0xB8, 0x34, 0xD2, 0xC8, 0x18, 0x77, 0x84, 0x72, 0xCB, 0x2E, 0x15, 0x95, + 0x00, 0xC5, 0x1A, 0x6B, 0x88, 0x01, 0x04, 0x86, 0x8C, 0xDE, 0x64, 0xEC, 0xB1, 0xC8, 0x26, 0x5B, + 0x10, 0x07, 0x7E, 0x44, 0x42, 0x0B, 0x34, 0x13, 0x7D, 0xB0, 0x04, 0x2D, 0xC4, 0x28, 0x6B, 0xED, + 0xB5, 0xD8, 0x66, 0x9B, 0x2C, 0x1D, 0xDC, 0xC5, 0x11, 0xC5, 0x0A, 0x47, 0x58, 0x66, 0x10, 0x1E, + 0x0D, 0x7D, 0x92, 0x48, 0x63, 0xAA, 0x68, 0x9B, 0xEC, 0x10, 0x5F, 0xF0, 0x61, 0x89, 0x37, 0xEA, + 0xC4, 0x33, 0xCF, 0x3B, 0xEA, 0x80, 0x33, 0x0C, 0x1B, 0x33, 0x6C, 0x30, 0x84, 0x29, 0xBC, 0x38, + 0x42, 0xE3, 0x40, 0x7F, 0xF0, 0x22, 0xF0, 0xC0, 0x04, 0x17, 0x6C, 0xB0, 0xC0, 0xA7, 0xC0, 0x36, + 0x84, 0x25, 0x07, 0x1F, 0xFC, 0x84, 0x02, 0x81, 0x34, 0x3C, 0xF0, 0x29, 0xC1, 0x0D, 0x24, 0xC4, + 0x16, 0x20, 0xF1, 0x45, 0x43, 0x0B, 0x11, 0x50, 0x60, 0x80, 0x01, 0x05, 0xF8, 0x00, 0x2D, 0x0C, + 0x5D, 0x84, 0x52, 0x47, 0x1D, 0x8B, 0x35, 0xB6, 0x71, 0x64, 0x47, 0xA0, 0x97, 0xD1, 0x17, 0x63, + 0xCC, 0x11, 0x48, 0x1F, 0xA8, 0x68, 0xA3, 0x0E, 0x52, 0x17, 0x16, 0x17, 0x88, 0x6F, 0x3D, 0xD1, + 0xC3, 0xD4, 0x6A, 0x7C, 0xA8, 0x73, 0x56, 0xCE, 0xC2, 0x15, 0xA4, 0x80, 0x12, 0x3B, 0xE5, 0xA3, + 0x4E, 0x73, 0x05, 0x0D, 0x61, 0x0D, 0x55, 0x3E, 0xC7, 0xC6, 0xC7, 0x99, 0x8E, 0xA8, 0xF6, 0xCF, + 0x06, 0xBC, 0x2C, 0xF7, 0xEF, 0x3F, 0x13, 0x38, 0x82, 0x14, 0x55, 0x17, 0x6A, 0x60, 0x89, 0x59, + 0xF9, 0xC8, 0xB3, 0x86, 0x6A, 0x45, 0x0F, 0xC4, 0x82, 0x10, 0x51, 0xB4, 0x40, 0x92, 0x01, 0x07, + 0x54, 0x17, 0xC0, 0xDC, 0x07, 0xB8, 0x21, 0x10, 0x0B, 0x82, 0xE4, 0x21, 0x07, 0xFE, 0x24, 0xA1, + 0x24, 0x22, 0x19, 0x03, 0x08, 0x20, 0x20, 0x84, 0x2B, 0xE7, 0xA4, 0x27, 0x89, 0x28, 0xBB, 0xB4, + 0x32, 0xE5, 0x44, 0x63, 0x78, 0x93, 0xCE, 0xE3, 0xE9, 0x8C, 0xA3, 0x85, 0x70, 0x0B, 0x57, 0x48, + 0xA1, 0x33, 0x12, 0x88, 0x36, 0xC4, 0x1C, 0xEF, 0x74, 0xDE, 0xE1, 0x3B, 0x62, 0xA4, 0x6D, 0x9B, + 0x33, 0xA7, 0x95, 0x7E, 0xCF, 0xE9, 0xA7, 0x3B, 0xC2, 0x5F, 0x20, 0xC9, 0x25, 0x05, 0x4E, 0x0A, + 0x5B, 0x3D, 0x91, 0xB4, 0x3A, 0x4A, 0x88, 0xAE, 0xD0, 0x10, 0x7C, 0x78, 0xA5, 0x5C, 0x3E, 0xF3, + 0xDC, 0x11, 0x6A, 0x44, 0x2A, 0xF8, 0x00, 0xC1, 0x00, 0x09, 0x34, 0x41, 0x89, 0x40, 0x00, 0x14, + 0x61, 0x64, 0x2F, 0xC7, 0x08, 0x03, 0x4A, 0x78, 0x64, 0x44, 0x71, 0x03, 0x17, 0xA5, 0x08, 0xD4, + 0x85, 0x19, 0xB4, 0xB4, 0xC3, 0x8F, 0x3D, 0xF0, 0xD0, 0xFB, 0xCD, 0x34, 0xB9, 0xC8, 0xC7, 0xAB, + 0x44, 0x43, 0x1C, 0x32, 0xE7, 0xF9, 0xCF, 0x0C, 0x43, 0xA2, 0x14, 0x63, 0x98, 0x0F, 0xE9, 0xFB, + 0xD4, 0x3C, 0x93, 0xC6, 0x0C, 0x81, 0x88, 0x61, 0x35, 0x03, 0x5A, 0x50, 0x93, 0xE9, 0x7D, 0xA7, + 0xCC, 0x50, 0xC1, 0x10, 0xB6, 0x19, 0xC2, 0x19, 0x0E, 0x81, 0x0D, 0x70, 0x04, 0x28, 0x41, 0xC3, + 0x58, 0x54, 0x00, 0xF9, 0xA0, 0x8D, 0x04, 0x31, 0xE8, 0x71, 0xD8, 0x98, 0xC1, 0x03, 0x2C, 0x32, + 0x04, 0x2C, 0xF0, 0x61, 0x18, 0x9E, 0x7B, 0x47, 0x3A, 0xC4, 0x60, 0x17, 0x82, 0xBC, 0xC0, 0x1B, + 0xF3, 0x08, 0xA1, 0x08, 0xE9, 0x31, 0x8F, 0x53, 0x28, 0x61, 0x03, 0x25, 0xA8, 0xC8, 0x0F, 0xF4, + 0x50, 0x8C, 0xE7, 0x89, 0x47, 0x7A, 0x2E, 0xE0, 0x00, 0x05, 0x1C, 0xB0, 0x87, 0x29, 0x91, 0x8C, + 0x1B, 0xF6, 0x60, 0x07, 0x38, 0x9A, 0x91, 0x8B, 0x45, 0x2C, 0xE2, 0x10, 0xFE, 0x99, 0xE8, 0x44, + 0x28, 0xAA, 0x45, 0xBE, 0x32, 0x64, 0xE2, 0x88, 0x99, 0x70, 0xC4, 0x0B, 0x6C, 0xA7, 0xAE, 0x26, + 0x3A, 0x31, 0x23, 0x17, 0x90, 0x41, 0x22, 0x08, 0x51, 0x85, 0x2B, 0xE0, 0x20, 0x0E, 0xD5, 0x53, + 0x08, 0x0A, 0x04, 0xE1, 0x0D, 0x5A, 0x2D, 0x42, 0x71, 0x4F, 0x0C, 0xA3, 0x18, 0xC7, 0x78, 0x91, + 0x6E, 0x85, 0x21, 0x0C, 0x13, 0x69, 0x48, 0x24, 0x22, 0xF1, 0x08, 0x64, 0x90, 0xF1, 0x8D, 0x70, + 0xD4, 0x16, 0x77, 0xFC, 0x10, 0x06, 0xBE, 0xB8, 0xAD, 0x09, 0x8F, 0x30, 0x88, 0x1C, 0x00, 0x11, + 0x89, 0x50, 0x30, 0xC6, 0x09, 0x44, 0xE0, 0x82, 0x2B, 0xE2, 0x48, 0xBE, 0x80, 0xC5, 0x63, 0x77, + 0xB9, 0x41, 0x4B, 0x0A, 0x6A, 0x53, 0x3E, 0x44, 0x3A, 0x92, 0x2A, 0x77, 0x58, 0x00, 0x10, 0x74, + 0xF7, 0xC8, 0x71, 0x68, 0x60, 0x02, 0xAD, 0x49, 0x8A, 0x3E, 0x36, 0xC9, 0x49, 0x4D, 0xFC, 0xEE, + 0x04, 0x4C, 0xE0, 0xC8, 0x5E, 0x42, 0x62, 0x03, 0x10, 0x94, 0xC4, 0x00, 0x1F, 0x30, 0x4C, 0x0C, + 0x98, 0xD0, 0x85, 0x4A, 0x84, 0x82, 0x10, 0x8B, 0x41, 0x15, 0x11, 0x56, 0x60, 0x01, 0x10, 0x88, + 0x0B, 0x59, 0x43, 0xC8, 0xA5, 0x41, 0x72, 0xC9, 0x4B, 0x5E, 0x1A, 0xE4, 0x0C, 0xD9, 0x38, 0x8B, + 0x3A, 0xD2, 0xB0, 0xA6, 0x81, 0x34, 0x45, 0x02, 0x9A, 0x20, 0x5B, 0x3E, 0x78, 0xB1, 0x35, 0x81, + 0x0C, 0x01, 0x2E, 0x54, 0x71, 0x06, 0xB1, 0x1E, 0xB4, 0x00, 0x0D, 0x64, 0x2D, 0x1F, 0x51, 0x9B, + 0x4D, 0x0A, 0xA8, 0xA1, 0x9C, 0xD4, 0xDC, 0xE5, 0x0B, 0xBC, 0xF8, 0xDA, 0x3C, 0x34, 0xB1, 0xA8, + 0x0C, 0xDD, 0x8D, 0x6D, 0x1A, 0xDB, 0xD8, 0x29, 0xE3, 0x56, 0x80, 0x93, 0xFC, 0xC3, 0x06, 0x82, + 0xB8, 0x04, 0x21, 0x08, 0x81, 0xAA, 0x1E, 0xAC, 0x00, 0x04, 0x16, 0xFE, 0x98, 0x8C, 0x20, 0x6A, + 0x82, 0x91, 0xF2, 0x95, 0xCE, 0x34, 0xA7, 0x9B, 0xC7, 0xCF, 0x06, 0xB2, 0x30, 0xAA, 0x8C, 0x03, + 0x36, 0x77, 0xE1, 0x03, 0xCF, 0x92, 0x32, 0x0C, 0x62, 0x4D, 0x64, 0x01, 0x29, 0x70, 0x86, 0xBD, + 0x26, 0xA7, 0xB3, 0x77, 0x18, 0x14, 0xA1, 0x43, 0xF8, 0x03, 0x38, 0xB0, 0x99, 0x86, 0xD8, 0x6C, + 0xE0, 0x4C, 0x77, 0x18, 0x81, 0x70, 0x26, 0x70, 0x87, 0x14, 0x51, 0x05, 0x1B, 0x42, 0x53, 0x0A, + 0x2A, 0xCA, 0x29, 0x11, 0x92, 0xF5, 0xE5, 0x2F, 0x07, 0x28, 0x80, 0xDC, 0x02, 0x20, 0x83, 0xBB, + 0x79, 0x21, 0x11, 0x60, 0x68, 0x0C, 0x11, 0xF0, 0x29, 0x99, 0xC0, 0x31, 0xC1, 0x65, 0x04, 0x01, + 0x04, 0x20, 0x0C, 0x21, 0x91, 0xA6, 0x6C, 0xC0, 0x1A, 0x96, 0x7B, 0x87, 0x37, 0xFB, 0x83, 0x0E, + 0xCF, 0xC8, 0x23, 0x1D, 0x14, 0x15, 0xC8, 0x1C, 0xD8, 0x11, 0xC2, 0xD2, 0xA1, 0xC2, 0x6A, 0x4D, + 0x2B, 0x84, 0x26, 0xB6, 0xCA, 0xD5, 0xAE, 0x6E, 0xD5, 0x11, 0x15, 0x70, 0x0A, 0x12, 0xA6, 0xF2, + 0x48, 0x9E, 0x38, 0xA2, 0x45, 0x17, 0x11, 0xC1, 0x1D, 0xBE, 0x96, 0x94, 0x77, 0x3C, 0x81, 0x89, + 0x05, 0x41, 0x81, 0x10, 0x64, 0x70, 0x4A, 0x99, 0xCE, 0x2D, 0x00, 0x19, 0x40, 0x83, 0x1A, 0x04, + 0xB2, 0x03, 0x34, 0x00, 0x42, 0x14, 0x9C, 0xC8, 0x84, 0x1D, 0xA2, 0xD0, 0x00, 0x04, 0x34, 0x40, + 0x10, 0xE9, 0x12, 0x08, 0x2C, 0x26, 0x21, 0x0A, 0x69, 0x90, 0x23, 0x1B, 0xB1, 0x68, 0x85, 0x34, + 0xA8, 0x74, 0x08, 0x00, 0x89, 0x03, 0x40, 0xCD, 0x50, 0xA0, 0x40, 0xBE, 0xD0, 0x8C, 0x05, 0x41, + 0xCE, 0x41, 0x03, 0x11, 0x83, 0x38, 0x1E, 0x57, 0x21, 0x74, 0x44, 0xB5, 0x20, 0x1A, 0xA8, 0x40, + 0x10, 0x34, 0xD1, 0x21, 0xA7, 0x0E, 0x63, 0x0E, 0x26, 0x40, 0xFE, 0xDB, 0x10, 0x4E, 0xF1, 0x4F, + 0x7A, 0x78, 0xD2, 0x29, 0x6A, 0x45, 0x0A, 0x33, 0xE1, 0xEA, 0xCC, 0x33, 0x64, 0x32, 0x1F, 0xCE, + 0x30, 0x02, 0x37, 0xA1, 0xA6, 0xBA, 0x62, 0x0D, 0x04, 0x05, 0x3F, 0x40, 0x81, 0x01, 0x08, 0x30, + 0x80, 0x01, 0xA8, 0x00, 0x0D, 0x03, 0xE1, 0x48, 0x1C, 0x44, 0x51, 0x0C, 0x61, 0x90, 0x42, 0x11, + 0x76, 0x20, 0x83, 0x13, 0x20, 0x31, 0x48, 0x81, 0xC4, 0xE1, 0xAF, 0xD2, 0x68, 0x47, 0x3D, 0xDC, + 0x03, 0x9F, 0x51, 0x74, 0x62, 0x71, 0x11, 0x19, 0xC2, 0x18, 0xE0, 0x07, 0x29, 0x29, 0x50, 0xEE, + 0x10, 0xFB, 0xE3, 0x45, 0x58, 0x6B, 0x93, 0x83, 0x35, 0x5C, 0xD6, 0x80, 0x00, 0xD2, 0x86, 0x16, + 0xD0, 0x6A, 0x90, 0x2F, 0x58, 0xC2, 0xB3, 0x8F, 0x93, 0x1C, 0xE5, 0xFA, 0x80, 0x0E, 0xCB, 0xB1, + 0xC3, 0x19, 0xF3, 0x15, 0x08, 0x71, 0xD2, 0x8B, 0x85, 0x51, 0xBC, 0x23, 0x84, 0xEF, 0xE8, 0x83, + 0x43, 0xFF, 0x61, 0x82, 0x61, 0xA0, 0xEE, 0x74, 0x3C, 0xD1, 0x86, 0x12, 0x14, 0x00, 0x11, 0x14, + 0xF8, 0x40, 0x05, 0x74, 0x28, 0x88, 0x10, 0xFC, 0x50, 0x8C, 0x1C, 0xBD, 0xE2, 0xBA, 0x79, 0xA0, + 0xC2, 0x0D, 0x80, 0xF4, 0x86, 0x55, 0xE0, 0xC5, 0x0C, 0xDC, 0xF0, 0xC7, 0xF6, 0xEA, 0xF1, 0x8E, + 0x75, 0xC0, 0xE7, 0x49, 0xAD, 0x98, 0xCF, 0x44, 0xCA, 0x50, 0xA6, 0x2F, 0x25, 0xE3, 0xC7, 0xC9, + 0x40, 0x9F, 0x90, 0x87, 0x9C, 0x0C, 0x0E, 0x3A, 0x05, 0xA2, 0xEE, 0x63, 0xEF, 0xFB, 0x28, 0x85, + 0x8D, 0x68, 0xE8, 0x0F, 0x3F, 0x6B, 0x60, 0xCB, 0x6D, 0xB4, 0xE1, 0x0D, 0x00, 0x81, 0x03, 0xBF, + 0x08, 0xB2, 0x2C, 0x36, 0x4E, 0xBB, 0x4B, 0x5E, 0x40, 0xEE, 0xCB, 0xA4, 0x3D, 0x70, 0x70, 0x72, + 0x70, 0x8A, 0x74, 0x64, 0xF0, 0xCC, 0x4E, 0xD5, 0x86, 0xFE, 0x66, 0x21, 0x22, 0x83, 0x2E, 0xD8, + 0xE2, 0x18, 0xAC, 0x80, 0x1E, 0x15, 0x80, 0x84, 0x02, 0x0E, 0xF8, 0xE0, 0x16, 0x02, 0x61, 0xC2, + 0x32, 0xF8, 0xB1, 0x8F, 0x7A, 0xA0, 0xC3, 0x1B, 0xCD, 0x88, 0x85, 0x29, 0x46, 0x71, 0x8A, 0x4E, + 0xE0, 0xD9, 0x44, 0x64, 0x3A, 0x85, 0xA2, 0xA5, 0xA0, 0x00, 0x05, 0x40, 0x65, 0x28, 0x6B, 0x9A, + 0x4D, 0xA3, 0x17, 0x0C, 0x11, 0xDA, 0x38, 0x3A, 0xD2, 0xC4, 0xC9, 0xB4, 0xA6, 0x37, 0x6D, 0x4E, + 0x83, 0x70, 0xFA, 0xD3, 0xA0, 0xA6, 0x74, 0x87, 0x7F, 0x10, 0x0A, 0xF0, 0x88, 0xC7, 0x09, 0x36, + 0xA8, 0xF3, 0x0C, 0x61, 0x00, 0x09, 0x81, 0xC8, 0x40, 0x10, 0xF6, 0x90, 0x95, 0x35, 0x84, 0xD1, + 0x88, 0x42, 0xF4, 0x81, 0x10, 0x93, 0x18, 0xE2, 0x32, 0x4C, 0xB4, 0x86, 0x79, 0xCE, 0x53, 0x0C, + 0x13, 0x26, 0xA4, 0xB0, 0x9F, 0xC8, 0x02, 0x3D, 0x28, 0xE2, 0x8F, 0x38, 0xE8, 0x80, 0x0D, 0xF6, + 0x70, 0x68, 0xB5, 0x31, 0x61, 0x1B, 0xE6, 0xA8, 0x46, 0xAD, 0x1A, 0xE1, 0x88, 0x59, 0xE8, 0x22, + 0x23, 0x9A, 0x1E, 0xB6, 0xB6, 0x9D, 0xC8, 0x81, 0x2E, 0xBC, 0x84, 0x0C, 0x91, 0xC8, 0x62, 0x87, + 0x69, 0x31, 0x0D, 0x5E, 0xE8, 0x62, 0xD7, 0xDB, 0x4E, 0xB7, 0xBA, 0x35, 0x02, 0x87, 0x86, 0xC4, + 0x81, 0x22, 0xED, 0x86, 0xC4, 0x27, 0x12, 0xBB, 0xEE, 0x7A, 0xD7, 0x9B, 0x5C, 0xDE, 0x22, 0xC2, + 0x1B, 0x24, 0xB2, 0x47, 0x73, 0x39, 0x41, 0x15, 0xE8, 0xB6, 0x37, 0x41, 0x87, 0x50, 0x86, 0x39, + 0xCC, 0x41, 0x0C, 0x5A, 0x10, 0x01, 0x0F, 0x00, 0xE8, 0x4C, 0x5D, 0x36, 0xAD, 0x97, 0x10, 0x8F, + 0xB8, 0xC4, 0x7D, 0x19, 0xC0, 0x89, 0x47, 0xBC, 0xE2, 0x16, 0x77, 0x78, 0x44, 0xB8, 0x23, 0x87, + 0x30, 0x80, 0xA4, 0x05, 0x47, 0x20, 0xAA, 0x1E, 0xFE, 0xF7, 0xF6, 0x89, 0x97, 0x38, 0x21, 0x0A, + 0xDD, 0xAD, 0x77, 0x2E, 0x0B, 0x61, 0x8D, 0x43, 0xEE, 0x8E, 0x1E, 0xDE, 0x70, 0x84, 0x18, 0x84, + 0x06, 0x16, 0x9D, 0xB5, 0xAE, 0xAC, 0xBB, 0x7B, 0x87, 0x15, 0x16, 0x90, 0x83, 0xDF, 0x3A, 0xD2, + 0x1D, 0x41, 0x60, 0xC0, 0x29, 0x38, 0x49, 0x74, 0xA2, 0xFB, 0xA2, 0x99, 0x03, 0x81, 0x42, 0x1C, + 0xE4, 0xE0, 0xAD, 0x90, 0xB8, 0x2D, 0x02, 0x4D, 0x28, 0x88, 0x15, 0x54, 0xC2, 0x12, 0x7A, 0x3A, + 0xC1, 0x9E, 0x59, 0x70, 0xE3, 0xBA, 0x71, 0x47, 0xD6, 0xA4, 0xDC, 0xC3, 0x1C, 0xD6, 0xE0, 0x05, + 0x36, 0xCC, 0x61, 0xD2, 0xA4, 0xC4, 0x63, 0xE7, 0xAB, 0x99, 0xC3, 0x30, 0x52, 0xAA, 0x1C, 0x77, + 0x8C, 0x03, 0x1C, 0xDE, 0xD8, 0x0D, 0xBC, 0xD8, 0x9A, 0x8F, 0x53, 0x30, 0xC0, 0x08, 0x18, 0x74, + 0xE4, 0x38, 0x86, 0xE1, 0xAF, 0x0A, 0x68, 0xC2, 0x17, 0x0B, 0x4D, 0x8A, 0x3C, 0xB4, 0xD1, 0xD1, + 0x07, 0x71, 0x81, 0x23, 0x1E, 0x27, 0x25, 0x0A, 0x28, 0x00, 0x81, 0x0F, 0x10, 0xA9, 0x48, 0x5B, + 0x10, 0x84, 0xC9, 0x52, 0xE6, 0x18, 0xC8, 0x54, 0x42, 0x19, 0xEA, 0xC6, 0x1D, 0xDB, 0x7B, 0x32, + 0x4C, 0x4C, 0x2B, 0xC0, 0x04, 0xB4, 0x4D, 0x4A, 0x71, 0x8D, 0xD9, 0x26, 0x68, 0x26, 0x85, 0x76, + 0x9B, 0x7E, 0x00, 0x1B, 0xC8, 0xE6, 0x8E, 0x1A, 0xCC, 0x66, 0x02, 0x9A, 0xA0, 0x3B, 0x4F, 0xE4, + 0x41, 0xD1, 0xD9, 0xCC, 0x40, 0x1B, 0x3D, 0xAB, 0x85, 0x04, 0x45, 0x9D, 0x97, 0x8F, 0x68, 0x6C, + 0x05, 0x1C, 0x8B, 0x40, 0x4C, 0x51, 0x60, 0x18, 0x19, 0x30, 0xA1, 0x12, 0xF2, 0x84, 0x65, 0x4E, + 0xED, 0x89, 0x4F, 0x1B, 0xA4, 0xDC, 0x26, 0xB9, 0x6C, 0xD7, 0x21, 0x0E, 0xD1, 0x87, 0xB0, 0x12, + 0xE4, 0x0C, 0x96, 0x98, 0xBE, 0xF6, 0xC5, 0xFE, 0xC0, 0x5F, 0xDB, 0x8C, 0x42, 0xF6, 0xEF, 0x20, + 0x66, 0xA7, 0x15, 0x2C, 0x81, 0x53, 0xF4, 0xC4, 0x1B, 0xD6, 0x27, 0xC8, 0x6C, 0xCF, 0x32, 0x7A, + 0x8C, 0x0B, 0x44, 0x01, 0x5A, 0xB0, 0x68, 0x3E, 0xDA, 0xFF, 0x00, 0x25, 0x6C, 0x9E, 0x27, 0xEE, + 0xA8, 0xDD, 0x02, 0x90, 0x10, 0x8B, 0xAF, 0xC5, 0xE3, 0x0E, 0xD3, 0xA4, 0x10, 0x6B, 0x53, 0x47, + 0xBF, 0x67, 0x4A, 0x10, 0xB0, 0x5C, 0x05, 0x10, 0x75, 0x78, 0xF1, 0x06, 0x97, 0x80, 0x32, 0x7F, + 0x44, 0x04, 0x90, 0x21, 0x19, 0x5C, 0x00, 0x54, 0x17, 0x11, 0x08, 0xBD, 0x21, 0x0F, 0x18, 0xD6, + 0x13, 0xED, 0x67, 0x1B, 0x81, 0x50, 0x76, 0xF9, 0x90, 0x7F, 0xB1, 0x31, 0x04, 0xD7, 0x64, 0x76, + 0xB5, 0x27, 0x11, 0x6F, 0x81, 0x14, 0xF2, 0xF0, 0x56, 0xC5, 0x71, 0x06, 0x49, 0xD3, 0x13, 0xEF, + 0x10, 0x55, 0x0B, 0x83, 0x14, 0x67, 0xE5, 0x14, 0x13, 0x90, 0x06, 0x87, 0x34, 0x0E, 0x22, 0x65, + 0x4C, 0x33, 0xD0, 0x75, 0x3D, 0x11, 0x0F, 0x5A, 0xC0, 0x06, 0xF2, 0x67, 0x5B, 0x01, 0x08, 0x11, + 0x30, 0xA0, 0x17, 0xBF, 0x67, 0x01, 0x1E, 0x23, 0x53, 0x02, 0x90, 0x00, 0x96, 0x21, 0x04, 0x95, + 0x80, 0x32, 0x2F, 0x11, 0x13, 0x3C, 0xD5, 0x00, 0x13, 0x70, 0x4B, 0x14, 0x54, 0x16, 0x22, 0x34, + 0x42, 0xEA, 0x50, 0x22, 0xCE, 0x14, 0x4E, 0xA8, 0x03, 0x5C, 0x0E, 0x55, 0x3E, 0xB2, 0x27, 0x0F, + 0x6C, 0xD0, 0x22, 0xC6, 0x45, 0x10, 0x13, 0x90, 0x02, 0x97, 0xD4, 0x41, 0x03, 0x11, 0x08, 0xB2, + 0xE7, 0x0C, 0x1B, 0x30, 0x01, 0x58, 0x30, 0x06, 0xCD, 0x80, 0x7F, 0xAE, 0x77, 0x17, 0x43, 0xC1, + 0x00, 0x66, 0x58, 0x1C, 0xDB, 0xE4, 0x48, 0xBC, 0xB0, 0x48, 0xBC, 0x85, 0x17, 0x4C, 0x00, 0x12, + 0xF7, 0x54, 0x12, 0x31, 0x65, 0x1D, 0xFE, 0x02, 0x80, 0x02, 0x79, 0x64, 0x7C, 0x8A, 0x21, 0x4B, + 0xB4, 0x84, 0x01, 0x18, 0x00, 0x38, 0x24, 0xF0, 0x7C, 0x17, 0xB1, 0x00, 0x0C, 0x90, 0x02, 0xDA, + 0x70, 0x66, 0x0D, 0x25, 0x1C, 0x65, 0x30, 0x0E, 0x59, 0x38, 0x0F, 0x73, 0x10, 0x1B, 0x63, 0x40, + 0x76, 0x17, 0x76, 0x0F, 0xD2, 0x24, 0x3A, 0x16, 0x27, 0x02, 0x10, 0xE7, 0x4C, 0xC3, 0x80, 0x73, + 0xCB, 0x84, 0x74, 0x12, 0xA1, 0x01, 0xAD, 0x78, 0x16, 0x1F, 0x62, 0x86, 0x14, 0x21, 0x03, 0x3F, + 0xF0, 0x2D, 0x1C, 0xE3, 0x31, 0xD4, 0x31, 0x18, 0x01, 0x40, 0x00, 0x4B, 0x70, 0x37, 0x6F, 0xF0, + 0x6D, 0x7E, 0x20, 0x09, 0x20, 0xD0, 0x53, 0x81, 0xF3, 0x06, 0x98, 0x37, 0x10, 0x8F, 0x00, 0x08, + 0x92, 0x30, 0x0B, 0x3A, 0x26, 0x11, 0x65, 0xA0, 0x0D, 0x5F, 0xC6, 0x0E, 0x73, 0xD0, 0x7D, 0x43, + 0x10, 0x08, 0xEC, 0x90, 0x41, 0xE0, 0xD0, 0x1C, 0x77, 0xC1, 0x39, 0x9D, 0x91, 0x85, 0x7D, 0xD0, + 0x7D, 0x04, 0x75, 0x0A, 0xA5, 0x28, 0x7B, 0xAF, 0xE8, 0x14, 0x63, 0x70, 0x7F, 0xF3, 0x60, 0x0D, + 0xD6, 0xC0, 0x21, 0x3D, 0x33, 0x50, 0x15, 0x91, 0x13, 0x81, 0x97, 0x14, 0x98, 0x73, 0x86, 0x04, + 0x81, 0x5C, 0x47, 0x20, 0x43, 0x1F, 0x23, 0x37, 0xD6, 0x71, 0x00, 0x4D, 0xE0, 0x09, 0x02, 0x81, + 0x02, 0x91, 0xD0, 0x1D, 0x0D, 0xA8, 0x07, 0x93, 0x81, 0x00, 0x0C, 0x80, 0x06, 0xAA, 0x70, 0x0D, + 0x03, 0x31, 0x09, 0x92, 0xB0, 0x0B, 0xDB, 0x90, 0x0B, 0xA7, 0xD0, 0x6C, 0x10, 0xB1, 0x39, 0xE3, + 0x70, 0x59, 0x00, 0x82, 0x0D, 0x41, 0x40, 0x39, 0xB5, 0x00, 0x66, 0x39, 0xE3, 0x4C, 0xDA, 0xB8, + 0x8D, 0x9E, 0x63, 0x5A, 0xA2, 0x83, 0x05, 0xBC, 0x30, 0x0E, 0xF2, 0xF0, 0x89, 0xF3, 0x60, 0x1A, + 0xEF, 0x90, 0x0D, 0x85, 0xE7, 0xFE, 0x4F, 0x17, 0x96, 0x0F, 0x9B, 0xB8, 0x00, 0x13, 0x70, 0x4D, + 0xC0, 0x11, 0x88, 0xB6, 0xF1, 0x07, 0xB8, 0xC7, 0x13, 0x20, 0x74, 0x16, 0xDA, 0x90, 0x83, 0x13, + 0xC1, 0x02, 0xFB, 0x78, 0x80, 0x76, 0xF5, 0x8B, 0x2A, 0x20, 0x08, 0x03, 0xA1, 0x07, 0xDF, 0x35, + 0x0B, 0xB6, 0x70, 0x6C, 0x76, 0x40, 0x02, 0x0C, 0x40, 0x02, 0x95, 0x00, 0x54, 0xA8, 0xD0, 0x09, + 0xB3, 0xB0, 0x0D, 0xEF, 0x30, 0x0E, 0xCD, 0x60, 0x0A, 0xD1, 0x98, 0x5E, 0xA7, 0x10, 0x0E, 0x9B, + 0x02, 0x20, 0x33, 0x22, 0x1C, 0x63, 0x80, 0x0D, 0x07, 0x34, 0x0E, 0xA1, 0x53, 0x1B, 0x5A, 0x40, + 0x8D, 0x5F, 0x86, 0x0E, 0x6B, 0xA9, 0x10, 0x4D, 0xE1, 0x01, 0x99, 0x98, 0x41, 0xE3, 0x60, 0x04, + 0x7B, 0xB8, 0x00, 0x43, 0x30, 0x0C, 0x9F, 0x28, 0x0F, 0x71, 0xF9, 0x0F, 0x6B, 0x20, 0x0F, 0xF4, + 0xB0, 0x81, 0x11, 0x51, 0x1F, 0x5F, 0xE3, 0x0D, 0x78, 0xB9, 0x7A, 0x67, 0x31, 0x0E, 0x1D, 0x29, + 0x11, 0x28, 0xC0, 0x02, 0x3E, 0xD0, 0x8F, 0x83, 0x91, 0x01, 0x5E, 0x10, 0x62, 0xFF, 0x80, 0x08, + 0x4B, 0x27, 0x09, 0xB6, 0xF0, 0x3C, 0xD8, 0x45, 0x06, 0x7A, 0xF0, 0x06, 0xAE, 0x80, 0x09, 0x02, + 0x81, 0x09, 0x92, 0xD0, 0x09, 0xC4, 0x20, 0x5E, 0xEF, 0x60, 0x0E, 0xD9, 0x90, 0x0B, 0x99, 0x70, + 0x6D, 0x8C, 0xF3, 0x0C, 0x4C, 0xC6, 0x7D, 0x8C, 0x34, 0x07, 0x9C, 0x22, 0x96, 0xCE, 0x00, 0x88, + 0x03, 0x21, 0x02, 0xA7, 0x60, 0x59, 0x01, 0x42, 0x31, 0x67, 0x38, 0x06, 0xE0, 0x00, 0x66, 0xD7, + 0x58, 0x1C, 0x63, 0x30, 0x0E, 0x67, 0xA6, 0x0D, 0xA1, 0x71, 0x17, 0x8D, 0x36, 0x69, 0xF8, 0xF8, + 0x05, 0xA6, 0xF0, 0x0E, 0xA7, 0xE3, 0x0E, 0x73, 0x60, 0x17, 0xC7, 0x71, 0x73, 0x3D, 0xE1, 0x0E, + 0xFB, 0x65, 0x5C, 0xC1, 0xFE, 0x03, 0x18, 0x03, 0x50, 0x00, 0x32, 0x20, 0x2E, 0xA1, 0xE4, 0x07, + 0xA9, 0xD0, 0x3C, 0xE0, 0xD1, 0x06, 0xD1, 0x13, 0x05, 0xAD, 0x26, 0x10, 0x2A, 0x51, 0x0A, 0xDB, + 0x60, 0x0F, 0xDC, 0xC3, 0x0E, 0xE3, 0xD0, 0x24, 0xE6, 0x65, 0x91, 0xB7, 0xB3, 0x06, 0xD1, 0x70, + 0x9F, 0x4E, 0x46, 0x0D, 0x87, 0x40, 0x23, 0x43, 0x80, 0x04, 0x63, 0x30, 0x0C, 0x91, 0x32, 0x29, + 0xA7, 0x90, 0x39, 0x1A, 0x97, 0x02, 0xB5, 0x20, 0x96, 0x9B, 0x22, 0x96, 0xA7, 0xB0, 0x01, 0x1C, + 0xD6, 0x34, 0x81, 0x50, 0x65, 0x08, 0x72, 0x59, 0x1C, 0x29, 0x1C, 0xE0, 0x04, 0x66, 0xE9, 0xB0, + 0x5B, 0xFD, 0x74, 0x06, 0xBC, 0xD0, 0x5A, 0x8A, 0x92, 0x21, 0x35, 0xF8, 0x0E, 0xFF, 0x74, 0x3A, + 0xC3, 0xE0, 0x01, 0xC5, 0x12, 0x3C, 0x07, 0x40, 0x99, 0x70, 0x60, 0x31, 0x4C, 0x00, 0x09, 0xBF, + 0x90, 0x23, 0x2E, 0x94, 0x07, 0xD2, 0x33, 0x3D, 0x78, 0x56, 0x04, 0x5D, 0x40, 0x0B, 0xF6, 0xC0, + 0x0F, 0xDB, 0x03, 0x0F, 0x91, 0xD3, 0x24, 0x14, 0xF9, 0x95, 0x10, 0xF1, 0x05, 0xA7, 0x30, 0x64, + 0x73, 0xD2, 0x0B, 0x72, 0x22, 0x64, 0xF8, 0x59, 0x27, 0xBC, 0x40, 0x0D, 0x56, 0x81, 0x56, 0x1A, + 0xD0, 0x07, 0x01, 0x4A, 0x29, 0xFD, 0x22, 0x06, 0x62, 0x30, 0x07, 0x87, 0x60, 0x1F, 0xB5, 0x29, + 0x96, 0xE4, 0x90, 0x09, 0x18, 0x92, 0x03, 0x67, 0x30, 0x06, 0xA7, 0x40, 0x0D, 0x01, 0xC2, 0x9B, + 0xE2, 0x70, 0x0A, 0x73, 0xA0, 0x05, 0x5C, 0xB8, 0x4B, 0xEE, 0x42, 0x0D, 0xE3, 0x60, 0x60, 0xEC, + 0x30, 0x0C, 0x77, 0xA0, 0x05, 0x0A, 0xF3, 0x07, 0x54, 0x9A, 0x0E, 0x4E, 0x15, 0x8E, 0xF3, 0x20, + 0x2B, 0xF7, 0x02, 0x1B, 0x6A, 0xF3, 0x03, 0xE9, 0x49, 0x10, 0x42, 0x10, 0x09, 0x39, 0x72, 0x0C, + 0xA4, 0xC0, 0x09, 0xFE, 0x76, 0x40, 0x05, 0x3F, 0x12, 0x24, 0x82, 0xD0, 0x0D, 0x2F, 0xD6, 0x0E, + 0xFE, 0xD0, 0x0F, 0x7D, 0xB6, 0x95, 0x3C, 0x7A, 0x0A, 0x60, 0x54, 0x44, 0xB5, 0xF0, 0x25, 0x96, + 0x7A, 0xA9, 0x44, 0xFA, 0x63, 0x43, 0x16, 0x26, 0x13, 0xA6, 0x00, 0x12, 0xA0, 0x05, 0xA7, 0x80, + 0x9F, 0x4A, 0x06, 0x29, 0xCF, 0x60, 0x09, 0x52, 0xE0, 0x08, 0x93, 0x42, 0x0D, 0x6B, 0x89, 0x04, + 0xBC, 0x90, 0x29, 0xB5, 0x39, 0x96, 0xE4, 0x00, 0x0E, 0xD4, 0xE0, 0x8D, 0x10, 0x81, 0x05, 0x07, + 0xA2, 0x20, 0x0F, 0x04, 0x92, 0x18, 0xF2, 0x05, 0xD4, 0x90, 0x0E, 0x6C, 0x4A, 0x92, 0x19, 0xB4, + 0x5B, 0xF8, 0x68, 0x7C, 0xE3, 0x79, 0x0C, 0xA0, 0x80, 0x5D, 0x2A, 0xA6, 0x03, 0x75, 0x26, 0x03, + 0xE9, 0xC9, 0x04, 0x9F, 0xC0, 0x0F, 0x8E, 0x5A, 0x0F, 0xEC, 0xE0, 0x0D, 0x4E, 0x42, 0x91, 0x99, + 0x40, 0x0B, 0xAE, 0x42, 0x3E, 0x70, 0xD2, 0x0A, 0x8A, 0x26, 0x06, 0x1B, 0x20, 0x05, 0x73, 0xD0, + 0x07, 0xD4, 0x27, 0x06, 0x2F, 0xF0, 0x00, 0x0A, 0xA0, 0x01, 0x46, 0x20, 0x05, 0xEA, 0x6A, 0x04, + 0x71, 0xB8, 0x87, 0x05, 0xD1, 0x14, 0x13, 0xA0, 0x01, 0x33, 0x60, 0x04, 0x62, 0x10, 0x2C, 0x52, + 0x60, 0x04, 0x33, 0x20, 0x01, 0x66, 0xB8, 0x01, 0x33, 0xD0, 0xAF, 0x33, 0x40, 0x2C, 0x2F, 0xE0, + 0xAF, 0x02, 0x3B, 0xB0, 0xFE, 0xCA, 0x86, 0x06, 0x21, 0xB0, 0x41, 0x90, 0xB0, 0x0A, 0xAB, 0xB0, + 0x08, 0x15, 0xB0, 0x33, 0xA0, 0xB0, 0x35, 0x10, 0xB1, 0x12, 0x3B, 0xB1, 0x29, 0x40, 0x8E, 0x0A, + 0xF1, 0x03, 0x68, 0x50, 0x0C, 0xAF, 0x10, 0x67, 0x76, 0xE0, 0x04, 0x37, 0x10, 0x24, 0x32, 0xC4, + 0x05, 0x78, 0x56, 0x84, 0x7B, 0x56, 0x0F, 0xE9, 0xA0, 0x0D, 0x5D, 0xB9, 0x08, 0x96, 0xA0, 0x68, + 0xA1, 0xE0, 0xFE, 0xA3, 0x0A, 0x51, 0x06, 0x84, 0x80, 0x44, 0x99, 0x00, 0x04, 0x9C, 0xA6, 0x60, + 0x99, 0x26, 0x1B, 0x9B, 0x06, 0x21, 0x94, 0x16, 0x6A, 0xB4, 0xF1, 0x50, 0x3C, 0x6B, 0xB3, 0x3C, + 0xAB, 0x93, 0x3F, 0x10, 0x09, 0xA0, 0x70, 0x5D, 0x6D, 0x00, 0x48, 0x41, 0x42, 0x01, 0x14, 0x70, + 0x01, 0x44, 0x02, 0x03, 0x68, 0x20, 0x5E, 0xEC, 0x00, 0x1F, 0xB5, 0x32, 0x7D, 0x99, 0x90, 0x6B, + 0x44, 0x94, 0x5E, 0x62, 0xE0, 0x6B, 0x84, 0x70, 0x08, 0xB8, 0x29, 0x70, 0x5E, 0x7B, 0x11, 0x28, + 0xB0, 0x04, 0xA9, 0xC0, 0x08, 0xC7, 0x36, 0x05, 0x44, 0xD0, 0x02, 0x8B, 0x17, 0x45, 0x7E, 0x70, + 0x68, 0x32, 0xA0, 0x0A, 0xF0, 0x60, 0x63, 0xCC, 0xB0, 0x09, 0x8D, 0xC0, 0x07, 0xBD, 0xA6, 0x6B, + 0x14, 0x11, 0x03, 0xBD, 0x36, 0x4F, 0x7D, 0x20, 0x02, 0xB6, 0xF8, 0xB5, 0x7E, 0x3B, 0x94, 0x68, + 0xC0, 0x09, 0x84, 0x10, 0x85, 0xB4, 0x04, 0x02, 0xD0, 0x45, 0x10, 0x21, 0xF0, 0x03, 0xD2, 0x00, + 0xB7, 0xB5, 0xC2, 0x07, 0x7D, 0x20, 0x0A, 0x57, 0x5B, 0x11, 0x13, 0xF0, 0x02, 0x2F, 0x30, 0x01, + 0x7D, 0xFB, 0xB7, 0x98, 0x0B, 0x11, 0x2C, 0x20, 0x09, 0x84, 0xC0, 0x06, 0x55, 0xD0, 0x03, 0x38, + 0xB0, 0x05, 0x90, 0x40, 0x6F, 0xC7, 0x85, 0x06, 0xE1, 0x00, 0x1F, 0x72, 0xDB, 0x9A, 0x0E, 0xA9, + 0x11, 0x3D, 0x9B, 0xB9, 0xAE, 0x6B, 0x10, 0x2C, 0xB0, 0x04, 0xE7, 0x52, 0x45, 0x90, 0x40, 0x0B, + 0xA2, 0xF2, 0x09, 0x4D, 0x12, 0x59, 0xAE, 0xF9, 0xBA, 0xBC, 0x7B, 0x2D, 0x2C, 0xF0, 0x06, 0x60, + 0x90, 0x07, 0xA5, 0x20, 0x6E, 0x0A, 0x11, 0x3C, 0xBB, 0xE0, 0x0B, 0xBA, 0x20, 0x9A, 0xBD, 0xBB, + 0xBC, 0xD6, 0xA2, 0x02, 0x6F, 0x40, 0xBC, 0x12, 0xA1, 0x02, 0x7D, 0xCA, 0xBC, 0xD4, 0x9B, 0x11, + 0x01, 0x01, 0x01, 0x00, 0x3B, }; #ifdef ROMFS_DIRENTRY_HEAD - static const ROMFS_DIRENTRY romfs_img_ugfx_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "romfs_img_ugfx.bmp", 26322, romfs_img_ugfx }; + static const ROMFS_DIRENTRY romfs_img_ugfx_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "romfs_img_ugfx.gif", 4629, romfs_img_ugfx }; #undef ROMFS_DIRENTRY_HEAD #define ROMFS_DIRENTRY_HEAD &romfs_img_ugfx_dir #endif diff --git a/demos/modules/gwin/widgets/rsc/romfs_img_ugfx.bmp b/demos/modules/gwin/widgets/rsc/romfs_img_ugfx.bmp deleted file mode 100644 index 354c2bf5c5d41d4839698038dc3f9516086a87ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26322 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 diff --git a/demos/modules/gwin/widgets/rsc/romfs_img_ugfx.gif b/demos/modules/gwin/widgets/rsc/romfs_img_ugfx.gif new file mode 100644 index 0000000000000000000000000000000000000000..89aa28fa85bf89098cbdd8348e4bd02ab6471ab9 GIT binary patch literal 4629 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 literal 0 HcmV?d00001 From 8f6c04e12027c88ad8e8d31cc5d29806dd0424ba Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 16:43:32 +1000 Subject: [PATCH 22/25] Image bug-fix that caused crashes with the new GFILE/GWIN images. --- src/gdisp/image.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gdisp/image.c b/src/gdisp/image.c index 2b8395b0..5a743905 100644 --- a/src/gdisp/image.c +++ b/src/gdisp/image.c @@ -174,7 +174,7 @@ void gdispImageClose(gdispImage *img) { } bool_t gdispImageIsOpen(gdispImage *img) { - return img->fns != 0; + return img->type != GDISP_IMAGE_TYPE_UNKNOWN && img->fns != 0; } void gdispImageSetBgColor(gdispImage *img, color_t bgcolor) { From 558ee7282d9f753519d7a813f1b9206c31e6f247 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 16:44:11 +1000 Subject: [PATCH 23/25] Make some GWIN constants into #defines --- src/gwin/button.c | 6 ++++-- src/gwin/radio.c | 15 +++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/gwin/button.c b/src/gwin/button.c index 59c7f689..f34e4ba3 100644 --- a/src/gwin/button.c +++ b/src/gwin/button.c @@ -25,6 +25,8 @@ #define RND_CNR_SIZE 5 // Rounded corner size for rounded buttons #define ARROWHEAD_DIVIDER 4 // A quarter of the height for the arrow head #define ARROWBODY_DIVIDER 4 // A quarter of the width for the arrow body +#define TOP_FADE 50 // (TOP_FADE/255)% fade to white for top of button +#define BOTTOM_FADE 25 // (BOTTOM_FADE/255)% fade to black for bottom of button // Our pressed state #define GBUTTON_FLG_PRESSED (GWIN_FIRST_CONTROL_FLAG<<0) @@ -189,8 +191,8 @@ static const GColorSet *getDrawColors(GWidgetObject *gw) { pcol = getDrawColors(gw); /* Fill the box blended from variants of the fill color */ - tcol = gdispBlendColor(White, pcol->fill, 50); - bcol = gdispBlendColor(Black, pcol->fill, 25); + tcol = gdispBlendColor(White, pcol->fill, TOP_FADE); + bcol = gdispBlendColor(Black, pcol->fill, BOTTOM_FADE); dalpha = FIXED(255)/gw->g.height; for(alpha = 0, i = 0; i < gw->g.height; i++, alpha += dalpha) gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+i, gw->g.x+gw->g.width-2, gw->g.y+i, gdispBlendColor(bcol, tcol, NONFIXED(alpha))); diff --git a/src/gwin/radio.c b/src/gwin/radio.c index 882be503..8dc3ba6b 100644 --- a/src/gwin/radio.c +++ b/src/gwin/radio.c @@ -21,7 +21,10 @@ #include "src/gwin/class_gwin.h" -#define GRADIO_TAB_CNR 3 +#define GRADIO_TAB_CNR 3 // Diagonal corner on active tab +#define GRADIO_TOP_FADE 50 // (GRADIO_TOP_FADE/255)% fade to white for top of tab/button +#define GRADIO_BOTTOM_FADE 25 // (GRADIO_BOTTOM_FADE/255)% fade to black for bottom of tab/button +#define GRADIO_OUTLINE_FADE 128 // (GRADIO_OUTLINE_FADE/255)% fade to background for active tab edge // Our pressed state #define GRADIO_FLG_PRESSED (GWIN_FIRST_CONTROL_FLAG<<0) @@ -238,8 +241,8 @@ void gwinRadioDraw_Radio(GWidgetObject *gw, void *param) { pcol = getDrawColors(gw); /* Fill the box blended from variants of the fill color */ - tcol = gdispBlendColor(White, pcol->fill, 50); - bcol = gdispBlendColor(Black, pcol->fill, 25); + tcol = gdispBlendColor(White, pcol->fill, GRADIO_TOP_FADE); + bcol = gdispBlendColor(Black, pcol->fill, GRADIO_BOTTOM_FADE); dalpha = FIXED(255)/gw->g.height; for(alpha = 0, i = 0; i < gw->g.height; i++, alpha += dalpha) gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+i, gw->g.x+gw->g.width-2, gw->g.y+i, gdispBlendColor(bcol, tcol, NONFIXED(alpha))); @@ -260,15 +263,15 @@ void gwinRadioDraw_Radio(GWidgetObject *gw, void *param) { pcol = getDrawColors(gw); if ((gw->g.flags & GRADIO_FLG_PRESSED)) { - tcol = gdispBlendColor(pcol->edge, gw->pstyle->background, 128); + tcol = gdispBlendColor(pcol->edge, gw->pstyle->background, GRADIO_OUTLINE_FADE); gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, pcol->text, gw->g.bgcolor, justifyCenter); gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y, gw->g.x+gw->g.width-(GRADIO_TAB_CNR+1), gw->g.y, tcol); gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-(GRADIO_TAB_CNR+1), gw->g.y, gw->g.x+gw->g.width-1, gw->g.y+GRADIO_TAB_CNR, tcol); gdispGDrawLine(gw->g.display, gw->g.x+gw->g.width-1, gw->g.y+GRADIO_TAB_CNR, gw->g.x+gw->g.width-1, gw->g.y+gw->g.height-1, tcol); } else { /* Fill the box blended from variants of the fill color */ - tcol = gdispBlendColor(White, pcol->fill, 50); - bcol = gdispBlendColor(Black, pcol->fill, 25); + tcol = gdispBlendColor(White, pcol->fill, GRADIO_TOP_FADE); + bcol = gdispBlendColor(Black, pcol->fill, GRADIO_BOTTOM_FADE); dalpha = FIXED(255)/gw->g.height; for(alpha = 0, i = 0; i < gw->g.height; i++, alpha += dalpha) gdispGDrawLine(gw->g.display, gw->g.x, gw->g.y+i, gw->g.x+gw->g.width-2, gw->g.y+i, gdispBlendColor(bcol, tcol, NONFIXED(alpha))); From b37370bdb5e3f5ffa325619c78d31c9993e79745 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 16:45:26 +1000 Subject: [PATCH 24/25] Added extra safety to GWIN objects --- src/gwin/gimage.c | 8 ++ src/gwin/label.c | 85 ++++++++++---------- src/gwin/list.c | 200 ++++++++++++++++++++++++---------------------- 3 files changed, 157 insertions(+), 136 deletions(-) diff --git a/src/gwin/gimage.c b/src/gwin/gimage.c index 953aefc3..fdc6df84 100644 --- a/src/gwin/gimage.c +++ b/src/gwin/gimage.c @@ -140,6 +140,10 @@ GHandle gwinGImageCreate(GDisplay *g, GImageObject *gobj, GWindowInit *pInit) { } bool_t gwinImageOpenGFile(GHandle gh, GFILE *f) { + // is it a valid handle? + if (gh->vmt != (gwinVMT *)&imageVMT) + return FALSE; + if (gdispImageIsOpen(&widget(gh)->image)) gdispImageClose(&widget(gh)->image); @@ -159,6 +163,10 @@ bool_t gwinImageOpenGFile(GHandle gh, GFILE *f) { } gdispImageError gwinImageCache(GHandle gh) { + // is it a valid handle? + if (gh->vmt != (gwinVMT *)&imageVMT) + return GDISP_IMAGE_ERR_BADFORMAT; + return gdispImageCache(&widget(gh)->image); } diff --git a/src/gwin/label.c b/src/gwin/label.c index 574dc8b7..8960300b 100644 --- a/src/gwin/label.c +++ b/src/gwin/label.c @@ -45,44 +45,7 @@ static coord_t getheight(const char *text, font_t font, coord_t maxwidth) { return gdispGetFontMetric(font, fontHeight); } -static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) { - coord_t w, h; - (void) param; - - w = (gw->g.flags & GLABEL_FLG_WAUTO) ? getwidth(gw->text, gw->g.font, gdispGGetWidth(gw->g.display) - gw->g.x) : gw->g.width; - h = (gw->g.flags & GLABEL_FLG_HAUTO) ? getheight(gw->text, gw->g.font, gdispGGetWidth(gw->g.display) - gw->g.x) : gw->g.height; - - if (gw->g.width != w || gw->g.height != h) { - gwinResize(&gw->g, w, h); - - return; - } - - #if GWIN_LABEL_ATTRIBUTE - if (gw2obj->attr != 0) { - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw2obj->attr, gw->g.font, - (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, - justifyLeft); - - gdispGFillStringBox(gw->g.display, gw->g.x + gw2obj->tab, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, - (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, - justifyLeft); - } else { - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, - (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, - justifyLeft); - - } - #else - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, - (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, - justifyLeft); - #endif - - // render the border (if any) - if (gw->g.flags & GLABEL_FLG_BORDER) - gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.edge : gw->pstyle->disabled.edge); -} +static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param); static const gwidgetVMT labelVMT = { { @@ -138,9 +101,6 @@ GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit) if (!(widget = (GLabelObject *)_gwidgetCreate(g, &widget->w, pInit, &labelVMT))) return 0; - // no borders by default - flags &=~ GLABEL_FLG_BORDER; - #if GWIN_LABEL_ATTRIBUTE widget->tab = 0; widget->attr = 0; @@ -176,6 +136,49 @@ void gwinLabelSetBorder(GHandle gh, bool_t border) { } #endif // GWIN_LABEL_ATTRIBUTE +static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) { + coord_t w, h; + (void) param; + + // is it a valid handle? + if (gw->g.vmt != (gwinVMT *)&labelVMT) + return; + + w = (gw->g.flags & GLABEL_FLG_WAUTO) ? getwidth(gw->text, gw->g.font, gdispGGetWidth(gw->g.display) - gw->g.x) : gw->g.width; + h = (gw->g.flags & GLABEL_FLG_HAUTO) ? getheight(gw->text, gw->g.font, gdispGGetWidth(gw->g.display) - gw->g.x) : gw->g.height; + + if (gw->g.width != w || gw->g.height != h) { + gwinResize(&gw->g, w, h); + + return; + } + + #if GWIN_LABEL_ATTRIBUTE + if (gw2obj->attr != 0) { + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw2obj->attr, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + + gdispGFillStringBox(gw->g.display, gw->g.x + gw2obj->tab, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + } else { + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + + } + #else + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font, + (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background, + justifyLeft); + #endif + + // render the border (if any) + if (gw->g.flags & GLABEL_FLG_BORDER) + gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, (gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.edge : gw->pstyle->disabled.edge); +} + #endif // GFX_USE_GWIN && GFX_NEED_LABEL /** @} */ diff --git a/src/gwin/list.c b/src/gwin/list.c index cb17b671..788e8828 100644 --- a/src/gwin/list.c +++ b/src/gwin/list.c @@ -76,101 +76,7 @@ static void sendListEvent(GWidgetObject *gw, int item) { } } -static void gwinListDefaultDraw(GWidgetObject* gw, void* param) { - (void)param; - - #if GDISP_NEED_CONVEX_POLYGON - static const point upArrow[] = { {0, ARROW}, {ARROW, ARROW}, {ARROW/2, 0} }; - static const point downArrow[] = { {0, 0}, {ARROW, 0}, {ARROW/2, ARROW} }; - #endif - - const gfxQueueASyncItem* qi; - int i; - coord_t x, y, iheight, iwidth; - color_t fill; - const GColorSet * ps; - #if GWIN_NEED_LIST_IMAGES - coord_t sy; - #endif - - // don't render if render has been disabled - if (!(gw->g.flags & GLIST_FLG_ENABLERENDER)) - return; - - ps = (gw->g.flags & GWIN_FLG_ENABLED) ? &gw->pstyle->enabled : &gw->pstyle->disabled; - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + VERTICAL_PADDING; - x = 1; - - // the scroll area - if (gw->g.flags & GLIST_FLG_SCROLLSMOOTH) { - iwidth = gw->g.width - 2 - 4; - if (gw2obj->cnt > 0) { - int max_scroll_value = gw2obj->cnt * iheight - gw->g.height-2; - if (max_scroll_value > 0) { - int bar_height = (gw->g.height-2) * (gw->g.height-2) / (gw2obj->cnt * iheight); - gdispGFillArea(gw->g.display, gw->g.x + gw->g.width-4, gw->g.y + 1, 2, gw->g.height-1, gw->pstyle->background); - gdispGFillArea(gw->g.display, gw->g.x + gw->g.width-4, gw->g.y + gw2obj->top * ((gw->g.height-2)-bar_height) / max_scroll_value, 2, bar_height, ps->edge); - } - } - } else if ((gw2obj->cnt > (gw->g.height-2) / iheight) || (gw->g.flags & GLIST_FLG_SCROLLALWAYS)) { - iwidth = gw->g.width - (SCROLLWIDTH+3); - gdispGFillArea(gw->g.display, gw->g.x+iwidth+2, gw->g.y+1, SCROLLWIDTH, gw->g.height-2, gdispBlendColor(ps->fill, gw->pstyle->background, 128)); - gdispGDrawLine(gw->g.display, gw->g.x+iwidth+1, gw->g.y+1, gw->g.x+iwidth+1, gw->g.y+gw->g.height-2, ps->edge); - #if GDISP_NEED_CONVEX_POLYGON - gdispGFillConvexPoly(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+(ARROW/2+1), upArrow, 3, ps->fill); - gdispGFillConvexPoly(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+gw->g.height-(ARROW+ARROW/2+1), downArrow, 3, ps->fill); - #else - #warning "GWIN: Lists display better when GDISP_NEED_CONVEX_POLGON is turned on" - gdispGFillArea(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+(ARROW/2+1), ARROW, ARROW, ps->fill); - gdispGFillArea(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+gw->g.height-(ARROW+ARROW/2+1), ARROW, ARROW, ps->fill); - #endif - } else - iwidth = gw->g.width - 2; - - #if GWIN_NEED_LIST_IMAGES - if ((gw->g.flags & GLIST_FLG_HASIMAGES)) { - x += iheight; - iwidth -= iheight; - } - #endif - - - // Find the top item - for (qi = gfxQueueASyncPeek(&gw2obj->list_head), i = iheight - 1; i < gw2obj->top && qi; qi = gfxQueueASyncNext(qi), i+=iheight); - - // the list frame - gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, ps->edge); - - // Set the clipping region so we do not override the frame. - gdispGSetClip(gw->g.display, gw->g.x+1, gw->g.y+1, gw->g.width-2, gw->g.height-2); - - // Draw until we run out of room or items - for (y = 1-(gw2obj->top%iheight); y < gw->g.height-2 && qi; qi = gfxQueueASyncNext(qi), y += iheight) { - fill = (qi2li->flags & GLIST_FLG_SELECTED) ? ps->fill : gw->pstyle->background; - gdispGFillArea(gw->g.display, gw->g.x+1, gw->g.y+y, iwidth, iheight, fill); - #if GWIN_NEED_LIST_IMAGES - if ((gw->g.flags & GLIST_FLG_HASIMAGES)) { - // Clear the image area - if (qi2li->pimg && gdispImageIsOpen(qi2li->pimg)) { - // Calculate which image - sy = (qi2li->flags & GLIST_FLG_SELECTED) ? 0 : (iheight-VERTICAL_PADDING); - if (!(gw->g.flags & GWIN_FLG_ENABLED)) - sy += 2*(iheight-VERTICAL_PADDING); - while (sy > qi2li->pimg->height) - sy -= iheight-VERTICAL_PADDING; - // Draw the image - gdispImageSetBgColor(qi2li->pimg, fill); - gdispGImageDraw(gw->g.display, qi2li->pimg, gw->g.x+1, gw->g.y+y, iheight-VERTICAL_PADDING, iheight-VERTICAL_PADDING, 0, sy); - } - } - #endif - gdispGFillStringBox(gw->g.display, gw->g.x+x+HORIZONTAL_PADDING, gw->g.y+y, iwidth-HORIZONTAL_PADDING, iheight, qi2li->text, gw->g.font, ps->text, fill, justifyLeft); - } - - // Fill any remaining item space - if (y < gw->g.height-1) - gdispGFillArea(gw->g.display, gw->g.x+1, gw->g.y+y, iwidth, gw->g.height-1-y, gw->pstyle->background); -} +static void gwinListDefaultDraw(GWidgetObject* gw, void* param); #if GINPUT_NEED_MOUSE static void MouseSelect(GWidgetObject* gw, coord_t x, coord_t y) { @@ -448,6 +354,10 @@ void gwinListSetScroll(GHandle gh, scroll_t flag) { int gwinListAddItem(GHandle gh, const char* item_name, bool_t useAlloc) { ListItem *newItem; + // is it a valid handle? + if (gh->vmt != (gwinVMT *)&listVMT) + return -1; + if (useAlloc) { size_t len = strlen(item_name)+1; if (!(newItem = gfxAlloc(sizeof(ListItem) + len))) @@ -685,6 +595,106 @@ const char* gwinListGetSelectedText(GHandle gh) { } #endif +static void gwinListDefaultDraw(GWidgetObject* gw, void* param) { + (void)param; + + #if GDISP_NEED_CONVEX_POLYGON + static const point upArrow[] = { {0, ARROW}, {ARROW, ARROW}, {ARROW/2, 0} }; + static const point downArrow[] = { {0, 0}, {ARROW, 0}, {ARROW/2, ARROW} }; + #endif + + const gfxQueueASyncItem* qi; + int i; + coord_t x, y, iheight, iwidth; + color_t fill; + const GColorSet * ps; + #if GWIN_NEED_LIST_IMAGES + coord_t sy; + #endif + + // is it a valid handle? + if (gw->g.vmt != (gwinVMT *)&listVMT) + return; + + // don't render if render has been disabled + if (!(gw->g.flags & GLIST_FLG_ENABLERENDER)) + return; + + ps = (gw->g.flags & GWIN_FLG_ENABLED) ? &gw->pstyle->enabled : &gw->pstyle->disabled; + iheight = gdispGetFontMetric(gw->g.font, fontHeight) + VERTICAL_PADDING; + x = 1; + + // the scroll area + if (gw->g.flags & GLIST_FLG_SCROLLSMOOTH) { + iwidth = gw->g.width - 2 - 4; + if (gw2obj->cnt > 0) { + int max_scroll_value = gw2obj->cnt * iheight - gw->g.height-2; + if (max_scroll_value > 0) { + int bar_height = (gw->g.height-2) * (gw->g.height-2) / (gw2obj->cnt * iheight); + gdispGFillArea(gw->g.display, gw->g.x + gw->g.width-4, gw->g.y + 1, 2, gw->g.height-1, gw->pstyle->background); + gdispGFillArea(gw->g.display, gw->g.x + gw->g.width-4, gw->g.y + gw2obj->top * ((gw->g.height-2)-bar_height) / max_scroll_value, 2, bar_height, ps->edge); + } + } + } else if ((gw2obj->cnt > (gw->g.height-2) / iheight) || (gw->g.flags & GLIST_FLG_SCROLLALWAYS)) { + iwidth = gw->g.width - (SCROLLWIDTH+3); + gdispGFillArea(gw->g.display, gw->g.x+iwidth+2, gw->g.y+1, SCROLLWIDTH, gw->g.height-2, gdispBlendColor(ps->fill, gw->pstyle->background, 128)); + gdispGDrawLine(gw->g.display, gw->g.x+iwidth+1, gw->g.y+1, gw->g.x+iwidth+1, gw->g.y+gw->g.height-2, ps->edge); + #if GDISP_NEED_CONVEX_POLYGON + gdispGFillConvexPoly(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+(ARROW/2+1), upArrow, 3, ps->fill); + gdispGFillConvexPoly(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+gw->g.height-(ARROW+ARROW/2+1), downArrow, 3, ps->fill); + #else + #warning "GWIN: Lists display better when GDISP_NEED_CONVEX_POLGON is turned on" + gdispGFillArea(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+(ARROW/2+1), ARROW, ARROW, ps->fill); + gdispGFillArea(gw->g.display, gw->g.x+iwidth+((SCROLLWIDTH-ARROW)/2+2), gw->g.y+gw->g.height-(ARROW+ARROW/2+1), ARROW, ARROW, ps->fill); + #endif + } else + iwidth = gw->g.width - 2; + + #if GWIN_NEED_LIST_IMAGES + if ((gw->g.flags & GLIST_FLG_HASIMAGES)) { + x += iheight; + iwidth -= iheight; + } + #endif + + + // Find the top item + for (qi = gfxQueueASyncPeek(&gw2obj->list_head), i = iheight - 1; i < gw2obj->top && qi; qi = gfxQueueASyncNext(qi), i+=iheight); + + // the list frame + gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width, gw->g.height, ps->edge); + + // Set the clipping region so we do not override the frame. + gdispGSetClip(gw->g.display, gw->g.x+1, gw->g.y+1, gw->g.width-2, gw->g.height-2); + + // Draw until we run out of room or items + for (y = 1-(gw2obj->top%iheight); y < gw->g.height-2 && qi; qi = gfxQueueASyncNext(qi), y += iheight) { + fill = (qi2li->flags & GLIST_FLG_SELECTED) ? ps->fill : gw->pstyle->background; + gdispGFillArea(gw->g.display, gw->g.x+1, gw->g.y+y, iwidth, iheight, fill); + #if GWIN_NEED_LIST_IMAGES + if ((gw->g.flags & GLIST_FLG_HASIMAGES)) { + // Clear the image area + if (qi2li->pimg && gdispImageIsOpen(qi2li->pimg)) { + // Calculate which image + sy = (qi2li->flags & GLIST_FLG_SELECTED) ? 0 : (iheight-VERTICAL_PADDING); + if (!(gw->g.flags & GWIN_FLG_ENABLED)) + sy += 2*(iheight-VERTICAL_PADDING); + while (sy > qi2li->pimg->height) + sy -= iheight-VERTICAL_PADDING; + // Draw the image + gdispImageSetBgColor(qi2li->pimg, fill); + gdispGImageDraw(gw->g.display, qi2li->pimg, gw->g.x+1, gw->g.y+y, iheight-VERTICAL_PADDING, iheight-VERTICAL_PADDING, 0, sy); + } + } + #endif + gdispGFillStringBox(gw->g.display, gw->g.x+x+HORIZONTAL_PADDING, gw->g.y+y, iwidth-HORIZONTAL_PADDING, iheight, qi2li->text, gw->g.font, ps->text, fill, justifyLeft); + } + + // Fill any remaining item space + if (y < gw->g.height-1) + gdispGFillArea(gw->g.display, gw->g.x+1, gw->g.y+y, iwidth, gw->g.height-1-y, gw->pstyle->background); +} + #endif // GFX_USE_GWIN && GWIN_NEED_LIST /** @} */ From 763fd061ecd6c9bb4877b5b6f5a01ce363ef09a4 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 1 May 2014 16:45:55 +1000 Subject: [PATCH 25/25] Fixed enable bug in progress bar --- src/gwin/progressbar.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/gwin/progressbar.c b/src/gwin/progressbar.c index 7c34607f..c64e2119 100644 --- a/src/gwin/progressbar.c +++ b/src/gwin/progressbar.c @@ -43,7 +43,7 @@ static const gwidgetVMT progressbarVMT = { { "Progressbar", // The classname sizeof(GProgressbarObject), // The object size - _destroy, // The destroy routine + _destroy, // The destroy routine _gwidgetRedraw, // The redraw routine 0, // The after-clear routine }, @@ -180,7 +180,7 @@ void gwinProgressbarDecrement(GHandle gh) { } // used by gwinProgressbarStart(); -void _progressbarCallback(void *param) { +static void _progressbarCallback(void *param) { #define gsw ((GProgressbarObject *)gh) GHandle gh = (GHandle)param; @@ -206,11 +206,13 @@ void gwinProgressbarStart(GHandle gh, delaytime_t delay) { gtimerInit(&(gsw->gt)); gtimerStart(&(gsw->gt), _progressbarCallback, gh, FALSE, gsw->delay); - // if this is not made, the progressbar will not start when the it's already visible - if (gsw->w.g.flags & GWIN_FLG_VISIBLE) { - gwinSetVisible(gh, FALSE); - gwinSetVisible(gh, TRUE); - } + #if 0 + // if this is not made, the progressbar will not start when it's already visible + if (gsw->w.g.flags & GWIN_FLG_VISIBLE) { + gwinSetVisible(gh, FALSE); + gwinSetVisible(gh, TRUE); + } + #endif #undef gsw } @@ -239,13 +241,6 @@ void gwinProgressbarDraw_Std(GWidgetObject *gw, void *param) { if (gw->g.vmt != (gwinVMT *)&progressbarVMT) return; - // disable the auto-update timer if any - #if GFX_USE_GTIMER - if (gtimerIsActive(&(gsw->gt)) && !(gw->g.flags & GWIN_FLG_ENABLED)) { - gtimerStop(&(gsw->gt)); - } - #endif - // get the colors right if ((gw->g.flags & GWIN_FLG_ENABLED)) pcol = &gw->pstyle->pressed;